MCPcopy Create free account
hub / github.com/OverloadBlitz/cloudcent-cli / SuggestRegions

Function SuggestRegions

internal/semantic/semantic.go:256–332  ·  view source on GitHub ↗

SuggestRegions returns filtered region suggestions.

(
	query string,
	allRegions []string,
	productRegions map[string][]string,
	productTags []string,
	selectedTags []string,
)

Source from the content-addressed store, hash-verified

254
255// SuggestRegions returns filtered region suggestions.
256func SuggestRegions(
257 query string,
258 allRegions []string,
259 productRegions map[string][]string,
260 productTags []string,
261 selectedTags []string,
262) []SuggestionItem {
263 q := strings.ToLower(query)
264
265 // Build region->providers map
266 regionProviders := map[string]map[string]struct{}{}
267 for productKey, regs := range productRegions {
268 parts := strings.Fields(productKey)
269 provider := productKey
270 if len(parts) > 0 {
271 provider = parts[0]
272 }
273 for _, r := range regs {
274 if r == "" {
275 continue
276 }
277 if regionProviders[r] == nil {
278 regionProviders[r] = map[string]struct{}{}
279 }
280 regionProviders[r][provider] = struct{}{}
281 }
282 }
283
284 var regions []string
285 if len(productTags) == 0 {
286 regions = append([]string{}, allRegions...)
287 sort.Strings(regions)
288 } else {
289 seen := map[string]struct{}{}
290 for _, p := range productTags {
291 if regs, ok := productRegions[strings.ToLower(p)]; ok {
292 for _, r := range regs {
293 if r != "" {
294 seen[r] = struct{}{}
295 }
296 }
297 }
298 }
299 if len(seen) == 0 {
300 regions = append([]string{}, allRegions...)
301 } else {
302 for r := range seen {
303 regions = append(regions, r)
304 }
305 }
306 sort.Strings(regions)
307 }
308
309 var items []SuggestionItem
310 for _, r := range regions {
311 if q != "" && !strings.Contains(strings.ToLower(r), q) {
312 continue
313 }

Callers 1

UpdateSuggestionsMethod · 0.92

Calls

no outgoing calls

Tested by

no test coverage detected