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  }