diff options
Diffstat (limited to 'vendor/codeberg.org/gruf/go-structr/key.go')
| -rw-r--r-- | vendor/codeberg.org/gruf/go-structr/key.go | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/vendor/codeberg.org/gruf/go-structr/key.go b/vendor/codeberg.org/gruf/go-structr/key.go index 11e595b80..ad591f8ac 100644 --- a/vendor/codeberg.org/gruf/go-structr/key.go +++ b/vendor/codeberg.org/gruf/go-structr/key.go @@ -4,6 +4,7 @@ import ( "sync" "codeberg.org/gruf/go-byteutil" + "codeberg.org/gruf/go-mangler/v2" ) // Key represents one key to @@ -14,6 +15,37 @@ type Key struct { raw []any } +// MakeKey generates Key{} from given parts. +func MakeKey(parts ...any) Key { + buf := new_buffer() + buf.B = mangler.AppendMulti(buf.B[:0], parts...) + key := string(buf.B) + free_buffer(buf) + return Key{ + raw: parts, + key: key, + } +} + +// MakeKeys generates []Key{} from given (multiple) parts. +func MakeKeys(parts ...[]any) []Key { + keys := make([]Key, len(parts)) + if len(keys) != len(parts) { + panic(assert("BCE")) + } + buf := new_buffer() + for x, parts := range parts { + buf.B = mangler.AppendMulti(buf.B[:0], parts...) + key := string(buf.B) + keys[x] = Key{ + raw: parts, + key: key, + } + } + free_buffer(buf) + return keys +} + // Key returns the underlying cache key string. // NOTE: this will not be log output friendly. func (k Key) Key() string { @@ -31,11 +63,6 @@ func (k Key) Values() []any { return k.raw } -// Zero indicates a zero value key. -func (k Key) Zero() bool { - return (k.key == "") -} - var buf_pool sync.Pool // new_buffer returns a new initialized byte buffer. |
