From ac66dbbafebbb39483bcca5b2731210b7d13a927 Mon Sep 17 00:00:00 2001 From: Michael Go Date: Tue, 8 Jun 2021 15:20:53 -0300 Subject: [PATCH] utilize input's to_liquid_value on default filter --- lib/liquid/standardfilters.rb | 2 +- test/integration/standard_filter_test.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/liquid/standardfilters.rb b/lib/liquid/standardfilters.rb index 150406a..b74f4df 100644 --- a/lib/liquid/standardfilters.rb +++ b/lib/liquid/standardfilters.rb @@ -447,7 +447,7 @@ module Liquid # def default(input, default_value = '', options = {}) options = {} unless options.is_a?(Hash) - false_check = options['allow_false'] ? input.nil? : !input + false_check = options['allow_false'] ? input.nil? : !Liquid::Utils.to_liquid_value(input) false_check || (input.respond_to?(:empty?) && input.empty?) ? default_value : input end diff --git a/test/integration/standard_filter_test.rb b/test/integration/standard_filter_test.rb index a2456fd..41222f0 100644 --- a/test/integration/standard_filter_test.rb +++ b/test/integration/standard_filter_test.rb @@ -694,6 +694,8 @@ class StandardFiltersTest < Minitest::Test assert_equal("bar", @filters.default([], "bar")) assert_equal("bar", @filters.default({}, "bar")) assert_template_result('bar', "{{ false | default: 'bar' }}") + assert_template_result('bar', "{{ drop | default: 'bar' }}", 'drop' => BooleanDrop.new(false)) + assert_template_result('Yay', "{{ drop | default: 'bar' }}", 'drop' => BooleanDrop.new(true)) end def test_default_handle_false @@ -704,6 +706,8 @@ class StandardFiltersTest < Minitest::Test 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 }}") + assert_template_result('Nay', "{{ drop | default: 'bar', allow_false: true }}", 'drop' => BooleanDrop.new(false)) + assert_template_result('Yay', "{{ drop | default: 'bar', allow_false: true }}", 'drop' => BooleanDrop.new(true)) end def test_cannot_access_private_methods