Экранирование возврата строки / конца строки в шаблонах ERB

Мне нужно иметь возможность форматировать непечатаемые логические строки в ERB, не влияя на конечный текстовый вывод шаблона. На данный момент я не думаю, что ERB поддерживает такое экранирование.

Это мой первый крупный проект Ruby. Пишу генератор кода. Мои шаблоны будут включать значительное количество условных выражений и перечислений. Чтобы сделать шаблон удобочитаемым и поддерживаемым, мне нужно иметь возможность форматировать логический код и комментарии, не искажая конечный результат.

Например, предположим, что мне нужен следующий результат:

Starting erbOutput
1
2
3
4
Ending erbOutput

Я наивно написал шаблон примерно так:

require 'erb'
h=<<H
Starting erbOutput
<%# comment %>
<%5.times do |e|%>
<%=e.to_s  %>
<%end %>
<%# comment %>
Ending erbOutput
H
s=ERB.new(h).result
puts s

... но это дает

Starting erbOutput


0

1

2

3

4


Ending erbOutput

прямой вывод:

"Starting erbOutput\n\n\n0\n\n1\n\n2\n\n3\n\n4\n\n\nEnding erbOutput\n"

... дает понять, что строка -возврат строк логики и комментариев включается в вывод ERB.

Я могу произвести желаемый результат, втиснув шаблон в такую ​​неудобную форму:

h=<<H
Starting erbOutput<%# comment %>
<%5.times do |e|%><%=e.to_s  %>
<%end %><%# comment %>Ending erbOutput
H

... но я не думаю, что смогу отлаживать и поддерживать шаблоны без более удобочитаемого форматирования. Некоторые из моих условных выражений и перечислений имеют целых три уровня глубины, и я много комментирую. Втиснув все это в одну или две строки, шаблон становится совершенно нечитаемым.

Есть ли способ избежать или иным образом подавить возврат строки логики строки комментария в ERB? Может ли один из других общедоступных модулей шаблонов Ruby справиться с этим лучше?

Если это важно, я работаю с MacRuby 0.10 (реализует Ruby 1.9.2) на MacOS 10.6.7.

6
задан TechZen 11 May 2011 в 19:38
поделиться