redcarpetでマークダウン、pygmentsでsyntax highlightを実装する
redcarpetでマークダウンはさくっといけるけど、
syntax highlightをどうしようかなぁーと色々見てたけど、pygmentsでやっちゃうのがよさそうだった。
例によって、railscastが有難い。
・Syntax Highlighting (revised)
coderayでやる方法などもあるので、それはどこかで見て下さい!(Rails Castにあります)
・https://github.com/tmm1/pygments.rb
・https://github.com/tmm1/pygments.rb
マークダウンはここも参考になりました。
・Railsでカスタムmarkdownを実装する
helper作って、そこでよろしくやる感じです。
markdown_helper.rb
module MarkdownHelper class HTMLwithPygments < Redcarpet::Render::HTML def block_code(code, language) sha = Digest::SHA1.hexdigest(code) Rails.cache.fetch ["code", language, sha].join('-') do Pygments.highlight(code, lexer:language) end end end def markdown(text) renderer = HTMLwithPygments.new(hard_wrap: true, filter_html: true) options = { autolink: true, no_intra_emphasis: true, fenced_code_blocks: true, lax_html_blocks: true, strikethrough: true, superscript: true } Redcarpet::Markdown.new(renderer, options).render(text).html_safe end end
pygments.css.erb
<%= Pygments.css %>
あとは/assets/stylesheetsにスタイルを書いて整える感じです!