func()

in cpedict/lookup.go [60:88]


func (dict CPEList) Search(needle NamePattern, exact bool) ([]CPEItem, MatchType) {
	if exact {
		result := make([]CPEItem, 0)
		for _, item := range dict.Items {
			cmp, _ := wfn.Compare((*wfn.Attributes)(&needle), (*wfn.Attributes)(&item.Name))
			if cmp.IsEqual() {
				return append(result, item), Exact
			}
		}
		return nil, None
	}
	superset := make([]CPEItem, 0)
	subset := make([]CPEItem, 0)
	for _, item := range dict.Items {
		cmp, _ := wfn.Compare((*wfn.Attributes)(&needle), (*wfn.Attributes)(&item.Name))
		if cmp.IsSuperset() {
			superset = append(superset, resolveDeprecation(dict, item)...)
		} else if cmp.IsSubset() {
			subset = append(subset, resolveDeprecation(dict, item)...)
		}
	}
	if len(superset) > 0 {
		return superset, Superset
	}
	if len(subset) > 0 {
		return subset, Subset
	}
	return nil, None
}