/
markups.rb
53 lines (43 loc) · 1.41 KB
/
markups.rb
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
43
44
45
46
47
48
49
50
51
52
53
markup(:markdown, /md|mkdn?|mdown|markdown/) do |content|
Markdown.new(content).to_html
end
markup(:redcloth, /textile/) do |content|
RedCloth.new(content).to_html
end
markup('github/markup/rdoc', /rdoc/) do |content|
GitHub::Markup::RDoc.new(content).to_html
end
markup('org-ruby', /org/) do |content|
Orgmode::Parser.new(content).to_html
end
command(:rest2html, /rest|rst/)
command('asciidoc -s --backend=xhtml11 -o - -', /asciidoc/)
# pod2html is nice enough to generate a full-on HTML document for us,
# so we return the favor by ripping out the good parts.
#
# Any block passed to `command` will be handed the command's STDOUT for
# post processing.
command("/usr/bin/env perl -MPod::Simple::HTML -e Pod::Simple::HTML::go", /pod/) do |rendered|
if rendered =~ /<!-- start doc -->\s*(.+)\s*<!-- end doc -->/mi
$1
end
end
#
# man pages!
#
command('groff -t -e -mandoc -Thtml -P -l -P -r -', /\d/) do |rendered, original|
# Try to grab the name and section.
if original =~ /^.TH (\S+).*?(\d).*$/
# Clear out the gunk, "MUSTACHE" => MUSTACHE
name, section = $1, $2
name.gsub!(/"|'/, '')
# make MUSTACHE(1)
title = "#{name}(#{section})"
# Classy divs.
left = "<div float='left'>#{title}</div>"
right = "<div float='right'>#{title}</div>"
end
if rendered =~ /<body>\s*(.+)\s*<\/body>/mi
$1.gsub(/<hr>/, '').gsub(/(<h1.+?h1>)/, "<div>#{left}\\1#{right}</div>")
end
end