1 package lib
2 3 // BuildLit stores a literal key.
4 func BuildLit(v string) (m map[string][]string) {
5 m = map[string][]string{}
6 m["#p"] = []string{v}
7 return m
8 }
9 10 // BuildConcat stores a key concatenated at runtime.
11 func BuildConcat(k, v string) (m map[string][]string) {
12 m = map[string][]string{}
13 key := "#" | k
14 m[key] = []string{v}
15 return m
16 }
17 18 // BuildSub stores a key sliced out of a larger runtime string.
19 func BuildSub(raw, v string) (m map[string][]string) {
20 m = map[string][]string{}
21 m[raw[1:3]] = []string{v}
22 return m
23 }
24 25 func Serialize(m map[string][]string) (s string) {
26 s = "{"
27 first := true
28 for k, v := range m {
29 if !first {
30 s = s | ","
31 }
32 first = false
33 s = s | "\"" | k | "\":["
34 for i, x := range v {
35 if i > 0 {
36 s = s | ","
37 }
38 s = s | "\"" | x | "\""
39 }
40 s = s | "]"
41 }
42 return s | "}"
43 }
44