File: rexml/comment.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: REXML#3
  class: Comment#6
includes
  Comparable ( Builtin-Module )
inherits from
  Child ( REXML )
has properties
constant: START #8
constant: STOP #9
attribute: string [RW] #13
method: initialize / 2 #23
method: clone #33
method: write / 4 #50
alias: to_s string #58
method: <=> / 1 #63
method: == / 1 #70
method: node_type #75

Class Hierarchy

Object ( Builtin-Module )
Child ( REXML )
  Comment    #6

Code

   1  require "rexml/child"
   2 
   3  module REXML
   4    ##
   5    # Represents an XML comment; that is, text between \<!-- ... -->
   6    class Comment < Child
   7      include Comparable
   8      START = "<!--"
   9      STOP = "-->"
  10 
  11      # The content text
  12 
  13      attr_accessor :string
  14 
  15      ##
  16      # Constructor.  The first argument can be one of three types:
  17      # @param first If String, the contents of this comment are set to the 
  18      # argument.  If Comment, the argument is duplicated.  If
  19      # Source, the argument is scanned for a comment.
  20      # @param second If the first argument is a Source, this argument 
  21      # should be nil, not supplied, or a Parent to be set as the parent 
  22      # of this object
  23      def initialize( first, second = nil )
  24        #puts "IN COMMENT CONSTRUCTOR; SECOND IS #{second.type}"
  25        super(second)
  26        if first.kind_of? String
  27          @string = first
  28        elsif first.kind_of? Comment
  29          @string = first.string
  30        end
  31      end
  32 
  33      def clone
  34        Comment.new self
  35      end
  36 
  37      # == DEPRECATED
  38      # See REXML::Formatters
  39      #
  40      # output::
  41      #  Where to write the string
  42      # indent::
  43      #  An integer.  If -1, no indenting will be used; otherwise, the
  44      #  indentation will be this number of spaces, and children will be
  45      #  indented an additional amount.
  46      # transitive::
  47      #  Ignored by this class. The contents of comments are never modified.
  48      # ie_hack::
  49      #  Needed for conformity to the child API, but not used by this class.
  50      def write( output, indent=-1, transitive=false, ie_hack=false )
  51        Kernel.warn("Comment.write is deprecated.  See REXML::Formatters")
  52        indent( output, indent )
  53        output << START
  54        output << @string
  55        output << STOP
  56      end
  57 
  58      alias :to_s :string
  59 
  60      ##
  61      # Compares this Comment to another; the contents of the comment are used
  62      # in the comparison.
  63      def <=>(other)
  64        other.to_s <=> @string
  65      end
  66 
  67      ##
  68      # Compares this Comment to another; the contents of the comment are used
  69      # in the comparison.
  70      def ==( other )
  71        other.kind_of? Comment and
  72        (other <=> self) == 0
  73      end
  74 
  75      def node_type
  76        :comment
  77      end
  78    end
  79  end
  80  #vim:ts=2 sw=2 noexpandtab: