redcarpet
用于将内容转化成markdown形式进行显示,它提供许多配置,具体操作方式如下:
1.首先是在gemfile中加入redcarpet.
2.安装redcarpet
3.以前可直接在要显示的view中加入如下代码:
1
| <%= Redcarpet::Markdown.new(render, :extension => {})%>
|
现在在辅助方法中写如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
| def markdown(text)
require 'redcarpet'
render = Redcarpet::Render::HTML
options = {
autolink: true,
filter_html: true,
fenced_code_blocks: true,
no_intra_emphasis: true
}
markdown = Redcarpet::Markdown.new(render.new(hard_wrap: true), options)
markdown.render(text).html_safe
end
|
4.在view中加入显示markdown的代码:
1
| <%= raw(markdown.render(@post.content).html_safe) %>
|
pygments
可以和redcarpet很好的结合,用于语法高亮设置。
具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| def markdown(text)
require 'redcarpet'
render = HTMLwithPygments
options = {
autolink: true,
filter_html: true,
prettify: true,
fenced_code_blocks: true,
no_intra_emphasis: true
}
markdown = Redcarpet::Markdown.new(render.new(hard_wrap: true), options)
markdown.render(text).html_safe
end
class HTMLwithPygments < Redcarpet::Render::HTML
require 'pygments'
def block_code(code, language)
Pygments.highlight(code, :lexer => language, :options => {:linenos => true})
end
end
|
注意:
- 辅助方法要引入文件redcarpet和pygments。
- hard_wrap必须Redcarpet::Render::HTML实例化时进行配置。
- 必须有fenced_code_blocks才能将代码块放入代码框中。
参考:
github上的redcarpet
github上的pygments
视频参考