From 04381418d351c3d7c5e5dbb74974df312b11bd83 Mon Sep 17 00:00:00 2001 From: Larry Archer Date: Fri, 21 Aug 2015 11:34:17 -0500 Subject: [PATCH 1/3] Add url_decode filter to accompany url_encode --- lib/liquid/standardfilters.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/liquid/standardfilters.rb b/lib/liquid/standardfilters.rb index 590340d..d67c99d 100644 --- a/lib/liquid/standardfilters.rb +++ b/lib/liquid/standardfilters.rb @@ -45,6 +45,10 @@ module Liquid CGI.escape(input) unless input.nil? end + def url_decode(input) + CGI.unescape(input) rescue input + end + def slice(input, offset, length = nil) offset = Utils.to_integer(offset) length = length ? Utils.to_integer(length) : 1 From e6392d1cc13f223721a3610bd096b7c6d14a4977 Mon Sep 17 00:00:00 2001 From: Larry Archer Date: Fri, 21 Aug 2015 11:45:17 -0500 Subject: [PATCH 2/3] Tests for new url_decode filter --- test/integration/standard_filter_test.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/integration/standard_filter_test.rb b/test/integration/standard_filter_test.rb index b91074b..a37e0af 100644 --- a/test/integration/standard_filter_test.rb +++ b/test/integration/standard_filter_test.rb @@ -130,6 +130,13 @@ class StandardFiltersTest < Minitest::Test assert_equal nil, @filters.url_encode(nil) end + def test_url_decode + assert_equal 'foo bar', @filters.url_decode('foo+bar') + assert_equal 'foo bar', @filters.url_decode('foo%20bar') + assert_equal 'foo+1@example.com', @filters.url_decode('foo%2B1%40example.com') + assert_equal nil, @filters.url_decode(nil) + end + def test_truncatewords assert_equal 'one two three', @filters.truncatewords('one two three', 4) assert_equal 'one two...', @filters.truncatewords('one two three', 2) From 861271612945aa3dc27e93c026ab0bf16f141c01 Mon Sep 17 00:00:00 2001 From: Justin Li Date: Wed, 21 Oct 2015 02:01:21 -0400 Subject: [PATCH 3/3] Remove rescue in unescape filter --- lib/liquid/standardfilters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/liquid/standardfilters.rb b/lib/liquid/standardfilters.rb index d67c99d..3be892a 100644 --- a/lib/liquid/standardfilters.rb +++ b/lib/liquid/standardfilters.rb @@ -46,7 +46,7 @@ module Liquid end def url_decode(input) - CGI.unescape(input) rescue input + CGI.unescape(input) unless input.nil? end def slice(input, offset, length = nil)