mirror of
https://github.com/kemko/liquid.git
synced 2026-01-01 15:55:40 +03:00
add flatten filter
This commit is contained in:
@@ -101,7 +101,7 @@ module Liquid
|
||||
ary = InputIterator.new(input)
|
||||
if property.nil?
|
||||
ary.sort
|
||||
elsif ary.first.respond_to?('[]'.freeze) and !ary.first[property].nil?
|
||||
elsif ary.first.respond_to?('[]'.freeze) && !ary.first[property].nil?
|
||||
ary.sort {|a,b| a[property] <=> b[property] }
|
||||
elsif ary.first.respond_to?(property)
|
||||
ary.sort {|a,b| a.send(property) <=> b.send(property) }
|
||||
@@ -127,6 +127,11 @@ module Liquid
|
||||
end
|
||||
end
|
||||
|
||||
# flatten the given input
|
||||
def flatten(input)
|
||||
Array(input).flatten
|
||||
end
|
||||
|
||||
# Replace occurrences of a string with another
|
||||
def replace(input, string, replacement = ''.freeze)
|
||||
input.to_s.gsub(string, replacement.to_s)
|
||||
|
||||
@@ -149,6 +149,16 @@ class StandardFiltersTest < Test::Unit::TestCase
|
||||
"thing" => { "foo" => [ { "bar" => 42 }, { "bar" => 17 } ] }
|
||||
end
|
||||
|
||||
def test_flatten
|
||||
assert_equal [1,2,3,4], @filters.flatten([1,2,3,4])
|
||||
assert_equal [1,2,3,4], @filters.flatten([[1,2,3,4]])
|
||||
assert_equal [1,2,3,4], @filters.flatten([[1],[2],[3],[4]])
|
||||
assert_equal [1], @filters.flatten(1)
|
||||
|
||||
assert_template_result '1234', "{{ ary | flatten | flatten }}",
|
||||
'ary' => [[1],2,[3],4]
|
||||
end
|
||||
|
||||
def test_sort_calls_to_liquid
|
||||
t = TestThing.new
|
||||
Liquid::Template.parse('{{ foo | sort: "whatever" }}').render("foo" => [t])
|
||||
|
||||
Reference in New Issue
Block a user