# class RDoc::Markup::ToTtOnly

frozen_string_literal: false

Extracts sections of text enclosed in plus, tt or code. Used to discover undocumented parameters.

### Attributes

list_type[R]

Stack of list types

res[R]

Output accumulator

### Public Class Methods

new(markup = nil) click to toggle source

Creates a new tt-only formatter.

Calls superclass method RDoc::Markup::Formatter.new

    # File lib/rdoc/markup/to_tt_only.rb, line 21
    def initialize markup = nil
      super nil, markup

      add_tag :TT, nil, nil
    end

### Public Instance Methods

accept_blank_line(markup_item)
Alias for: do_nothing
accept_block_quote(block_quote) click to toggle source

Adds tts from `block_quote` to the output

    # File lib/rdoc/markup/to_tt_only.rb, line 30
    def accept_block_quote block_quote
      tt_sections block_quote.text
    end

accept_heading(markup_item)
Alias for: do_nothing
accept_list_end(list) click to toggle source

Pops the list type for `list` from list_type

    # File lib/rdoc/markup/to_tt_only.rb, line 37
    def accept_list_end list
      @list_type.pop
    end

accept_list_item_end(markup_item)
Alias for: do_nothing
accept_list_item_start(list_item) click to toggle source

Prepares the visitor for consuming `list_item`

    # File lib/rdoc/markup/to_tt_only.rb, line 51
    def accept_list_item_start list_item
      case @list_type.last
      when :NOTE, :LABEL then
        Array(list_item.label).map do |label|
          tt_sections label
        end.flatten
      end
    end

accept_list_start(list) click to toggle source

Pushes the list type for `list` onto list_type

    # File lib/rdoc/markup/to_tt_only.rb, line 44
    def accept_list_start list
      @list_type << list.type
    end

accept_paragraph(paragraph) click to toggle source

Adds `paragraph` to the output

    # File lib/rdoc/markup/to_tt_only.rb, line 63
    def accept_paragraph paragraph
      tt_sections(paragraph.text)
    end

accept_raw(markup_item)
Alias for: do_nothing
accept_rule(markup_item)
Alias for: do_nothing
accept_verbatim(markup_item)
Alias for: do_nothing
do_nothing(markup_item) click to toggle source

Does nothing to `markup_item` because it doesn't have any user-built content

    # File lib/rdoc/markup/to_tt_only.rb, line 71
    def do_nothing markup_item
    end

Also aliased as: accept_blank_line, accept_heading, accept_list_item_end, accept_raw, accept_rule, accept_verbatim
end_accepting() click to toggle source

Returns an Array of items that were wrapped in plus, tt or code.

    # File lib/rdoc/markup/to_tt_only.rb, line 107
    def end_accepting
      @res.compact
    end

start_accepting() click to toggle source

Prepares the visitor for gathering tt sections

    # File lib/rdoc/markup/to_tt_only.rb, line 114
    def start_accepting
      @res = []

      @list_type = []
    end

tt_sections(text) click to toggle source

Extracts tt sections from `text`

    # File lib/rdoc/markup/to_tt_only.rb, line 84
    def tt_sections text
      flow = @am.flow text.dup

      flow.each do |item|
        case item
        when String then
          @res << item if in_tt?
        when RDoc::Markup::AttrChanger then
          off_tags res, item
          on_tags res, item
        when RDoc::Markup::Special then
          @res << convert_special(item) if in_tt? # TODO can this happen?
        else
          raise "Unknown flow element: #{item.inspect}"
        end
      end

      res
    end