fix parsing comment tag delimiter with extra strings

This commit is contained in:
Michael Go
2023-11-10 15:42:54 -04:00
parent 41f65173b0
commit 6dafc19b6d
2 changed files with 19 additions and 0 deletions
+5
View File
@@ -15,6 +15,8 @@ module Liquid
# {% endcomment %}
# @liquid_syntax_keyword content The content of the comment.
class Comment < Block
TagDelimiter = /\A(.*)#{TagStart}#{WhitespaceControl}?\s*(endcomment)\s*(.*)?#{WhitespaceControl}?#{TagEnd}\z/om
def render_to_output_buffer(_context, output)
output
end
@@ -49,6 +51,9 @@ module Liquid
next if tag_name_match.nil?
tag_name_match[1]
elsif TagDelimiter.match?(token)
# aggressively match comment delimiter first
"endcomment"
else
tag_name_match = BlockBody::FullTokenPossiblyInvalid.match(token)
+14
View File
@@ -107,4 +107,18 @@ class CommentTagUnitTest < Minitest::Test
assert_equal(expected, output)
end
def test_comment_tag_delimiter_with_extra_strings
assert_template_result(
'',
<<~LIQUID.chomp,
{% comment %}
{% comment %}
{% endcomment
{% if true %}
{% endif %}
{% endcomment %}
LIQUID
)
end
end