diff --git a/doc-src/HAML_CHANGELOG.md b/doc-src/HAML_CHANGELOG.md index f2a8038b..6dd8d0a4 100644 --- a/doc-src/HAML_CHANGELOG.md +++ b/doc-src/HAML_CHANGELOG.md @@ -14,6 +14,9 @@ * Add `` to the list of tags that's {file:HAML_REFERENCE.md#preserve-option automatically whitespace-preserved}. +* Fixed a bug with `end` being followed by code in silent scripts - + it no longer throws an error when it's nested beneath tags. + ## [2.2.6](http://github.com/nex3/haml/commit/2.2.6) * Made the error message when unable to load a dependency for html2haml diff --git a/lib/haml/precompiler.rb b/lib/haml/precompiler.rb index e3df4eef..bdb2e27c 100644 --- a/lib/haml/precompiler.rb +++ b/lib/haml/precompiler.rb @@ -228,7 +228,7 @@ END newline_now # Handle stuff like - end.join("|") - @to_close_stack.first << false if text =~ /^-\s*end\b/ && !block_opened? + @to_close_stack.last << false if text =~ /^-\s*end\b/ && !block_opened? case_stmt = text =~ /^-\s*case\b/ block = block_opened? && !mid_block_keyword?(text) diff --git a/test/haml/engine_test.rb b/test/haml/engine_test.rb index f7c8c20e..4e1f2d5e 100644 --- a/test/haml/engine_test.rb +++ b/test/haml/engine_test.rb @@ -342,6 +342,24 @@ HTML HAML end + def test_nested_end_with_method_call + assert_equal(< + 2|3|4 + b-a-r +

+HTML +%p + = [1, 2, 3].map do |i| + - i + 1 + - end.join("|") + = "bar".gsub(/./) do |s| + - s + "-" + - end.gsub(/-$/) do |s| + - '' +HAML + end + def test_silent_end_with_stuff assert_equal(<