xfmt

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 28, 2021 License: Apache-2.0, BSD-3-Clause Imports: 5 Imported by: 0

Documentation

Overview

Package xfmt provides addons to std fmt and strconv packages with focus on formatting text without allocations.

For example if in fmt speak you have

s := fmt.Sprintf("hello %q %d %x", "world", 1, []byte("data"))

xfmt analog would be

buf := xfmt.Buffer{}
buf .S("hello ") .Q("world") .C(' ') .D(1) .C(' ') .Xb([]byte("data"))
s := buf.Bytes()

xfmt.Buffer can be reused several times via Buffer.Reset() .

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Append

func Append(b []byte, x Stringer) []byte

Append appends to b formatted x

NOTE sadly since x is interface it makes real value substituted to it

escape to heap (not so a problem since usually they already are) but then also
if x has non-pointer receiver convT2I _allocates_ memory for the value copy.

-> always pass to append &object, even if object has non-pointer XFmtString receiver.

func AppendHex

func AppendHex(b []byte, x []byte) []byte

AppendHex appends to b hex representation of x

func AppendHex016

func AppendHex016(b []byte, x uint64) []byte

AppendHex016 appends to b x formatted 16-character hex string

func AppendRune

func AppendRune(b []byte, r rune) []byte

AppendRune appends to b UTF-8 encoding of r

Types

type Buffer

type Buffer []byte

Buffer provides syntactic sugar for formatting mimicking fmt.Printf style XXX combine with bytes.Buffer ?

func (Buffer) Bytes

func (b Buffer) Bytes() []byte

Bytes returns buffer storage as []byte

func (*Buffer) C

func (b *Buffer) C(r rune) *Buffer

C appends rune formatted by %c

func (*Buffer) Cb

func (b *Buffer) Cb(c byte) *Buffer

Cb appends byte formatted by %c

func (*Buffer) D

func (b *Buffer) D(i int) *Buffer

D appends int formatted by %d

func (*Buffer) D64

func (b *Buffer) D64(i int64) *Buffer

D64 appends int64 formatted by %d

func (*Buffer) Q

func (b *Buffer) Q(s string) *Buffer

Q appends string formatted by %q

func (*Buffer) Qb

func (b *Buffer) Qb(s []byte) *Buffer

Qb appends []byte formatted by %q

func (*Buffer) Qc

func (b *Buffer) Qc(c rune) *Buffer

Qc appends rune formatted by %q

func (*Buffer) Qcb

func (b *Buffer) Qcb(c byte) *Buffer

Qcb appends byte formatted by %q

func (*Buffer) Reset

func (b *Buffer) Reset()

Reset empties the buffer keeping underlying storage for future formattings

func (*Buffer) S

func (b *Buffer) S(s string) *Buffer

S appends string formatted by %s

func (*Buffer) Sb

func (b *Buffer) Sb(x []byte) *Buffer

Sb appends []byte formatted by %s

func (*Buffer) V

func (b *Buffer) V(x Stringer) *Buffer

V, similarly to %v, adds x formatted by default rules

func (*Buffer) X

func (b *Buffer) X(i int) *Buffer

X appends int formatted by %x

func (*Buffer) X016

func (b *Buffer) X016(x uint64) *Buffer

X016, similarly to %016x, adds hex representation of uint64 x

func (*Buffer) Xb

func (b *Buffer) Xb(x []byte) *Buffer

Xb appends []byte formatted by %x

func (*Buffer) Xs

func (b *Buffer) Xs(x string) *Buffer

Xs appends string formatted by %x

type Stringer

type Stringer interface {
	// XFmtString method is used to append formatted value to destination buffer
	// The grown buffer have to be returned
	XFmtString(b []byte) []byte
}

Stringer is interface for natively formatting a value representation via xfmt

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL