Outputs parsed markup as Markdown
Creates a new formatter that will output Markdown format text
# File rdoc/markup/to_markdown.rb, line 11
def initialize markup = nil
super
@headings[1] = ['# ', '']
@headings[2] = ['## ', '']
@headings[3] = ['### ', '']
@headings[4] = ['#### ', '']
@headings[5] = ['##### ', '']
@headings[6] = ['###### ', '']
add_special_RDOCLINK
add_special_TIDYLINK
@hard_break = " \n"
end
Finishes consumption of list
# File rdoc/markup/to_markdown.rb, line 46
def accept_list_end list
@res << "\n"
super
end
Finishes consumption of list_item
# File rdoc/markup/to_markdown.rb, line 55
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 74
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 99
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 116
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 125
def accept_verbatim verbatim
indent = ' ' * (@indent + 4)
verbatim.parts.each do |part|
@res << indent unless part == "\n"
@res << part
end
@res << "\n" unless @res =~ /\n\z/
end
Creates a Markdown-style URL from url with text.
# File rdoc/markup/to_markdown.rb, line 139
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 148
def handle_rdoc_link url
case url
when /\Ardoc-ref:/ then
$'
when /\Ardoc-label:footmark-(\d+)/ then
"[^#{$1}]:"
when /\Ardoc-label:foottext-(\d+)/ then
"[^#{$1}]"
when /\Ardoc-label:label-/ then
gen_url url, $'
when /\Ardoc-[a-z]+:/ then
$'
end
end
Adds a newline to the output
# File rdoc/markup/to_markdown.rb, line 39
def handle_special_HARD_BREAK special
" \n"
end
Converts the rdoc-…: links into a Markdown.style links.
# File rdoc/markup/to_markdown.rb, line 184
def handle_special_RDOCLINK special
handle_rdoc_link special.text
end
Converts the RDoc markup tidylink into a Markdown.style link.
# File rdoc/markup/to_markdown.rb, line 166
def handle_special_TIDYLINK special
text = special.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
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.