Как добавить собственный тип блоков в шаблонизатор slim
В slim есть возможность использовать так называемые engines — блоки с отличным от slim синтаксисом. Таким образом можно в slim шаблоне писать код используя одновременно несколько разных синтаксисов. asd
Например:
markdown:
#Header
Hello from #{"Markdown!"}
Second Line!
И всё бы ничего, но в один прекрасный момент мне понадобилось внедрить не совсем стандартный синтаксис. На самом-то деле довольно стандартный — просто инлайновый css. Но встроенный в slim engine для css/scss/sass оборачивает написанный код в тэг style. А в моём случае планировалось использовать эту возможность для AMP страниц и там такой подход уже не работает.
Ну и собственно, чтобы добиться желаемого просто добавим в файл инициализации config/initialize/slim.rb
нужный нам код
# создаем свой rendering engine
class AmpScssEngine < Slim::Embedded::SassEngine
def on_slim_embedded(engine, body, attrs)
super(:scss, body, attrs)
end
end
# регистрируем его в slim
Slim::Embedded.register :amp_scss, AmpScssEngine
После этого использовать в шаблоне этот рендерер можно следующим образом:
style amp-custom
amp_scss:
.amenity {
&__icon {
display: inline-flex;
}
}
Комментарии