Конвертер Middleman Kramdown для HTML-тегов

#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 метода.