Sha256: cb1c56167ebcf588ca30f541ce0519178da6c79dfcfb8bf9d3a9ea0db91d45a8

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

class Quickbooks::DtdParser < Quickbooks::QbxmlParser
  include Quickbooks::Parser::ClassBuilder

private

  def process_leaf_node(xml_obj, parent_class)
   attr_name, qb_type = parse_leaf_node_data(xml_obj)
    if parent_class
      log.debug [parent_class, attr_name, qb_type].inspect
      add_casting_attribute(parent_class, attr_name, qb_type)
    end
  end

  def process_non_leaf_node(xml_obj, parent_class)
    klass = build_qbxml_class(xml_obj)
    attr_name = underscore(xml_obj)
    if parent_class
      add_strict_attribute(parent_class, attr_name, klass)
    end
    klass
  end

  #TODO: stub
  def process_comment_node(xml_obj, parent_class)
    parent_class
  end

  # helpers

  def build_qbxml_class(xml_obj)
    obj_name = xml_obj.name
    unless schema_namespace.const_defined?(obj_name)
      klass = Class.new(Quickbooks::Parser::QbxmlBase)
      schema_namespace.const_set(obj_name, klass) 
      klass.xml_attributes = parse_xml_attributes(xml_obj)
      add_xml_template(klass, xml_obj.to_xml)
    else
      klass = schema_namespace.const_get(obj_name)
    end
    klass
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
quickbooks_api-0.1.7 lib/quickbooks/dtd_parser.rb
quickbooks_api-0.1.6 lib/quickbooks/dtd_parser.rb