diff --git a/lib/hamlit/compiler/children_compiler.rb b/lib/hamlit/compiler/children_compiler.rb index 42a73487..2d3fdaae 100644 --- a/lib/hamlit/compiler/children_compiler.rb +++ b/lib/hamlit/compiler/children_compiler.rb @@ -56,8 +56,15 @@ module Hamlit end def nuke_inner_whitespace?(node) - return false if node.type != :tag - node.value[:nuke_inner_whitespace] + case + when node.type == :tag + node.value[:nuke_inner_whitespace] || + (node.parent && nuke_inner_whitespace?(node.parent)) + when node.parent.nil? + false + else + nuke_inner_whitespace?(node.parent) + end end def nuke_prev_whitespace?(node) @@ -91,7 +98,7 @@ module Hamlit when :comment, :filter, :plain, :tag true when :script - node.children.empty? + node.children.empty? && !nuke_inner_whitespace?(node) else false end diff --git a/test/hamlit/engine/tag_test.rb b/test/hamlit/engine/tag_test.rb index a1cf9bba..dd875b2f 100644 --- a/test/hamlit/engine/tag_test.rb +++ b/test/hamlit/engine/tag_test.rb @@ -65,7 +65,7 @@ describe Hamlit::Engine do HTML end - it 'skips empty lines' do + it 'ignores empty lines' do assert_render(<<-HAML, <<-HTML) %span @@ -237,7 +237,6 @@ describe Hamlit::Engine do end it 'removes whitespaces inside block script' do - skip assert_render(<<-HAML, <<-HTML) %span< = 2.times do @@ -249,7 +248,6 @@ describe Hamlit::Engine do end it 'removes whitespace inside script inside silent script' do - skip assert_render(<<-HAML, <<-HTML) .bar< - 3.times do @@ -260,7 +258,6 @@ describe Hamlit::Engine do end it 'removes whitespace inside script recursively' do - skip assert_render(<<-HAML, <<-HTML) .foo< - 1.times do @@ -274,26 +271,23 @@ describe Hamlit::Engine do end it 'does not remove whitespace after string interpolation' do - assert_render(<<-'HAML', <<-HTML, compatible_only: :faml) + assert_render(<<-'HAML', <<-HTML, compatible_only: :haml) %div< #{'hello'} world HAML -