Sam Ruby has been doing a bang-up job fixing the bugs in REXML. Who knows when these improvements will trickle down to vendor distributions of Ruby. In the meantime, let's bundle the latest version of REXML with Instiki. We check the version number of the bundled REXML against that of the System REXML, and use whichever is later.
80 lines
2 KiB
Ruby
80 lines
2 KiB
Ruby
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:
|