Мне нужно было сделать нечто подобное, добавить target="_new"
ко всем ссылкам. Решил это, используя Kramdown и пользовательский класс Kramdown::Converter::Html
.
Определить подкласс Kramdown::Converter::Html
(kramdown / converter / my_html.rb в некотором пути автозагрузки)
class Kramdown::Converter::MyHtml < Kramdown::Converter::Html
def convert_a(el, indent)
el.attr['target'] = '_new'
super
end
end
У меня также есть помощник вида в app / helpers / application_helper.rb
def markdown(str)
Kramdown::Converter::MyHtml.convert(Kramdown::Document.new(str).root)[0].html_safe
end
В идеале должно быть возможно просто использовать Kramdown::Document.new(str).to_my_html.html_safe
, но я не могу заставить его работать в режиме разработки рельсов, поскольку Kramdown использует const_defined?
, чтобы проверить, доступен ли конвертер и не запускает ли автозагрузчик. Пожалуйста, прокомментируйте, если вы знаете, как это исправить.