Search Apps Documentation Source Content File Folder Download Copy Actions Download

utils.gno

0.83 Kb · 44 lines
 1package user
 2
 3func copyStringMap(source map[string]string) map[string]string {
 4	result := map[string]string{}
 5	for k, v := range source {
 6		result[k] = v
 7	}
 8	return result
 9}
10
11func parseCSVMap(keys, values string, panicMessagePrefix string) map[string]string {
12	pending := map[string]string{}
13	keyStart, valStart := 0, 0
14	keyIdx, valIdx := 0, 0
15	for {
16		for keyIdx < len(keys) && keys[keyIdx] != ',' {
17			keyIdx++
18		}
19		for valIdx < len(values) && values[valIdx] != ',' {
20			valIdx++
21		}
22
23		key := keys[keyStart:keyIdx]
24		val := values[valStart:valIdx]
25		pending[key] = val
26
27		keyEnd := keyIdx >= len(keys)
28		valEnd := valIdx >= len(values)
29
30		if keyEnd != valEnd {
31			panic(panicMessagePrefix + " keys and values count mismatch")
32		}
33		if keyEnd {
34			break
35		}
36
37		keyIdx++
38		valIdx++
39		keyStart = keyIdx
40		valStart = valIdx
41	}
42
43	return pending
44}