diff --git a/lib/liquid/tags/doc.rb b/lib/liquid/tags/doc.rb index f2c299dd..425e3d5b 100644 --- a/lib/liquid/tags/doc.rb +++ b/lib/liquid/tags/doc.rb @@ -55,6 +55,10 @@ module Liquid true end + def nodelist + [] + end + private def ensure_valid_markup(tag_name, markup, parse_context) diff --git a/lib/liquid/version.rb b/lib/liquid/version.rb index 12a44208..24600c63 100644 --- a/lib/liquid/version.rb +++ b/lib/liquid/version.rb @@ -2,5 +2,5 @@ # frozen_string_literal: true module Liquid - VERSION = "5.8.0" + VERSION = "5.8.1" end diff --git a/test/unit/block_unit_test.rb b/test/unit/block_unit_test.rb index cfaf3f66..573a90b4 100644 --- a/test/unit/block_unit_test.rb +++ b/test/unit/block_unit_test.rb @@ -49,6 +49,7 @@ class BlockUnitTest < Minitest::Test def test_comment_tag_with_block template = Liquid::Template.parse(" {% comment %} {% endcomment %} ") + assert_equal([String, Comment, String], block_types(template.root.nodelist)) assert_equal(3, template.root.nodelist.size) end @@ -59,9 +60,31 @@ class BlockUnitTest < Minitest::Test assert_equal(3, template.root.nodelist.size) end + def test_doc_tag_visitor + template_source = '{% doc %}{% enddoc %}' + + assert_equal( + [Liquid::Doc], + visit(template_source), + ) + end + private def block_types(nodelist) nodelist.collect(&:class) end + + def traversal(template) + ParseTreeVisitor + .for(Template.parse(template).root) + .add_callback_for(Liquid::Doc) do |tag| + tag_class = tag.class + tag_class + end + end + + def visit(template) + traversal(template).visit.flatten.compact + end end