diff --git a/lib/liquid.rb b/lib/liquid.rb index eef582f..770d2f9 100644 --- a/lib/liquid.rb +++ b/lib/liquid.rb @@ -45,7 +45,7 @@ module Liquid end require "liquid/version" -require 'liquid/traversal' +require 'liquid/parse_tree_visitor' require 'liquid/lexer' require 'liquid/parser' require 'liquid/i18n' diff --git a/lib/liquid/condition.rb b/lib/liquid/condition.rb index aca9420..3b51682 100644 --- a/lib/liquid/condition.rb +++ b/lib/liquid/condition.rb @@ -129,7 +129,7 @@ module Liquid end end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children [ @node.left, @node.right, diff --git a/lib/liquid/traversal.rb b/lib/liquid/parse_tree_visitor.rb similarity index 78% rename from lib/liquid/traversal.rb rename to lib/liquid/parse_tree_visitor.rb index d9d6fa8..62f6c7b 100644 --- a/lib/liquid/traversal.rb +++ b/lib/liquid/parse_tree_visitor.rb @@ -1,10 +1,10 @@ # frozen_string_literal: true module Liquid - class Traversal + class ParseTreeVisitor def self.for(node, callbacks = Hash.new(proc {})) - if defined?(node.class::Traversal) - node.class::Traversal + if defined?(node.class::ParseTreeVisitor) + node.class::ParseTreeVisitor else self end.new(node, callbacks) @@ -23,12 +23,12 @@ module Liquid self end - def traverse(context = nil) + def visit(context = nil) children.map do |node| item, new_context = @callbacks[node.class].call(node, context) [ item, - Traversal.for(node, @callbacks).traverse(new_context || context) + ParseTreeVisitor.for(node, @callbacks).visit(new_context || context) ] end end diff --git a/lib/liquid/tags/assign.rb b/lib/liquid/tags/assign.rb index 53c9eb2..c8d0574 100644 --- a/lib/liquid/tags/assign.rb +++ b/lib/liquid/tags/assign.rb @@ -48,7 +48,7 @@ module Liquid end end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children [@node.from] end diff --git a/lib/liquid/tags/case.rb b/lib/liquid/tags/case.rb index 433d404..5036b27 100644 --- a/lib/liquid/tags/case.rb +++ b/lib/liquid/tags/case.rb @@ -83,7 +83,7 @@ module Liquid @blocks << block end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children [@node.left] + @node.blocks end diff --git a/lib/liquid/tags/cycle.rb b/lib/liquid/tags/cycle.rb index aaac686..17aa860 100644 --- a/lib/liquid/tags/cycle.rb +++ b/lib/liquid/tags/cycle.rb @@ -54,7 +54,7 @@ module Liquid end.compact end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children Array(@node.variables) end diff --git a/lib/liquid/tags/for.rb b/lib/liquid/tags/for.rb index 68c1f92..b69aa78 100644 --- a/lib/liquid/tags/for.rb +++ b/lib/liquid/tags/for.rb @@ -192,7 +192,7 @@ module Liquid @else_block ? @else_block.render(context) : ''.freeze end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children (super + [@node.limit, @node.from, @node.collection_name]).compact end diff --git a/lib/liquid/tags/if.rb b/lib/liquid/tags/if.rb index 54560c2..1451c25 100644 --- a/lib/liquid/tags/if.rb +++ b/lib/liquid/tags/if.rb @@ -111,7 +111,7 @@ module Liquid end end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children @node.blocks end diff --git a/lib/liquid/tags/include.rb b/lib/liquid/tags/include.rb index 23cc591..c9f2a28 100644 --- a/lib/liquid/tags/include.rb +++ b/lib/liquid/tags/include.rb @@ -110,7 +110,7 @@ module Liquid file_system.read_template_file(context.evaluate(@template_name_expr)) end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children [ @node.template_name_expr, diff --git a/lib/liquid/tags/table_row.rb b/lib/liquid/tags/table_row.rb index 3994553..7f391cf 100644 --- a/lib/liquid/tags/table_row.rb +++ b/lib/liquid/tags/table_row.rb @@ -51,7 +51,7 @@ module Liquid result end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children super + @node.attributes.values + [@node.collection_name] end diff --git a/lib/liquid/variable.rb b/lib/liquid/variable.rb index 1258b2d..c31bffe 100644 --- a/lib/liquid/variable.rb +++ b/lib/liquid/variable.rb @@ -139,7 +139,7 @@ module Liquid end end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children [@node.name] + @node.filters.flatten end diff --git a/lib/liquid/variable_lookup.rb b/lib/liquid/variable_lookup.rb index f1b7834..8f7ad46 100644 --- a/lib/liquid/variable_lookup.rb +++ b/lib/liquid/variable_lookup.rb @@ -79,7 +79,7 @@ module Liquid [@name, @lookups, @command_flags] end - class Traversal < Liquid::Traversal + class ParseTreeVisitor < Liquid::ParseTreeVisitor def children @node.lookups end diff --git a/test/integration/traversal_test.rb b/test/integration/parse_tree_visitor_test.rb similarity index 98% rename from test/integration/traversal_test.rb rename to test/integration/parse_tree_visitor_test.rb index 7bcfac8..4ffef08 100644 --- a/test/integration/traversal_test.rb +++ b/test/integration/parse_tree_visitor_test.rb @@ -2,7 +2,7 @@ require 'test_helper' -class TraversalTest < Minitest::Test +class ParseTreeVisitorTest < Minitest::Test include Liquid def test_variable