grender

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2021 License: MIT Imports: 7 Imported by: 0

README

Grender

Go Reference

Yet another rendering tool for Golang.

Example

Render with a layout

Layouts are special templates that would be rendered in a slightly different way.

import grender
r := grender.New()
r.AddLayout("L1", `<layout>{{ yield }}</layout>`)
r.Add("P1", `Hello {{ .name }}`)

out, _ := r.Render("L1", "P1", map[string]interface{}{
    "name": "dave",
})
// out => "<layout>dave</layout>"
Render with shared templates

Shared templates are just templates.

import grender
r := grender.New()
r.Add("S1", `<shared>{{ .name }}</shared>`)
r.Add("P1", `Any Template Can Use {{ share "S1" }}`)

// no layout used
out, _ := r.Render("", "P1", map[string]interface{}{
    "name": "dave",
})
// out => "Any Template Can Use <shared>dave</shared>"

Use shared templates with both layout and page:

import grender
r := grender.New()
r.AddLayout("L1", `<layout>{{ share "S1" }} -> {{ yield }}</layout>`)
r.Add("S1", `<shared>{{ .name }}</shared>`)
r.Add("P1", `Any Template Can Use {{ share "S1" }}`)

out, _ := r.Render("L1", "P1", map[string]interface{}{
    "name": "dave",
})
// out => "<layout><shared>dave</shared> -> Any Template Can Use <shared>dave</shared></layout>"
Load templates from FileSystem
import grender
r := grender.New()
// Anything that implements io/fs.FS interface, normally an embedded one.
// about FS: https://pkg.go.dev/io/fs
// about embed: https://pkg.go.dev/embed
err := r.LoadFromFS(yourFS)
Change default options
import grender
r := grender.New(
    OptionMissingKeyZero(false),
	OptionTemplateDir("fixtures"),
	OptionLayoutDir("fixtures/layouts"),
    OptionTemplateExt([]string{".tmpl", ".html"}),
)
// all values above are default.

Documentation

Overview

package grender is a smart templating tool.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Grender

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

Grender is the object to handle the rendering work.

func New

func New(opts ...Option) *Grender

New creates one Grender object.

func (*Grender) Add

func (r *Grender) Add(name, content string) error

Add adds a normal (page) template.

func (*Grender) AddLayout

func (r *Grender) AddLayout(name, content string) error

AddLayout adds a layout template.

func (*Grender) LoadFromFS

func (r *Grender) LoadFromFS(fsys fs.FS) error

LoadFromFS loads templates (include layouts) from file system.

func (*Grender) Render

func (r *Grender) Render(layoutName, pageName string, data interface{}) (string, error)

Render renders with given layout and page template names, as well as data.

type Option

type Option func(*Grender)

Option is a callback to tune Grender.

func OptionLayoutDir

func OptionLayoutDir(dir string) Option

OptionLayoutDir sets dir location of layout templates. Default `templates/layouts`.

func OptionMissingKeyZero

func OptionMissingKeyZero(yesno bool) Option

OptionMissingKeyZero is to set templating engine with "missingkey=zero" option.

func OptionTemplateDir

func OptionTemplateDir(dir string) Option

OptionTemplateDir sets dir location of templates. Default `templates`.

func OptionTemplateExt

func OptionTemplateExt(ext []string) Option

OptionTemplateExt sets extension name of template file for recognition. Default `.tmpl`.

Jump to

Keyboard shortcuts

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