Documentation ¶
Overview ¶
Package codegen provides utilities for writing short Go code generators from a text/template.
Example ¶
package main import ( "log" "os" "github.com/dolmen-go/codegen" ) func main() { const template = `// Code generated by example_test.go; DO NOT EDIT. {{/**/}}//+build {{.}} package main import "os" func main() { os.Stdout.WriteString("Hello, {{.}}!\n") } ` tmpl := codegen.MustParse(template) for _, tag := range os.Args[1:] { f := "main_" + tag + ".go" if err := tmpl.CreateFile(f, tag); err != nil { log.Fatal(err) } log.Printf("File %s created.\n", f) } }
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var GeneratedCodeRegexp = regexp.MustCompile(`(?m:^// Code generated .* DO NOT EDIT\.$)`)
GeneratedCodeRegexp checks the code generation standard defined at https://golang.org/s/generatedcode.
Functions ¶
Types ¶
type CodeTemplate ¶
type CodeTemplate struct { Template *template.Template // See "text/template" Buffer bytes.Buffer // Used for sharing allocated memory between multiple CreateFile calls // contains filtered or unexported fields }
CodeTemplate is the precompiled template for generating one or multiple Go source files.
func MustParse ¶
func MustParse(codeTemplate string) *CodeTemplate
MustParse wraps Parse throwing errors as exception.
func Parse ¶
func Parse(codeTemplate string) (*CodeTemplate, error)
Parse creates a CodeTemplate from a "text/template" source.
The expansion of the template is expected to be valid a Go source file containing the code generation standard tag. See GeneratedCodeRegexp.
func (*CodeTemplate) CreateFile ¶
func (t *CodeTemplate) CreateFile(filePath string, data interface{}) error
CreateFile runs the template with data, pass it through gofmt and saves it to filePath.
The code generation standard at https://golang.org/s/generatedcode is enforced.