From 2dc6832c4218237cf0b4191cad7209b3bffa62ba Mon Sep 17 00:00:00 2001 From: Nathan Weizenbaum Date: Thu, 27 Aug 2009 23:01:56 -0700 Subject: [PATCH] Allow 'end' to be followed by code for silent blocks. --- doc-src/HAML_CHANGELOG.md | 11 +++++++++++ lib/haml/precompiler.rb | 4 ++-- test/haml/engine_test.rb | 25 +++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/doc-src/HAML_CHANGELOG.md b/doc-src/HAML_CHANGELOG.md index b8ed82ae..636b0937 100644 --- a/doc-src/HAML_CHANGELOG.md +++ b/doc-src/HAML_CHANGELOG.md @@ -3,6 +3,17 @@ * Table of contents {:toc} +## 2.2.4 + +Allow `end` to be used for silent script when it's followed by code. +For example: + + - form_for do + ... + - end if @show_form + +This isn't very good style, but we're supporting it for consistency's sake. + ## [2.2.3](http://github.com/nex3/haml/commit/2.2.3) Haml 2.2.3 adds support for the JRuby bundling tools diff --git a/lib/haml/precompiler.rb b/lib/haml/precompiler.rb index e395ceea..a5405a9f 100644 --- a/lib/haml/precompiler.rb +++ b/lib/haml/precompiler.rb @@ -398,8 +398,8 @@ END end # Closes a Ruby block. - def close_script - push_silent "end", true + def close_script(push_end = true) + push_silent("end", true) if push_end @template_tabs -= 1 end diff --git a/test/haml/engine_test.rb b/test/haml/engine_test.rb index c998594e..cb779173 100644 --- a/test/haml/engine_test.rb +++ b/test/haml/engine_test.rb @@ -318,6 +318,31 @@ HTML HAML end + def test_silent_end_with_stuff + assert_equal(<hi!

+HTML +- if true + %p hi! +- end if "foo".gsub(/f/) do + - "z" +- end + "bar" +HAML + end + def test_multiline_with_colon_after_filter assert_equal(<