#ruby #middleman #kramdown
#ruby #посредник #kramdown
Вопрос:
Я пытаюсь преобразовать каждую ссылку kramdown в приложении middleman.
До сих пор я пытался добавить Kramdown::Converter::Html
модуль и переопределить convert_a
метод.
module Kramdown
module Converter
module UrlConverter
def convert_a(el, indent)
"<a href="foo">bar</a>"
end
end
end
end
Kramdown::Converter::Html.prepend Kramdown::Converter::UrlConverter
Но по какой-то причине convert_a
никогда не выполняется. Выполняются такие методы, как convert_p
или convert_codeblock
, и я могу изменить их поведение.
Kramdown 1.10.0 посредник 4.3.5
Есть идеи?
Ответ №1:
Middleman переопределяет convert_a
(и convert_img
) в middleman-core/lib/middleman-core/renderers/kramdown.rb
путем получения из Kramdown::Converter::Html
и без вызова super
.
Поэтому, добавляя к Kramdown::Converter::Html
, ваш метод заменяется версией middleman.
Вы могли бы добиться большего успеха, Middleman::Renderes::MiddlemanKramdownHTML
вместо этого используя monkeypatching, но вам нужно быть осторожным, чтобы не нарушить ожидания посредника от convert_a
метода.