...

Source file src/github.com/rs/zerolog/internal/cbor/string.go

Documentation: github.com/rs/zerolog/internal/cbor

     1  package cbor
     2  
     3  import "fmt"
     4  
     5  // AppendStrings encodes and adds an array of strings to the dst byte array.
     6  func (e Encoder) AppendStrings(dst []byte, vals []string) []byte {
     7  	major := majorTypeArray
     8  	l := len(vals)
     9  	if l <= additionalMax {
    10  		lb := byte(l)
    11  		dst = append(dst, major|lb)
    12  	} else {
    13  		dst = appendCborTypePrefix(dst, major, uint64(l))
    14  	}
    15  	for _, v := range vals {
    16  		dst = e.AppendString(dst, v)
    17  	}
    18  	return dst
    19  }
    20  
    21  // AppendString encodes and adds a string to the dst byte array.
    22  func (Encoder) AppendString(dst []byte, s string) []byte {
    23  	major := majorTypeUtf8String
    24  
    25  	l := len(s)
    26  	if l <= additionalMax {
    27  		lb := byte(l)
    28  		dst = append(dst, major|lb)
    29  	} else {
    30  		dst = appendCborTypePrefix(dst, majorTypeUtf8String, uint64(l))
    31  	}
    32  	return append(dst, s...)
    33  }
    34  
    35  // AppendStringers encodes and adds an array of Stringer values
    36  // to the dst byte array.
    37  func (e Encoder) AppendStringers(dst []byte, vals []fmt.Stringer) []byte {
    38  	if len(vals) == 0 {
    39  		return e.AppendArrayEnd(e.AppendArrayStart(dst))
    40  	}
    41  	dst = e.AppendArrayStart(dst)
    42  	dst = e.AppendStringer(dst, vals[0])
    43  	if len(vals) > 1 {
    44  		for _, val := range vals[1:] {
    45  			dst = e.AppendStringer(dst, val)
    46  		}
    47  	}
    48  	return e.AppendArrayEnd(dst)
    49  }
    50  
    51  // AppendStringer encodes and adds the Stringer value to the dst
    52  // byte array.
    53  func (e Encoder) AppendStringer(dst []byte, val fmt.Stringer) []byte {
    54  	if val == nil {
    55  		return e.AppendNil(dst)
    56  	}
    57  	return e.AppendString(dst, val.String())
    58  }
    59  
    60  // AppendBytes encodes and adds an array of bytes to the dst byte array.
    61  func (Encoder) AppendBytes(dst, s []byte) []byte {
    62  	major := majorTypeByteString
    63  
    64  	l := len(s)
    65  	if l <= additionalMax {
    66  		lb := byte(l)
    67  		dst = append(dst, major|lb)
    68  	} else {
    69  		dst = appendCborTypePrefix(dst, major, uint64(l))
    70  	}
    71  	return append(dst, s...)
    72  }
    73  
    74  // AppendEmbeddedJSON adds a tag and embeds input JSON as such.
    75  func AppendEmbeddedJSON(dst, s []byte) []byte {
    76  	major := majorTypeTags
    77  	minor := additionalTypeEmbeddedJSON
    78  
    79  	// Append the TAG to indicate this is Embedded JSON.
    80  	dst = append(dst, major|additionalTypeIntUint16)
    81  	dst = append(dst, byte(minor>>8))
    82  	dst = append(dst, byte(minor&0xff))
    83  
    84  	// Append the JSON Object as Byte String.
    85  	major = majorTypeByteString
    86  
    87  	l := len(s)
    88  	if l <= additionalMax {
    89  		lb := byte(l)
    90  		dst = append(dst, major|lb)
    91  	} else {
    92  		dst = appendCborTypePrefix(dst, major, uint64(l))
    93  	}
    94  	return append(dst, s...)
    95  }
    96  

View as plain text