forge/rep: record type improvements
This commit is contained in:
parent
4e58729985
commit
5626840630
3 changed files with 17 additions and 12 deletions
|
@ -28,7 +28,7 @@ func prepare(raw interface{}) coderep {
|
|||
case map[string]interface{}:
|
||||
return makeModule(ri)
|
||||
default:
|
||||
return makeRecord(&ri)
|
||||
return makeRecord(ri)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -49,6 +49,10 @@ func (ci code) Compile(f forge.FE) forge.FPtr {
|
|||
c.Append(i.Compile(f))
|
||||
case map[string]interface{}:
|
||||
c.Append(makeModule(i).Compile(f))
|
||||
case record:
|
||||
c.Append(i.Compile(f))
|
||||
default:
|
||||
c.Append(makeRecord(i).Compile(f))
|
||||
}
|
||||
}
|
||||
return c.Reset()
|
||||
|
@ -91,14 +95,20 @@ func makeModule(ri map[string]interface{}) module {
|
|||
|
||||
// record - some data structure, typically represented as struct
|
||||
|
||||
type Record struct {
|
||||
Data interface{}
|
||||
type Record = record
|
||||
|
||||
type record struct {
|
||||
data interface{}
|
||||
}
|
||||
|
||||
func (r *Record) Compile(f forge.FE) forge.FPtr {
|
||||
func (r *record) Compile(f forge.FE) forge.FPtr {
|
||||
return nil
|
||||
}
|
||||
|
||||
func makeRecord(ri interface{}) *Record {
|
||||
return &Record{ri}
|
||||
func (r *record) Data() interface{} {
|
||||
return r.data
|
||||
}
|
||||
|
||||
func makeRecord(ri interface{}) *record {
|
||||
return &record{ri}
|
||||
}
|
||||
|
|
|
@ -17,10 +17,6 @@ type Person struct {
|
|||
LastName string `json:"lastname"`
|
||||
}
|
||||
|
||||
func (p Person) Compile(f forge.FE) forge.FPtr {
|
||||
return f.Code(p)
|
||||
}
|
||||
|
||||
func TestForge(tb *tbase.T) {
|
||||
t := testing.SetUp(tb)
|
||||
t.Run("exec", ExecTest)
|
||||
|
@ -67,7 +63,6 @@ func JsonTest(t *testing.T) {
|
|||
t.AssertEqual(fe.Pop(), 6)
|
||||
j = `{"firstname": "John", "lastname": "Dow"}`
|
||||
prep := rep.ParseJsonTo[Person](j)
|
||||
data := prep.(*rep.Record).Data.(*interface{})
|
||||
person := (*data).(Person)
|
||||
person := prep.(*rep.Record).Data().(Person)
|
||||
t.AssertEqual(person.FirstName, "John")
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue