diff options
author | ser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-10 01:31:01 +0000 |
---|---|---|
committer | ser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-10 01:31:01 +0000 |
commit | ea7a527a2ae7024a5cf2885dee8f7a5c21fedd5d (patch) | |
tree | d3e1f95a5acf262a9dd46e9663b7034bb285b406 /lib/rexml/xmldecl.rb | |
parent | ca02190d8887ecd852e4e3f18f3a3ea91e9c6f7a (diff) | |
download | ruby-ea7a527a2ae7024a5cf2885dee8f7a5c21fedd5d.tar.gz |
Initial revision
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rexml/xmldecl.rb')
-rw-r--r-- | lib/rexml/xmldecl.rb | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/lib/rexml/xmldecl.rb b/lib/rexml/xmldecl.rb new file mode 100644 index 0000000000..6a6cc31a53 --- /dev/null +++ b/lib/rexml/xmldecl.rb @@ -0,0 +1,72 @@ +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 |