go-scopes/forge/rep/json.go

32 lines
583 B
Go

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
}