Comments 4
Зависит от задачи конечно. Redcarpet тоже расширяем. Простой пример: хочу чтобы все генерируемые ссылки открывались в новом окне браузера. То бишь надо ко всем ссылкам добавить target="_blank". Реализуем свой рендерер, наследуя от существующего и заменяем один метод, формирующий ссылки, на свой:
И подсовываем в парсер этот рендерер вместо стандартного.
class MyRenderer < Redcarpet::Render::HTML
def link(link, title, content)
"<a href='#{link}' title='#{title}' target='_blank'>#{content}</a>"
end
end
И подсовываем в парсер этот рендерер вместо стандартного.
В том то и дело, что Redcarpet замечательно позволяет переопределять существующие элементы, но парсер там сишный, если не изменяет память, и патчить для добавления новых markdown элементов прийдется его.
Да парсер написан на Си. Как вариант, для добавления новых элементов можно переопределить в своем рендерере методы preprocess и/или postprocess, куда подается весь текст, и обработать дополнительно регулярками или еще как. Не совсем красиво, но должно работать.
Спасибо за ссылку на kramdown. Гляну на досуге.
Спасибо за ссылку на kramdown. Гляну на досуге.
Sign up to leave a comment.
Markdown разметка в RubyOnRails-приложении