package html
import (
"fmt"
"html/template"
)
type Options struct {
LeftDelim string
RightDelim string
Extension string
BaseDir string
FuncMap template.FuncMap
}
func DefaultOptions() *Options {
return &Options{
LeftDelim: "{{",
RightDelim: "}}",
Extension: ".html",
BaseDir: "/",
FuncMap: template.FuncMap{
"yield": func() error { return fmt.Errorf("yield called outside of a layout") },
},
}
}
func (o *Options) WithDelimiters(left, right string) *Options {
o.LeftDelim = left
o.RightDelim = right
return o
}
func (o *Options) WithExtension(ext string) *Options {
o.Extension = ext
return o
}
func (o *Options) WithBaseDir(dir string) *Options {
o.BaseDir = dir
return o
}
func (o *Options) WithFunction(name string, fn interface{}) *Options {
o.FuncMap[name] = fn
return o
}
func (o *Options) WithFunctions(funcs template.FuncMap) *Options {
for k, v := range funcs {
o.FuncMap[k] = v
}
return o
}