使用Redcarpet&amp ;;在我的Rails 4.0.4应用程序中突出显示代码语法Pygments.rb?

时间:2014-05-25 01:01:51

标签: ruby-on-rails pygments redcarpet pygmentize

目标

我正在尝试使用代码片段呈现markdown文档,并且我想强调Github或BitBucket上的语法。

我的环境

  • Rails 4.0.4
  • Ruby 2.1.1

在我的gemfile

gem 'haml-rails'
gem 'redcarpet' # markdown
gem 'rdiscount'
gem 'pygments.rb', '~> 0.5.4'

初始化程序

我试过这个,但我的代码片段没有突出显示:

module Haml::Filters

  remove_filter("Markdown") #remove the existing Markdown filter

  module Markdown

    include Haml::Filters::Base

    class HTMLwithPygments < Redcarpet::Render::HTML
      def block_code(code, language)
        Pygments.highlight(code, lexer: language)
      end
    end


    def render(text)
      #Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(prettify: true), fenced_code_blocks: true).render(text)
      Redcarpet::Markdown.new(HTMLwithPygments, fenced_code_blocks: true).render(text)
    end

  end
end

用这个简单的YAML测试

 hello:
    world: "hey"

生成的代码看起来正确(?)

<div class="highlight">
   <pre>  
    <span class="l-Scalar-Plain">hello</span><span class="p-Indicator">:</span>
    <span class="l-Scalar-Plain">world</span><span class="p-Indicator">:</span> 
    <span class="s">"hey"</span>
    </pre>
</div>

但它是纯灰色,没有突出显示

我是否需要为这些类安装任何CSS文件才能正确呈现?

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我如何解决它:

bash
$ pygmentize -S default -f html > style.css 

并将此文件添加到我的 css 文件夹中。