class Oddb2xml::StammXML
Constants
- V3_NAME_REG
Attributes
basename[R]
components[RW]
filename[R]
hash[R]
keys[R]
sub_key_names[R]
version[R]
Public Class Methods
get_component_key_name(component_name)
click to toggle source
# File lib/oddb2xml/compare.rb, line 28 def self.get_component_key_name(component_name) return "LIMNAMEBAG" if /LIMITATION/i.match?(component_name) return "PRODNO" if /PRODUCT/i.match?(component_name) return "GTIN" if /ITEM/i.match?(component_name) raise "Cannot determine keyname for component #{component_name}" end
new(filename, components = ["ITEMS"])
click to toggle source
# File lib/oddb2xml/compare.rb, line 15 def initialize(filename, components = ["ITEMS"]) raise "File #{filename} must exist" unless File.exist?(filename) @filename = filename @basename = File.basename(filename) @version = V3_NAME_REG.match(filename) ? 3 : 5 @components = components if @version == 5 @hash = load_file(@filename) else raise "Unsupported version #{@version}" end end
Public Instance Methods
get_field_from_v5_product(item, field_name)
click to toggle source
# File lib/oddb2xml/compare.rb, line 39 def get_field_from_v5_product(item, field_name) get_item("PRODUCTS", item["PRODNO"].first.to_i)[field_name] end
get_item(component_name, id)
click to toggle source
# File lib/oddb2xml/compare.rb, line 51 def get_item(component_name, id) keyname = StammXML.get_component_key_name(component_name) get_items(component_name).find { |item| item[keyname].first.to_i == id } end
get_items(component_name)
click to toggle source
# File lib/oddb2xml/compare.rb, line 43 def get_items(component_name) if @version == 3 @hash[component_name] else @hash[component_name].first.values.first end end
get_limitation_from_v5(item)
click to toggle source
# File lib/oddb2xml/compare.rb, line 35 def get_limitation_from_v5(item) get_item("PRODUCTS", item["PRODNO"].first.to_i)["LIMNAMEBAG"] ? ["true"] : nil end
load_file(name)
click to toggle source
# File lib/oddb2xml/compare.rb, line 56 def load_file(name) Oddb2xml.log_timestamp "Reading #{name} #{(File.size(name) / 1024 / 1024).to_i} MB. This may take some time" XmlSimple.xml_in(IO.read(name)) end