wrap.mx raw
1 package text
2
3 type AppendBytesClosure func(dst, src []byte) []byte
4 type AppendClosure func(dst []byte) []byte
5
6 func Unquote(b []byte) []byte { return b[1 : len(b)-1] }
7 func Noop(dst, src []byte) []byte { return append(dst, src...) }
8
9 func AppendQuote(dst, src []byte, ac AppendBytesClosure) []byte {
10 dst = append(dst, '"')
11 dst = ac(dst, src)
12 dst = append(dst, '"')
13 return dst
14 }
15
16 func Quote(dst, src []byte) []byte { return AppendQuote(dst, src, Noop) }
17
18 func AppendSingleQuote(dst, src []byte, ac AppendBytesClosure) []byte {
19 dst = append(dst, '\'')
20 dst = ac(dst, src)
21 dst = append(dst, '\'')
22 return dst
23 }
24
25 func AppendBackticks(dst, src []byte, ac AppendBytesClosure) []byte {
26 dst = append(dst, '`')
27 dst = ac(dst, src)
28 dst = append(dst, '`')
29 return dst
30 }
31
32 func AppendBrace(dst, src []byte, ac AppendBytesClosure) []byte {
33 dst = append(dst, '(')
34 dst = ac(dst, src)
35 dst = append(dst, ')')
36 return dst
37 }
38
39 func AppendParenthesis(dst, src []byte, ac AppendBytesClosure) []byte {
40 dst = append(dst, '{')
41 dst = ac(dst, src)
42 dst = append(dst, '}')
43 return dst
44 }
45
46 func AppendBracket(dst, src []byte, ac AppendBytesClosure) []byte {
47 dst = append(dst, '[')
48 dst = ac(dst, src)
49 dst = append(dst, ']')
50 return dst
51 }
52
53 func AppendList(dst []byte, src [][]byte, separator byte, ac AppendBytesClosure) []byte {
54 last := len(src) - 1
55 for i := range src {
56 dst = ac(dst, src[i])
57 if i < last {
58 dst = append(dst, separator)
59 }
60 }
61 return dst
62 }
63