Skip to content

Instantly share code, notes, and snippets.

@smallnest
Forked from ice1000/sb.go
Created July 28, 2017 07:57
Show Gist options
  • Save smallnest/21af82eb75f1433752b1934484f081bc to your computer and use it in GitHub Desktop.
Save smallnest/21af82eb75f1433752b1934484f081bc to your computer and use it in GitHub Desktop.
Java-like StringBuffer for Golang
package sb
import (
"fmt"
"strings"
)
const maxLength = 150
/// a java style string buffer
type stringBuffer struct {
data []string
index int
indent int
}
func NewStringBuffer() *stringBuffer {
ret := new(stringBuffer)
ret.index = 0
ret.indent = 0
ret.data = make([]string, maxLength)
return ret
}
/// append a string to the tail of this buffer
func (sb *stringBuffer) Append(str string) *stringBuffer {
sb.data[sb.index] = strings.Repeat("\t", sb.indent) + str
sb.index++
if sb.index >= maxLength {
sb.slice()
}
return sb
}
func (sb *stringBuffer) AppendFormat(str string, args ...interface{}) *stringBuffer {
return sb.Append(fmt.Sprintf(str, args...))
}
func (sb *stringBuffer) AppendLine(str string) *stringBuffer {
return sb.Append(str + "\n")
}
func (sb *stringBuffer) AppendLineIndent(str string) *stringBuffer {
sb.AppendLine(str)
sb.indent++
return sb
}
func (sb *stringBuffer) AppendLineClose(str string) *stringBuffer {
sb.indent--
return sb.AppendLine(str)
}
func (sb *stringBuffer) AppendClose(str string) *stringBuffer {
sb.indent--
return sb.Append(str)
}
func (sb *stringBuffer) slice() *stringBuffer {
sb.data[0] = sb.ToString()
sb.index = 1
return sb
}
/// append a line as comment.
func (sb *stringBuffer) AppendComment(str string) *stringBuffer {
return sb.AppendLine("/// " + str)
}
func (sb *stringBuffer) ToString() string {
return strings.Join(sb.data, "")
}
/// clear elements.
func (sb *stringBuffer) Clear() {
sb.indent = 0
}
@smallnest
Copy link
Author

func (sb *stringBuffer) ToString() string {
data := sb.data[0:sb.index]
return strings.Join(data, "")
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment