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