Generate vocab package to multiple files.

このコミットが含まれているのは:
Cory Slep 2018-06-13 21:53:01 +02:00
コミット f155f0a3d0
61個のファイルの変更596941行の追加596464行の削除

ファイルの表示

@ -1236,6 +1236,7 @@ var (
return b.String()
},
},
Imports: []string{"time"},
}
xsdBooleanValueType = &ValueType{
Name: "boolean",
@ -1317,6 +1318,7 @@ var (
return b.String()
},
},
Imports: []string{"net/url"},
}
xsdFloatValueType = &ValueType{
Name: "float",
@ -1549,6 +1551,7 @@ var (
return b.String()
},
},
Imports: []string{"time"},
}
xsdNonNegativeIntegerValueType = &ValueType{
Name: "nonNegativeInteger",
@ -1904,6 +1907,7 @@ var IriValueType = &ValueType{
return b.String()
},
},
Imports: []string{"net/url"},
}
func init() {

ファイルの表示

@ -69,6 +69,7 @@ type ValueType struct {
ZeroValue string
DeserializeFn *FunctionDef
SerializeFn *FunctionDef
Imports []string
}
type DomainReference struct {

ファイルの表示

@ -22,19 +22,24 @@ const (
unknownValueSerializeFnName = "unknownValueSerialize"
)
func GenerateImplementations(types []*defs.Type, properties []*defs.PropertyType, values []*defs.ValueType) ([]byte, error) {
type File struct {
Name string
Content []byte
}
func GenerateImplementations(types []*defs.Type, properties []*defs.PropertyType, values []*defs.ValueType) (f []*File, err error) {
// Validate inputs
err := validateDomains(properties)
err = validateDomains(properties)
if err != nil {
return nil, err
return
}
err = validateProperties(types)
if err != nil {
return nil, err
return
}
err = validateValues(values, properties)
if err != nil {
return nil, err
return
}
p := generatePackageDefinition()
@ -54,13 +59,40 @@ func GenerateImplementations(types []*defs.Type, properties []*defs.PropertyType
unknown := generateUnknownValueType()
p.F = append(p.F, unknown.DeserializeFn, unknown.SerializeFn)
var b []byte
b, err = format.Source([]byte(p.Generate()))
if err != nil {
return
}
f = append(f, &File{
Name: "gen_vocab.go",
Content: b,
})
for _, t := range types {
funcs, defs, interfaces := generateDefinitions(t)
p := &defs.PackageDef{
Name: "vocab",
}
funcs, defs, interfaces, imports := generateDefinitions(t)
imports["fmt"] = true
for i, _ := range imports {
p.Imports = append(p.Imports, i)
}
p.F = append(p.F, funcs...)
p.Defs = append(p.Defs, defs...)
p.I = append(p.I, interfaces...)
var b []byte
b, err = format.Source([]byte(p.Generate()))
if err != nil {
return
}
f = append(f, &File{
Name: fmt.Sprintf("gen_%s.go", strings.ToLower(t.Name)),
Content: b,
})
}
return format.Source([]byte(p.Generate()))
return
}
func generateTyperInterface() *defs.InterfaceDef {

ファイルの表示

@ -6,7 +6,8 @@ import (
"github.com/go-fed/activity/tools/defs"
)
func generateDefinitions(t *defs.Type) (fd []*defs.FunctionDef, sd []*defs.StructDef, x []*defs.InterfaceDef) {
func generateDefinitions(t *defs.Type) (fd []*defs.FunctionDef, sd []*defs.StructDef, x []*defs.InterfaceDef, imports map[string]bool) {
imports = make(map[string]bool)
this := &defs.StructDef{
Typename: t.Name,
Comment: t.Notes,
@ -27,6 +28,13 @@ func generateDefinitions(t *defs.Type) (fd []*defs.FunctionDef, sd []*defs.Struc
deserializeFragments = append(deserializeFragments, d)
fd = append(fd, pf...)
sd = append(sd, pd...)
for _, r := range p.Range {
if r.V != nil {
for _, i := range r.V.Imports {
imports[i] = true
}
}
}
}
generateWithoutProperties(t, this, thisInterface)
generateAddUnknownFunction(t, this)

ファイルの表示

@ -8,12 +8,14 @@ import (
func main() {
allTypes := append(defs.AllCoreTypes, defs.AllExtendedTypes...)
b, err := gen.GenerateImplementations(allTypes, defs.AllPropertyTypes, defs.AllValueTypes)
files, err := gen.GenerateImplementations(allTypes, defs.AllPropertyTypes, defs.AllValueTypes)
if err != nil {
panic(err)
}
err = ioutil.WriteFile("vocab.go", b, 0666)
if err != nil {
panic(err)
for _, f := range files {
err = ioutil.WriteFile(f.Name, f.Content, 0666)
if err != nil {
panic(err)
}
}
}

11930
vocab/gen_accept.go ノーマルファイル

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

11930
vocab/gen_activity.go ノーマルファイル

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

11930
vocab/gen_add.go ノーマルファイル

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

11930
vocab/gen_announce.go ノーマルファイル

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

10140
vocab/gen_application.go ノーマルファイル

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

11675
vocab/gen_arrive.go ノーマルファイル

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

10140
vocab/gen_article.go ノーマルファイル

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

10140
vocab/gen_audio.go ノーマルファイル

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

11930
vocab/gen_block.go ノーマルファイル

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

11329
vocab/gen_collection.go ノーマルファイル

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

12028
vocab/gen_collectionpage.go ノーマルファイル

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

11930
vocab/gen_create.go ノーマルファイル

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

11930
vocab/gen_delete.go ノーマルファイル

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

11930
vocab/gen_dislike.go ノーマルファイル

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

10140
vocab/gen_document.go ノーマルファイル

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

10140
vocab/gen_event.go ノーマルファイル

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

11930
vocab/gen_flag.go ノーマルファイル

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

11930
vocab/gen_follow.go ノーマルファイル

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

10140
vocab/gen_group.go ノーマルファイル

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

11930
vocab/gen_ignore.go ノーマルファイル

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

10506
vocab/gen_image.go ノーマルファイル

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

11763
vocab/gen_intransitiveactivity.go ノーマルファイル

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

11930
vocab/gen_invite.go ノーマルファイル

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

11930
vocab/gen_join.go ノーマルファイル

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

11930
vocab/gen_leave.go ノーマルファイル

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

11930
vocab/gen_like.go ノーマルファイル

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

2589
vocab/gen_link.go ノーマルファイル

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

11930
vocab/gen_listen.go ノーマルファイル

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

2589
vocab/gen_mention.go ノーマルファイル

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

11930
vocab/gen_move.go ノーマルファイル

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

10140
vocab/gen_note.go ノーマルファイル

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

10140
vocab/gen_object.go ノーマルファイル

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

11930
vocab/gen_offer.go ノーマルファイル

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

11449
vocab/gen_orderedcollection.go ノーマルファイル

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

12331
vocab/gen_orderedcollectionpage.go ノーマルファイル

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

10140
vocab/gen_organization.go ノーマルファイル

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

10140
vocab/gen_page.go ノーマルファイル

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

10140
vocab/gen_person.go ノーマルファイル

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

11055
vocab/gen_place.go ノーマルファイル

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

10337
vocab/gen_profile.go ノーマルファイル

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

12698
vocab/gen_question.go ノーマルファイル

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

11930
vocab/gen_read.go ノーマルファイル

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

11930
vocab/gen_reject.go ノーマルファイル

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

10825
vocab/gen_relationship.go ノーマルファイル

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

11930
vocab/gen_remove.go ノーマルファイル

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

10140
vocab/gen_service.go ノーマルファイル

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

11930
vocab/gen_tentativeaccept.go ノーマルファイル

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

11930
vocab/gen_tentativereject.go ノーマルファイル

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

10629
vocab/gen_tombstone.go ノーマルファイル

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

11675
vocab/gen_travel.go ノーマルファイル

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

11930
vocab/gen_undo.go ノーマルファイル

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

11930
vocab/gen_update.go ノーマルファイル

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

10140
vocab/gen_video.go ノーマルファイル

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

11930
vocab/gen_view.go ノーマルファイル

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

1404
vocab/gen_vocab.go ノーマルファイル

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

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