From bf0f79f36c784934b3de5efaff0ee3bc113930e4 Mon Sep 17 00:00:00 2001 From: Michael Go Date: Thu, 30 Nov 2023 13:16:55 -0400 Subject: [PATCH] fix parsing comment tag delimiter --- lib/liquid/tags/comment.rb | 2 +- test/unit/tags/comment_tag_unit_test.rb | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/liquid/tags/comment.rb b/lib/liquid/tags/comment.rb index 0446685b..465a363f 100644 --- a/lib/liquid/tags/comment.rb +++ b/lib/liquid/tags/comment.rb @@ -15,7 +15,7 @@ module Liquid # {% endcomment %} # @liquid_syntax_keyword content The content of the comment. class Comment < Block - TAG_DELIMITER = /\A(.*)#{TagStart}#{WhitespaceControl}?\s*(endcomment)\s*(.*)?#{WhitespaceControl}?#{TagEnd}\z/om + TAG_DELIMITER = /\A(.*)#{TagStart}#{WhitespaceControl}?\s*(endcomment)\s*(\s.*)?#{WhitespaceControl}?#{TagEnd}\z/om def render_to_output_buffer(_context, output) output diff --git a/test/unit/tags/comment_tag_unit_test.rb b/test/unit/tags/comment_tag_unit_test.rb index 9f812b71..09da018e 100644 --- a/test/unit/tags/comment_tag_unit_test.rb +++ b/test/unit/tags/comment_tag_unit_test.rb @@ -135,4 +135,24 @@ class CommentTagUnitTest < Minitest::Test LIQUID ) end + + def test_ignores_delimiter_with_extra_strings + assert_template_result( + '', + <<~LIQUID.chomp, + {% if true %} + {% comment %} + {% commentXXXXX %}wut{% endcommentXXXXX %} + {% endcomment %} + {% endif %} + LIQUID + ) + end + + def test_delimiter_can_have_extra_strings + assert_template_result('', "{% comment %}123{% endcomment xyz %}") + assert_template_result('', "{% comment %}123{% endcomment\txyz %}") + assert_template_result('', "{% comment %}123{% endcomment\nxyz %}") + assert_template_result('', "{% comment %}123{% endcomment\n xyz endcomment %}") + end end