package rep import ( //"encoding/json" json "gopkg.in/yaml.v3" "git.sr.ht/~cco/go-scopes/logging/log" ) func ParseJson(inp string) coderep { return ParseJsonTo[interface{}](inp) } func ParseJsonTo[T any](inp string) coderep { var data T err := json.Unmarshal([]byte(inp), &data) if err != nil { log.Error(err).Msg("rep.ParseJson") return nil } rep := prepare(data) return rep } func prepare(raw interface{}) coderep { switch ri := raw.(type) { case []interface{}: return makeCode(ri) case map[string]interface{}: return makeModule(ri) default: return makeRecord(ri) } return nil }