mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
ea7a527a2a
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
79 lines
2.1 KiB
Ruby
79 lines
2.1 KiB
Ruby
require "rexml/child"
|
|
|
|
module REXML
|
|
##
|
|
# Represents an XML comment; that is, text between <!-- ... -->
|
|
class Comment < Child
|
|
include Comparable
|
|
START = "<!--"
|
|
STOP = "-->"
|
|
|
|
attr_accessor :string # The content text
|
|
|
|
##
|
|
# 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
|
|
|
|
# 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::
|
|
# Who knows?
|
|
# ie_hack::
|
|
# Internet Explorer is the worst piece of crap to have ever been
|
|
# written, with the possible exception of Windows itself. Since IE is
|
|
# unable to parse proper XML, we have to provide a hack to generate XML
|
|
# that IE's limited abilities can handle. This hack inserts a space
|
|
# before the /> on empty tags.
|
|
#
|
|
def write( output, indent=-1, transitive=false, ie_hack=false )
|
|
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:
|