mirror of
https://github.com/kemko/liquid.git
synced 2026-01-06 02:05:41 +03:00
Allow default function to handle false as value
This commit is contained in:
@@ -419,8 +419,8 @@ module Liquid
|
||||
result.is_a?(BigDecimal) ? result.to_f : result
|
||||
end
|
||||
|
||||
def default(input, default_value = ''.freeze)
|
||||
if !input || input.respond_to?(:empty?) && input.empty?
|
||||
def default(input, default_value = ''.freeze, false_as_missing = true)
|
||||
if (false_as_missing ? !input : input.nil?) || input.respond_to?(:empty?) && input.empty?
|
||||
default_value
|
||||
else
|
||||
input
|
||||
|
||||
@@ -683,6 +683,15 @@ class StandardFiltersTest < Minitest::Test
|
||||
assert_equal "bar", @filters.default({}, "bar")
|
||||
end
|
||||
|
||||
def test_default_handle_false
|
||||
assert_equal "foo", @filters.default("foo", "bar", false)
|
||||
assert_equal "bar", @filters.default(nil, "bar", false)
|
||||
assert_equal "bar", @filters.default("", "bar", false)
|
||||
assert_equal false, @filters.default(false, "bar", false)
|
||||
assert_equal "bar", @filters.default([], "bar", false)
|
||||
assert_equal "bar", @filters.default({}, "bar", false)
|
||||
end
|
||||
|
||||
def test_cannot_access_private_methods
|
||||
assert_template_result('a', "{{ 'a' | to_number }}")
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user