如何扩展 Middleman 的 Redcarpet Markdown 渲染器?

Posted

技术标签:

【中文标题】如何扩展 Middleman 的 Redcarpet Markdown 渲染器?【英文标题】:How to extend Middleman's Redcarpet markdown renderer? 【发布时间】:2015-07-11 12:59:41 【问题描述】:

我正在使用Middleman 构建一个站点,并使用Redcarpet 作为我的降价引擎,主要是为了它的GFM 支持。

我想利用或先于 Markdown 渲染过程来添加对各种语法选项的支持。在一个例子中,我想要这样:

[file:/path/to/file]

呈现为:

<p class="file">
  <code>/path/to/file</code>
</p>

在每种情况下,我都不会渲染任何会影响模板中剩余降价的东西,所以我怀疑我可以先于渲染过程。

此外,如果使用另一个渲染器更简单,我不会以任何方式与 Redcarpet 绑定,除了我更喜欢 GFM 支持。

【问题讨论】:

如果您决定改用 Pandoc,请查看 pandoc scripting,祝您好运! 【参考方案1】:

首先,您需要在 config.rb 文件中基于 redcarpet 创建一个新的渲染器。类似:

   set renderer: myRenderer

接下来,您需要将“myRenderer”创建为一个新类(您可以在 config.rb 的顶部执行此操作,但也可以将其放在外部文件中)

require "middleman-core/renderers/redcarpet"
class myRenderer < Middleman::Renderers::MiddlemanRedcarpethtml

def preprocess(document)
  # insert ruby code to use a regex to find your tag in the document
  # insert ruby code to generate your HTML and replace your tag with
  #    HTML that you want
  return (document)
end

如果您希望这是最后一件事,请使用 postprocess(document) 而不是 preprocess(document)

【讨论】:

以上是关于如何扩展 Middleman 的 Redcarpet Markdown 渲染器?的主要内容,如果未能解决你的问题,请参考以下文章

apache_conf 基本的Auth Middleman和Heroku

ruby 如果你想在heroku上为你的中间人应用程序添加基本身份验证,这是一个添加到middleman的config.ru文件的片段

部署路径不适用于中间人部署中的 Git 部署方法

无法使用红地毯换行

Angular项目间的模板共享:如何跨多项目重用公共HTML

当容器在 C++ 中为 const 时,如何对容器持有的对象进行非 const 访问