Мне нужно иметь возможность форматировать непечатные логические строки в 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.