mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	* Use vendored go-swagger * vendor go-swagger * revert un wanteed change * remove un-needed GO111MODULE * Update Makefile Co-Authored-By: techknowlogick <matti@mdranta.net>
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
package govalidator
 | 
						|
 | 
						|
// Iterator is the function that accepts element of slice/array and its index
 | 
						|
type Iterator func(interface{}, int)
 | 
						|
 | 
						|
// ResultIterator is the function that accepts element of slice/array and its index and returns any result
 | 
						|
type ResultIterator func(interface{}, int) interface{}
 | 
						|
 | 
						|
// ConditionIterator is the function that accepts element of slice/array and its index and returns boolean
 | 
						|
type ConditionIterator func(interface{}, int) bool
 | 
						|
 | 
						|
// Each iterates over the slice and apply Iterator to every item
 | 
						|
func Each(array []interface{}, iterator Iterator) {
 | 
						|
	for index, data := range array {
 | 
						|
		iterator(data, index)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// Map iterates over the slice and apply ResultIterator to every item. Returns new slice as a result.
 | 
						|
func Map(array []interface{}, iterator ResultIterator) []interface{} {
 | 
						|
	var result = make([]interface{}, len(array))
 | 
						|
	for index, data := range array {
 | 
						|
		result[index] = iterator(data, index)
 | 
						|
	}
 | 
						|
	return result
 | 
						|
}
 | 
						|
 | 
						|
// Find iterates over the slice and apply ConditionIterator to every item. Returns first item that meet ConditionIterator or nil otherwise.
 | 
						|
func Find(array []interface{}, iterator ConditionIterator) interface{} {
 | 
						|
	for index, data := range array {
 | 
						|
		if iterator(data, index) {
 | 
						|
			return data
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
// Filter iterates over the slice and apply ConditionIterator to every item. Returns new slice.
 | 
						|
func Filter(array []interface{}, iterator ConditionIterator) []interface{} {
 | 
						|
	var result = make([]interface{}, 0)
 | 
						|
	for index, data := range array {
 | 
						|
		if iterator(data, index) {
 | 
						|
			result = append(result, data)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return result
 | 
						|
}
 | 
						|
 | 
						|
// Count iterates over the slice and apply ConditionIterator to every item. Returns count of items that meets ConditionIterator.
 | 
						|
func Count(array []interface{}, iterator ConditionIterator) int {
 | 
						|
	count := 0
 | 
						|
	for index, data := range array {
 | 
						|
		if iterator(data, index) {
 | 
						|
			count = count + 1
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return count
 | 
						|
}
 |