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  }