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