From 96b30a89a95e4fc37f51a15280c8edcc8d91e61e Mon Sep 17 00:00:00 2001 From: Florian Weingarten Date: Tue, 8 Oct 2013 08:18:03 -0400 Subject: [PATCH] Fix map filter on Hash inputs --- lib/liquid/standardfilters.rb | 2 +- test/liquid/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 b7f6418..718a8d9 100644 --- a/lib/liquid/standardfilters.rb +++ b/lib/liquid/standardfilters.rb @@ -250,7 +250,7 @@ module Liquid def flatten_if_necessary(input) ary = if input.is_a?(Array) input.flatten - elsif input.kind_of?(Enumerable) + elsif input.is_a?(Enumerable) && !input.is_a?(Hash) input else [input].flatten diff --git a/test/liquid/standard_filter_test.rb b/test/liquid/standard_filter_test.rb index b317b68..fc1a3cb 100644 --- a/test/liquid/standard_filter_test.rb +++ b/test/liquid/standard_filter_test.rb @@ -140,6 +140,10 @@ class StandardFiltersTest < Test::Unit::TestCase assert_equal "woot: 1", Liquid::Template.parse('{{ foo | map: "whatever" }}').render("foo" => [t]) end + def test_map_on_hashes + assert_equal "4217", Liquid::Template.parse('{{ thing | map: "foo" | map: "bar" }}').render("thing" => { "foo" => [ { "bar" => 42 }, { "bar" => 17 } ] }) + end + def test_sort_calls_to_liquid t = TestThing.new assert_equal "woot: 1", Liquid::Template.parse('{{ foo | sort: "whatever" }}').render("foo" => [t])