Extracted golang comment format function
This commit is contained in:
parent
30e02dc9c0
commit
64884e4969
7 changed files with 50 additions and 44 deletions
|
|
@ -1,9 +1,5 @@
|
||||||
package metadata
|
package metadata
|
||||||
|
|
||||||
import (
|
|
||||||
"regexp"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Column struct
|
// Column struct
|
||||||
type Column struct {
|
type Column struct {
|
||||||
Name string `sql:"primary_key"`
|
Name string `sql:"primary_key"`
|
||||||
|
|
@ -15,16 +11,6 @@ type Column struct {
|
||||||
Comment string
|
Comment string
|
||||||
}
|
}
|
||||||
|
|
||||||
// GoLangComment returns column comment without ascii control characters
|
|
||||||
func (c Column) GoLangComment() string {
|
|
||||||
if c.Comment == "" {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove ascii control characters from string
|
|
||||||
return regexp.MustCompile(`[[:cntrl:]]+`).ReplaceAllString(c.Comment, "")
|
|
||||||
}
|
|
||||||
|
|
||||||
// DataTypeKind is database type kind(base, enum, user-defined, array)
|
// DataTypeKind is database type kind(base, enum, user-defined, array)
|
||||||
type DataTypeKind string
|
type DataTypeKind string
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,8 @@
|
||||||
package metadata
|
package metadata
|
||||||
|
|
||||||
import "regexp"
|
|
||||||
|
|
||||||
// Enum metadata struct
|
// Enum metadata struct
|
||||||
type Enum struct {
|
type Enum struct {
|
||||||
Name string `sql:"primary_key"`
|
Name string `sql:"primary_key"`
|
||||||
Comment string
|
Comment string
|
||||||
Values []string
|
Values []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// GoLangComment returns enum comment without ascii control characters
|
|
||||||
func (e Enum) GoLangComment() string {
|
|
||||||
if e.Comment == "" {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove ascii control characters from string
|
|
||||||
return regexp.MustCompile(`[[:cntrl:]]+`).ReplaceAllString(e.Comment, "")
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package metadata
|
package metadata
|
||||||
|
|
||||||
import "regexp"
|
|
||||||
|
|
||||||
// Table metadata struct
|
// Table metadata struct
|
||||||
type Table struct {
|
type Table struct {
|
||||||
Name string `sql:"primary_key"`
|
Name string `sql:"primary_key"`
|
||||||
|
|
@ -23,13 +21,3 @@ func (t Table) MutableColumns() []Column {
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
// GoLangComment returns table comment without ascii control characters
|
|
||||||
func (t Table) GoLangComment() string {
|
|
||||||
if t.Comment == "" {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove ascii control characters from string
|
|
||||||
return regexp.MustCompile(`[[:cntrl:]]+`).ReplaceAllString(t.Comment, "")
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -26,14 +26,14 @@ import (
|
||||||
|
|
||||||
var {{tableTemplate.InstanceName}} = new{{tableTemplate.TypeName}}("{{schemaName}}", "{{.Name}}", "{{tableTemplate.DefaultAlias}}")
|
var {{tableTemplate.InstanceName}} = new{{tableTemplate.TypeName}}("{{schemaName}}", "{{.Name}}", "{{tableTemplate.DefaultAlias}}")
|
||||||
|
|
||||||
{{if .Comment }} // {{.GoLangComment}} {{end}}
|
{{golangComment .Comment}}
|
||||||
type {{structImplName}} struct {
|
type {{structImplName}} struct {
|
||||||
{{dialect.PackageName}}.Table
|
{{dialect.PackageName}}.Table
|
||||||
|
|
||||||
// Columns
|
// Columns
|
||||||
{{- range $i, $c := .Columns}}
|
{{- range $i, $c := .Columns}}
|
||||||
{{- $field := columnField $c}}
|
{{- $field := columnField $c}}
|
||||||
{{$field.Name}} {{dialect.PackageName}}.Column{{$field.Type}} {{- if $c.Comment }} // {{$c.GoLangComment}} {{end}}
|
{{$field.Name}} {{dialect.PackageName}}.Column{{$field.Type}} {{golangComment .Comment}}
|
||||||
{{- end}}
|
{{- end}}
|
||||||
|
|
||||||
AllColumns {{dialect.PackageName}}.ColumnList
|
AllColumns {{dialect.PackageName}}.ColumnList
|
||||||
|
|
@ -120,11 +120,11 @@ import (
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
{{$modelTableTemplate := tableTemplate}}
|
{{$modelTableTemplate := tableTemplate}}
|
||||||
{{if .Comment }} // {{.GoLangComment}} {{end}}
|
{{golangComment .Comment}}
|
||||||
type {{$modelTableTemplate.TypeName}} struct {
|
type {{$modelTableTemplate.TypeName}} struct {
|
||||||
{{- range .Columns}}
|
{{- range .Columns}}
|
||||||
{{- $field := structField .}}
|
{{- $field := structField .}}
|
||||||
{{$field.Name}} {{$field.Type.Name}} ` + "{{$field.TagsString}}" + ` {{- if .Comment }} // {{.GoLangComment}} {{end}}
|
{{$field.Name}} {{$field.Type.Name}} ` + "{{$field.TagsString}}" + ` {{golangComment .Comment}}
|
||||||
{{- end}}
|
{{- end}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -134,7 +134,7 @@ var enumSQLBuilderTemplate = `package {{package}}
|
||||||
|
|
||||||
import "github.com/go-jet/jet/v2/{{dialect.PackageName}}"
|
import "github.com/go-jet/jet/v2/{{dialect.PackageName}}"
|
||||||
|
|
||||||
{{if .Comment }} // {{.GoLangComment}} {{end}}
|
{{golangComment .Comment}}
|
||||||
var {{enumTemplate.InstanceName}} = &struct {
|
var {{enumTemplate.InstanceName}} = &struct {
|
||||||
{{- range $index, $value := .Values}}
|
{{- range $index, $value := .Values}}
|
||||||
{{enumValueName $value}} {{dialect.PackageName}}.StringExpression
|
{{enumValueName $value}} {{dialect.PackageName}}.StringExpression
|
||||||
|
|
@ -151,7 +151,7 @@ var enumModelTemplate = `package {{package}}
|
||||||
|
|
||||||
import "errors"
|
import "errors"
|
||||||
|
|
||||||
{{if .Comment }} // {{.GoLangComment}} {{end}}
|
{{golangComment .Comment}}
|
||||||
type {{$enumTemplate.TypeName}} string
|
type {{$enumTemplate.TypeName}} string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
||||||
13
generator/template/format.go
Normal file
13
generator/template/format.go
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
package template
|
||||||
|
|
||||||
|
import "regexp"
|
||||||
|
|
||||||
|
// Returns the provided string as golang comment without ascii control characters
|
||||||
|
func formatGolangComment(comment string) string {
|
||||||
|
if len(comment) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format as colang comment and remove ascii control characters from string
|
||||||
|
return "// " + regexp.MustCompile(`[[:cntrl:]]+`).ReplaceAllString(comment, "")
|
||||||
|
}
|
||||||
27
generator/template/format_test.go
Normal file
27
generator/template/format_test.go
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
package template
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func Test_formatGolangComment(t *testing.T) {
|
||||||
|
type args struct {
|
||||||
|
comment string
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
args args
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{name: "Empty string", args: args{comment: ""}, want: ""},
|
||||||
|
{name: "Non-empty string", args: args{comment: "This is a comment"}, want: "// This is a comment"},
|
||||||
|
{name: "String with control characters", args: args{comment: "This is a comment with control characters \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f and text after"}, want: "// This is a comment with control characters and text after"},
|
||||||
|
{name: "String with escape characters", args: args{comment: "This is a comment with escape characters \n\r\t and text after"}, want: "// This is a comment with escape characters and text after"},
|
||||||
|
{name: "String with unicode characters", args: args{comment: "This is a comment with unicode characters ₲鬼佬℧⇄↻ and text after"}, want: "// This is a comment with unicode characters ₲鬼佬℧⇄↻ and text after"},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
if got := formatGolangComment(tt.args.comment); got != tt.want {
|
||||||
|
t.Errorf("formatGoLangComment() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -140,6 +140,7 @@ func processEnumSQLBuilder(dirPath string, dialect jet.Dialect, enumsMetaData []
|
||||||
"enumValueName": func(enumValue string) string {
|
"enumValueName": func(enumValue string) string {
|
||||||
return enumTemplate.ValueName(enumValue)
|
return enumTemplate.ValueName(enumValue)
|
||||||
},
|
},
|
||||||
|
"golangComment": formatGolangComment,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to generete enum type %s: %w", enumTemplate.FileName, err)
|
return fmt.Errorf("failed to generete enum type %s: %w", enumTemplate.FileName, err)
|
||||||
|
|
@ -215,6 +216,7 @@ func processTableSQLBuilder(fileTypes, dirPath string,
|
||||||
"insertedRowAlias": func() string {
|
"insertedRowAlias": func() string {
|
||||||
return insertedRowAlias(dialect)
|
return insertedRowAlias(dialect)
|
||||||
},
|
},
|
||||||
|
"golangComment": formatGolangComment,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to generate table sql builder type %s: %w", tableSQLBuilder.TypeName, err)
|
return fmt.Errorf("failed to generate table sql builder type %s: %w", tableSQLBuilder.TypeName, err)
|
||||||
|
|
@ -307,6 +309,7 @@ func processTableModels(fileTypes, modelDirPath string, tablesMetaData []metadat
|
||||||
"structField": func(columnMetaData metadata.Column) TableModelField {
|
"structField": func(columnMetaData metadata.Column) TableModelField {
|
||||||
return tableTemplate.Field(columnMetaData)
|
return tableTemplate.Field(columnMetaData)
|
||||||
},
|
},
|
||||||
|
"golangComment": formatGolangComment,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to generate model type '%s': %w", tableMetaData.Name, err)
|
return fmt.Errorf("failed to generate model type '%s': %w", tableMetaData.Name, err)
|
||||||
|
|
@ -347,6 +350,7 @@ func processEnumModels(modelDir string, enumsMetaData []metadata.Enum, modelTemp
|
||||||
"valueName": func(value string) string {
|
"valueName": func(value string) string {
|
||||||
return enumTemplate.ValueName(value)
|
return enumTemplate.ValueName(value)
|
||||||
},
|
},
|
||||||
|
"golangComment": formatGolangComment,
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue