Support for the Ruby 2.4 series has ended. See here for reference.
Outputs RDoc markup as paragraphs with inline markup only.
Creates a new ToHtmlSnippet formatter that will cut off the input on the next word boundary after the given number of characters or paragraphs of text have been encountered.
 
               # File rdoc/markup/to_html_snippet.rb, line 37
def initialize options, characters = 100, paragraphs = 3, markup = nil
  super options, markup
  @character_limit = characters
  @paragraph_limit = paragraphs
  @characters = 0
  @mask       = 0
  @paragraphs = 0
  @markup.add_special RDoc::CrossReference::CROSSREF_REGEXP, :CROSSREF
end
             
            Adds heading to the output as a paragraph
 
               # File rdoc/markup/to_html_snippet.rb, line 53
def accept_heading heading
  @res << "<p>#{to_html heading.text}\n"
  add_paragraph
end
             
            Finishes consumption of list_item
 
               # File rdoc/markup/to_html_snippet.rb, line 82
def accept_list_item_end list_item
end
             
            Prepares the visitor for consuming list_item
 
               # File rdoc/markup/to_html_snippet.rb, line 88
def accept_list_item_start list_item
  @res << list_item_start(list_item, @list.last)
end
             
            Prepares the visitor for consuming list
 
               # File rdoc/markup/to_html_snippet.rb, line 95
def accept_list_start list
  @list << list.type
  @res << html_list_name(list.type, true)
  @in_list_entry.push ''
end
             
             
               # File rdoc/markup/to_html_snippet.rb, line 69
def accept_paragraph paragraph
  para = @in_list_entry.last || "<p>"
  text = paragraph.text @hard_break
  @res << "#{para}#{wrap to_html text}\n"
  add_paragraph
end
             
            Adds verbatim to the output
 
               # File rdoc/markup/to_html_snippet.rb, line 104
def accept_verbatim verbatim
  throw :done if @characters >= @character_limit
  input = verbatim.text.rstrip
  text = truncate input
  text << ' ...' unless text == input
  super RDoc::Markup::Verbatim.new text
  add_paragraph
end
             
            Throws :done when paragraph_limit paragraphs have been encountered
 
               # File rdoc/markup/to_html_snippet.rb, line 195
def add_paragraph
  @paragraphs += 1
  throw :done if @paragraphs >= @paragraph_limit
end
             
            Marks up content
 
               # File rdoc/markup/to_html_snippet.rb, line 204
def convert content
  catch :done do
    return super
  end
  end_accepting
end
             
            Converts flow items flow
 
               # File rdoc/markup/to_html_snippet.rb, line 215
def convert_flow flow
  throw :done if @characters >= @character_limit
  res = []
  @mask = 0
  flow.each do |item|
    case item
    when RDoc::Markup::AttrChanger then
      off_tags res, item
      on_tags  res, item
    when String then
      text = convert_string item
      res << truncate(text)
    when RDoc::Markup::Special then
      text = convert_special item
      res << truncate(text)
    else
      raise "Unknown flow element: #{item.inspect}"
    end
    if @characters >= @character_limit then
      off_tags res, RDoc::Markup::AttrChanger.new(0, @mask)
      break
    end
  end
  res << ' ...' if @characters >= @character_limit
  res.join
end
             
            Returns just the text of link, url is only used to determine the link type.
 
               # File rdoc/markup/to_html_snippet.rb, line 168
def gen_url url, text
  if url =~ /^rdoc-label:([^:]*)(?::(.*))?/ then
    type = "link"
  elsif url =~ /([A-Za-z]+):(.*)/ then
    type = $1
  else
    type = "http"
  end
  if (type == "http" or type == "https" or type == "link") and
     url =~ /\.(gif|png|jpg|jpeg|bmp)$/ then
    ''
  else
    text.sub(%r%^#{type}:/*%, '')
  end
end
             
            Removes escaping from the cross-references in special
 
               # File rdoc/markup/to_html_snippet.rb, line 128
def handle_special_CROSSREF special
  special.text.sub(/\A\\/, '')
end
             
            special is a 
 
               # File rdoc/markup/to_html_snippet.rb, line 135
def handle_special_HARD_BREAK special
  @characters -= 4
  '<br>'
end
             
            In snippets, there are no lists
 
               # File rdoc/markup/to_html_snippet.rb, line 188
def html_list_name list_type, open_tag
  ''
end
             
            Lists are paragraphs, but notes and labels have a separator
 
               # File rdoc/markup/to_html_snippet.rb, line 143
def list_item_start list_item, list_type
  throw :done if @characters >= @character_limit
  case list_type
  when :BULLET, :LALPHA, :NUMBER, :UALPHA then
    "<p>"
  when :LABEL, :NOTE then
    labels = Array(list_item.label).map do |label|
      to_html label
    end.join ', '
    labels << " — " unless labels.empty?
    start = "<p>#{labels}"
    @characters += 1 # try to include the label
    start
  else
    raise RDoc::Error, "Invalid list type: #{list_type.inspect}"
  end
end
             
            Prepares the visitor for HTML snippet generation
 
               # File rdoc/markup/to_html_snippet.rb, line 119
def start_accepting
  super
  @characters = 0
end
             
            Truncates text at the end of the first word after the character_limit.
 
               # File rdoc/markup/to_html_snippet.rb, line 270
def truncate text
  length = text.length
  characters = @characters
  @characters += length
  return text if @characters < @character_limit
  remaining = @character_limit - characters
  text =~ /\A(.{#{remaining},}?)(\s|$)/m # TODO word-break instead of \s?
  $1
end