Documentation
¶
Index ¶
- Variables
- type FileSystemLoader
- type LoaderList
- type Template
- type TemplateGroup
- func (t *TemplateGroup) AddFuncs(funcs map[string]any) *TemplateGroup
- func (t *TemplateGroup) MustLoad(pattern string, cwd string) []*Template
- func (t *TemplateGroup) NewHtmlTemplate(name string, funcs map[string]any) (out *htmpl.Template)
- func (t *TemplateGroup) NewTextTemplate(name string, funcs map[string]any) (out *ttmpl.Template)
- func (t *TemplateGroup) PreProcessHtmlTemplate(root *Template, funcs htmpl.FuncMap) (out *htmpl.Template, err error)
- func (t *TemplateGroup) PreProcessTextTemplate(root *Template, funcs ttmpl.FuncMap) (out *ttmpl.Template, err error)
- func (t *TemplateGroup) RenderHtmlTemplate(w io.Writer, root *Template, entry string, data any, funcs map[string]any) (err error)
- func (t *TemplateGroup) RenderTextTemplate(w io.Writer, root *Template, entry string, data any, funcs map[string]any) (err error)
- type TemplateLoader
Constants ¶
This section is empty.
Variables ¶
var TemplateNotFound = errors.New("template not found")
TemplateNotFound is returned when a template could not be found by a loader.
Functions ¶
This section is empty.
Types ¶
type FileSystemLoader ¶
type FileSystemLoader struct { // Folders is a list of directories to search for templates. Folders []string // Extensions is a list of file extensions to consider as templates. Extensions []string }
FileSystemLoader loads templates from the file system based on a set of directories and file extensions.
func NewFileSystemLoader ¶
func NewFileSystemLoader(folders ...string) *FileSystemLoader
NewFileSystemLoader creates a new file system loader that will search in the provided folders for template files. By default, it recognizes files with .tmpl, .tmplus, and .html extensions.
func (*FileSystemLoader) Load ¶
func (g *FileSystemLoader) Load(name string, cwd string) (template []*Template, err error)
Load attempts to find and load a template with the given name. If the name includes an extension, only files with that extension are considered. Otherwise, files with any of the loader's recognized extensions are searched. If cwd is provided, it's used for resolving relative paths. Returns the loaded templates or TemplateNotFound if no matching templates were found.
type LoaderList ¶
type LoaderList struct { // DefaultLoader is used as a fallback if no other loaders succeed. DefaultLoader TemplateLoader // contains filtered or unexported fields }
LoaderList is a composite loader that tries multiple loaders in sequence and returns the first successful match.
func (*LoaderList) AddLoader ¶
func (t *LoaderList) AddLoader(loader TemplateLoader) *LoaderList
AddLoader adds a new loader to the list of loaders to try. Returns the updated LoaderList for method chaining.
func (*LoaderList) Load ¶
func (t *LoaderList) Load(name string, cwd string) (matched []*Template, err error)
Load attempts to load a template with the given name by trying each loader in sequence. It returns the first successful match, or falls back to the DefaultLoader if all others fail. If cwd is provided, it's used for resolving relative paths. Returns TemplateNotFound if no loader can find the template.
type Template ¶
type Template struct { // Name is an identifier for this template. Name string // RawSource contains the original, unprocessed template content. RawSource []byte // ParsedSource contains the template content after preprocessing. ParsedSource string // Path is the file path for this template if it was loaded from a file. Path string // Status indicates whether the template has been loaded and parsed. Status int // AsHtml determines whether the content should be treated as HTML (with escaping) // or as plain text. AsHtml bool // Error contains any error encountered during template processing. Error error // Metadata stores extracted information from the template (e.g., FrontMatter). Metadata map[string]any // contains filtered or unexported fields }
Template is the basic unit of rendering that manages content and dependencies.
func (*Template) AddDependency ¶
AddDependency adds another template as a dependency of this template. It returns false if the dependency would create a cycle, true otherwise.
func (*Template) Dependencies ¶
Dependencies returns all templates that this template directly depends on.
func (*Template) WalkTemplate ¶
func (root *Template) WalkTemplate(loader TemplateLoader, handler func(template *Template) error) (err error)
WalkTemplate processes a template and its dependencies recursively. It starts from the root template, processes all includes with the {{# include "..." #}} directive, and calls the provided handler function on each template in the dependency tree. The loader is used to resolve and load included templates.
type TemplateGroup ¶
type TemplateGroup struct { // Funcs contains template functions available to all templates in this group. Funcs map[string]any // Loader is used to resolve and load template dependencies. Loader TemplateLoader // contains filtered or unexported fields }
TemplateGroup manages a collection of templates and their dependencies, providing methods to process and render them.
func NewTemplateGroup ¶
func NewTemplateGroup() *TemplateGroup
NewTemplateGroup creates a new empty template group with initialized internals.
func (*TemplateGroup) AddFuncs ¶
func (t *TemplateGroup) AddFuncs(funcs map[string]any) *TemplateGroup
AddFuncs adds template functions to this group, making them available to all templates. Returns the template group for method chaining.
func (*TemplateGroup) MustLoad ¶ added in v0.0.12
func (t *TemplateGroup) MustLoad(pattern string, cwd string) []*Template
Calls the underlying Loader to load templates matching a pattern and optional using a cwd for relative paths. Panics if an error is encountered. Returns matching templates or an error if no templates were found.
func (*TemplateGroup) NewHtmlTemplate ¶
NewHtmlTemplate creates a new HTML template with the given name. The template will have access to the group's functions and any additional functions provided.
func (*TemplateGroup) NewTextTemplate ¶
NewTextTemplate creates a new TEXT template with the given name. The template will have access to the group's functions and any additional functions provided.
func (*TemplateGroup) PreProcessHtmlTemplate ¶
func (t *TemplateGroup) PreProcessHtmlTemplate(root *Template, funcs htmpl.FuncMap) (out *htmpl.Template, err error)
PreProcessHtmlTemplate processes a HTML template and its dependencies, creating an html/template that can be used for rendering. It handles template dependencies recursively. Returns the processed template and any error encountered.
func (*TemplateGroup) PreProcessTextTemplate ¶
func (t *TemplateGroup) PreProcessTextTemplate(root *Template, funcs ttmpl.FuncMap) (out *ttmpl.Template, err error)
PreProcessTextTemplate processes a template and its dependencies, creating a text/template that can be used for rendering. It handles template dependencies recursively. Returns the processed template and any error encountered.
func (*TemplateGroup) RenderHtmlTemplate ¶
func (t *TemplateGroup) RenderHtmlTemplate(w io.Writer, root *Template, entry string, data any, funcs map[string]any) (err error)
RenderHtmlTemplate renders a template as HTML to the provided writer. It processes the template with its dependencies, executes it with the given data, and applies any additional template functions provided. If entry is specified, it executes that specific template within the processed template.
func (*TemplateGroup) RenderTextTemplate ¶
func (t *TemplateGroup) RenderTextTemplate(w io.Writer, root *Template, entry string, data any, funcs map[string]any) (err error)
RenderTextTemplate renders a template as plain text to the provided writer. It processes the template with its dependencies, executes it with the given data, and applies any additional template functions provided. If entry is specified, it executes that specific template within the processed template.
type TemplateLoader ¶
type TemplateLoader interface { // Load attempts to load templates matching the given pattern. // If cwd is not empty, it's used as the base directory for relative paths. // Returns matching templates or an error if no templates were found. Load(pattern string, cwd string) (template []*Template, err error) }
TemplateLoader defines an interface for loading template content by name or pattern.