In Files

  • rdoc/markup/to_markdown.rb

Class/Module Index [+]

Quicksearch

RDoc::Markup::ToMarkdown

Outputs parsed markup as Markdown

Public Class Methods

new(markup = nil) click to toggle source

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
            

Public Instance Methods

accept_list_end(list) click to toggle source

Finishes consumption of list

 
               # File rdoc/markup/to_markdown.rb, line 46
def accept_list_end list
  @res << "\n"

  super
end
            
accept_list_item_end(list_item) click to toggle source

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
            
accept_list_item_start(list_item) click to toggle source

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
            
accept_list_start(list) click to toggle source

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
            
accept_rule(rule) click to toggle source

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
            
accept_verbatim(verbatim) click to toggle source

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
            
gen_url(url, text) click to toggle source

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
            
handle_special_HARD_BREAK(special) click to toggle source

Adds a newline to the output

 
               # File rdoc/markup/to_markdown.rb, line 39
def handle_special_HARD_BREAK special
  "  \n"
end
            
init_tags() click to toggle source

Maps attributes to HTML sequences

 
               # File rdoc/markup/to_markdown.rb, line 30
def init_tags
  add_tag :BOLD, '**', '**'
  add_tag :EM,   '*',  '*'
  add_tag :TT,   '`',  '`'
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 visit Documenting-ruby.org.

blog comments powered by Disqus