ruby--ruby/lib/rexml/xmldecl.rb

73 lines
1.5 KiB
Ruby

require 'rexml/encoding'
require 'rexml/source'
module REXML
# NEEDS DOCUMENTATION
class XMLDecl < Child
include Encoding
DEFAULT_VERSION = "1.0";
DEFAULT_ENCODING = "UTF-8";
DEFAULT_STANDALONE = "no";
START = '<\?xml';
STOP = '\?>';
attr_accessor :version, :standalone
def initialize(version=DEFAULT_VERSION, encoding=nil, standalone=nil)
@encoding_set = !encoding.nil?
if version.kind_of? XMLDecl
super()
@version = version.version
self.encoding = version.encoding
@standalone = version.standalone
else
super()
@version = version
self.encoding = encoding
@standalone = standalone
end
@version = DEFAULT_VERSION if @version.nil?
end
def clone
XMLDecl.new(self)
end
def write writer, indent=-1, transitive=false, ie_hack=false
indent( writer, indent )
writer << START.sub(/\\/u, '')
writer << " #{content}"
writer << STOP.sub(/\\/u, '')
end
def ==( other )
other.kind_of?(XMLDecl) and
other.version == @version and
other.encoding == self.encoding and
other.standalone == @standalone
end
def xmldecl version, encoding, standalone
@version = version
@encoding_set = !encoding.nil?
self.encoding = encoding
@standalone = standalone
end
def node_type
:xmldecl
end
alias :stand_alone? :standalone
private
def content
rv = "version='#@version'"
rv << " encoding='#{encoding}'" if @encoding_set
rv << " standalone='#@standalone'" if @standalone
rv
end
end
end