Imported File#ftype spec from rubyspecs.
[rbx.git] / lib / rexml / comment.rb
blob2b9b4b89c9d8076aa0d0db0a7066c5093a377e2f
1 require "rexml/child"
3 module REXML
4         ##
5         # Represents an XML comment; that is, text between \<!-- ... -->
6         class Comment < Child
7                 include Comparable
8                 START = "<!--"
9                 STOP = "-->"
11                 # The content text
13                 attr_accessor :string
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
33                 def clone
34                         Comment.new self
35                 end
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
58                 alias :to_s :string
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
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
75     def node_type
76       :comment
77     end
78         end
79 end
80 #vim:ts=2 sw=2 noexpandtab: