Public class methods
new
(fmt)
[show source]
# File lib/nwn/xml_support.rb, line 150 def initialize fmt @format = fmt end
Public instance methods
dump
(data, io)
[show source]
# 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)
[show source]
# 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