ErrUnexpectedEOF means that EOF was encountered in the middle of the input.
var ErrUnexpectedEOF = errors.New("%v", io.ErrUnexpectedEOF)
func AppendString(b []byte, s string) []byte
AppendString appends the escaped form of the input string to b.
func TokenEquals(x, y Token) bool
TokenEquals returns true if given Tokens are equal, else false.
func UnmarshalString(s string) (string, error)
UnmarshalString returns an unescaped string given a textproto string value. String value needs to contain single or double quotes. This is only used by internal/encoding/defval package for unmarshaling bytes.
Decoder is a token-based textproto decoder.
type Decoder struct {
// contains filtered or unexported fields
}
func NewDecoder(b []byte) *Decoder
NewDecoder returns a Decoder to read the given []byte.
func (d *Decoder) Peek() (Token, error)
Peek looks ahead and returns the next token and error without advancing a read.
func (d *Decoder) Position(idx int) (line int, column int)
Position returns line and column number of given index of the original input. It will panic if index is out of range.
func (d *Decoder) Read() (Token, error)
Read returns the next token. It will return an error if there is no valid token.
Encoder provides methods to write out textproto constructs and values. The user is responsible for producing valid sequences of constructs and values.
type Encoder struct {
// contains filtered or unexported fields
}
func NewEncoder(buf []byte, indent string, delims [2]byte, outputASCII bool) (*Encoder, error)
NewEncoder returns an Encoder.
If indent is a non-empty string, it causes every entry in a List or Message to be preceded by the indent and trailed by a newline.
If delims is not the zero value, it controls the delimiter characters used for messages (e.g., "{}" vs "<>").
If outputASCII is true, strings will be serialized in such a way that multi-byte UTF-8 sequences are escaped. This property ensures that the overall output is ASCII (as opposed to UTF-8).
func (e *Encoder) Bytes() []byte
Bytes returns the content of the written bytes.
func (e *Encoder) EndMessage()
EndMessage writes out the '}' or '>' symbol.
func (e *Encoder) Reset(es encoderState)
Reset resets the Encoder to the given encoderState from a Snapshot.
func (e *Encoder) Snapshot() encoderState
Snapshot returns the current snapshot for use in Reset.
func (e *Encoder) StartMessage()
StartMessage writes out the '{' or '<' symbol.
func (e *Encoder) WriteBool(b bool)
WriteBool writes out the given boolean value.
func (e *Encoder) WriteFloat(n float64, bitSize int)
WriteFloat writes out the given float value for given bitSize.
func (e *Encoder) WriteInt(n int64)
WriteInt writes out the given signed integer value.
func (e *Encoder) WriteLiteral(s string)
WriteLiteral writes out the given string as a literal value without quotes. This is used for writing enum literal strings.
func (e *Encoder) WriteName(s string)
WriteName writes out the field name and the separator ':'.
func (e *Encoder) WriteString(s string)
WriteString writes out the given string value.
func (e *Encoder) WriteUint(n uint64)
WriteUint writes out the given unsigned integer value.
Kind represents a token kind expressible in the textproto format.
type Kind uint8
Kind values.
const ( Invalid Kind = iota EOF Name // Name indicates the field name. Scalar // Scalar are scalar values, e.g. "string", 47, ENUM_LITERAL, true. MessageOpen MessageClose ListOpen ListClose )
func (t Kind) String() string
NameKind represents different types of field names.
type NameKind uint8
NameKind values.
const ( IdentName NameKind = iota + 1 TypeName FieldNumber )
func (t NameKind) String() string
Token provides a parsed token kind and value. Values are provided by the different accessor methods.
type Token struct {
// contains filtered or unexported fields
}
func (t Token) Bool() (bool, bool)
Bool returns the bool value for a Scalar type.
func (t Token) Enum() (string, bool)
Enum returns the literal value for a Scalar type for use as enum literals.
func (t Token) FieldNumber() int32
FieldNumber returns the value for FieldNumber type. It returns a non-negative int32 value. Caller will still need to validate for the correct field number range.
func (t Token) Float32() (float32, bool)
Float32 returns the float32 value for a Scalar type.
func (t Token) Float64() (float64, bool)
Float64 returns the float64 value for a Scalar type.
func (t Token) HasSeparator() bool
HasSeparator returns true if the field name is followed by the separator char ':', else false. It panics if type is not Name.
func (t Token) IdentName() string
IdentName returns the value for IdentName type.
func (t Token) Int32() (int32, bool)
Int32 returns the int32 value for a Scalar type.
func (t Token) Int64() (int64, bool)
Int64 returns the int64 value for a Scalar type.
func (t Token) Kind() Kind
Kind returns the token kind.
func (t Token) NameKind() NameKind
NameKind returns IdentName, TypeName or FieldNumber. It panics if type is not Name.
func (t Token) Pos() int
Pos returns the token position from the input.
func (t Token) RawString() string
RawString returns the read value in string.
func (t Token) String() (string, bool)
String returns the string value for a Scalar type.
func (t Token) TypeName() string
TypeName returns the value for TypeName type.
func (t Token) Uint32() (uint32, bool)
Uint32 returns the uint32 value for a Scalar type.
func (t Token) Uint64() (uint64, bool)
Uint64 returns the uint64 value for a Scalar type.