@@ -114,6 +114,7 @@ def visit_erb(node)
114114 q . text ( " " )
115115 visit ( node . keyword )
116116 end
117+
117118 node . content . blank? ? q . text ( " " ) : visit ( node . content )
118119
119120 visit ( node . closing_tag )
@@ -137,27 +138,25 @@ def visit_erb_end(node)
137138 end
138139
139140 def visit_erb_content ( node )
140- if node . value . is_a? ( String )
141- output_rows ( node . value . split ( " \n " ) )
142- else
143- nodes = node . value &. statements &. child_nodes || [ ]
144- nodes = nodes . reject { | node | node . is_a? ( SyntaxTree :: VoidStmt ) }
141+ # Reject all VoidStmt to avoid empty lines
142+ nodes =
143+ ( node . value &. statements &. child_nodes || [ ] ) . reject do | node |
144+ node . is_a? ( SyntaxTree :: VoidStmt )
145+ end
145146
146- if nodes . size == 1
147- q . text ( " " )
147+ if nodes . size == 1
148+ q . text ( " " )
149+ format_statement ( nodes . first )
150+ q . text ( " " )
151+ elsif nodes . size > 1
152+ q . indent do
153+ q . breakable ( "" )
148154 q . seplist ( nodes , -> { q . breakable ( "" ) } ) do |child_node |
149155 format_statement ( child_node )
150156 end
151- q . text ( " " )
152- elsif nodes . size > 1
153- q . indent do
154- q . breakable ( "" )
155- q . seplist ( nodes , -> { q . breakable ( "" ) } ) do |child_node |
156- format_statement ( child_node )
157- end
158- end
159- q . breakable
160157 end
158+
159+ q . breakable
161160 end
162161 end
163162
@@ -341,20 +340,26 @@ def handle_child_nodes(child_nodes)
341340 end
342341
343342 def handle_group ( nodes , break_after :)
344- return unless nodes . any?
345-
346- q . group do
347- nodes . each_with_index do |node , group_index |
348- visit ( node )
349- next_node = nodes [ group_index + 1 ]
350- next if next_node . nil?
351- breakable_between_group ( node , next_node )
352- end
343+ if nodes . size == 1
344+ handle_group_nodes ( nodes )
345+ elsif nodes . size > 1
346+ q . group { handle_group_nodes ( nodes ) }
347+ else
348+ return
353349 end
354350
355351 breakable_between_group ( nodes . last , nil ) if break_after
356352 end
357353
354+ def handle_group_nodes ( nodes )
355+ nodes . each_with_index do |node , group_index |
356+ visit ( node )
357+ next_node = nodes [ group_index + 1 ]
358+ next if next_node . nil?
359+ breakable_between_group ( node , next_node )
360+ end
361+ end
362+
358363 def node_should_group ( node )
359364 node . is_a? ( SyntaxTree ::ERB ::CharData ) ||
360365 node . is_a? ( SyntaxTree ::ERB ::ErbNode )
0 commit comments