I needed to do something similar, add target="_new"
to all links. Solved it using Kramdown and a custom Kramdown::Converter::Html
class.
Define a Kramdown::Converter::Html
subclass (kramdown/converter/my_html.rb in some autoload path)
class Kramdown::Converter::MyHtml < Kramdown::Converter::Html
def convert_a(el, indent)
el.attr['target'] = '_new'
super
end
end
I also have a view helper in app/helpers/application_helper.rb
def markdown(str)
Kramdown::Converter::MyHtml.convert(Kramdown::Document.new(str).root)[0].html_safe
end
Ideally it should be possible to just use Kramdown::Document.new(str).to_my_html.html_safe
but I can't get it to work in rails development mode as Kramdown uses const_defined?
to see if a converter is available and that does not trigger the autoloader. Please comment if you know how to fix this.