func ExampleFunc() {
	env := stick.New(nil)
	env.Functions["get_post"] = func(ctx stick.Context, args ...stick.Value) stick.Value {
		if len(args) == 0 {
			return nil
		}
		return struct {
			Title string
			ID    float64
		}{"A post", stick.CoerceNumber(args[0])}
	}
	err := env.Execute(
		`{% set post = get_post(123) %}{{ post.Title }} (# {{ post.ID }})`,
		os.Stdout,
		nil,
	)
	if err != nil {
		fmt.Println(err)
	}
}
A contrived example of a user-defined function.
package stick_test
import (
	"fmt"
	"os"
	"strconv"
	"bytes"
	"io/ioutil"
	"github.com/tyler-sommer/stick"
)
func ExampleEnv_Execute() {
	env := stick.New(nil)
	params := map[string]stick.Value{"name": "World"}
	err := env.Execute(`Hello, {{ name }}!`, os.Stdout, params)
	if err != nil {
		fmt.Println(err)
	}
}
type exampleType struct{}
func (e exampleType) Boolean() bool {
	return true
}
func (e exampleType) Number() float64 {
	return 3.14
}
func (e exampleType) String() string {
	return "some kinda string"
}
func ExampleBoolean() {
	v := exampleType{}
	fmt.Printf("%t", stick.CoerceBool(v))
}
func ExampleCoerceBool() {
	v0 := ""
	v1 := "some string"
	v2 := 0
	v3 := 3.14
	fmt.Printf("%t %t %t %t", stick.CoerceBool(v0), stick.CoerceBool(v1), stick.CoerceBool(v2), stick.CoerceBool(v3))
}
func ExampleNumber() {
	v := exampleType{}
	fmt.Printf("%.2f", stick.CoerceNumber(v))
}
func ExampleCoerceNumber() {
	v0 := true
	v1 := ""
	v2 := "54"
	v3 := "1.33"
	fmt.Printf("%.f %.f %.f %.2f", stick.CoerceNumber(v0), stick.CoerceNumber(v1), stick.CoerceNumber(v2), stick.CoerceNumber(v3))
}
func ExampleStringer() {
	v := exampleType{}
	fmt.Printf("%s", v)
}
func ExampleCoerceString() {
	v0 := true
	v1 := false  
	v2 := 54
	v3 := 1.33
	v4 := 0
	fmt.Printf("%s '%s' %s %s %s", stick.CoerceString(v0), stick.CoerceString(v1), stick.CoerceString(v2), stick.CoerceString(v3), stick.CoerceString(v4))
}
func ExampleTest() {
	env := stick.New(nil)
	env.Tests["empty"] = func(ctx stick.Context, val stick.Value, args ...stick.Value) bool {
		return stick.CoerceBool(val) == false
	}
	err := env.Execute(
		`{{ (false is empty) ? 'empty' : 'not empty' }} - {{ ("a string" is empty) ? 'empty' : 'not empty' }}`,
		os.Stdout,
		nil,
	)
	if err != nil {
		fmt.Println(err)
	}
}
func ExampleTest_twoWordsWithArgs() {
	env := stick.New(nil)
	env.Tests["divisible by"] = func(ctx stick.Context, val stick.Value, args ...stick.Value) bool {
		if len(args) != 1 {
			return false
		}
		i := stick.CoerceNumber(args[0])
		if i == 0 {
			return false
		}
		v := stick.CoerceNumber(val)
		return int(v)%int(i) == 0
	}
	err := env.Execute(
		`{{ ('something' is divisible by(3)) ? "yep, 'something' evals to 0" : 'nope'  }} - {{ (9 is divisible by(3)) ? 'sure' : 'nope' }} - {{ (4 is divisible by(3)) ? 'sure' : 'nope' }}`,
		os.Stdout,
		nil,
	)
	if err != nil {
		fmt.Println(err)
	}
}