1
0
mirror of https://github.com/danog/liquid.git synced 2024-11-30 11:19:00 +01:00
liquid/README.md
2017-06-28 09:45:20 -04:00

2.5 KiB

Go Liquid Template Parser

GoDoc

goliquid is a pure Go implementation of Shopify Liquid templates, for use in gojekyll.

Status

Build Status Go Report Card

  • Basics
    • Literals
      • String Escapes
    • Variables
    • Operators (partial)
    • Arrays
    • Whitespace Control
  • Tags
    • Comment
    • Control Flow
      • if/else/elsif
      • unless
      • case/when
    • Iteration
      • modifiers
        • limit
        • offset
        • range
        • reversed
      • break, continue
      • loop variables
      • tablerow
      • cycle
    • Raw
    • Variables
      • Assign
      • Capture
  • Filters (partial)

Install

go get -u github.com/osteele/goliquid

Contribute

Setup

make setup

Install Ragel. On macOS: brew install ragel.

Workflow

go generate ./...
go test ./...

Test just the scanner:

cd expressions
ragel -Z scanner.rl && go test

References

https://shopify.github.io/liquid

https://help.shopify.com/themes/liquid

https://github.com/Shopify/liquid/wiki/Liquid-for-Designers

Attribution

Kyoung-chan Lee's https://github.com/leekchan/timeutil for formatting dates.

Michael Hamrah's Lexing with Ragel and Parsing with Yacc using Go was essential to understanding go yacc.

The original Liquid engine, of course, for the design and documentation of the Liquid template language.

(That said, this is a clean-room implementation to make sure it just implements the documented design.)

Other Implementations

Go:

https://github.com/Shopify/liquid/wiki/Ports-of-Liquid-to-other-environments lists ports to other languages.

License

MIT License