From 5db1695694e1cbf12892d5dd67c7773282a669af Mon Sep 17 00:00:00 2001 From: Derrick Reimer Date: Wed, 9 Oct 2013 16:07:32 -0700 Subject: [PATCH] Add default filter to standard filters --- lib/liquid/standardfilters.rb | 5 +++++ test/liquid/standard_filter_test.rb | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/liquid/standardfilters.rb b/lib/liquid/standardfilters.rb index 718a8d9..c938f3a 100644 --- a/lib/liquid/standardfilters.rb +++ b/lib/liquid/standardfilters.rb @@ -245,6 +245,11 @@ module Liquid apply_operation(input, operand, :%) end + def default(input, default_value = "") + is_blank = input.respond_to?(:empty?) ? input.empty? : !input + is_blank ? default_value : input + end + private def flatten_if_necessary(input) diff --git a/test/liquid/standard_filter_test.rb b/test/liquid/standard_filter_test.rb index fc1a3cb..91c219d 100644 --- a/test/liquid/standard_filter_test.rb +++ b/test/liquid/standard_filter_test.rb @@ -274,6 +274,15 @@ class StandardFiltersTest < Test::Unit::TestCase assert_template_result('abc',"{{ a | prepend: b}}",assigns) end + def test_default + assert_equal "foo", @filters.default("foo", "bar") + assert_equal "bar", @filters.default(nil, "bar") + assert_equal "bar", @filters.default("", "bar") + assert_equal "bar", @filters.default(false, "bar") + assert_equal "bar", @filters.default([], "bar") + assert_equal "bar", @filters.default({}, "bar") + end + def test_cannot_access_private_methods assert_template_result('a',"{{ 'a' | to_number }}") end