diff --git a/lib/liquid/tags/raw.rb b/lib/liquid/tags/raw.rb index 6b461bdb5..ce797541a 100644 --- a/lib/liquid/tags/raw.rb +++ b/lib/liquid/tags/raw.rb @@ -12,9 +12,9 @@ def initialize(tag_name, markup, parse_context) def parse(tokens) @body = '' while token = tokens.shift - if token =~ FullTokenPossiblyInvalid + if token =~ FullTokenPossiblyInvalid and block_delimiter == $2 @body << $1 if $1 != "".freeze - return if block_delimiter == $2 + return end @body << token unless token.empty? end diff --git a/test/integration/tags/raw_tag_test.rb b/test/integration/tags/raw_tag_test.rb index 634d052d1..d5ee6a767 100644 --- a/test/integration/tags/raw_tag_test.rb +++ b/test/integration/tags/raw_tag_test.rb @@ -23,6 +23,10 @@ def test_open_tag_in_raw assert_template_result ' Foobar {{ invalid 1', '{% raw %} Foobar {{ invalid {% endraw %}{{ 1 }}' end + def test_nested_tag_in_raw + assert_template_result '{{ {% test %} }}', '{% raw %}{{ {% test %} }}{% endraw %}' + end + def test_invalid_raw assert_match_syntax_error(/tag was never closed/, '{% raw %} foo') assert_match_syntax_error(/Valid syntax/, '{% raw } foo {% endraw %}')