2015-07-11 2 views
2

Я строил сайт с Middleman и используя Redcarpet как мой двигатель разметки, в основном для поддержки GFM.Как продлить рендер рендеринга Redcarpet Middleman?

Я хотел бы использовать или предшествовать процессу рендеринга уценки, чтобы добавить поддержку различных вариантов синтаксиса. В одном примере, я хотел бы это:

[file:/path/to/file] 

быть вынесен как:

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

В любом случае, я ничего, что мешает бы повлиять на оставшиеся уценки в шаблоне не делаю, поэтому я подозреваю, что могу предшествовать процессу рендеринга.

Кроме того, если это проще с помощью другого средства визуализации, я не привязан к Redcarpet каким-либо другим способом, кроме того, я бы предпочел иметь поддержку GFM.

+0

Если вы решите пойти с pandoc вместо этого, посмотрите на [pandoc сценариев] (HTTP://pandoc.org/scripting.html), удачи! – mb21

ответ

0

Во-первых, вам необходимо создать новый рендерер на основе redcarpet в файле config.rb. что-то вроде:

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 

Если вы хотите, чтобы это было последнее, что сделано, использование постобработки (документ) вместо предобработки (документ)