diff --git a/lib/liquid/variable.rb b/lib/liquid/variable.rb index 209570654..16c1d282d 100644 --- a/lib/liquid/variable.rb +++ b/lib/liquid/variable.rb @@ -151,8 +151,14 @@ def evaluate_filter_expressions(context, filter_args, filter_kwargs) end class ParseTreeVisitor < Liquid::ParseTreeVisitor + def children_filter(filter) + nodes = [filter[0], *filter[1]] + nodes.concat(filter[2].values) if filter[2] + nodes + end + def children - [@node.name] + @node.filters.flatten + [@node.name] + @node.filters.flat_map { |filter| children_filter(filter) } end end end diff --git a/test/unit/parse_tree_visitor_test.rb b/test/unit/parse_tree_visitor_test.rb index 6d946f225..9fd9b94e4 100644 --- a/test/unit/parse_tree_visitor_test.rb +++ b/test/unit/parse_tree_visitor_test.rb @@ -12,10 +12,10 @@ def test_variable ) end - def test_varible_with_filter + def test_variable_with_filter assert_equal( - ["test", "infilter"], - visit(%({{ test | split: infilter }})), + ["test", "infilter", "infilter_hash_value"], + visit(%({{ test | default: infilter, allow_false: infilter_hash_value }})), ) end