github.com/whatap/golib@v0.0.22/util/stringutil/StringBuffer.go (about) 1 package stringutil 2 3 import ( 4 // "log" 5 "bytes" 6 "fmt" 7 "strings" 8 ) 9 10 type StringBuffer struct { 11 buffer bytes.Buffer 12 indent int 13 } 14 15 func NewStringBuffer() *StringBuffer { 16 ret := new(StringBuffer) 17 ret.indent = 0 18 return ret 19 } 20 21 /// append a string to the tail of this buffer 22 func (sb *StringBuffer) Append(str string) *StringBuffer { 23 sb.buffer.WriteString(strings.Repeat("\t", sb.indent) + str) 24 return sb 25 } 26 27 func (sb *StringBuffer) AppendFormat(str string, args ...interface{}) *StringBuffer { 28 return sb.Append(fmt.Sprintf(str, args...)) 29 } 30 31 func (sb *StringBuffer) AppendLine(str string) *StringBuffer { 32 return sb.Append(str + "\n") 33 } 34 35 func (sb *StringBuffer) AppendLineIndent(str string) *StringBuffer { 36 sb.AppendLine(str) 37 sb.indent++ 38 return sb 39 } 40 41 func (sb *StringBuffer) AppendLineClose(str string) *StringBuffer { 42 sb.indent-- 43 return sb.AppendLine(str) 44 } 45 46 func (sb *StringBuffer) AppendClose(str string) *StringBuffer { 47 sb.indent-- 48 return sb.Append(str) 49 } 50 51 /// append a line as comment. 52 func (sb *StringBuffer) AppendComment(str string) *StringBuffer { 53 return sb.AppendLine("/// " + str) 54 } 55 56 func (sb *StringBuffer) ToString() string { 57 return sb.buffer.String() 58 } 59 60 /// clear . 61 func (sb *StringBuffer) Clear() { 62 sb.buffer.Reset() 63 sb.indent = 0 64 }