1 Star 2 Fork 0

阿债 / xorm-refactor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
language.go 1.79 KB
一键复制 编辑 原始数据 按行查看 历史
阿债 提交于 2020-07-01 17:59 . 调整目录结构
// Copyright 2019 The Xorm Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package refactor
import (
"strings"
"text/template"
"gitee.com/azhai/xorm-refactor/setting"
"xorm.io/xorm/schemas"
)
var (
languages = make(map[string]*Language)
presetTemplates = make(map[string]*template.Template)
)
type (
Formatter func(fileName string, sourceCode []byte) ([]byte, error)
Importter func(tables map[string]*schemas.Table) map[string]string
Packager func(targetDir string) string
)
// Language represents a languages supported when reverse codes
type Language struct {
Name string
ExtName string
Template string
Types map[string]string
Funcs template.FuncMap
Formatter Formatter
Importter Importter
Packager Packager
}
// RegisterLanguage registers a language
func RegisterLanguage(l *Language) {
languages[l.Name] = l
}
// GetLanguage returns a language if exists
func GetLanguage(name string) *Language {
return languages[name]
}
func (l *Language) FixTarget(target *setting.ReverseTarget) {
if target.ExtName == "" && l.ExtName != "" {
if !strings.HasPrefix(l.ExtName, ".") {
l.ExtName = "." + l.ExtName
}
target.ExtName = l.ExtName
}
if target.NameSpace == "" {
if pck := l.Packager; pck != nil {
target.NameSpace = pck(target.OutputDir)
}
if target.NameSpace == "" {
target.NameSpace = "models"
}
}
}
func NewTemplate(name, content string, funcs template.FuncMap) *template.Template {
t := template.New(name).Funcs(funcs)
tmpl, err := t.Parse(content)
if err != nil {
panic(err)
}
presetTemplates[name] = tmpl
return tmpl
}
func GetPresetTemplate(name string) *template.Template {
if tmpl, ok := presetTemplates[name]; ok {
return tmpl
}
return nil
}
1
https://gitee.com/azhai/xorm-refactor.git
git@gitee.com:azhai/xorm-refactor.git
azhai
xorm-refactor
xorm-refactor
v1.0.5

搜索帮助