На моем веб-сайте, созданном Middleman, мне нужно выполнить определенный код Ruby для содержимого всех страниц (шаблонов).
Например, если бы у меня был следующий помощник в моем config.rb
:
def myexample(text)
text.gsub("dog","cat")
end
И в моем test.html.haml
:
= myexample("Some text about a dog.")
Мой предварительно просмотренный и сгенерированный /test.html
будет выглядеть так:
Some text about a cat.
Однако я использую несколько разных способов вывода текста, который необходимо изменить, в первую очередь с помощью фильтра :markdown
HAML, поэтому я бы предпочел не оборачивать все в помощник = myexample("Text")
.
Я хотел бы иметь возможность запускать код Ruby, который будет принимать содержимое всех страниц (предпочтительно) или сгенерированный вывод HTML (если первый вариант невозможен) в качестве аргумента, передаваемого такому помощнику.
В идеале этот код должен выполняться как в среде разработки, так и в среде сборки, но если это невозможно, достаточно сборки.
Возможно ли это сделать?
PS. В моем конкретном случае я использую сокращенную нотацию для ссылки на другие страницы, а затем использую регулярное выражение и eval()
, чтобы заменить их относительными ссылки из файлов данных.
:markdown
HAML, который используется для обработки блочной уценки (несколько абзацев), 20% из которых включаютref.pageA
ссылок. Мне удалось изменить свои части, поэтому теперь они обрабатываются вашим кодом из другого вопроса, но в этих:markdown
фильтрах HAML все еще есть некоторые ссылки, которые необходимо оценить. Я не хочу менять все фильтры HAML наmymarkdown()
хелпер, потому что это ухудшит читаемость, а хелпер, похоже, все равно не сможет принимать блочный ввод (несколько абзацев). - person Rafal   schedule 16.08.2017:markdown
HAML в файл данных, а затем поместить их в шаблон с помощьюmymarkdown
. И тогда мне пришлось бы обернуть все оставшиеся 1-абзацные биты текста, которые также включают ссылки с помощникомmymarkdown
. - person Rafal   schedule 16.08.2017