问题描述
我正在尝试转换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_p
或convert_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
方法的期望。