aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rexml/xmldecl.rb
diff options
context:
space:
mode:
authorser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-06-10 01:31:01 +0000
committerser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-06-10 01:31:01 +0000
commitea7a527a2ae7024a5cf2885dee8f7a5c21fedd5d (patch)
treed3e1f95a5acf262a9dd46e9663b7034bb285b406 /lib/rexml/xmldecl.rb
parentca02190d8887ecd852e4e3f18f3a3ea91e9c6f7a (diff)
downloadruby-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.rb72
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