Подсветка синтаксиса кода в моем приложении Rails 4.0.4 с использованием Redcarpet & Pygments.rb?
Цель
Я пытаюсь представить документацию по уценке с фрагментами кода, и я хотел бы выделить синтаксис, как в 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'
Initializer
Я пробовал это, но мои фрагменты кода не выделяются:
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 ответ
Решение
Как я это исправил:
bash
$ pygmentize -S default -f html > style.css
и добавил этот файл в мою папку CSS.