package amber import ( "github.com/PuerkitoBio/ghost/templates" "github.com/eknkc/amber" ) // The template compiler for Amber templates. type AmberCompiler struct { Options amber.Options c *amber.Compiler } // Create a new Amber compiler with the specified Amber-specific options. func NewAmberCompiler(opts amber.Options) *AmberCompiler { return &AmberCompiler{ opts, nil, } } // Implementation of the TemplateCompiler interface. func (this *AmberCompiler) Compile(f string) (templates.Templater, error) { // amber.CompileFile creates a new compiler each time. To limit the number // of allocations, reuse a compiler. if this.c == nil { this.c = amber.New() } this.c.Options = this.Options if err := this.c.ParseFile(f); err != nil { return nil, err } return this.c.Compile() } func init() { templates.Register(".amber", NewAmberCompiler(amber.DefaultOptions)) }