package kwargs import ( "encoding/json" "fmt" "git.towk2.me/towk/makeshift/internal/format" "github.com/rs/zerolog/log" ) const RESERVED_KEY = "kwargs" type KWArgs map[string]any func New() KWArgs { return KWArgs{} } func (kw KWArgs) String() string { return string(kw.Bytes()) } func (kw KWArgs) Bytes() []byte { b, err := json.Marshal(kw) if err != nil { log.Error().Err(err).Msg("failed to marshal kwargs") return []byte("{}") } return b } func (kw *KWArgs) Set(v string /* should be JSON object*/) error { var ( newArgs KWArgs err error ) err = format.Unmarshal([]byte(v), &newArgs, format.JSON) if err != nil { return fmt.Errorf("failed to unmarshal value for %s: %w", kw.Type(), err) } *kw = newArgs return nil } func (kw *KWArgs) Type() string { return "KWArgs" }