diff --git a/pkg/scraper/mapped.go b/pkg/scraper/mapped.go index 87a040141..dd5adede7 100644 --- a/pkg/scraper/mapped.go +++ b/pkg/scraper/mapped.go @@ -75,7 +75,7 @@ func (s mappedConfig) postProcess(q mappedQuery, attrConfig mappedScraperAttrCon result = attrConfig.postProcess(result, q) if attrConfig.hasSplit() { results := attrConfig.splitString(result) - results = attrConfig.distinctResults(results) + results = attrConfig.cleanResults(results) return results } @@ -89,7 +89,7 @@ func (s mappedConfig) postProcess(q mappedQuery, attrConfig mappedScraperAttrCon ret = append(ret, text) } - ret = attrConfig.distinctResults(ret) + ret = attrConfig.cleanResults(ret) } return ret @@ -643,8 +643,10 @@ func (c mappedScraperAttrConfig) concatenateResults(nodes []string) string { return strings.Join(result, separator) } -func (c mappedScraperAttrConfig) distinctResults(nodes []string) []string { - return utils.StrUnique(nodes) +func (c mappedScraperAttrConfig) cleanResults(nodes []string) []string { + cleaned := utils.StrUnique(nodes) // remove duplicate values + cleaned = utils.StrDelete(cleaned, "") // remove empty values + return cleaned } func (c mappedScraperAttrConfig) splitString(value string) []string { diff --git a/pkg/utils/string_collections.go b/pkg/utils/string_collections.go index ae2f52991..32943344a 100644 --- a/pkg/utils/string_collections.go +++ b/pkg/utils/string_collections.go @@ -69,6 +69,17 @@ func StrUnique(vs []string) []string { return ret } +// StrDelete returns the vs string slice with toDel values removed. +func StrDelete(vs []string, toDel string) []string { + var ret []string + for _, v := range vs { + if v != toDel { + ret = append(ret, v) + } + } + return ret +} + // StringSliceToIntSlice converts a slice of strings to a slice of ints. // Returns an error if any values cannot be parsed. func StringSliceToIntSlice(ss []string) ([]int, error) {