Sha256: 452db429b128c7e1f66624f3af262f37d9f6a86bd9a39d77cdda9d78709aea0d

Contents?: true

Size: 1.29 KB

Versions: 8

Compression:

Stored size: 1.29 KB

Contents

module Quickbooks::Config

  API_ROOT = File.join(File.dirname(__FILE__), '..', '..').freeze
  XML_SCHEMA_PATH = File.join(API_ROOT, 'xml_schema').freeze   
  RUBY_SCHEMA_PATH = File.join(API_ROOT, 'ruby_schema').freeze 

  SCHEMA_MAP = {
    :qb    => {:dtd_file => "qbxmlops70.xml", 
               :namespace => Quickbooks::QBXML, 
               :container_class => 'QBXML'
              }.freeze,
    :qbpos => {:dtd_file => "qbposxmlops30.xml", 
               :namespace => Quickbooks::QBPOSXML, 
               :container_class => 'QBPOSXML'
              }.freeze,
  }.freeze

  def self.included(klass)
    klass.extend ClassMethods
  end

private

  def container_class
    schema_namespace.const_get(SCHEMA_MAP[schema_type][:container_class])
  end

  def dtd_file
    "#{XML_SCHEMA_PATH}/#{SCHEMA_MAP[schema_type][:dtd_file]}" 
  end

  def schema_namespace
    SCHEMA_MAP[schema_type][:namespace]
  end

# introspection
  
  def cached_classes
    schema_namespace.constants.map { |const| schema_namespace.const_get(const) }
  end

module ClassMethods

  def check_schema_type!(schema_type)
    unless SCHEMA_MAP.include?(schema_type)
      raise(ArgumentError, "valid schema type required: #{valid_schema_types.inspect}") 
    end
  end

private

  def valid_schema_types
    SCHEMA_MAP.keys
  end

end


end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
quickbooks_api-0.1.7 lib/quickbooks/config.rb
quickbooks_api-0.1.6 lib/quickbooks/config.rb
quickbooks_api-0.1.5 lib/quickbooks/config.rb
quickbooks_api-0.1.4 lib/quickbooks/config.rb
quickbooks_api-0.1.3 lib/quickbooks/config.rb
quickbooks_api-0.1.2 lib/quickbooks/config.rb
quickbooks_api-0.1.1 lib/quickbooks/config.rb
quickbooks_api-0.1.0 lib/quickbooks/config.rb