summaryrefslogtreecommitdiff
path: root/lib/rexml/comment.rb
blob: 42a040c4565a1ed0f837f0363cc8ff2a3ab21bdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
require "rexml/child"

module REXML
  ##
  # Represents an XML comment; that is, text between \<!-- ... -->
  class Comment < Child
    include Comparable
    START = "<!--"
    STOP = "-->"

    # The content text

    attr_accessor :string

    ##
    # Constructor.  The first argument can be one of three types:
    # @param first If String, the contents of this comment are set to the
    # argument.  If Comment, the argument is duplicated.  If
    # Source, the argument is scanned for a comment.
    # @param second If the first argument is a Source, this argument
    # should be nil, not supplied, or a Parent to be set as the parent
    # of this object
    def initialize( first, second = nil )
      #puts "IN COMMENT CONSTRUCTOR; SECOND IS #{second.type}"
      super(second)
      if first.kind_of? String
        @string = first
      elsif first.kind_of? Comment
        @string = first.string
      end
    end

    def clone
      Comment.new self
    end

    # == DEPRECATED
    # See REXML::Formatters
    #
    # output::
    #    Where to write the string
    # indent::
    #    An integer.    If -1, no indenting will be used; otherwise, the
    #    indentation will be this number of spaces, and children will be
    #    indented an additional amount.
    # transitive::
    #    Ignored by this class. The contents of comments are never modified.
    # ie_hack::
    #    Needed for conformity to the child API, but not used by this class.
    def write( output, indent=-1, transitive=false, ie_hack=false )
      Kernel.warn("Comment.write is deprecated.  See REXML::Formatters")
      indent( output, indent )
      output << START
      output << @string
      output << STOP
    end

    alias :to_s :string

    ##
    # Compares this Comment to another; the contents of the comment are used
    # in the comparison.
    def <=>(other)
      other.to_s <=> @string
    end

    ##
    # Compares this Comment to another; the contents of the comment are used
    # in the comparison.
    def ==( other )
      other.kind_of? Comment and
      (other <=> self) == 0
    end

    def node_type
      :comment
    end
  end
end
#vim:ts=2 sw=2 noexpandtab: