1
0
mirror of https://github.com/danog/liquid.git synced 2024-11-30 10:48:59 +01:00
Go to file
2017-06-27 20:56:17 -04:00
chunks Parse object expressions during parse stage; report error source 2017-06-27 20:23:09 -04:00
errors Lint 2017-06-27 13:36:38 -04:00
expressions Negative integer indexes from end of list 2017-06-27 20:32:55 -04:00
filters Generic Convert handles conversion to time 2017-06-27 20:56:17 -04:00
generics Generic Convert handles conversion to time 2017-06-27 20:56:17 -04:00
tags Unconfuse unless/endunless 2017-06-27 17:43:35 -04:00
.gitignore Makefile default target is ci 2017-06-27 18:10:12 -04:00
.travis.yml Add a Travis file 2017-06-26 10:16:02 -04:00
engine.go Implement filters: default; date (w/out format) 2017-06-27 16:02:05 -04:00
LICENSE Create LICENSE 2017-06-26 15:36:29 -04:00
liquid_test.go Move tags to own package 2017-06-27 11:39:32 -04:00
Makefile Makefile default target is ci 2017-06-27 18:10:12 -04:00
README.md Parse object expressions during parse stage; report error source 2017-06-27 20:23:09 -04:00
template.go Add public DefineTag 2017-06-27 07:43:42 -04:00

Go Liquid Template Parser

goliquid is a very early-stage Go implementation of the Shopify Liquid template language, for use in Gojekyll.

Status

Build Status Go Report Card

  • Basics
    • Literals
      • String Escapes
    • Variables
    • Operators
    • 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
    • Variable
      • Assign
      • Capture
  • Filters
    • some
    • all

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.)

License

MIT License