MCPcopy
hub / github.com/six2dez/OneListForAll / LoadTaxonomyFromBytes

Function LoadTaxonomyFromBytes

internal/config/taxonomy.go:31–60  ·  view source on GitHub ↗

LoadTaxonomyFromBytes parses taxonomy JSON from raw bytes.

(buf []byte)

Source from the content-addressed store, hash-verified

29
30// LoadTaxonomyFromBytes parses taxonomy JSON from raw bytes.
31func LoadTaxonomyFromBytes(buf []byte) (*Taxonomy, error) {
32 var t Taxonomy
33 if err := json.Unmarshal(buf, &t); err != nil {
34 return nil, fmt.Errorf("parse taxonomy: %w", err)
35 }
36
37 t.lookup = make(map[string]string, len(t.Categories)*4)
38 for _, cat := range t.Categories {
39 name := strings.ToLower(strings.TrimSpace(cat.Name))
40 if name == "" {
41 return nil, fmt.Errorf("taxonomy: empty category name")
42 }
43 if prev, exists := t.lookup[name]; exists {
44 return nil, fmt.Errorf("taxonomy: duplicate name %q (conflicts with %q)", name, prev)
45 }
46 t.lookup[name] = name
47 for _, alias := range cat.Aliases {
48 a := strings.ToLower(strings.TrimSpace(alias))
49 if a == "" {
50 continue
51 }
52 if prev, exists := t.lookup[a]; exists {
53 return nil, fmt.Errorf("taxonomy: duplicate alias %q in category %q (already mapped to %q)", a, name, prev)
54 }
55 t.lookup[a] = name
56 }
57 }
58
59 return &t, nil
60}
61
62// Lookup returns the canonical category name for a given name or alias.
63// Returns ("", false) if not found.

Callers 4

buildTestTaxonomyFunction · 0.92
TestValidateFromTaxonomyFunction · 0.92
LoadTaxonomyFunction · 0.85

Calls

no outgoing calls

Tested by 3

buildTestTaxonomyFunction · 0.74
TestValidateFromTaxonomyFunction · 0.74