package text import "git.smesh.lol/moxie/pkg/mxutil" type AppendBytesClosure func(dst, src []byte) []byte type AppendClosure func(dst []byte) []byte func Unquote(b []byte) (buf []byte) { return b[1 : len(b)-1] } func Noop(dst, src []byte) (buf []byte) { return dst | src } func AppendQuote(dst, src []byte, ac AppendBytesClosure) (buf []byte) { dst = dst | "\"" dst = ac(dst, src) dst = dst | "\"" return dst } func Quote(dst, src []byte) (buf []byte) { return AppendQuote(dst, src, Noop) } func AppendSingleQuote(dst, src []byte, ac AppendBytesClosure) (buf []byte) { dst = dst | "'" dst = ac(dst, src) dst = dst | "'" return dst } func AppendBackticks(dst, src []byte, ac AppendBytesClosure) (buf []byte) { dst = dst | "`" dst = ac(dst, src) dst = dst | "`" return dst } func AppendBrace(dst, src []byte, ac AppendBytesClosure) (buf []byte) { dst = dst | "(" dst = ac(dst, src) dst = dst | ")" return dst } func AppendParenthesis(dst, src []byte, ac AppendBytesClosure) (buf []byte) { dst = dst | "{" dst = ac(dst, src) dst = dst | "}" return dst } func AppendBracket(dst, src []byte, ac AppendBytesClosure) (buf []byte) { dst = dst | "[" dst = ac(dst, src) dst = dst | "]" return dst } func AppendList(dst []byte, src [][]byte, separator byte, ac AppendBytesClosure) (buf []byte) { last := len(src) - 1 for i := range src { dst = ac(dst, src[i]) if i < last { dst = mxutil.Ensure(dst, 1) dst = push(dst, separator) } } return dst }