在DocPad中构建Markdown文件

时间:2013-05-02 10:02:20

标签: markdown docpad

我的网站目前有一些形式的页面:

<div class="main">
  <div class="slide">
    ( slide content )
  </div>
  <div class="examples">
    ( examples content )
  </div>
  <div class="remarks">
    ( remarks content )
  </div>
  ...
</div>

“示例”和“备注”部分都是可选的,可以有多个“幻灯片”部分。

我正在将网站移到DocPad,并决定将所有现有标记转换为Markdown格式。 Markdown缺乏构建页面的方法,因此我尝试了各种技术来重新引入我所需的结构,但没有成功。

我正在使用Robotskirt / Sundown并且发现如果我在.md文件中编写<div>内联:

<div class="slide">
  ( slide content )
</div>

幻灯片内容不会作为Markdown处理。据说,添加markdown="1"属性应该可以使这项工作成功。但事实并非如此。也许日落不明白。

我最近的尝试是使用内联替换来预处理/后处理内容(不确定更换的哪个阶段)。我在docpad.config添加了以下内联替换:

plugins:
  robotskirt:
    inline:
      # Slides etc.
      out = out.replace /^---\s*start (\w+)\s*---$/g, (whole, m1) ->
        hash '<div class="' + m1 + '">'
      out = out.replace /^---\s*end (\w+)\s*---$/g, (whole, m1) ->
        hash '</div>'

并在.md文件中添加了标记:

--- start slide ---

( slide content )

--- end slide ---

这样可行,但由于替换发生在“普通文本”上,我最终会使用虚假段落:

<p><div class="slide"></p>

是否有任何可行的技巧,或者我应该只关注Markdown?

2 个答案:

答案 0 :(得分:1)

Markdown实际上只适用于类似博客的基本文本输入。您可能想要考虑生态模板,它可以为您提供更多的控制权,而降价则不会。在eco中你会看到这样的东西:

<div class="main">
 <% if (@something > 2): %>
  <div class="slide">
   ( slide content )
  </div>
<% end %> 
  <div class="examples">
     ( examples content )
  </div>
 <% if (@somethingElse > 2): %>
  <div class="remarks">
   ( remarks content )
  </div>
<% end %> 
  ...
</div>

听起来怎么样?

答案 1 :(得分:0)

CoffeeKup还提供类似javascript风格的html结构