github.com/go-eden/common@v0.1.15-0.20210617133546-059099253264/efmt/efmt_buffer.go (about) 1 package efmt 2 3 import "unicode/utf8" 4 5 // Use simple []byte instead of bytes.Buffer to avoid large dependency. 6 type buffer []byte 7 8 func (t *buffer) write(p []byte) { 9 *t = append(*t, p...) 10 } 11 12 func (t *buffer) writeString(s string) { 13 *t = append(*t, s...) 14 } 15 16 func (t *buffer) writeByte(c byte) { 17 *t = append(*t, c) 18 } 19 20 func (t *buffer) writeRune(r rune) { 21 if r < utf8.RuneSelf { 22 *t = append(*t, byte(r)) 23 return 24 } 25 26 b := *t 27 n := len(b) 28 for n+utf8.UTFMax > cap(b) { 29 b = append(b, 0) 30 } 31 w := utf8.EncodeRune(b[n:n+utf8.UTFMax], r) 32 *t = b[:n+w] 33 }