From 5d0004a87ea52abdb95fd3dc8eb1867fd6dcd761 Mon Sep 17 00:00:00 2001 From: Jeremy Friesen Date: Thu, 19 Apr 2012 10:48:55 -0400 Subject: [PATCH] Added tests to verify that {{ 'now' | date :'%Y' }} and {{ 'today' | date :'%Y' }} work. In the case of Ruby 1.9.3, 'now' is no longer parsed. For safe measures, I've added 'today' as well. --- lib/liquid/standardfilters.rb | 11 ++++++++++- test/liquid/standard_filter_test.rb | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/liquid/standardfilters.rb b/lib/liquid/standardfilters.rb index 99bfa33..f0cf893 100644 --- a/lib/liquid/standardfilters.rb +++ b/lib/liquid/standardfilters.rb @@ -169,7 +169,16 @@ module Liquid input = Time.at(input.to_i) end - date = input.is_a?(String) ? Time.parse(input) : input + date = + if input.is_a?(String) + case input.downcase + when 'now', 'today' then Time.now + else + Time.parse(input) + end + else + input + end if date.respond_to?(:strftime) date.strftime(format.to_s) diff --git a/test/liquid/standard_filter_test.rb b/test/liquid/standard_filter_test.rb index 2ee7ae8..8bc3a99 100644 --- a/test/liquid/standard_filter_test.rb +++ b/test/liquid/standard_filter_test.rb @@ -103,6 +103,8 @@ class StandardFiltersTest < Test::Unit::TestCase assert_equal '07/05/2006', @filters.date("2006-07-05 10:00:00", "%m/%d/%Y") assert_equal "07/16/2004", @filters.date("Fri Jul 16 01:00:00 2004", "%m/%d/%Y") + assert_equal "#{Date.today.year}", @filters.date('now', '%Y') + assert_equal "#{Date.today.year}", @filters.date('today', '%Y') assert_equal nil, @filters.date(nil, "%B")