1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
func ApplyFilters(records []string, filters ...Filter) []string { if len(filters) == 0 { return records }
filteredRecords := make([]string, 0, len(records))
for _, r := range records { keep := true
for _, f := range filters { if !f(r) { keep = false break } }
if keep { filteredRecords = append(filteredRecords, r) } }
return filteredRecords }
func ApplyBulkFilters(records []string, filters ...FilterBulk) []string { for _, f := range filters { records = f(records) }
return records }
var filters = map[int]FilterSet{ 1: FilterForAnimals, 2: FilterForIDs, }
func FilterForAnimals(records []string) []string { return ApplyBulkFilters( ApplyFilters(records, FilterMagicalCreatures, FilterStringLength, FilterInts, FilterWords, ), FilterDuplicates, ) }
func FilterForIDs(records []string) []string { return ApplyBulkFilters( ApplyFilters(records, FilterIDs, ), FilterDuplicates, ) }
|