class EdifactConverter::Configuration::YAMLConfigurator

Attributes

binary_versions[RW]
default_ns[RW]

Public Class Methods

new() click to toggle source
# File lib/edifact_converter/configuration/yaml_configurator.rb, line 10
def initialize
  load
end

Public Instance Methods

binary?(version) click to toggle source
# File lib/edifact_converter/configuration/yaml_configurator.rb, line 33
def binary?(version)
  binary_versions.include? version
end
edifact_rules(type, segment_group) click to toggle source
# File lib/edifact_converter/configuration/yaml_configurator.rb, line 14
def edifact_rules(type, segment_group)
  edifact_settings[type][segment_group]
end
xml_rules(*args) click to toggle source
# File lib/edifact_converter/configuration/yaml_configurator.rb, line 18
def xml_rules(*args) #Either namespace or type and version
  case args.size
  when 1
    xml_settings[args.first]
  when 2
    rules = xml_settings.find do |namespace, values|
      values.versions && values.versions.include?(args[1])
    end
    rules &&= rules.last
    rules || xml_settings[default_ns] 
  else
    raise RuntimeError "Wrong number of arguments #{args.size}"
  end
end

Private Instance Methods

edifact_settings() click to toggle source
# File lib/edifact_converter/configuration/yaml_configurator.rb, line 73
def edifact_settings
  @edifact_settings ||= Hash.new do |letters, type| 
    letters[type] = Hash.new do |segments, segment| 
      segments[segment] = EdifactRule.new
    end
  end
end
load() click to toggle source
# File lib/edifact_converter/configuration/yaml_configurator.rb, line 64
def load
  load_from_file(
    File.join(
      EdifactConverter.data,
      'configuration.yaml'
    )
  )
end
load_from_file(filename) click to toggle source
# File lib/edifact_converter/configuration/yaml_configurator.rb, line 39
def load_from_file(filename)
  settings = YAML.load_file(filename)
  settings['EDIFACT'].each do |type, segments|
    rules_for_type = edifact_settings[type]
    segments.each do |segment, rules|
      rule = rules_for_type[segment]
      rule.register_hidden rules['hidden']
      rule.register_children rules['children']
    end
  end
  settings['XML'].each do |namespace, values|
    unless namespace == 'default'
      values.values.each do |urls|
        urls.map! do |url|
          url % { gem_data: EdifactConverter.data}
        end
      end
      xml_settings[namespace] = XMLRule.new values
    else
      self.default_ns = values
    end
  end
  self.binary_versions = settings['binary_versions']
end
xml_settings() click to toggle source
# File lib/edifact_converter/configuration/yaml_configurator.rb, line 81
def xml_settings
  @xml_settings ||= Hash.new do |namespaces, namespace|
    if namespace.nil? or namespace.empty?
      namespaces[default_ns]
    end
  end 
end