32 lines
		
	
	
		
			596 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			596 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package options
 | 
						|
 | 
						|
// Hook func interface
 | 
						|
type Hook interface{}
 | 
						|
 | 
						|
// Hooks func slice
 | 
						|
type Hooks []Hook
 | 
						|
 | 
						|
// Append is used to add hooks
 | 
						|
func (hs *Hooks) Append(h ...Hook) {
 | 
						|
	*hs = append(*hs, h...)
 | 
						|
}
 | 
						|
 | 
						|
// Replace is used to set hooks
 | 
						|
func (hs *Hooks) Replace(h ...Hook) {
 | 
						|
	*hs = h
 | 
						|
}
 | 
						|
 | 
						|
// EachNext is used to itearate over hooks forward
 | 
						|
func (hs *Hooks) EachNext(fn func(Hook)) {
 | 
						|
	for idx := 0; idx < len(*hs); idx++ {
 | 
						|
		fn((*hs)[idx])
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// EachPrev is used to iterate over hooks backward
 | 
						|
func (hs *Hooks) EachPrev(fn func(Hook)) {
 | 
						|
	for idx := len(*hs) - 1; idx >= 0; idx-- {
 | 
						|
		fn((*hs)[idx])
 | 
						|
	}
 | 
						|
}
 |