diff --git a/lib/liquid/block_body.rb b/lib/liquid/block_body.rb index e4ada7d1..a6150900 100644 --- a/lib/liquid/block_body.rb +++ b/lib/liquid/block_body.rb @@ -58,6 +58,9 @@ module Liquid return yield tag_name, markup end new_tag = tag.parse(tag_name, markup, tokenizer, parse_context) + + next if new_tag.is_a?(Comment) + @blank &&= new_tag.blank? @nodelist << new_tag end @@ -153,6 +156,9 @@ module Liquid return yield tag_name, markup end new_tag = tag.parse(tag_name, markup, tokenizer, parse_context) + + next if new_tag.is_a?(Comment) + @blank &&= new_tag.blank? @nodelist << new_tag when token.start_with?(VARSTART) diff --git a/test/unit/block_unit_test.rb b/test/unit/block_unit_test.rb index f28c30e1..bab11c40 100644 --- a/test/unit/block_unit_test.rb +++ b/test/unit/block_unit_test.rb @@ -49,8 +49,8 @@ class BlockUnitTest < Minitest::Test def test_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) + assert_equal([String, String], block_types(template.root.nodelist)) + assert_equal(2, template.root.nodelist.size) end private diff --git a/test/unit/tags/comment_tag_unit_test.rb b/test/unit/tags/comment_tag_unit_test.rb index 56618b72..ad2a0d18 100644 --- a/test/unit/tags/comment_tag_unit_test.rb +++ b/test/unit/tags/comment_tag_unit_test.rb @@ -199,4 +199,26 @@ class CommentTagUnitTest < Minitest::Test World! LIQUID end + + def test_comment_tag_node_is_not_in_nodelist + template = Liquid::Template.parse(<<~LIQUID.chomp) + {% comment %} + {% if true %} + {% endif %} + {% endcomment %} + LIQUID + + assert_equal(0, template.root.nodelist.size) + + template = Liquid::Template.parse(<<~LIQUID.chomp) + {% liquid + comment + if true + endif + endcomment + %} + LIQUID + + assert_equal(0, template.root.nodelist.size) + end end diff --git a/test/unit/template_unit_test.rb b/test/unit/template_unit_test.rb index e9de2d04..3be8cfcb 100644 --- a/test/unit/template_unit_test.rb +++ b/test/unit/template_unit_test.rb @@ -7,13 +7,13 @@ class TemplateUnitTest < Minitest::Test def test_sets_default_localization_in_document t = Template.new - t.parse('{%comment%}{%endcomment%}') + t.parse('{%raw%}{%endraw%}') assert_instance_of(I18n, t.root.nodelist[0].options[:locale]) end def test_sets_default_localization_in_context_with_quick_initialization t = Template.new - t.parse('{%comment%}{%endcomment%}', locale: I18n.new(fixture("en_locale.yml"))) + t.parse('{%raw%}{%endraw%}', locale: I18n.new(fixture("en_locale.yml"))) locale = t.root.nodelist[0].options[:locale] assert_instance_of(I18n, locale)