mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 22:42:24 -05:00 
			
		
		
		
	Bumps codeberg.org/gruf/go-kv from 1.6.0 to 1.6.1. --- updated-dependencies: - dependency-name: codeberg.org/gruf/go-kv dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
		
			
				
	
	
		
			105 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package kv
 | |
| 
 | |
| import (
 | |
| 	"codeberg.org/gruf/go-byteutil"
 | |
| )
 | |
| 
 | |
| // bufsize is the default buffer size per field to alloc
 | |
| // when calling .AppendFormat() from within .String().
 | |
| const bufsize = 64
 | |
| 
 | |
| // Fields is a typedef for a []Field slice to provide
 | |
| // slightly more performant string formatting for multiples.
 | |
| type Fields []Field
 | |
| 
 | |
| // Get will return the field with given 'key'.
 | |
| func (f Fields) Get(key string) (*Field, bool) {
 | |
| 	for i := 0; i < len(f); i++ {
 | |
| 		if f[i].K == key {
 | |
| 			return &f[i], true
 | |
| 		}
 | |
| 	}
 | |
| 	return nil, false
 | |
| }
 | |
| 
 | |
| // Set will set an existing field with 'key' to 'value', or append new.
 | |
| func (f *Fields) Set(key string, value interface{}) {
 | |
| 	for i := 0; i < len(*f); i++ {
 | |
| 		// Update existing value
 | |
| 		if (*f)[i].K == key {
 | |
| 			(*f)[i].V = value
 | |
| 			return
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	// Append new field
 | |
| 	*f = append(*f, Field{
 | |
| 		K: key,
 | |
| 		V: value,
 | |
| 	})
 | |
| }
 | |
| 
 | |
| // AppendFormat appends a string representation of receiving Field(s) to 'b'.
 | |
| func (f Fields) AppendFormat(buf *byteutil.Buffer, vbose bool) {
 | |
| 	for i := 0; i < len(f); i++ {
 | |
| 		f[i].AppendFormat(buf, vbose)
 | |
| 		buf.WriteByte(' ')
 | |
| 	}
 | |
| 	if len(f) > 0 {
 | |
| 		buf.Truncate(1)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // String returns a string representation of receiving Field(s).
 | |
| func (f Fields) String() string {
 | |
| 	b := make([]byte, 0, bufsize*len(f))
 | |
| 	buf := byteutil.Buffer{B: b}
 | |
| 	f.AppendFormat(&buf, false)
 | |
| 	return buf.String()
 | |
| }
 | |
| 
 | |
| // GoString performs .String() but with type prefix.
 | |
| func (f Fields) GoString() string {
 | |
| 	b := make([]byte, 0, bufsize*len(f))
 | |
| 	buf := byteutil.Buffer{B: b}
 | |
| 	f.AppendFormat(&buf, true)
 | |
| 	return "kv.Fields{" + buf.String() + "}"
 | |
| }
 | |
| 
 | |
| // Field represents an individual key-value field.
 | |
| type Field struct {
 | |
| 	K string      // Field key
 | |
| 	V interface{} // Field value
 | |
| }
 | |
| 
 | |
| // Key returns the formatted key string of this Field.
 | |
| func (f Field) Key() string {
 | |
| 	buf := byteutil.Buffer{B: make([]byte, 0, bufsize/2)}
 | |
| 	AppendQuoteString(&buf, f.K)
 | |
| 	return buf.String()
 | |
| }
 | |
| 
 | |
| // String will return a string representation of this Field
 | |
| // of the form `key=value` where `value` is formatted using
 | |
| // fmt package's `%+v` directive. If the .X = true (verbose),
 | |
| // then it uses '%#v'. Both key and value are escaped and
 | |
| // quoted if necessary to fit on single line.
 | |
| //
 | |
| // If the `kvformat` build tag is provided, the formatting
 | |
| // will be performed by the `kv/format` package. In this case
 | |
| // the value will be formatted using the `{:v}` directive, or
 | |
| // `{:?}` if .X = true (verbose).
 | |
| func (f Field) String() string {
 | |
| 	b := make([]byte, 0, bufsize)
 | |
| 	buf := byteutil.Buffer{B: b}
 | |
| 	f.AppendFormat(&buf, false)
 | |
| 	return buf.String()
 | |
| }
 | |
| 
 | |
| // GoString performs .String() but with verbose always enabled.
 | |
| func (f Field) GoString() string {
 | |
| 	b := make([]byte, 0, bufsize)
 | |
| 	buf := byteutil.Buffer{B: b}
 | |
| 	f.AppendFormat(&buf, true)
 | |
| 	return buf.String()
 | |
| }
 |