@@ -88,19 +88,19 @@ def compile_standard_element(node, tag)
8888
8989 Refract ::StatementsNode . new (
9090 body : [
91- buffer ( "<#{ tag } " ) ,
91+ raw ( "<#{ tag } " ) ,
9292 *(
9393 if node . arguments
9494 compile_phlex_attributes ( node . arguments )
9595 end
9696 ) ,
97- buffer ( ">" ) ,
97+ raw ( ">" ) ,
9898 *(
9999 if node . block
100100 compile_phlex_block ( node . block )
101101 end
102102 ) ,
103- buffer ( "</#{ tag } >" ) ,
103+ raw ( "</#{ tag } >" ) ,
104104 ]
105105 )
106106 end
@@ -110,13 +110,13 @@ def compile_void_element(node, tag)
110110
111111 Refract ::StatementsNode . new (
112112 body : [
113- buffer ( "<#{ tag } " ) ,
113+ raw ( "<#{ tag } " ) ,
114114 *(
115115 if node . arguments
116116 compile_phlex_attributes ( node . arguments )
117117 end
118118 ) ,
119- buffer ( ">" ) ,
119+ raw ( ">" ) ,
120120 ]
121121 )
122122 end
@@ -131,7 +131,7 @@ def compile_phlex_attributes(node)
131131 end
132132
133133 if literal_attributes
134- return buffer (
134+ return raw (
135135 Phlex ::SGML ::Attributes . generate_attributes (
136136 eval (
137137 "{#{ Refract ::Formatter . new . format_node ( node ) } }"
@@ -162,7 +162,7 @@ def compile_phlex_block(node)
162162 content = node . body . body . first
163163 case content
164164 when Refract ::StringNode , Refract ::SymbolNode
165- return buffer ( Phlex :: Escape . html_escape ( content . unescaped ) )
165+ return plain ( content . unescaped )
166166 when Refract ::InterpolatedStringNode
167167 return compile_interpolated_string_node ( content )
168168 when Refract ::NilNode
@@ -216,7 +216,7 @@ def compile_interpolated_string_node(node)
216216 body : node . parts . map do |part |
217217 case part
218218 when Refract ::StringNode
219- buffer ( Phlex :: Escape . html_escape ( part . unescaped ) )
219+ plain ( part . unescaped )
220220 when Refract ::EmbeddedVariableNode
221221 interpolate ( part . variable )
222222 when Refract ::EmbeddedStatementsNode
@@ -234,27 +234,27 @@ def compile_whitespace_helper(node)
234234 if node . block
235235 Refract ::StatementsNode . new (
236236 body : [
237- buffer ( " " ) ,
237+ raw ( " " ) ,
238238 compile_phlex_block ( node . block ) ,
239- buffer ( " " ) ,
239+ raw ( " " ) ,
240240 ]
241241 )
242242 else
243- buffer ( " " )
243+ raw ( " " )
244244 end
245245 end
246246
247247 def compile_doctype_helper ( node )
248248 node => Refract ::CallNode
249249
250- buffer ( "<!doctype html>" )
250+ raw ( "<!doctype html>" )
251251 end
252252
253253 def compile_plain_helper ( node )
254254 node => Refract ::CallNode
255255
256256 if node . arguments in [ Refract ::StringNode ]
257- buffer ( node . arguments . arguments . first . unescaped )
257+ raw ( node . arguments . arguments . first . unescaped )
258258 else
259259 node
260260 end
@@ -306,98 +306,75 @@ def compile_comment_helper(node)
306306
307307 Refract ::StatementsNode . new (
308308 body : [
309- buffer ( "<!-- " ) ,
309+ raw ( "<!-- " ) ,
310310 compile_phlex_block ( node . block ) ,
311- buffer ( " -->" ) ,
311+ raw ( " -->" ) ,
312312 ]
313313 )
314314 end
315315
316316 def compile_raw_helper ( node )
317317 node => Refract ::CallNode
318-
319318 node
320319 end
321320
322- private def buffer ( value )
323- if @current_buffer
324- @current_buffer << Refract ::StringNode . new (
325- unescaped : value
326- )
321+ private def plain ( value )
322+ value => String
323+ raw ( Phlex ::Escape . html_escape ( value ) )
324+ end
327325
328- nil
329- else
330- new_buffer = [
331- Refract ::StringNode . new (
332- unescaped : value
333- ) ,
334- ]
326+ private def raw ( value )
327+ value => String
335328
336- @current_buffer = new_buffer
329+ buffer (
330+ Refract ::StringNode . new (
331+ unescaped : value
332+ )
333+ )
334+ end
337335
338- Refract ::IfNode . new (
339- inline : false ,
340- predicate : Refract ::LocalVariableReadNode . new (
341- name : should_render_local
342- ) ,
336+ private def interpolate ( statements )
337+ buffer (
338+ Refract ::EmbeddedStatementsNode . new (
343339 statements : Refract ::StatementsNode . new (
344340 body : [
345341 Refract ::CallNode . new (
346- receiver : Refract ::CallNode . new (
347- name : buffer_local ,
342+ receiver : Refract ::ConstantPathNode . new (
343+ parent : Refract ::ConstantPathNode . new (
344+ name : "Phlex"
345+ ) ,
346+ name : "Escape"
348347 ) ,
349- name : :<< ,
348+ name : :html_escape ,
350349 arguments : Refract ::ArgumentsNode . new (
351350 arguments : [
352- Refract ::InterpolatedStringNode . new (
353- parts : new_buffer
351+ Refract ::CallNode . new (
352+ receiver : Refract ::ParenthesesNode . new (
353+ body : statements
354+ ) ,
355+ name : :to_s
354356 ) ,
355357 ]
356358 )
357359 ) ,
358360 ]
359361 )
360362 )
361- end
363+ )
362364 end
363365
364- private def interpolate ( statements , escape : true )
365- embedded_statement = Refract ::EmbeddedStatementsNode . new (
366- statements : Refract ::StatementsNode . new (
367- body : [
368- Refract ::CallNode . new (
369- receiver : Refract ::ConstantPathNode . new (
370- parent : Refract ::ConstantPathNode . new (
371- name : "Phlex"
372- ) ,
373- name : "Escape"
374- ) ,
375- name : :html_escape ,
376- arguments : Refract ::ArgumentsNode . new (
377- arguments : [
378- Refract ::CallNode . new (
379- receiver : Refract ::ParenthesesNode . new (
380- body : statements
381- ) ,
382- name : :to_s
383- ) ,
384- ]
385- )
386- ) ,
387- ]
388- )
389- )
366+ private def buffer ( node )
367+ node => Refract ::StringNode | Refract ::EmbeddedStatementsNode
390368
391369 if @current_buffer
392- @current_buffer << embedded_statement
370+ @current_buffer << node
393371
394372 nil
395373 else
396- new_buffer = [ embedded_statement ]
397-
398- @current_buffer = new_buffer
374+ @current_buffer = [ node ]
399375
400376 Refract ::IfNode . new (
377+ inline : false ,
401378 predicate : Refract ::LocalVariableReadNode . new (
402379 name : should_render_local
403380 ) ,
@@ -411,7 +388,7 @@ def compile_raw_helper(node)
411388 arguments : Refract ::ArgumentsNode . new (
412389 arguments : [
413390 Refract ::InterpolatedStringNode . new (
414- parts : new_buffer
391+ parts : @current_buffer
415392 ) ,
416393 ]
417394 )
0 commit comments