2018-06-05 22:28:13 +02:00
## <small>1.2.4 (2018-06-05)</small>
Contributors:
* @nsf — proper handling of [variadic functions ](https://github.com/osteele/liquid/commit/1a2066b87e06ffc189c6cf8671893d4fdba2e607 ), [implicit conversion to integer types ](https://github.com/osteele/liquid/commit/4354d48a0460b6bdebdb6b462abce0ea94f50fa8 ), and [error handling during expression evaluation ](https://github.com/osteele/liquid/commit/c32908a4f3ef1425b3f73530a7de2412e0613c78 )
* @osteele – docs and infrastructure
### Bug Fixes and Compatibility
2018-06-05 22:36:56 +02:00
* Returning proper error type causes less panics during expression eval. ([c32908a](https://github.com/osteele/liquid/commit/c32908a))
* Properly handle implicit conversion to integer types. ([4354d48](https://github.com/osteele/liquid/commit/4354d48))
2018-06-05 22:28:13 +02:00
* Properly handle variadic functions. ([1a2066b](https://github.com/osteele/liquid/commit/1a2066b))
* map[unhashable] returns nil instead of panic ([b6c65ff](https://github.com/osteele/liquid/commit/b6c65ff))
* join filter: default sep is space; omit nil entries ([cb6efbf](https://github.com/osteele/liquid/commit/cb6efbf))
* Match Ruby string split semantics ([8874615](https://github.com/osteele/liquid/commit/8874615))
* Convert MapSlice -> map ([1a12f12](https://github.com/osteele/liquid/commit/1a12f12))
* list filters operate on MapSlice ([bb24f32](https://github.com/osteele/liquid/commit/bb24f32))
### Docs
* Re-organize README ([dbf0f7d](https://github.com/osteele/liquid/commit/dbf0f7d))
* Add Contributors section; add nsf as contributor; adopt All Contributors and all-contributors-cli ([d2be34e](https://github.com/osteele/liquid/commit/d2be34e))
* Minor formatting fixes in the README ([aadc886](https://github.com/osteele/liquid/commit/aadc886))
### Test Coverage
* Add Convert tests ([a50dc10](https://github.com/osteele/liquid/commit/a50dc10))
### Build and CI
* Add make pre-commit; lint before testing ([6e1f41e](https://github.com/osteele/liquid/commit/6e1f41e))
* Add go 1.9 to travis build matrix ([ba2ecf9](https://github.com/osteele/liquid/commit/ba2ecf9))
* Travis: add go 1.10; drop 1.8 ([e30a0e2](https://github.com/osteele/liquid/commit/e30a0e2))
### Code Internals
* Follow go style guide re declaring empty slices ([a02d9e1](https://github.com/osteele/liquid/commit/a02d9e1))
* variable names ([d27c839](https://github.com/osteele/liquid/commit/d27c839))
* variable names ([e1c7224](https://github.com/osteele/liquid/commit/e1c7224))
* Remove errant file ([3811e16](https://github.com/osteele/liquid/commit/3811e16))
## <small>1.2.3 (2017-08-18)</small>
* Default time format is compatible w/ Liquid ([5ebf31a](https://github.com/osteele/liquid/commit/5ebf31a))
* Define IterationKeyedMap ([4bc4c8a](https://github.com/osteele/liquid/commit/4bc4c8a))
* Move strftime to a separate repo ([cdb0e44](https://github.com/osteele/liquid/commit/cdb0e44))
* Nil pointers are equal, even if different types ([fd4d34c](https://github.com/osteele/liquid/commit/fd4d34c))
* Rearrange tests ([804e3d6](https://github.com/osteele/liquid/commit/804e3d6))
* Rearrange value methods w/in file ([62f44fa](https://github.com/osteele/liquid/commit/62f44fa))
* Rename rbstrftime package ([c49d979](https://github.com/osteele/liquid/commit/c49d979))
* Tests; implement map[nil] ([6b15fbf](https://github.com/osteele/liquid/commit/6b15fbf))
## <small>1.2.2 (2017-08-08)</small>
### Bug Fixes
* Fix array[nil] ([e39a1fe](https://github.com/osteele/liquid/commit/e39a1fe))
* Fix file not found tests for Windows ([068afef](https://github.com/osteele/liquid/commit/068afef))
* Restore m['str'] where m map[interface{}]interface{} ([9852226](https://github.com/osteele/liquid/commit/9852226))
### Docs
* More drop examples ([c50491f](https://github.com/osteele/liquid/commit/c50491f))
* Package docs ([51d7166](https://github.com/osteele/liquid/commit/51d7166))
### Tests
* Beefy strftime tests ([4a2c4b4](https://github.com/osteele/liquid/commit/4a2c4b4))
### Build and CI
* README: add Appveyor badge ([0adf6e7](https://github.com/osteele/liquid/commit/0adf6e7))
* Appveyor: remove mingw ([1b3e55a](https://github.com/osteele/liquid/commit/1b3e55a))
### Code Internals
* Remove (commented-out) Strptime and tests ([8d53a6b](https://github.com/osteele/liquid/commit/8d53a6b))
* Replace extern "C" strftime by go implementation ([85bd1dd](https://github.com/osteele/liquid/commit/85bd1dd))
## <small>1.2.1 (2017-08-03)</small>
Contributors: @osteele , @thessem
* "type" filters works on nil ([96307fa](https://github.com/osteele/liquid/commit/96307fa))
* Actually cache the drop resolution ([83652f5](https://github.com/osteele/liquid/commit/83652f5))
* Add comments and update tests ([dd4d967](https://github.com/osteele/liquid/commit/dd4d967))
* Add engine.ParseString ([5151799](https://github.com/osteele/liquid/commit/5151799))
* Add forwarders from evaluator pkg ([fb70314](https://github.com/osteele/liquid/commit/fb70314))
* Add setting to customise delimiters ([9dd9191](https://github.com/osteele/liquid/commit/9dd9191))
* Add some tests ([a07e5fa](https://github.com/osteele/liquid/commit/a07e5fa))
* Add test ([3d99b41](https://github.com/osteele/liquid/commit/3d99b41))
* Add top-level test cases for & map, struct ([f670bfc](https://github.com/osteele/liquid/commit/f670bfc)), closes [#23 ](https://github.com/osteele/liquid/issues/23 )
* Allow value to be a pointer ([222559a](https://github.com/osteele/liquid/commit/222559a))
* Benchmarks ([023fca4](https://github.com/osteele/liquid/commit/023fca4))
* Change name of repository in README to liquid from goliquid ([08cf333](https://github.com/osteele/liquid/commit/08cf333))
* Consolidate {expressions,values}/drops.go ([516182a](https://github.com/osteele/liquid/commit/516182a))
* Document values, includng new struct behavior ([1bc9726](https://github.com/osteele/liquid/commit/1bc9726))
* Fix struct PropertyValue attempting to use an invalid pointer ([b2f5f1f](https://github.com/osteele/liquid/commit/b2f5f1f))
* gitgnore *.test ([605d883](https://github.com/osteele/liquid/commit/605d883))
* Implement #11 contains on hashes ([1b0f0cf](https://github.com/osteele/liquid/commit/1b0f0cf)), closes [#11 ](https://github.com/osteele/liquid/issues/11 )
* make lint includes tests ([dd0fcda](https://github.com/osteele/liquid/commit/dd0fcda))
* Match Liquid/Ruby array[float] ([fa5de60](https://github.com/osteele/liquid/commit/fa5de60))
* Move pkg evaluator -> values ([6269836](https://github.com/osteele/liquid/commit/6269836))
* Move structValue to own file ([bbdb40e](https://github.com/osteele/liquid/commit/bbdb40e))
* Obey struct field tags ([303027b](https://github.com/osteele/liquid/commit/303027b))
* Property access to struct pointers ([de5fffa](https://github.com/osteele/liquid/commit/de5fffa))
* Property access to struct values ([2cdd59d](https://github.com/osteele/liquid/commit/2cdd59d))
* Pull loop renderer into separate method ([eac67c3](https://github.com/osteele/liquid/commit/eac67c3))
* Race condition ([9866cbf](https://github.com/osteele/liquid/commit/9866cbf))
* Race test, benchmarks, for drop resolution ([7f501ce](https://github.com/osteele/liquid/commit/7f501ce))
* Recognize yaml.MapSlice as a value ([46807c4](https://github.com/osteele/liquid/commit/46807c4))
* remove fmt.Stringer render case ([474edc1](https://github.com/osteele/liquid/commit/474edc1))
* Remove generic Index, ObjectProperty ([8040e9e](https://github.com/osteele/liquid/commit/8040e9e))
* Remove obsolete generic predicates ([cf54755](https://github.com/osteele/liquid/commit/cf54755))
* Remove obsolete note re Awesome Go ([df3f7b2](https://github.com/osteele/liquid/commit/df3f7b2))
* Return errors applying filters as Render errors ([8ee8cef](https://github.com/osteele/liquid/commit/8ee8cef))
* Store original stacktrace in re-thrown errors ([a1c5927](https://github.com/osteele/liquid/commit/a1c5927))
* Support delimiters of any length ([b7ef67f](https://github.com/osteele/liquid/commit/b7ef67f))
* Support registering variadic functions as filters ([82a1a6e](https://github.com/osteele/liquid/commit/82a1a6e))
* teach iteration about MapSlice ([306be63](https://github.com/osteele/liquid/commit/306be63))
* Test cases for new code ([17def25](https://github.com/osteele/liquid/commit/17def25))
* test liquid:"-", not liquid:"" (both work, though) ([7634673](https://github.com/osteele/liquid/commit/7634673))
* Tests ([fd230ed](https://github.com/osteele/liquid/commit/fd230ed))
* Treat []byte as string, for some purposes ([fd7b1f0](https://github.com/osteele/liquid/commit/fd7b1f0))
* Value layer recognizes, resolves drops ([560c55e](https://github.com/osteele/liquid/commit/560c55e))
* Wrap values instead of using generic functions ([85cd6c9](https://github.com/osteele/liquid/commit/85cd6c9))
## <small>1.1.2 (2017-07-20)</small>
* Coverage ([023536f](https://github.com/osteele/liquid/commit/023536f))
* Coverage ([27580ca](https://github.com/osteele/liquid/commit/27580ca))
* Coverage ([413b328](https://github.com/osteele/liquid/commit/413b328))
* Coverage ([a78d95d](https://github.com/osteele/liquid/commit/a78d95d))
* Lint ([dde3ea7](https://github.com/osteele/liquid/commit/dde3ea7))
* Lint ([73f0fef](https://github.com/osteele/liquid/commit/73f0fef))
* make lint enables gofmt ([510b0cb](https://github.com/osteele/liquid/commit/510b0cb))
* Remove quote from README ([5f79cf1](https://github.com/osteele/liquid/commit/5f79cf1))
* Rename parse error -> syntax error ([7af399a](https://github.com/osteele/liquid/commit/7af399a))
* Update expressions.y ParseError -> SyntaxError ([17c5c9c](https://github.com/osteele/liquid/commit/17c5c9c))
## <small>1.1.1 (2017-07-17)</small>
* Iterating over hash yields [key, value] pairs ([67cb2e0](https://github.com/osteele/liquid/commit/67cb2e0))
* Quote tag names in error messages ([2c497e3](https://github.com/osteele/liquid/commit/2c497e3))
## 1.1.0 (2017-07-16)
* CLI script to run shopify liquid for cf. ([534c0e3](https://github.com/osteele/liquid/commit/534c0e3))
* Disable interfacer linter :frowning: ([6701199](https://github.com/osteele/liquid/commit/6701199))
* Implement whitespace control ([f9ac12b](https://github.com/osteele/liquid/commit/f9ac12b))
* Numbers can't start or end with a dot ([f1412b6](https://github.com/osteele/liquid/commit/f1412b6))
* README ([9fe6a96](https://github.com/osteele/liquid/commit/9fe6a96))
* README filters and variables ([cfc8a8c](https://github.com/osteele/liquid/commit/cfc8a8c))
* Report the line only if != 0 ([af93d57](https://github.com/osteele/liquid/commit/af93d57))
* Scan whitespace control ([bf43fb8](https://github.com/osteele/liquid/commit/bf43fb8))
* Warn on too many filter args ([de4f81d](https://github.com/osteele/liquid/commit/de4f81d))
* Whitespace control uses byte.Buffer ([dd49b22](https://github.com/osteele/liquid/commit/dd49b22))
## 1.0.0 (2017-07-16)
* Add appveyor.yml ([06e0833](https://github.com/osteele/liquid/commit/06e0833))
* Add expression.ParseStatement, statement selector literals ([c864f3c](https://github.com/osteele/liquid/commit/c864f3c))
* Add FromDrop func ([8efaada](https://github.com/osteele/liquid/commit/8efaada))
* Add ParseTemplateLocation ([16c3b6e](https://github.com/osteele/liquid/commit/16c3b6e))
* Allow float index into array ([247c1b1](https://github.com/osteele/liquid/commit/247c1b1))
* Close #18 loop range ([271f637](https://github.com/osteele/liquid/commit/271f637)), closes [#18 ](https://github.com/osteele/liquid/issues/18 )
* Combine CompilationError -> parser.Error ([816b46a](https://github.com/osteele/liquid/commit/816b46a))
* Complete #14 and #15 url{en,de}code filters ([2e5cc60](https://github.com/osteele/liquid/commit/2e5cc60)), closes [#14 ](https://github.com/osteele/liquid/issues/14 ) [#15 ](https://github.com/osteele/liquid/issues/15 )
* Complete #17 sort_natural filter ([3c242c4](https://github.com/osteele/liquid/commit/3c242c4)), closes [#17 ](https://github.com/osteele/liquid/issues/17 )
* Complete #19 when a or b ([2880ef4](https://github.com/osteele/liquid/commit/2880ef4)), closes [#19 ](https://github.com/osteele/liquid/issues/19 )
* Complete #4 case…else ([26bdd09](https://github.com/osteele/liquid/commit/26bdd09)), closes [#4 ](https://github.com/osteele/liquid/issues/4 )
* Consolidate render.Error -> parser.Error ([198f6bf](https://github.com/osteele/liquid/commit/198f6bf))
* Coverage ([a2a4a1a](https://github.com/osteele/liquid/commit/a2a4a1a))
* Coverage ([d6d6929](https://github.com/osteele/liquid/commit/d6d6929))
* Coverage ([29c902f](https://github.com/osteele/liquid/commit/29c902f))
* Cycle uses Statement; steps towards cycle groups ([7444118](https://github.com/osteele/liquid/commit/7444118))
* docs ([4317bfc](https://github.com/osteele/liquid/commit/4317bfc))
* Error.Filename -> Path ([b95775c](https://github.com/osteele/liquid/commit/b95775c))
* fun w/ time zones ([4163dfa](https://github.com/osteele/liquid/commit/4163dfa))
* Implement #15 truncate_words filter ([fdfc5d3](https://github.com/osteele/liquid/commit/fdfc5d3)), closes [#15 ](https://github.com/osteele/liquid/issues/15 )
* Implement tablerow ([cd23447](https://github.com/osteele/liquid/commit/cd23447))
* Improve strftime error test ([55cf56e](https://github.com/osteele/liquid/commit/55cf56e))
* Loop uses the statement record ([110fee6](https://github.com/osteele/liquid/commit/110fee6))
* Make harmless iterating over value ([bad5593](https://github.com/osteele/liquid/commit/bad5593))
* make install-dev-tools -> setup ([0808c10](https://github.com/osteele/liquid/commit/0808c10))
* make setup installs dependencies ([68a3e9b](https://github.com/osteele/liquid/commit/68a3e9b))
* Move control flow tags to separate file ([c3c9de7](https://github.com/osteele/liquid/commit/c3c9de7))
* Move interpreter ops into evaluator package ([c11cf2a](https://github.com/osteele/liquid/commit/c11cf2a))
* Move package expression -> expressions ([6ff5721](https://github.com/osteele/liquid/commit/6ff5721))
* New ParseStatement returns record with different statement parse types ([8964daf](https://github.com/osteele/liquid/commit/8964daf))
* Parse in local time; switch to stdlib strftime ([f39a2d2](https://github.com/osteele/liquid/commit/f39a2d2))
* ParseError -> parser.Error; takes Locatable ([8995782](https://github.com/osteele/liquid/commit/8995782))
* Prep loop for ranges ([22d583f](https://github.com/osteele/liquid/commit/22d583f))
* Property names can end in ? ([dbba680](https://github.com/osteele/liquid/commit/dbba680))
* ranges…but need to separated by .. ([497a932](https://github.com/osteele/liquid/commit/497a932))
* README ([ce7cc8f](https://github.com/osteele/liquid/commit/ce7cc8f))
* Remove a test that fails on Travis ([55ec347](https://github.com/osteele/liquid/commit/55ec347))
* Remove dependency on strptime ([da541ab](https://github.com/osteele/liquid/commit/da541ab))
* Remove IsTemplateError ([724da61](https://github.com/osteele/liquid/commit/724da61))
* Rename branch -> clause (and remove Governs) ([5547532](https://github.com/osteele/liquid/commit/5547532))
* Rename Config.Filename -> SourcePath ([df80e8c](https://github.com/osteele/liquid/commit/df80e8c))
* Rename files -> standard_tags, standard_filters ([8882a7d](https://github.com/osteele/liquid/commit/8882a7d))
* Rename loop_tag -> iteration_tags ([55eb5b4](https://github.com/osteele/liquid/commit/55eb5b4))
* rename node.Branch -> Clause too ([5a12245](https://github.com/osteele/liquid/commit/5a12245))
* Rename xxxTagParser -> xxxTagCompiler ([6b8f76c](https://github.com/osteele/liquid/commit/6b8f76c))
* Reorganize docs and examples ([bfc7ced](https://github.com/osteele/liquid/commit/bfc7ced))
* Replace render switch by polymorphism ([1c94b61](https://github.com/osteele/liquid/commit/1c94b61))
* set travis email notification freq ([9701daa](https://github.com/osteele/liquid/commit/9701daa))
* Source location is an initialization parameter ([92a4f2d](https://github.com/osteele/liquid/commit/92a4f2d))
* Start #2 cycle tag ([a637d27](https://github.com/osteele/liquid/commit/a637d27)), closes [#2 ](https://github.com/osteele/liquid/issues/2 )
* Test case for main ([6a3a853](https://github.com/osteele/liquid/commit/6a3a853))
* TIL io.WriteString ([41e7b29](https://github.com/osteele/liquid/commit/41e7b29))
* try disabling strptime ([bb0590d](https://github.com/osteele/liquid/commit/bb0590d))
* Update README to v1 ([f1cddfa](https://github.com/osteele/liquid/commit/f1cddfa))
## 0.2.0 (2017-07-10)
* Change Engine, Template from Interface -> struct ([ebb37f8](https://github.com/osteele/liquid/commit/ebb37f8))
* comments ([328d84f](https://github.com/osteele/liquid/commit/328d84f))
* docs ([163290b](https://github.com/osteele/liquid/commit/163290b))
* errors return source location, phase 1 ([342a8b3](https://github.com/osteele/liquid/commit/342a8b3))
* gopkg; docs ([635383b](https://github.com/osteele/liquid/commit/635383b))
* Implement hash.size ([c2b7157](https://github.com/osteele/liquid/commit/c2b7157))
* Parser grammar is distinct from (and embedded in) config ([b269138](https://github.com/osteele/liquid/commit/b269138))
* README ([c291b2f](https://github.com/osteele/liquid/commit/c291b2f))
* Rename ParseTime -> ParseDate ([a3a3473](https://github.com/osteele/liquid/commit/a3a3473))
* Tests ([bfad047](https://github.com/osteele/liquid/commit/bfad047))
* Update remaining public API to return SourceError ([378c0b2](https://github.com/osteele/liquid/commit/378c0b2))
## 0.1.0 (2017-07-09)
* "contains" tests for arrays too ([24d83f1](https://github.com/osteele/liquid/commit/24d83f1))
* (Some) relationship operators ([d03efed](https://github.com/osteele/liquid/commit/d03efed))
* a.b syntax ([5dbd972](https://github.com/osteele/liquid/commit/5dbd972))
* a[b] for invalid a or b ([50d11a6](https://github.com/osteele/liquid/commit/50d11a6))
* Add a Grammar interface for parsing ([f313e6f](https://github.com/osteele/liquid/commit/f313e6f))
* Add a Travis file ([8e673ac](https://github.com/osteele/liquid/commit/8e673ac))
* Add an executable ([f1b2777](https://github.com/osteele/liquid/commit/f1b2777))
* Add an type filter; inspect is more robust ([3a1506b](https://github.com/osteele/liquid/commit/3a1506b))
* Add contribution guidelines ([1b7564d](https://github.com/osteele/liquid/commit/1b7564d))
* Add coverage status ([6297319](https://github.com/osteele/liquid/commit/6297319))
* Add docs; remove unused UnimplementedError ([983b9f5](https://github.com/osteele/liquid/commit/983b9f5))
* Add engine.DefineControlTag; currently does nothing ([8f7bcae](https://github.com/osteele/liquid/commit/8f7bcae))
* Add error line number ([4472b15](https://github.com/osteele/liquid/commit/4472b15))
* Add goveralls to travis ([c415f89](https://github.com/osteele/liquid/commit/c415f89))
* Add install-dev-toolsl to travis ([008f1ed](https://github.com/osteele/liquid/commit/008f1ed))
* Add IsTemplateError ([2161bb6](https://github.com/osteele/liquid/commit/2161bb6))
* Add Makefile ([29c9ad8](https://github.com/osteele/liquid/commit/29c9ad8))
* Add more dependencies to credits ([97b36ab](https://github.com/osteele/liquid/commit/97b36ab))
* Add more parse time formats ([77c5dc9](https://github.com/osteele/liquid/commit/77c5dc9))
* Add MustConvertItem; convert bool -> int ([80d58dc](https://github.com/osteele/liquid/commit/80d58dc))
* Add nil; distinguish between identifier and property patterns ([7a2b28c](https://github.com/osteele/liquid/commit/7a2b28c))
* Add public DefineTag ([e21d2a7](https://github.com/osteele/liquid/commit/e21d2a7))
* Add references to README ([ac12225](https://github.com/osteele/liquid/commit/ac12225))
* Add RenderContext.ParseTagArgs ([7c48138](https://github.com/osteele/liquid/commit/7c48138))
* Add reverse filter; improve generics ([54b9f13](https://github.com/osteele/liquid/commit/54b9f13))
* Add status badges to the README ([465a681](https://github.com/osteele/liquid/commit/465a681))
* Add strptime for time parsing ([8ea72e4](https://github.com/osteele/liquid/commit/8ea72e4))
* Add Template.SetSourcePath ([5425668](https://github.com/osteele/liquid/commit/5425668))
* Allow - in identifiers ([af8c486](https://github.com/osteele/liquid/commit/af8c486))
* Allow parens ([607f4f4](https://github.com/osteele/liquid/commit/607f4f4))
* Catch unimplemented panics ([b1cf056](https://github.com/osteele/liquid/commit/b1cf056))
* Chunk regex wasn't sufficiently non-greedy ([f8b5503](https://github.com/osteele/liquid/commit/f8b5503))
* Chunk scanner test cases ([fc6d96e](https://github.com/osteele/liquid/commit/fc6d96e))
* Closure.Bind copies the original bindings ([4e96c15](https://github.com/osteele/liquid/commit/4e96c15))
* Compiler copies the syntax tree ([8f63cb7](https://github.com/osteele/liquid/commit/8f63cb7))
* contains operates on strings not arrays ([9dda87f](https://github.com/osteele/liquid/commit/9dda87f))
* Control tag parsers can return an error ([61663ab](https://github.com/osteele/liquid/commit/61663ab))
* Control tags actions are table-driven ([20e4df3](https://github.com/osteele/liquid/commit/20e4df3))
* Convert -> map[string] ([767f1f4](https://github.com/osteele/liquid/commit/767f1f4))
* Convert map -> [] ([6075f39](https://github.com/osteele/liquid/commit/6075f39))
* Convert maps ([2fed70b](https://github.com/osteele/liquid/commit/2fed70b))
* Convert returns an error; create MustConvert ([4df3f04](https://github.com/osteele/liquid/commit/4df3f04))
* Coverage ([6f7b67f](https://github.com/osteele/liquid/commit/6f7b67f))
* Coverage ([36929af](https://github.com/osteele/liquid/commit/36929af))
* Coverage ([caca7a2](https://github.com/osteele/liquid/commit/caca7a2))
* Coverage ([78526e7](https://github.com/osteele/liquid/commit/78526e7))
* Coverage; simplify ([a8afb01](https://github.com/osteele/liquid/commit/a8afb01))
* Create an Expression interface; add some docs ([2a2f333](https://github.com/osteele/liquid/commit/2a2f333))
* Create LICENSE ([e3425cc](https://github.com/osteele/liquid/commit/e3425cc))
* Create top-level interface to liquid package ([514559e](https://github.com/osteele/liquid/commit/514559e))
* Docs ([f15de87](https://github.com/osteele/liquid/commit/f15de87))
* Docs ([803fbbc](https://github.com/osteele/liquid/commit/803fbbc))
* Embed the Chunk in the AST nodes ([089a0c8](https://github.com/osteele/liquid/commit/089a0c8))
* Expression evaluator tests; fix revealed bugs ([1f805d5](https://github.com/osteele/liquid/commit/1f805d5))
* Filters are an engine configuration ([2e9903f](https://github.com/osteele/liquid/commit/2e9903f))
* Filters can have (single) parameters ([70aa70d](https://github.com/osteele/liquid/commit/70aa70d))
* Filters support multiple argument, including expressions ([a93848a](https://github.com/osteele/liquid/commit/a93848a))
* Finish generic comparison ([dbdcca4](https://github.com/osteele/liquid/commit/dbdcca4))
* Fix forloop.last with offset modifier ([394036d](https://github.com/osteele/liquid/commit/394036d))
* Fix generic equality with nil ([229059c](https://github.com/osteele/liquid/commit/229059c))
* Fix previous ([87b8198](https://github.com/osteele/liquid/commit/87b8198))
* Fix the raw tag ([e2bb7c6](https://github.com/osteele/liquid/commit/e2bb7c6))
* for over a map iterates over its keys ([decd8dd](https://github.com/osteele/liquid/commit/decd8dd))
* Functional is constructed within parser, not scanner ([c02fbd5](https://github.com/osteele/liquid/commit/c02fbd5))
* FunctionalNode -> TagNode ([18e2540](https://github.com/osteele/liquid/commit/18e2540))
* Generic Convert handles conversion to time ([2083747](https://github.com/osteele/liquid/commit/2083747))
* Generics ([87708a0](https://github.com/osteele/liquid/commit/87708a0))
* GitHub templates ([7bd8a8d](https://github.com/osteele/liquid/commit/7bd8a8d))
* gometalinter doesn't have a config in this repo ([28db298](https://github.com/osteele/liquid/commit/28db298))
* identifiers can include '-' ([606870e](https://github.com/osteele/liquid/commit/606870e))
* If tag parses during parse stage ([621992c](https://github.com/osteele/liquid/commit/621992c))
* Implement {% else %}, {% elsif %} ([cab7845](https://github.com/osteele/liquid/commit/cab7845))
* Implement {% if %} ([60d2f78](https://github.com/osteele/liquid/commit/60d2f78))
* Implement {% unless %} ([6a06665](https://github.com/osteele/liquid/commit/6a06665))
* Implement < =, >=, contains ([6c56efd](https://github.com/osteele/liquid/commit/6c56efd))
* Implement a big chunk of filters ([1630af7](https://github.com/osteele/liquid/commit/1630af7))
* Implement a[n] ([555991c](https://github.com/osteele/liquid/commit/555991c))
* Implement and, or, != ([a5a3ad2](https://github.com/osteele/liquid/commit/a5a3ad2))
* Implement ar.first, ar.list ([c648a70](https://github.com/osteele/liquid/commit/c648a70))
* Implement booleans ([6af4fca](https://github.com/osteele/liquid/commit/6af4fca))
* Implement break, continue ([a1784cd](https://github.com/osteele/liquid/commit/a1784cd))
* Implement capture tag ([055e789](https://github.com/osteele/liquid/commit/055e789))
* Implement case (w/out else) ([c5e7e6c](https://github.com/osteele/liquid/commit/c5e7e6c))
* Implement comment tag ([eb7a18e](https://github.com/osteele/liquid/commit/eb7a18e))
* Implement date formats ([61b651c](https://github.com/osteele/liquid/commit/61b651c))
* Implement drops ([ba874de](https://github.com/osteele/liquid/commit/ba874de))
* Implement expression scanner ([57be549](https://github.com/osteele/liquid/commit/57be549))
* Implement filters: default; date (w/out format) ([d849e74](https://github.com/osteele/liquid/commit/d849e74))
* Implement forloop variables ([e9c35a3](https://github.com/osteele/liquid/commit/e9c35a3))
* Implement include ([fab31d9](https://github.com/osteele/liquid/commit/fab31d9))
* Implement loop modifiers ([53a41f3](https://github.com/osteele/liquid/commit/53a41f3))
* Implement loop reversed ([383db45](https://github.com/osteele/liquid/commit/383db45))
* Implement loop tag ([babfc3e](https://github.com/osteele/liquid/commit/babfc3e))
* Implement obj['name'] ([63e2c5c](https://github.com/osteele/liquid/commit/63e2c5c))
* Implement raw tag ([c09652b](https://github.com/osteele/liquid/commit/c09652b))
* Implement remaining numeric filters ([5ec1f66](https://github.com/osteele/liquid/commit/5ec1f66))
* Implement some filters ([30211ac](https://github.com/osteele/liquid/commit/30211ac))
* Implement sort: key ([612f456](https://github.com/osteele/liquid/commit/612f456))
* Implement string literals (without escapes) ([ed150c5](https://github.com/osteele/liquid/commit/ed150c5))
* Implement uniq filter ([585cc5d](https://github.com/osteele/liquid/commit/585cc5d))
* Implement variable assignment ([cd15950](https://github.com/osteele/liquid/commit/cd15950))
* Improve docs ([a077502](https://github.com/osteele/liquid/commit/a077502))
* Improve some internal names ([1da9d40](https://github.com/osteele/liquid/commit/1da9d40))
* Initial ([58395a8](https://github.com/osteele/liquid/commit/58395a8))
* lint ([a824673](https://github.com/osteele/liquid/commit/a824673))
* Lint ([e71bc95](https://github.com/osteele/liquid/commit/e71bc95))
* Lint ([09d3650](https://github.com/osteele/liquid/commit/09d3650))
* Lint ([c4bd99b](https://github.com/osteele/liquid/commit/c4bd99b))
* Lint; remove dead code ([fb26bb3](https://github.com/osteele/liquid/commit/fb26bb3))
* make install-dev-tools doesn't update packages ([9714544](https://github.com/osteele/liquid/commit/9714544))
* Makefile default target is ci ([3dba4ee](https://github.com/osteele/liquid/commit/3dba4ee))
* Match print object to observed ([d924e0b](https://github.com/osteele/liquid/commit/d924e0b))
* Match split filter to observed ([6a8127a](https://github.com/osteele/liquid/commit/6a8127a))
* More filters ([910d4b2](https://github.com/osteele/liquid/commit/910d4b2))
* More filters ([c433c08](https://github.com/osteele/liquid/commit/c433c08))
* More generic.Less; tests ([43bedef](https://github.com/osteele/liquid/commit/43bedef))
* More time formats ([2f0f6ba](https://github.com/osteele/liquid/commit/2f0f6ba))
* Move assign tag -> tags package ([d31fe04](https://github.com/osteele/liquid/commit/d31fe04))
* Move chunk marshalling to separate file ([b367592](https://github.com/osteele/liquid/commit/b367592))
* Move chunks -> render ([6161e6d](https://github.com/osteele/liquid/commit/6161e6d))
* Move chunks to sub-package ([2e61304](https://github.com/osteele/liquid/commit/2e61304))
* Move expression parser to sub-package ([373b2fb](https://github.com/osteele/liquid/commit/373b2fb))
* Move expressions -> expression ([9691dc2](https://github.com/osteele/liquid/commit/9691dc2))
* Move filters to own package ([4189f03](https://github.com/osteele/liquid/commit/4189f03))
* Move generics -> evaluator ([a434a75](https://github.com/osteele/liquid/commit/a434a75))
* Move generics to own package ([f52d00f](https://github.com/osteele/liquid/commit/f52d00f))
* Move tag compilation to compiler stage ([54e840c](https://github.com/osteele/liquid/commit/54e840c))
* Move tags to own package ([83503a1](https://github.com/osteele/liquid/commit/83503a1))
* Negative integer indexes from end of list ([c1fd00c](https://github.com/osteele/liquid/commit/c1fd00c))
* New top-level Context wrapper ([d6bc456](https://github.com/osteele/liquid/commit/d6bc456))
* Optional filter arguments declared as functions ([8397c5e](https://github.com/osteele/liquid/commit/8397c5e))
* Parse control tag forms at parse time ([5dddabe](https://github.com/osteele/liquid/commit/5dddabe))
* Parse object expressions during parse stage; report error source ([d4c895d](https://github.com/osteele/liquid/commit/d4c895d))
* Rationalize some filenames ([c4ff3d2](https://github.com/osteele/liquid/commit/c4ff3d2))
* README ([d29e4b2](https://github.com/osteele/liquid/commit/d29e4b2))
* README ([c67d027](https://github.com/osteele/liquid/commit/c67d027))
* README links to godoc ([a4b1835](https://github.com/osteele/liquid/commit/a4b1835))
* Record source line number ([08fcc4e](https://github.com/osteele/liquid/commit/08fcc4e))
* remove a debug print ([e332e53](https://github.com/osteele/liquid/commit/e332e53))
* Remove else/elsif from unless ([12045b5](https://github.com/osteele/liquid/commit/12045b5))
* Remove gratuitous Context wrapper ([cb8911a](https://github.com/osteele/liquid/commit/cb8911a))
* Rename ([594ec99](https://github.com/osteele/liquid/commit/594ec99))
* Rename chunk -> token ([69d26a2](https://github.com/osteele/liquid/commit/69d26a2))
* Rename render.(Context,RenderContext) -> (NodeContext,Context) ([411a2f0](https://github.com/osteele/liquid/commit/411a2f0))
* Rename renderError -> render.Error ([315af1a](https://github.com/osteele/liquid/commit/315af1a))
* Rename Settings -> Config ([405c5bf](https://github.com/osteele/liquid/commit/405c5bf))
* Rename some files ([bcef4dc](https://github.com/osteele/liquid/commit/bcef4dc))
* Rename to match Liquid terminology ([2e8f51a](https://github.com/osteele/liquid/commit/2e8f51a))
* Render tree is distinct type from parse AST ([803471c](https://github.com/osteele/liquid/commit/803471c))
* Render uses a switch instead of polymorphism ([0559730](https://github.com/osteele/liquid/commit/0559730))
* Renderers return a string, rather than taking an io.writer ([8d9df82](https://github.com/osteele/liquid/commit/8d9df82))
* Replace GetVariableMap -> UpdateBindings, RenderFile ([a7cbb9b](https://github.com/osteele/liquid/commit/a7cbb9b))
* Restore tag tests ([db5a3af](https://github.com/osteele/liquid/commit/db5a3af))
* Separate interface.go from engine.go ([ebc29dc](https://github.com/osteele/liquid/commit/ebc29dc))
* simplify ([af95c44](https://github.com/osteele/liquid/commit/af95c44))
* simplify ([846987d](https://github.com/osteele/liquid/commit/846987d))
* simplify ([c599761](https://github.com/osteele/liquid/commit/c599761))
* Simplify external tag interface ([f6c4299](https://github.com/osteele/liquid/commit/f6c4299))
* slice, truncate use runes not bytes ([a3c646c](https://github.com/osteele/liquid/commit/a3c646c))
* SortByProperty can sort nil first or last ([e2fd3bb](https://github.com/osteele/liquid/commit/e2fd3bb))
* Split package render->parser ([903acb8](https://github.com/osteele/liquid/commit/903acb8))
* Start to separate parser and compiler ([c7d9af2](https://github.com/osteele/liquid/commit/c7d9af2))
* Tags are an engine configuration ([e6f8eac](https://github.com/osteele/liquid/commit/e6f8eac))
* Tags are called within a RenderContext ([41da3f9](https://github.com/osteele/liquid/commit/41da3f9))
* tavis uses makefile lint ([8f148dc](https://github.com/osteele/liquid/commit/8f148dc))
* tests ([d435cf5](https://github.com/osteele/liquid/commit/d435cf5))
* Uh-oh – strftime gets the day of week wrong! ([25e97ed](https://github.com/osteele/liquid/commit/25e97ed))
* Un-export ControlTagDefinition; create builder ([0c7a8d2](https://github.com/osteele/liquid/commit/0c7a8d2))
* Unconfuse unless/endunless ([9b8da4f](https://github.com/osteele/liquid/commit/9b8da4f))
* Undefined tags, filters are errors not panics ([9a807d0](https://github.com/osteele/liquid/commit/9a807d0))
* Update Contributing to point to the project boards ([dd41a36](https://github.com/osteele/liquid/commit/dd41a36))
* Update guidelines to refer to issues board ([aad76bd](https://github.com/osteele/liquid/commit/aad76bd))
* Use C strptime to format dates ([247bec3](https://github.com/osteele/liquid/commit/247bec3))
* Work around missing %-H in strftime ([fc227aa](https://github.com/osteele/liquid/commit/fc227aa))
* Yacc expression parsing ([9c64c5a](https://github.com/osteele/liquid/commit/9c64c5a))
* Yacc, ragel source match package moves ([a7a1ee5](https://github.com/osteele/liquid/commit/a7a1ee5))