向Middleman代理生成的页面添加语法突出显示

时间:2015-05-22 17:06:17

标签: html ruby-on-rails syntax-highlighting middleman

我的Middleman博客上有很多页面是通过proxy生成的。页面的数据位于data/目录的子目录中,代理调用如下:

data.projects.each do |slug, project|
  proxy "/projects/#{slug}.html", "templates/project.html", :locals => { :project => project }, :ignore => true
end

作为其中一个data页面的示例:

title: Metadata
image: projects/metadata.png
github: https://github.com/smargh/metadata
tags:
  - python
description: A Python module for searching your local files using metadata queries.
readme: |
  Lorem ipsum dolor sit amet, *consectetur* adipiscing elit. Sed tristique ut quam non fermentum. In a sodales mi.
  Ut non **ullamcorper** ante, sit amet sagittis diam. Ut turpis orci, malesuada a lacus eu, fringilla faucibus felis.
  Lorem ipsum dolor sit amet, consectetur [adipiscing]() elit. Aliquam nec est at nibh mattis mattis eget sit amet leo.
  Cras tristique vestibulum nisi. Fusce iaculis venenatis metus, vitae luctus nunc blandit eget.
  Integer et nunc sed augue varius varius eu et elit. Suspendisse eu nisl venenatis, vehicula mi eu, rhoncus mauris.
  Integer magna diam, sodales a volutpat vel, cursus posuere nisi.

生成页面时,我使用简单的helper方法将readme中的Markdown文本转换为HTML:

helpers do
  def markdownify(content)
    Tilt['markdown'].new { content }.render
  end
end

因此,在project.html.erb文件中,我在某一点上有这一行:

<div id="description"><%= markdownify project['readme'] %></div>

这很好用,但是在生成这些页面时我没有使用我的语法高亮(而不是&#34;通常&#34;生成的页面,它完美地工作)。 Middleman使用Rouge进行语法突出显示。

我的假设是代理生成的页面的数据管道是从不调用:syntax代码的。

我的问题是如何让我的文本在语法高亮显示中运行,以便正确呈现生成的HTML?我需要添加另一个辅助方法吗?如果是这样,我是在转换Markdown之前还是之后运行它?我能更简单地实现这个目标吗?任何帮助将不胜感激。

斯蒂芬

0 个答案:

没有答案