32 lines
583 B
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
|
|
}
|