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