code_generator

package module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CodeGenerator

type CodeGenerator struct {
	Engine  TemplateEngine
	FileExt string
}

CodeGenerator 使用 TemplateEngine 渲染并将结果写入磁盘

func NewCodeGeneratorWithEngine

func NewCodeGeneratorWithEngine(engine TemplateEngine) *CodeGenerator

NewCodeGeneratorWithEngine 使用指定的引擎创建生成器

func (*CodeGenerator) Generate

func (g *CodeGenerator) Generate(_ context.Context, opts Options, tplName string) (outputPath string, err error)

Generate 渲染 tplName 并写入 opts.OutDir 下。 规则:如果 tplName 以 .tpl 或 .tmpl 结尾,会在输出文件名中去掉该后缀。

type EmbeddedTemplateEngine

type EmbeddedTemplateEngine struct {
	// contains filtered or unexported fields
}

EmbeddedTemplateEngine 从给定的 name->[]byte 映射构建模板集合并提供渲染。

func NewEmbeddedTemplateEngine

func NewEmbeddedTemplateEngine(srcs map[string][]byte) (*EmbeddedTemplateEngine, error)

func NewEmbeddedTemplateEngineFromMap

func NewEmbeddedTemplateEngineFromMap(srcs map[string][]byte, funcs template.FuncMap) (*EmbeddedTemplateEngine, error)

NewEmbeddedTemplateEngineFromMap 使用预先准备好的模板字节映射创建引擎, 可选传入 FuncMap,会在解析模板前调用 template.New(name).Funcs(funcs)。 键应为相对路径样式(使用 '/' 分隔),例如 `main.tpl` 或 `sub/main.tpl`。

func (*EmbeddedTemplateEngine) InstallFuncMap

func (e *EmbeddedTemplateEngine) InstallFuncMap(funcs template.FuncMap)

func (*EmbeddedTemplateEngine) ListTemplates

func (e *EmbeddedTemplateEngine) ListTemplates() []string

ListTemplates 返回可用模板名称列表(相对于映射的键,如 "main.tpl")。

func (*EmbeddedTemplateEngine) Render

func (e *EmbeddedTemplateEngine) Render(tplName string, data any) ([]byte, error)

Render 渲染指定模板名(例如 "main.tpl" 或 "service.tpl"),返回渲染后的字节。

type FileTemplateEngine

type FileTemplateEngine struct {
	// contains filtered or unexported fields
}

FileTemplateEngine 从磁盘加载并缓存模板

func NewFileTemplateEngine

func NewFileTemplateEngine(root string) (*FileTemplateEngine, error)

NewFileTemplateEngine 创建并预加载模板目录(支持 .tpl/.tmpl 后缀)

func (*FileTemplateEngine) InstallFuncMap

func (e *FileTemplateEngine) InstallFuncMap(funcs template.FuncMap)

func (*FileTemplateEngine) ListTemplates

func (e *FileTemplateEngine) ListTemplates() []string

ListTemplates 列出可用模板名(相对于 root 的路径,使用 '/' 分隔)

func (*FileTemplateEngine) Render

func (e *FileTemplateEngine) Render(tplName string, data any) ([]byte, error)

Render 渲染指定模板(通过相对于 root 的路径名,如 "service/main.tpl")

type Generator

type Generator interface {
	// Generate 根据选项渲染指定模板并写入输出目录
	Generate(ctx context.Context, opts Options, tplName string) (outputPath string, err error)
}

Generator 通用生成器:渲染指定模板并写入输出

type Options

type Options struct {
	// Module 	模块名,例如 github.com/user/project
	Module string
	// ProjectName 项目名称,例如 project
	ProjectName string

	// OutDir 输出目录
	OutDir string
	// OutputName 输出文件名(可选),如果为空则使用模板名去掉后缀作为文件名
	OutputName string

	// Vars 额外变量映射,可在模板中使用
	Vars map[string]interface{}
}

Options 生成选项:包含模块名、项目名、输出目录和变量等

type TemplateEngine

type TemplateEngine interface {
	// Render 渲染指定模板并返回结果
	Render(tplName string, data any) ([]byte, error)

	// ListTemplates 列出可用的模板名称
	ListTemplates() []string

	// InstallFuncMap 安装自定义函数映射
	InstallFuncMap(funcs template.FuncMap)
}

TemplateEngine 模板引擎接口:加载/渲染/列出模板

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL