Skip to content

Commit 13e85cf

Browse files
committed
Fixes to use map.
1 parent d818f76 commit 13e85cf

File tree

1 file changed

+20
-24
lines changed

1 file changed

+20
-24
lines changed

Diff for: commands/lib/search.go

+20-24
Original file line numberDiff line numberDiff line change
@@ -88,23 +88,6 @@ func defaultLibraryMatchExtractor(lib *librariesindex.Library) string {
8888
return res
8989
}
9090

91-
// matcherFromQueryString returns a closure that takes a library as a
92-
// parameter and returns true if the library matches the query.
93-
func matcherFromQueryString(query string) func(*librariesindex.Library) bool {
94-
// A qv-query is one using <qualifier>[:=]<value> syntax.
95-
qvQuery := strings.Contains(query, ":") || strings.Contains(query, "=")
96-
97-
if !qvQuery {
98-
queryTerms := utils.SearchTermsFromQueryString(query)
99-
return func(lib *librariesindex.Library) bool {
100-
return utils.Match(defaultLibraryMatchExtractor(lib), queryTerms)
101-
}
102-
}
103-
104-
joinedStrings := func(strs []string) string {
105-
return strings.Join(strs, " ")
106-
}
107-
10891
var qualifiers map[string]func(lib *librariesindex.Library) string = map[string]func(lib *librariesindex.Library) string{
10992
"name": func(lib *librariesindex.Library) string { return lib.Name },
11093
"architectures": func(lib *librariesindex.Library) string { return strings.Join(lib.Latest.Architectures, " ") },
@@ -125,6 +108,19 @@ var qualifiers map[string]func(lib *librariesindex.Library) string = map[string]
125108
"website": func(lib *librariesindex.Library) string { return lib.Latest.Website },
126109
}
127110

111+
// matcherFromQueryString returns a closure that takes a library as a
112+
// parameter and returns true if the library matches the query.
113+
func matcherFromQueryString(query string) func(*librariesindex.Library) bool {
114+
// A qv-query is one using <qualifier>[:=]<value> syntax.
115+
qvQuery := strings.Contains(query, ":") || strings.Contains(query, "=")
116+
117+
if !qvQuery {
118+
queryTerms := utils.SearchTermsFromQueryString(query)
119+
return func(lib *librariesindex.Library) bool {
120+
return utils.Match(defaultLibraryMatchExtractor(lib), queryTerms)
121+
}
122+
}
123+
128124
queryTerms := matcherTokensFromQueryString(query)
129125

130126
return func(lib *librariesindex.Library) bool {
@@ -134,15 +130,15 @@ var qualifiers map[string]func(lib *librariesindex.Library) string = map[string]
134130
// Flag indicating whether the search term matched a known qualifier
135131
knownQualifier := false
136132

137-
for _, q := range qualifiers {
138-
if strings.HasPrefix(term, q.key+":") {
139-
target := strings.TrimPrefix(term, q.key+":")
140-
matched = (matched && utils.Match(q.extractor(lib), []string{target}))
133+
for key, extractor := range qualifiers {
134+
if strings.HasPrefix(term, key+":") {
135+
target := strings.TrimPrefix(term, key+":")
136+
matched = (matched && utils.Match(extractor(lib), []string{target}))
141137
knownQualifier = true
142138
break
143-
} else if strings.HasPrefix(term, q.key+"=") {
144-
target := strings.TrimPrefix(term, q.key+"=")
145-
matched = (matched && strings.ToLower(q.extractor(lib)) == target)
139+
} else if strings.HasPrefix(term, key+"=") {
140+
target := strings.TrimPrefix(term, key+"=")
141+
matched = (matched && strings.ToLower(extractor(lib)) == target)
146142
knownQualifier = true
147143
break
148144
}

0 commit comments

Comments
 (0)