Class: ONIX::Serializer::Traverser
- Inherits:
-
Object
- Object
- ONIX::Serializer::Traverser
- Defined in:
- lib/onix/serializer.rb
Class Method Summary collapse
- .any_serialize(type, mod, data, val, tag, level) ⇒ Object
- .recursive_serialize(mod, data, subset, parent_tag = nil, level = 0) ⇒ Object
- .serialize(mod, xml, subset, tag = nil) ⇒ Object
- .serialize_subset(mod, data, subset, parent_tag = nil, level = 0) ⇒ Object
Class Method Details
.any_serialize(type, mod, data, val, tag, level) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/onix/serializer.rb', line 34 def self.any_serialize(type, mod, data, val, tag, level) case type when :subset self.serialize_subset(mod, data, val, tag, level) when :datestamp mod.const_get("Primitive").serialize(data, val.code, tag, level) when :text, :integer, :float mod.const_get("Primitive").serialize(data, val, tag, level) when :bool mod.const_get("Primitive").serialize(data, nil, tag, level) if val when :ignore else end end |
.recursive_serialize(mod, data, subset, parent_tag = nil, level = 0) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/onix/serializer.rb', line 49 def self.recursive_serialize(mod, data, subset, parent_tag = nil, level = 0) if subset.respond_to?(:registered_elements) subset.registered_elements.each do |tag, element| next if element.short val = subset.instance_variable_get(element.to_instance) if val if element.is_array? val.each do |subval| self.any_serialize(element.type, mod, data, subval, tag, level) end else self.any_serialize(element.type, mod, data, element.serialize_lambda(val), tag, level) end end end end end |
.serialize(mod, xml, subset, tag = nil) ⇒ Object
10 11 12 |
# File 'lib/onix/serializer.rb', line 10 def self.serialize(mod, xml, subset, tag = nil) ONIX::Serializer::Traverser.serialize_subset(mod, xml, subset, tag) end |
.serialize_subset(mod, data, subset, parent_tag = nil, level = 0) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/onix/serializer.rb', line 14 def self.serialize_subset(mod, data, subset, parent_tag = nil, level = 0) if subset.is_a?(ONIX::Root) ONIX::Serializer::Traverser.recursive_serialize(mod, data, subset, parent_tag, level) else if subset.is_a?(ONIX::ONIXMessage) mod.const_get("Root").serialize(data, subset, "ONIXMessage", level) else if subset.class.included_modules.include?(DateMethods) mod.const_get("Date").serialize(data, subset, parent_tag, level) else if subset.class.included_modules.include?(CodeMethods) mod.const_get("Code").serialize(data, subset, parent_tag, level) else mod.const_get("Subset").serialize(data, subset, parent_tag, level) end end end end end |