Outputs parsed markup as Markdown
Creates a new formatter that will output Markdown format text
# File rdoc/markup/to_markdown.rb, line 12
def initialize markup = nil
super
@headings[1] = ['# ', '']
@headings[2] = ['## ', '']
@headings[3] = ['### ', '']
@headings[4] = ['#### ', '']
@headings[5] = ['##### ', '']
@headings[6] = ['###### ', '']
add_regexp_handling_RDOCLINK
add_regexp_handling_TIDYLINK
@hard_break = " \n"
end
Finishes consumption of list
# File rdoc/markup/to_markdown.rb, line 47
def accept_list_end list
@res << "\n"
super
end
Finishes consumption of list_item
# File rdoc/markup/to_markdown.rb, line 56
def accept_list_item_end list_item
width = case @list_type.last
when :BULLET then
4
when :NOTE, :LABEL then
use_prefix
4
else
@list_index[-1] = @list_index.last.succ
4
end
@indent -= width
end
Prepares the visitor for consuming list_item
# File rdoc/markup/to_markdown.rb, line 75
def accept_list_item_start list_item
type = @list_type.last
case type
when :NOTE, :LABEL then
bullets = Array(list_item.label).map do |label|
attributes(label).strip
end.join "\n"
bullets << "\n:"
@prefix = ' ' * @indent
@indent += 4
@prefix << bullets + (' ' * (@indent - 1))
else
bullet = type == :BULLET ? '*' : @list_index.last.to_s + '.'
@prefix = (' ' * @indent) + bullet.ljust(4)
@indent += 4
end
end
Prepares the visitor for consuming list
# File rdoc/markup/to_markdown.rb, line 100
def accept_list_start list
case list.type
when :BULLET, :LABEL, :NOTE then
@list_index << nil
when :LALPHA, :NUMBER, :UALPHA then
@list_index << 1
else
raise RDoc::Error, "invalid list type #{list.type}"
end
@list_width << 4
@list_type << list.type
end
Adds rule to the output
# File rdoc/markup/to_markdown.rb, line 117
def accept_rule rule
use_prefix or @res << ' ' * @indent
@res << '-' * 3
@res << "\n"
end
Outputs verbatim indented 4 columns
# File rdoc/markup/to_markdown.rb, line 126
def accept_verbatim verbatim
indent = ' ' * (@indent + 4)
verbatim.parts.each do |part|
@res << indent unless part == "\n"
@res << part
end
@res << "\n"
end
Creates a Markdown-style URL from url with text.
# File rdoc/markup/to_markdown.rb, line 140
def gen_url url, text
scheme, url, = parse_url url
"[#{text.sub(%r{^#{scheme}:/*}i, '')}](#{url})"
end
Handles rdoc- type links for footnotes.
# File rdoc/markup/to_markdown.rb, line 149
def handle_rdoc_link url
case url
when /^rdoc-ref:/ then
$'
when /^rdoc-label:footmark-(\d+)/ then
"[^#{$1}]:"
when /^rdoc-label:foottext-(\d+)/ then
"[^#{$1}]"
when /^rdoc-label:label-/ then
gen_url url, $'
when /^rdoc-image:/ then
""
when /^rdoc-[a-z]+:/ then
$'
end
end
Adds a newline to the output
# File rdoc/markup/to_markdown.rb, line 40
def handle_regexp_HARD_BREAK target
" \n"
end
Converts the rdoc-…: links into a Markdown.style links.
# File rdoc/markup/to_markdown.rb, line 187
def handle_regexp_RDOCLINK target
handle_rdoc_link target.text
end
Converts the RDoc markup tidylink into a Markdown.style link.
# File rdoc/markup/to_markdown.rb, line 169
def handle_regexp_TIDYLINK target
text = target.text
return text unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/
label = $1
url = $2
if url =~ /^rdoc-label:foot/ then
handle_rdoc_link url
else
gen_url url, label
end
end