blob: a56d0d2d858c52a699fb5fdadb672df503af51d2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
require 'redcarpet'
require 'nokogiri'
require 'rails_guides/markdown/renderer'
module RailsGuides
class Markdown
def initialize(view, layout)
@view = view
@layout = layout
end
def render(body)
@header, _, @body = body.partition(/^\-{40,}$/)
render_header
render_body
end
private
def engine
@engine ||= Redcarpet::Markdown.new(Renderer, {
no_intra_emphasis: true,
fenced_code_blocks: true,
autolink: true,
strikethrough: true,
superscript: true
})
end
def render_header
header_content = engine.render(@header)
@view.content_for(:header_section) { header_content.html_safe }
@view.content_for(:page_title) do
"Ruby on Rails Guides: #{Nokogiri::HTML(header_content).at(:h2).text}".html_safe
end
end
def render_body
@view.render(:layout => @layout, :text => engine.render(@body))
end
end
end
|