lib.mx raw

   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