Как расширить Ruby ERB для обработки тегов %=?

Я использую ERB для метапрограммирования некоторого математического языка. Если бы я мог расширить функциональность ERB для обработки тегов %=, это позволило бы мне значительно упростить мои источники. Я просто хочу получить вывод строки по аналогии с <%= %>. Я пытался копаться в файле /usr/lib/ruby/1.9.1/erb.rb, но очень быстро заблудился. Может вы поможете с этой проблемой?


person Andrei    schedule 22.07.2010    source источник
comment
Может быть, вы могли бы уточнить? Что не так с использованием ‹%= %›?   -  person Joseph Weissman    schedule 23.07.2010
comment
Три ненужных символа, которые значительно усложняют чтение кода, если только я не скрою их в настройках темы/языка TextMate. В теге % тоже нет необходимости — можно использовать <% %>. Путь Ruby, как я его вижу, состоит в том, чтобы максимизировать красоту кода, и %= очень хорошо соответствует этой концепции. :)   -  person Andrei    schedule 23.07.2010
comment
Вы смотрели на HAML...? Я не уверен, что «исправить» ERB — это действительно правильный путь.   -  person Joseph Weissman    schedule 29.07.2010
comment
@Joe: я работаю не с HTML, а с математической программой, которая использует текстовые файлы для ввода данных. Мне нужен ERB, чтобы сделать эти текстовые файлы удобным способом, и он очень хорошо справляется со своей задачей.   -  person Andrei    schedule 29.07.2010


Ответы (1)


Ну, кажется, я справился сам. Если вы сохраните код на странице http://pastie.org/1056824 (или http://gist.github.com/487297) как extended_erb.rb, а затем вызовите его в своем скрипте...

require 'extended_erb'
puts ERB.new(File.read('mytemplate.erb'), 0, '%').result

или запустить ERB из командной строки...

erb -r extended_erb  mytemplate.erb

затем следующий шаблон...

<%= 1 %>
%= 2

будет производить желаемый результат

1
2
person Andrei    schedule 23.07.2010