Class: NWN::Gff::Handler::XML
- Inherits:
-
Object
- Object
- NWN::Gff::Handler::XML
- Defined in:
- lib/nwn/xml_support.rb
Instance Method Summary collapse
- #dump(data, io) ⇒ Object
-
#initialize(fmt) ⇒ XML
constructor
A new instance of XML.
- #load(io) ⇒ Object
Constructor Details
#initialize(fmt) ⇒ XML
Returns a new instance of XML.
150 151 152 |
# File 'lib/nwn/xml_support.rb', line 150 def initialize fmt @format = fmt end |
Instance Method Details
#dump(data, io) ⇒ Object
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/nwn/xml_support.rb', line 175 def dump data, io old_encoding = NWN.setting(:out_encoding, 'UTF-8') NWN.log_debug("Ignoring custom out_encoding for xml output, always UTF-8") if old_encoding != 'UTF-8' doc = XML::Document.new doc.root = case @format when :nxml struct_to_xml(data) when :modpacker nd = XML::Node.new('gff') nd['type'] = [data.data_type].pack("A4") nd['version'] = [data.data_version].pack("A4") nd << struct_to_xml(data) nd else raise ArgumentError, "Unsupported XML format registered: #{@format.inspect}" end t = doc.to_s io.write(t) NWN.setting(:out_encoding, old_encoding) t.size end |
#load(io) ⇒ Object
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/nwn/xml_support.rb', line 154 def load io old_encoding = NWN.setting(:out_encoding, 'UTF-8') NWN.log_debug("Ignoring custom out_encoding for xml output, always UTF-8") if old_encoding != 'UTF-8' doc = XML::Parser.io(io) root = doc.parse.root ret = case @format when :nxml xml_to_struct(root) when :modpacker struct = root.children.select {|x| x.node_type == XML::Node::ELEMENT_NODE && x.name == 'struct' }[0] xml_to_struct(struct, root['version']) else raise ArgumentError, "Unsupported XML format registered: #{@format.inspect}" end NWN.setting(:out_encoding, old_encoding) ret end |