Skip to content

eknkc/pug

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pug

import "github.com/eknkc/pug"

Package pug.go is an elegant templating engine for Go Programming Language. It is a port of Pug template engine, previously known as Jade.

Pug.go compiles .pug templates to standard go templates (https://golang.org/pkg/html/template/) and returns a *template.Template instance.

While there is no JavaScript environment present, Pug.go provides basic expression support over go template syntax. Such as a(href="/user/" + UserId) would concatenate two strings. You can use arithmetic, logical and comparison operators as well as ternery if operator.

Please check Pug Language Reference for details: https://pugjs.org/api/getting-started.html.

Differences between Pug and Pug.go (items with checkboxes are planned, just not present yet)

  • Multiline attributes are not supported
  • &attributes syntax is not supported
  • case statement is not supported
  • Filters are not supported
  • Mixin rest arguments are not supported.
  • Mixin blocks are not supported. Go templates do not allow variable template includes so this is tricky.
  • while loops are not supported as Go templates do not provide it. We could use recursive templates or channel range loops etc but that would be unnecessary complexity.
  • Unbuffered code blocks are not possible as we don't have a JS environment. However it is possible to define variables using - var x = "foo" syntax as an exception.

Apart from these missing features, everything in the language reference should be supported.

doc.go pug.go

func CompileFile(filename string, options ...Options) (*template.Template, error)

Parses and compiles the contents of supplied filename. Returns corresponding Go Template (html/templates) instance. Necessary runtime functions will be injected and the template will be ready to be executed

func CompileString(input string, options ...Options) (*template.Template, error)

Parses and compiles the supplied template string. Returns corresponding Go Template (html/templates) instance. Necessary runtime functions will be injected and the template will be ready to be executed

func ParseFile(filename string, options ...Options) (string, error)

Parses the contents of supplied filename template and return the Go Template source You would not be using this unless debugging / checking the output. Please use Compile method to obtain a template instance directly

func ParseString(input string, options ...Options) (string, error)

Parses the supplied template string and return the Go Template source You would not be using this unless debugging / checking the output. Please use Compile method to obtain a template instance directly

type Options struct {
    // Setting if pretty printing is enabled.
    // Pretty printing ensures that the output html is properly indented and in human readable form.
    // If disabled, produced HTML is compact. This might be more suitable in production environments.
    // Default: false
    PrettyPrint bool

    // A Dir implements FileSystem using the native file system restricted to a specific directory tree.
    //
    // While the FileSystem.Open method takes '/'-separated paths, a Dir's string value is a filename on the native file system, not a URL, so it is separated by filepath.Separator, which isn't necessarily '/'.
    // By default, a os package is used but you can supply a different filesystem using this option
    Dir compiler.Dir
}

Generated by godoc2md

About

Go port of Pug (jade) template engine

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages