diff --git a/CHANGELOG.md b/CHANGELOG.md index 593ceae00..2eabf2f91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Changed - Improve startup time by improving templating performance and caching filesystem access [PR #964](https://github.com/3scale/apicast/pull/964) +- Liquid `default` filter now does not override `false` values [PR #964](https://github.com/3scale/apicast/pull/964) ### Fixed diff --git a/gateway/Roverfile.lock b/gateway/Roverfile.lock index 22cffcd77..083d1655b 100644 --- a/gateway/Roverfile.lock +++ b/gateway/Roverfile.lock @@ -3,7 +3,7 @@ busted 2.0.rc12-1||testing dkjson 2.5-2||testing inspect 3.1.1-0||production ldoc 1.4.6-2||development -liquid 0.1.0-1||production +liquid 0.1.3-1||production ljsonschema 0.1.0-1||testing lua-resty-env 0.4.0-1||production lua-resty-execvp 0.1.1-1||production diff --git a/gateway/src/apicast/cli/template.lua b/gateway/src/apicast/cli/template.lua index d02831abe..c53a080e7 100644 --- a/gateway/src/apicast/cli/template.lua +++ b/gateway/src/apicast/cli/template.lua @@ -120,7 +120,7 @@ function _M:interpret(str) end) filter_set:add_filter('default', function(value, default) - return value or default + if value == nil then return default else return value end end) filter_set:add_filter('starts_with', function(string, ...) diff --git a/spec/cli/template_spec.lua b/spec/cli/template_spec.lua new file mode 100644 index 000000000..890688b9c --- /dev/null +++ b/spec/cli/template_spec.lua @@ -0,0 +1,19 @@ +local _M = require('apicast.cli.template') + +describe('Liquid Template', function () + + describe('default filter', function() + it('overrides nil values', function() + local str = _M:new():interpret([[{{ nothing | default: "foo" }}]]) + + assert.equal(str, 'foo') + end) + + it('overrides false values', function() + local str = _M:new():interpret([[{{ false | default: "foo" }}]]) + + assert.equal(str, 'false') + end) + end) + +end)