// Copyright IBM Corp. 2014, 2026 // SPDX-License-Identifier: BUSL-1.1 package statekeys import ( "strings" ) // rawKeyBuilder is a helper for building multi-field keys in the format // that's expected by [cutKeyField]. // // The zero value of rawKeyBuilder is ready to use. type rawKeyBuilder struct { b strings.Builder w bool } // AppendField appends the given string to the key-in-progress as an additional // field. // // The given string must not contain any unquoted commas, because comma is the // field delimiter. If given an invalid field value this function will panic. func (b *rawKeyBuilder) AppendField(s string) { if keyDelimiterIdx(s) != -1 { panic("key field contains the field delimiter") } if b.w { b.b.WriteByte(',') } b.w = true b.b.WriteString(s) } // Raw returns the assembled raw key string. func (b *rawKeyBuilder) Raw() string { return b.b.String() }