PHP 8.2.31
Preview: formatter.rb Size: 3.30 KB
//proc/thread-self/root/opt/alt/ruby19/lib64/ruby/1.9.1/rdoc/markup/formatter.rb

require 'rdoc/markup'

##
# Base class for RDoc markup formatters
#
# Formatters use a visitor pattern to convert content into output.
#
# If you'd like to write your own Formatter use
# RDoc::Markup::FormatterTestCase.  If you're writing a text-output formatter
# use RDoc::Markup::TextFormatterTestCase which provides extra test cases.

class RDoc::Markup::Formatter

  ##
  # Tag for inline markup containing a +bit+ for the bitmask and the +on+ and
  # +off+ triggers.

  InlineTag = Struct.new(:bit, :on, :off)

  ##
  # Creates a new Formatter

  def initialize markup = nil
    @markup = markup || RDoc::Markup.new
    @am     = @markup.attribute_manager

    @attr_tags = []

    @in_tt = 0
    @tt_bit = RDoc::Markup::Attribute.bitmap_for :TT
  end

  ##
  # Adds +document+ to the output

  def accept_document document
    document.parts.each do |item|
      item.accept self
    end
  end

  ##
  # Add a new set of tags for an attribute. We allow separate start and end
  # tags for flexibility

  def add_tag(name, start, stop)
    attr = RDoc::Markup::Attribute.bitmap_for name
    @attr_tags << InlineTag.new(attr, start, stop)
  end

  ##
  # Allows +tag+ to be decorated with additional information.

  def annotate(tag)
    tag
  end

  ##
  # Marks up +content+

  def convert(content)
    @markup.convert content, self
  end

  ##
  # Converts flow items +flow+

  def convert_flow(flow)
    res = []

    flow.each do |item|
      case item
      when String then
        res << convert_string(item)
      when RDoc::Markup::AttrChanger then
        off_tags res, item
        on_tags res, item
      when RDoc::Markup::Special then
        res << convert_special(item)
      else
        raise "Unknown flow element: #{item.inspect}"
      end
    end

    res.join
  end

  ##
  # Converts added specials.  See RDoc::Markup#add_special

  def convert_special special
    return special.text if in_tt?

    handled = false

    RDoc::Markup::Attribute.each_name_of special.type do |name|
      method_name = "handle_special_#{name}"

      if respond_to? method_name then
        special.text = send method_name, special
        handled = true
      end
    end

    raise "Unhandled special: #{special}" unless handled

    special.text
  end

  ##
  # Converts a string to be fancier if desired

  def convert_string string
    string
  end

  ##
  # Are we currently inside tt tags?

  def in_tt?
    @in_tt > 0
  end

  ##
  # Turns on tags for +item+ on +res+

  def on_tags res, item
    attr_mask = item.turn_on
    return if attr_mask.zero?

    @attr_tags.each do |tag|
      if attr_mask & tag.bit != 0 then
        res << annotate(tag.on)
        @in_tt += 1 if tt? tag
      end
    end
  end

  ##
  # Turns off tags for +item+ on +res+

  def off_tags res, item
    attr_mask = item.turn_off
    return if attr_mask.zero?

    @attr_tags.reverse_each do |tag|
      if attr_mask & tag.bit != 0 then
        @in_tt -= 1 if tt? tag
        res << annotate(tag.off)
      end
    end
  end

  ##
  # Is +tag+ a tt tag?

  def tt? tag
    tag.bit == @tt_bit
  end

end

class RDoc::Markup
  autoload :ToAnsi,         'rdoc/markup/to_ansi'
  autoload :ToBs,           'rdoc/markup/to_bs'
  autoload :ToHtml,         'rdoc/markup/to_html'
  autoload :ToHtmlCrossref, 'rdoc/markup/to_html_crossref'
  autoload :ToRdoc,         'rdoc/markup/to_rdoc'
end

Directory Contents

Dirs: 0 × Files: 24

Name Size Perms Modified Actions
7.80 KB lrw-r--r-- 2011-02-02 00:32:30
Edit Download
361 B lrw-r--r-- 2010-12-20 03:22:49
Edit Download
2.42 KB lrw-r--r-- 2011-08-05 21:21:55
Edit Download
3.30 KB lrw-r--r-- 2011-08-24 00:02:17
Edit Download
15.71 KB lrw-r--r-- 2011-06-16 04:59:24
Edit Download
314 B lrw-r--r-- 2011-02-02 00:32:30
Edit Download
534 B lrw-r--r-- 2011-06-16 04:59:24
Edit Download
2.76 KB lrw-r--r-- 2011-06-28 02:28:25
Edit Download
1.08 KB lrw-r--r-- 2010-12-20 03:22:49
Edit Download
1.26 KB lrw-r--r-- 2010-12-20 03:22:49
Edit Download
191 B lrw-r--r-- 2010-12-20 03:22:49
Edit Download
12.65 KB lrw-r--r-- 2011-08-05 21:21:55
Edit Download
6.33 KB lrw-r--r-- 2011-08-05 21:21:55
Edit Download
965 B lrw-r--r-- 2010-12-20 03:22:49
Edit Download
285 B lrw-r--r-- 2010-12-20 03:22:49
Edit Download
2.53 KB lrw-r--r-- 2011-05-15 11:55:52
Edit Download
1.79 KB lrw-r--r-- 2011-06-28 02:28:25
Edit Download
1.70 KB lrw-r--r-- 2011-06-16 04:59:24
Edit Download
6.66 KB lrw-r--r-- 2011-08-24 00:02:17
Edit Download
3.34 KB lrw-r--r-- 2011-08-05 21:21:55
Edit Download
5.58 KB lrw-r--r-- 2011-06-16 04:59:24
Edit Download
1.16 KB lrw-r--r-- 2011-06-16 04:59:24
Edit Download
2.11 KB lrw-r--r-- 2011-06-16 04:59:24
Edit Download
634 B lrw-r--r-- 2010-12-20 03:22:49
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).