Add AnyObject/Link/Activity callbacks to Deserialize

このコミットが含まれているのは:
Cory Slep 2018-04-01 16:52:54 +02:00
コミット 56e7e842d3
2個のファイルの変更1598行の追加113行の削除

ファイル差分が大きすぎるため省略します 差分を読み込み

ファイルの表示

@ -95,17 +95,17 @@ func generateResolver(types []*defs.Type) *defs.StructDef {
}
b.WriteString("if obj, ok := i.(vocab.ObjectType); ok {\n")
b.WriteString("if t.AnyObjectCallback != nil {\n")
b.WriteString("return true, t.AnyObjectCallback(obj)")
b.WriteString("return true, t.AnyObjectCallback(obj)\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("if link, ok := i.(vocab.LinkType); ok {\n")
b.WriteString("if t.AnyLinkCallback != nil {\n")
b.WriteString("return true, t.AnyLinkCallback(link)")
b.WriteString("return true, t.AnyLinkCallback(link)\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("if activity, ok := i.(vocab.ActivityType); ok {\n")
b.WriteString("if t.AnyActivityCallback != nil {\n")
b.WriteString("return true, t.AnyActivityCallback(activity)")
b.WriteString("return true, t.AnyActivityCallback(activity)\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("return false, fmt.Errorf(\"The interface did not match any known types: %T\", i)\n")
@ -144,13 +144,40 @@ func generateResolver(types []*defs.Type) *defs.StructDef {
b.WriteString(fmt.Sprintf("// Begin generateResolver for type '%s'\n", t.Name))
b.WriteString("for _, typeName := range typeStringVals {\n")
b.WriteString(fmt.Sprintf("if typeName == \"%s\" {\n", t.Name))
b.WriteString(fmt.Sprintf("if t.%s != nil {\n", name))
b.WriteString(fmt.Sprintf("if t.%s != nil || t.AnyObjectCallback != nil || t.AnyLinkCallback != nil || t.AnyActivityCallback != nil {\n", name))
b.WriteString(fmt.Sprintf("v := &vocab.%s{}\n", t.Name))
b.WriteString("if err := v.Deserialize(m); err != nil {\n")
b.WriteString("return err\n")
b.WriteString("}\n")
b.WriteString(fmt.Sprintf("as := &%s{v}\n", t.Name))
b.WriteString(fmt.Sprintf("return t.%s(as)\n", name))
b.WriteString(fmt.Sprintf("if t.%s != nil {\n", name))
b.WriteString(fmt.Sprintf("if err := t.%s(as); err != nil {\n", name))
b.WriteString("return err\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("var i interface{} = v\n")
b.WriteString("if obj, ok := i.(vocab.ObjectType); ok {\n")
b.WriteString("if t.AnyObjectCallback != nil {\n")
b.WriteString("if err := t.AnyObjectCallback(obj); err != nil {\n")
b.WriteString("return err\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("if link, ok := i.(vocab.LinkType); ok {\n")
b.WriteString("if t.AnyLinkCallback != nil {\n")
b.WriteString("if err := t.AnyLinkCallback(link); err != nil {\n")
b.WriteString("return err\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("if activity, ok := i.(vocab.ActivityType); ok {\n")
b.WriteString("if t.AnyActivityCallback != nil {\n")
b.WriteString("if err := t.AnyActivityCallback(activity); err != nil {\n")
b.WriteString("return err\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("}\n")
b.WriteString("return nil\n")
b.WriteString("} else {\n")
b.WriteString("return nil\n")
b.WriteString("}\n")