nimo-shake/filter/filter.go (49 lines of code) (raw):

package filter import ( "strings" ) const ( Sep = ";" ) var ( f = &Filter{ collectionWhiteMap: make(map[string]bool), collectionBlackMap: make(map[string]bool), } ) type Filter struct { collectionWhiteMap map[string]bool collectionBlackMap map[string]bool } func Init(collectionWhite, collectBlack string) { var collectionWhiteList, collectionBlackList []string if collectionWhite != "" { collectionWhiteList = strings.Split(collectionWhite, Sep) } if collectBlack != "" { collectionBlackList = strings.Split(collectBlack, Sep) } for _, ele := range collectionWhiteList { f.collectionWhiteMap[ele] = true } for _, ele := range collectionBlackList { f.collectionBlackMap[ele] = true } } func IsFilter(collection string) bool { // fmt.Println(f.collectionWhiteMap, collection, f.collectionWhiteMap[collection]) if len(f.collectionWhiteMap) != 0 { return !f.collectionWhiteMap[collection] } else if len(f.collectionBlackMap) != 0 { return f.collectionBlackMap[collection] } return false } func FilterList(collectionList []string) []string { ret := make([]string, 0, len(collectionList)) for _, ele := range collectionList { if !IsFilter(ele) { ret = append(ret, ele) } } return ret }