用于<a> html标签的Middleman Kramdown Converter

问题描述

我正在尝试转换Middlemanapp中的每个kramdown链接

到目前为止,我已经尝试在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_pconvert_codeblock之类的方法,我可以更改其行为。

Kramdown 1.10.0 中间人4.3.5

有什么想法吗?

解决方法

中间人通过从convert_a派生而不调用convert_img来覆盖middleman-core/lib/middleman-core/renderers/kramdown.rb中的Kramdown::Converter::Html(和super)。

因此,以Kramdown::Converter::Html开头,您的方法将被中间人的版本取代。

相反,通过猴子修补Middleman::Renderes::MiddlemanKramdownHTML可能会更成功,但是您需要注意不要违反中间人对convert_a方法的期望。