105 lines
1.6 KiB
Go
105 lines
1.6 KiB
Go
package console
|
|
|
|
import (
|
|
"io"
|
|
"slices"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
type buffer []byte
|
|
|
|
func (b *buffer) Grow(n int) {
|
|
*b = slices.Grow(*b, n)
|
|
}
|
|
|
|
func (b *buffer) Bytes() []byte {
|
|
return *b
|
|
}
|
|
|
|
func (b *buffer) String() string {
|
|
return string(*b)
|
|
}
|
|
|
|
func (b *buffer) Len() int {
|
|
return len(*b)
|
|
}
|
|
|
|
func (b *buffer) Cap() int {
|
|
return cap(*b)
|
|
}
|
|
|
|
func (b *buffer) WriteTo(dst io.Writer) (int64, error) {
|
|
l := len(*b)
|
|
if l == 0 {
|
|
return 0, nil
|
|
}
|
|
n, err := dst.Write(*b)
|
|
if err != nil {
|
|
return int64(n), err
|
|
}
|
|
if n < l {
|
|
return int64(n), io.ErrShortWrite
|
|
}
|
|
b.Reset()
|
|
return int64(n), nil
|
|
}
|
|
|
|
func (b *buffer) Reset() {
|
|
*b = (*b)[:0]
|
|
}
|
|
|
|
func (b *buffer) Clone() buffer {
|
|
return append(buffer(nil), *b...)
|
|
}
|
|
|
|
func (b *buffer) Clip() {
|
|
*b = slices.Clip(*b)
|
|
}
|
|
|
|
func (b *buffer) copy(src *buffer) {
|
|
if src.Len() > 0 {
|
|
b.Append(src.Bytes())
|
|
}
|
|
}
|
|
|
|
func (b *buffer) Append(data []byte) {
|
|
*b = append(*b, data...)
|
|
}
|
|
|
|
func (b *buffer) AppendString(s string) {
|
|
*b = append(*b, s...)
|
|
}
|
|
|
|
// func (b *buffer) AppendQuotedString(s string) {
|
|
// b.buff = strconv.AppendQuote(b.buff, s)
|
|
// }
|
|
|
|
func (b *buffer) AppendByte(byt byte) {
|
|
*b = append(*b, byt)
|
|
}
|
|
|
|
func (b *buffer) AppendTime(t time.Time, format string) {
|
|
*b = t.AppendFormat(*b, format)
|
|
}
|
|
|
|
func (b *buffer) AppendInt(i int64) {
|
|
*b = strconv.AppendInt(*b, i, 10)
|
|
}
|
|
|
|
func (b *buffer) AppendUint(i uint64) {
|
|
*b = strconv.AppendUint(*b, i, 10)
|
|
}
|
|
|
|
func (b *buffer) AppendFloat(i float64) {
|
|
*b = strconv.AppendFloat(*b, i, 'g', -1, 64)
|
|
}
|
|
|
|
func (b *buffer) AppendBool(i bool) {
|
|
*b = strconv.AppendBool(*b, i)
|
|
}
|
|
|
|
func (b *buffer) AppendDuration(d time.Duration) {
|
|
*b = appendDuration(*b, d)
|
|
}
|