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