Use named param format from liquid

This commit is contained in:
Mike Angell
2019-10-02 21:55:59 +10:00
parent f7076e1682
commit afbe7b930f
2 changed files with 11 additions and 8 deletions

View File

@@ -421,8 +421,9 @@ module Liquid
result.is_a?(BigDecimal) ? result.to_f : result
end
def default(input, default_value = '', allow_false: false)
if (allow_false ? input.nil? : !input) || (input.respond_to?(:empty?) && input.empty?)
def default(input, default_value = '', options = {})
options = {} unless options.is_a?(Hash)
if (options["allow_false"] == true ? input.nil? : !input) || (input.respond_to?(:empty?) && input.empty?)
default_value
else
input

View File

@@ -682,15 +682,17 @@ class StandardFiltersTest < Minitest::Test
assert_equal "bar", @filters.default(false, "bar")
assert_equal "bar", @filters.default([], "bar")
assert_equal "bar", @filters.default({}, "bar")
assert_template_result('bar', "{{ false | default: 'bar' }}")
end
def test_default_handle_false
assert_equal "foo", @filters.default("foo", "bar", allow_false: true)
assert_equal "bar", @filters.default(nil, "bar", allow_false: true)
assert_equal "bar", @filters.default("", "bar", allow_false: true)
assert_equal false, @filters.default(false, "bar", allow_false: true)
assert_equal "bar", @filters.default([], "bar", allow_false: true)
assert_equal "bar", @filters.default({}, "bar", allow_false: true)
assert_equal "foo", @filters.default("foo", "bar", "allow_false" => true)
assert_equal "bar", @filters.default(nil, "bar", "allow_false" => true)
assert_equal "bar", @filters.default("", "bar", "allow_false" => true)
assert_equal false, @filters.default(false, "bar", "allow_false" => true)
assert_equal "bar", @filters.default([], "bar", "allow_false" => true)
assert_equal "bar", @filters.default({}, "bar", "allow_false" => true)
assert_template_result('false', "{{ false | default: 'bar', allow_false: true }}")
end
def test_cannot_access_private_methods