reduce number of loops
This commit is contained in:
		
							parent
							
								
									8abaddf4b4
								
							
						
					
					
						commit
						f255f362be
					
				
							
								
								
									
										16
									
								
								callbacks.go
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								callbacks.go
									
									
									
									
									
								
							| @ -186,21 +186,19 @@ func (p *processor) Replace(name string, fn func(*DB)) error { | ||||
| } | ||||
| 
 | ||||
| func (p *processor) compile() (err error) { | ||||
| 	var ( | ||||
| 		callbacks []*callback | ||||
| 		removed   []string | ||||
| 	) | ||||
| 	var callbacks []*callback | ||||
| 	removedMap := map[string]bool{} | ||||
| 	for _, callback := range p.callbacks { | ||||
| 		if callback.match == nil || callback.match(p.db) { | ||||
| 			callbacks = append(callbacks, callback) | ||||
| 		} | ||||
| 		if callback.remove { | ||||
| 			removed = append(removed, callback.name) | ||||
| 			removedMap[callback.name] = true | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if len(removed) > 0 { | ||||
| 		callbacks = removeCallbacks(callbacks, removed) | ||||
| 	if len(removedMap) > 0 { | ||||
| 		callbacks = removeCallbacks(callbacks, removedMap) | ||||
| 	} | ||||
| 
 | ||||
| 	p.callbacks = callbacks | ||||
| @ -351,10 +349,10 @@ func sortCallbacks(cs []*callback) (fns []func(*DB), err error) { | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
| func removeCallbacks(cs []*callback, names []string) []*callback { | ||||
| func removeCallbacks(cs []*callback, nameMap map[string]bool) []*callback { | ||||
| 	callbacks := make([]*callback, 0, len(cs)) | ||||
| 	for _, callback := range cs { | ||||
| 		if utils.Contains(names, callback.name) { | ||||
| 		if nameMap[callback.name] { | ||||
| 			continue | ||||
| 		} | ||||
| 		callbacks = append(callbacks, callback) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 snackmgmg
						snackmgmg