34 lines
588 B
Go
34 lines
588 B
Go
package kwargs
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"git.towk2.me/towk/makeshift/internal/format"
|
|
)
|
|
|
|
const RESERVED_KEY = "kwargs"
|
|
|
|
type KWArgs map[string]any
|
|
|
|
func (kw KWArgs) String() string {
|
|
b, _ := json.Marshal(kw)
|
|
return string(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"
|
|
}
|