79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package kit
|
|
|
|
import "strings"
|
|
|
|
// StringsBuilder is a wrapper around strings.Builder with short syntax,
|
|
// it also exposes all methods of strings.Builder, so you can use it as a drop-in replacement
|
|
type StringsBuilder struct {
|
|
b strings.Builder
|
|
}
|
|
|
|
// NewStringsBuilder creates a new StringsBuilder instance
|
|
func NewStringsBuilder() StringsBuilder {
|
|
return StringsBuilder{}
|
|
}
|
|
|
|
// S is shortcut for WriteString
|
|
func (sb *StringsBuilder) S(s string) *StringsBuilder {
|
|
sb.b.WriteString(s)
|
|
return sb
|
|
}
|
|
|
|
// B is shortcut for WriteByte
|
|
func (sb *StringsBuilder) B(b byte) *StringsBuilder {
|
|
sb.b.WriteByte(b)
|
|
return sb
|
|
}
|
|
|
|
// R is shortcut for WriteRune
|
|
func (sb *StringsBuilder) R(r rune) *StringsBuilder {
|
|
sb.b.WriteRune(r)
|
|
return sb
|
|
}
|
|
|
|
// String returns the accumulated string
|
|
func (sb *StringsBuilder) String() string {
|
|
return sb.b.String()
|
|
}
|
|
|
|
// Unwrap returns the underlying strings.Builder
|
|
func (sb *StringsBuilder) Unwrap() strings.Builder {
|
|
return sb.b
|
|
}
|
|
|
|
// WriteString appends the contents of s to sb's buffer
|
|
func (sb *StringsBuilder) WriteString(s string) (int, error) {
|
|
return sb.b.WriteString(s)
|
|
}
|
|
|
|
// Write appends the contents of p to sb's buffer
|
|
func (sb *StringsBuilder) Write(p []byte) (int, error) {
|
|
return sb.b.Write(p)
|
|
}
|
|
|
|
// WriteRune appends the UTF-8 encoding of Unicode code point r to sb's buffer
|
|
func (sb *StringsBuilder) WriteRune(r rune) (int, error) {
|
|
return sb.b.WriteRune(r)
|
|
}
|
|
|
|
// Cap returns the current capacity of the accumulated string
|
|
func (sb *StringsBuilder) Cap() int {
|
|
return sb.b.Cap()
|
|
}
|
|
|
|
// Grow grows sb's capacity, if necessary, to guarantee space for another n bytes
|
|
func (sb *StringsBuilder) Grow(n int) *StringsBuilder {
|
|
sb.b.Grow(n)
|
|
return sb
|
|
}
|
|
|
|
// Len returns the current length of the accumulated string
|
|
func (sb *StringsBuilder) Len() int {
|
|
return sb.b.Len()
|
|
}
|
|
|
|
// Reset resets the StringsBuilder to be empty and returns itself
|
|
func (sb *StringsBuilder) Reset() *StringsBuilder {
|
|
sb.b.Reset()
|
|
return sb
|
|
}
|