1
0
mirror of https://github.com/danog/liquid.git synced 2024-11-26 23:24:38 +01:00
liquid/CHANGELOG.md
2022-02-13 12:03:21 +08:00

538 lines
35 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Release Notes
<!-- markdownlint-disable MD024 -->
## 1.3 (unreleased)
Contributions:
* [@Eun (Tobias Salzmann)](https://github.com/Eun): floor and ceil should
return integers [PR #33](https://github.com/osteele/liquid/pull/33)
* [@imiskolee (Misko Lee)](https://github.com/imiskolee): support json.Number for
parse into number types [PR #40](https://github.com/osteele/liquid/pull/40)
* [@heyvito (Victor "Vito" Gama)](https://github.com/heyvito): Add support to
cached templates [PR #41](https://github.com/osteele/liquid/pull/41)
* [@bendoerr (Ben Doerr)](https://github.com/bendoerr): Fix MaxUint32 assignment
to platform int [PR #47](https://github.com/osteele/liquid/pull/47)
* [@kke (Kimmo Lehto)](https://github.com/kke): Add --env for binding
environment in the CLI tool [PR
#54](https://github.com/osteele/liquid/pull/54)
* [@danog (Daniil Gentili)](https://github.com/danog): Add concat filter [PR
#55](https://github.com/osteele/liquid/pull/55)
* [@danog (Daniil Gentili)](https://github.com/danog): Stop trimming ASAP [PR
#57](https://github.com/osteele/liquid/pull/57)
* [@danog (Daniil Gentili)](https://github.com/danog): Add concat filter [PR
#58](https://github.com/osteele/liquid/pull/58)
* [@carolynvs (Carolyn Van Slyck)](https://github.com/carolynvs): Expose the
template ast [PR #59](https://github.com/osteele/liquid/pull/59)
## 1.2.4 (2018-06-05)
Contributors:
* [@nsf](https://github.com/nsf): Properly handle variadic functions [PR
#29](https://github.com/osteele/liquid/pull/29)
* [@nsf](https://github.com/nsf): Properly handle implicit conversion to integer
types [PR #30](https://github.com/osteele/liquid/pull/30)
* [@nsf](https://github.com/nsf): [error handling during expression
evaluation](https://github.com/osteele/liquid/commit/c32908a4f3ef1425b3f73530a7de2412e0613c78)
* @osteele docs and infrastructure
### Bug Fixes and Compatibility
* 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))
* 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))
## 1.2.3 (2017-08-18)
* 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))
Contributions:
* [@thessem (James Littlejohn)](https://github.com/thessem): Return errors
applying filters as render errors [PR
#24](https://github.com/osteele/liquid/pull/24)
* [@thessem (James Littlejohn)](https://github.com/thessem): Change name of
repository in README to liquid from goliquid [PR
#25](https://github.com/osteele/liquid/pull/25)
* [@thessem (James Littlejohn)](https://github.com/thessem): Add setting to
customise delimiters [PR #26](https://github.com/osteele/liquid/pull/26)
* [@thessem (James Littlejohn)](https://github.com/thessem): Support registering
variadic functions as filters [PR
#27](https://github.com/osteele/liquid/pull/27)
* [@thessem (James Littlejohn)](https://github.com/thessem): Fix struct
PropertyValue attempting to use an invalid pointer [PR
#28](https://github.com/osteele/liquid/pull/28)
## 1.2.2 (2017-08-08)
### 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))
## 1.2.1 (2017-08-03)
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))
## 1.1.2 (2017-07-20)
* 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))
## 1.1.1 (2017-07-17)
* 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))