Class: NWN::Gff::Handler::XML

Inherits:
Object
  • Object
show all
Defined in:
lib/nwn/xml_support.rb

Instance Method Summary collapse

Constructor Details

#initialize(fmt) ⇒ XML

Returns a new instance of XML.



157
158
159
# File 'lib/nwn/xml_support.rb', line 157

def initialize fmt
  @format = fmt
end

Instance Method Details

#dump(data, io) ⇒ Object



177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
# File 'lib/nwn/xml_support.rb', line 177

def dump data, io
  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)

  t.size
end

#load(io) ⇒ Object



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/nwn/xml_support.rb', line 161

def load io
  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

  ret
end