Fix map filter on Hash inputs

This commit is contained in:
Florian Weingarten
2013-10-08 08:18:03 -04:00
parent 81d3733f57
commit 96b30a89a9
2 changed files with 5 additions and 1 deletions

View File

@@ -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

View File

@@ -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])