Skip to content

dms0/stick

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stick

Build Status GoDoc

A Go language port of the Twig templating engine.

Introduction

Twig is a powerful templating language that supports macros, vertical and horizontal reuse, and an easy-to-learn syntax that promotes separation of logic and markup. Twig is also extremely extensible, and by default will autoescape content based on content type.

Stick brings these great features to Go projects.

Current status

In development

Stick is made up of three main parts: a lexer, a parser, and an executer. Stick's lexer and parser are nearly complete. Basic template execution is implemented as well.

See the to do list for additional information.

Installation

Stick is intended to be used as a library. The recommended way to install the library is using go get.

go get -u github.com/tyler-sommer/stick

Usage

Execute a simple Stick template.

package main

import (
	"github.com/tyler-sommer/stick"
	"os"
)

func main() {
    env := stick.NewEnv(nil)
	env.Execute("Hello, {{ name }}!", os.Stdout, map[string]stick.Value{"name": "Tyler"})
}

To do

Lexer

  • Text
  • Tags
  • Print statements
  • Comments
  • Expressions
  • String interpolation

Parser

  • Raw output
  • Comments
  • Basic tag support
    • if/else if/else/endif
    • extends
    • block
    • for loop
    • include
    • import
    • from
    • set
    • filter
    • embed
    • use
    • macro
    • do
  • Expressions
    • Unary expressions
    • Binary expressions
    • Ternary "if"
    • String interpolation
    • Array and dot access
    • Function calls
    • Inline filter "expr|filter()"
    • Method calls

Executer

  • Basic execution
  • Template loading
  • Inheritance
    • extends
    • embed
    • use
    • include
  • Expressions
    • literals
    • binary operators
    • unary operators
    • get attribute
    • function call
    • filter application
  • Other basic tags
  • Macros
  • User defined functions
  • User defined filters
  • Autoescaping
Further
  • Improve error reporting
  • Improve test coverage (especially error cases)
  • Whitespace control
  • Custom operators and tags
  • Sandbox
  • Generate native Go code from a given parser tree

About

A golang port of the Twig templating engine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%