2011-02-11 3 views
1

У меня есть этот скрипт для создания файлов конфигурации. Я использую ruby ​​и его встроенную ERB.вопрос о шаблонах ruby ​​erb

некоторые из моих шаблонов состоит из определенных форматов, пробелы, скобки и т.д.

пример будет

command { 
    var some_var; 
} 

Моя проблема заключается в мои шаблоны Еврорадио очень грязные смотреть, потому что, когда я устраиваю код в шаблоне он также разрушает выход. Я отформатировал шаблон erb таким образом, что он будет выглядеть как чистый нормальный код, в моем случае он имеет два пробела для отступа. что-то вроде:

<% if var == 'something' %> 
    command { 
    var #{var}; 
    } 
<% end %> 

К сожалению, это не дает желаемого двух разнесенного выхода, как пример выше этого примера. так что я должен был сделать что-то вроде:

<% if var == 'something' %> 
command { 
var #{var}; 
} 
<% end %> 

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

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

ответ

1

Я немного поиграл с ERB, но не нашел пути:/Возможно, вы могли бы попробовать его с помощью интерполяции <% -%>, которая имеет какое-то отношение к отступу, хотя я не мог найти ее в rdoc ERB.

Вы также можете попробовать HAML http://haml-lang.com/ - это довольно стойкий на отступов. Вы можете запустить Haml рендеринга из командной строки или в Ruby-кода в дополнение к шаблонам Rails:

irb 
>> require 'rubygems' 
>> gem 'haml' 
>> require 'haml' 
>> Haml::Engine.new("%bla").render(binding) 
=> "<bla></bla>\n" 

Я также нашел несколько ссылок на другие системы шаблонных в конце документации Еврорадио: http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/, может быть, это Начало.

+0

да, но я думаю, что haml предназначен только для рельсов. Мне нужно что-то рубиновое. – poymode

+0

Нет, вы можете использовать Haml от vanilla Ruby - см. Обновленный ответ. –

+0

Если бы это помогло вам, могу я попросить вас принять ответ? –

Смежные вопросы