35 lines
612 B
Go
35 lines
612 B
Go
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
|
|
}
|