feat: new parser & generator

This commit is contained in:
2025-03-09 13:12:12 +07:00
parent 70fc3345d8
commit a3283b9a57
25 changed files with 372 additions and 301 deletions

41
model/gen_field.go Normal file
View File

@@ -0,0 +1,41 @@
package model
import (
"bytes"
"fmt"
"text/template"
)
const fieldTemplate = `{
{{ if .Metadata.Hidden }} hidden: true,
{{ end }}{{ if .Metadata.Label }} russian: "{{ .Metadata.Label }}",
{{ end }}{{ if .Metadata.Readonly }} readonly: true,
{{ end }}{{ if .IsArray }} many: true,
{{ end }}{{ .GeneratedType }}
}`
type FieldTemplateContext struct {
Metadata FieldMetadata
IsArray bool
GeneratedType string
}
func (field *Field) GenerateFieldCode() string {
tmpl, err := template.New("field").Parse(fieldTemplate)
if err != nil {
panic(fmt.Sprintf("Error parsing field template: %v", err))
}
data := FieldTemplateContext{
Metadata: field.Metadata,
IsArray: field.Metadata.IsSlice,
GeneratedType: field.GenerateType(),
}
var result bytes.Buffer
if err := tmpl.Execute(&result, data); err != nil {
panic(fmt.Sprintf("Error executing field template: %v", err))
}
return result.String()
}