Also generate refrenced vocabularies.
このコミットが含まれているのは:
コミット
a40bd3129f
|
@ -202,7 +202,6 @@ func (c Converter) Convert(p *rdf.ParsedVocabulary) (f []*File, e error) {
|
||||||
// convertToFiles takes the generators for a vocabulary and maps them into a
|
// convertToFiles takes the generators for a vocabulary and maps them into a
|
||||||
// file structure.
|
// file structure.
|
||||||
func (c Converter) convertToFiles(v vocabulary) (f []*File, e error) {
|
func (c Converter) convertToFiles(v vocabulary) (f []*File, e error) {
|
||||||
// TODO: Types and properties of references?
|
|
||||||
// Values -- include all referenced values too.
|
// Values -- include all referenced values too.
|
||||||
for _, v := range v.Values {
|
for _, v := range v.Values {
|
||||||
pkg := c.valuePackage(v)
|
pkg := c.valuePackage(v)
|
||||||
|
@ -213,88 +212,19 @@ func (c Converter) convertToFiles(v vocabulary) (f []*File, e error) {
|
||||||
pkg := c.valuePackage(v)
|
pkg := c.valuePackage(v)
|
||||||
f = append(f, convertValue(pkg, v))
|
f = append(f, convertValue(pkg, v))
|
||||||
}
|
}
|
||||||
}
|
var files []*File
|
||||||
// Functional Properties
|
files, e = c.toFiles(*ref)
|
||||||
for _, i := range v.FProps {
|
|
||||||
var pm *gen.PackageManager
|
|
||||||
pm, e = c.propertyPackageManager(i, v.Name)
|
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Implementation
|
f = append(f, files...)
|
||||||
priv := pm.PrivatePackage()
|
|
||||||
file := jen.NewFilePath(priv.Path())
|
|
||||||
file.Add(i.Definition().Definition())
|
|
||||||
f = append(f, &File{
|
|
||||||
F: file,
|
|
||||||
FileName: fmt.Sprintf("gen_property_%s.go", i.PropertyName()),
|
|
||||||
Directory: priv.WriteDir(),
|
|
||||||
})
|
|
||||||
// Interface
|
|
||||||
pub := pm.PublicPackage()
|
|
||||||
file = jen.NewFilePath(pub.Path())
|
|
||||||
file.Add(i.InterfaceDefinition(pm.PublicPackage()).Definition())
|
|
||||||
f = append(f, &File{
|
|
||||||
F: file,
|
|
||||||
FileName: fmt.Sprintf("gen_property_%s_interface.go", i.PropertyName()),
|
|
||||||
Directory: pub.WriteDir(),
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
// Non-Functional Properties
|
var files []*File
|
||||||
for _, i := range v.NFProps {
|
files, e = c.toFiles(v)
|
||||||
var pm *gen.PackageManager
|
|
||||||
pm, e = c.propertyPackageManager(i, v.Name)
|
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Implementation
|
f = append(f, files...)
|
||||||
priv := pm.PrivatePackage()
|
|
||||||
file := jen.NewFilePath(priv.Path())
|
|
||||||
s, t := i.Definitions()
|
|
||||||
file.Add(s.Definition()).Line().Add(t.Definition())
|
|
||||||
f = append(f, &File{
|
|
||||||
F: file,
|
|
||||||
FileName: fmt.Sprintf("gen_property_%s.go", i.PropertyName()),
|
|
||||||
Directory: priv.WriteDir(),
|
|
||||||
})
|
|
||||||
// Interface
|
|
||||||
pub := pm.PublicPackage()
|
|
||||||
file = jen.NewFilePath(pub.Path())
|
|
||||||
for _, intf := range i.InterfaceDefinitions(pm.PublicPackage()) {
|
|
||||||
file.Add(intf.Definition()).Line()
|
|
||||||
}
|
|
||||||
f = append(f, &File{
|
|
||||||
F: file,
|
|
||||||
FileName: fmt.Sprintf("gen_property_%s_interface.go", i.PropertyName()),
|
|
||||||
Directory: pub.WriteDir(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// Types
|
|
||||||
for _, i := range v.Types {
|
|
||||||
var pm *gen.PackageManager
|
|
||||||
pm, e = c.typePackageManager(i, v.Name)
|
|
||||||
if e != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// Implementation
|
|
||||||
priv := pm.PrivatePackage()
|
|
||||||
file := jen.NewFilePath(priv.Path())
|
|
||||||
file.Add(i.Definition().Definition())
|
|
||||||
f = append(f, &File{
|
|
||||||
F: file,
|
|
||||||
FileName: fmt.Sprintf("gen_type_%s.go", strings.ToLower(i.TypeName())),
|
|
||||||
Directory: priv.WriteDir(),
|
|
||||||
})
|
|
||||||
// Interface
|
|
||||||
pub := pm.PublicPackage()
|
|
||||||
file = jen.NewFilePath(pub.Path())
|
|
||||||
file.Add(i.InterfaceDefinition(pm.PublicPackage()).Definition())
|
|
||||||
f = append(f, &File{
|
|
||||||
F: file,
|
|
||||||
FileName: fmt.Sprintf("gen_type_%s_interface.go", strings.ToLower(i.TypeName())),
|
|
||||||
Directory: pub.WriteDir(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
pkgFiles, err := c.packageFiles(v)
|
pkgFiles, err := c.packageFiles(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
e = err
|
e = err
|
||||||
|
@ -310,7 +240,6 @@ func (c Converter) convertToFiles(v vocabulary) (f []*File, e error) {
|
||||||
FileName: "gen_manager.go",
|
FileName: "gen_manager.go",
|
||||||
Directory: pub.WriteDir(),
|
Directory: pub.WriteDir(),
|
||||||
})
|
})
|
||||||
var files []*File
|
|
||||||
files, e = c.rootFiles(pub, v.Name, v)
|
files, e = c.rootFiles(pub, v.Name, v)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return
|
return
|
||||||
|
@ -1046,6 +975,91 @@ func (c Converter) allExtendsAreIn(registry *rdf.RDFRegistry, t rdf.VocabularyTy
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// toFiles converts a vocabulary's types and properties to files.
|
||||||
|
func (c Converter) toFiles(v vocabulary) (f []*File, e error) {
|
||||||
|
for _, i := range v.FProps {
|
||||||
|
var pm *gen.PackageManager
|
||||||
|
pm, e = c.propertyPackageManager(i, v.Name)
|
||||||
|
if e != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Implementation
|
||||||
|
priv := pm.PrivatePackage()
|
||||||
|
file := jen.NewFilePath(priv.Path())
|
||||||
|
file.Add(i.Definition().Definition())
|
||||||
|
f = append(f, &File{
|
||||||
|
F: file,
|
||||||
|
FileName: fmt.Sprintf("gen_property_%s.go", i.PropertyName()),
|
||||||
|
Directory: priv.WriteDir(),
|
||||||
|
})
|
||||||
|
// Interface
|
||||||
|
pub := pm.PublicPackage()
|
||||||
|
file = jen.NewFilePath(pub.Path())
|
||||||
|
file.Add(i.InterfaceDefinition(pm.PublicPackage()).Definition())
|
||||||
|
f = append(f, &File{
|
||||||
|
F: file,
|
||||||
|
FileName: fmt.Sprintf("gen_property_%s_interface.go", i.PropertyName()),
|
||||||
|
Directory: pub.WriteDir(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// Non-Functional Properties
|
||||||
|
for _, i := range v.NFProps {
|
||||||
|
var pm *gen.PackageManager
|
||||||
|
pm, e = c.propertyPackageManager(i, v.Name)
|
||||||
|
if e != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Implementation
|
||||||
|
priv := pm.PrivatePackage()
|
||||||
|
file := jen.NewFilePath(priv.Path())
|
||||||
|
s, t := i.Definitions()
|
||||||
|
file.Add(s.Definition()).Line().Add(t.Definition())
|
||||||
|
f = append(f, &File{
|
||||||
|
F: file,
|
||||||
|
FileName: fmt.Sprintf("gen_property_%s.go", i.PropertyName()),
|
||||||
|
Directory: priv.WriteDir(),
|
||||||
|
})
|
||||||
|
// Interface
|
||||||
|
pub := pm.PublicPackage()
|
||||||
|
file = jen.NewFilePath(pub.Path())
|
||||||
|
for _, intf := range i.InterfaceDefinitions(pm.PublicPackage()) {
|
||||||
|
file.Add(intf.Definition()).Line()
|
||||||
|
}
|
||||||
|
f = append(f, &File{
|
||||||
|
F: file,
|
||||||
|
FileName: fmt.Sprintf("gen_property_%s_interface.go", i.PropertyName()),
|
||||||
|
Directory: pub.WriteDir(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// Types
|
||||||
|
for _, i := range v.Types {
|
||||||
|
var pm *gen.PackageManager
|
||||||
|
pm, e = c.typePackageManager(i, v.Name)
|
||||||
|
if e != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Implementation
|
||||||
|
priv := pm.PrivatePackage()
|
||||||
|
file := jen.NewFilePath(priv.Path())
|
||||||
|
file.Add(i.Definition().Definition())
|
||||||
|
f = append(f, &File{
|
||||||
|
F: file,
|
||||||
|
FileName: fmt.Sprintf("gen_type_%s.go", strings.ToLower(i.TypeName())),
|
||||||
|
Directory: priv.WriteDir(),
|
||||||
|
})
|
||||||
|
// Interface
|
||||||
|
pub := pm.PublicPackage()
|
||||||
|
file = jen.NewFilePath(pub.Path())
|
||||||
|
file.Add(i.InterfaceDefinition(pm.PublicPackage()).Definition())
|
||||||
|
f = append(f, &File{
|
||||||
|
F: file,
|
||||||
|
FileName: fmt.Sprintf("gen_type_%s_interface.go", strings.ToLower(i.TypeName())),
|
||||||
|
Directory: pub.WriteDir(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// typeNamer bridges rdf.VocabularyType and gen.TypeGenerator.
|
// typeNamer bridges rdf.VocabularyType and gen.TypeGenerator.
|
||||||
type typeNamer interface {
|
type typeNamer interface {
|
||||||
TypeName() string
|
TypeName() string
|
||||||
|
|
読み込み中…
新しいイシューから参照