Sha256: 3c43f4ebc242a8fa4f2f5fa77bd532f957b131a343ff1ecf00dab041ddc9ef95

Contents?: true

Size: 1.05 KB

Versions: 5

Compression:

Stored size: 1.05 KB

Contents

require "sax-machine/sax_element_config"
require "sax-machine/sax_collection_config"

module SAXMachine
  class SAXConfig
    def initialize
      @top_level_elements  = []
      @collection_elements = []
    end
    
    def add_top_level_element(name, options)
      @top_level_elements << ElementConfig.new(name, options)
    end
    
    def add_collection_element(name, options)
      @collection_elements << CollectionConfig.new(name, options)
    end
    
    def collection_config(name)
      @collection_elements.detect { |ce| ce.name.to_s == name.to_s }
    end

    def element_config_for_attribute(name, attrs)
      element_configs = @top_level_elements.select do |element_config|
        element_config.name == name &&
        element_config.has_value_and_attrs_match?(attrs)
      end
      element_configs.empty? ? nil : element_configs
    end
  
    def element_config_for_tag(name, attrs)
      @top_level_elements.detect do |element_config|
        element_config.name == name &&
        element_config.attrs_match?(attrs)
      end
    end
    
  end
end

Version data entries

5 entries across 5 versions & 3 rubygems

Version Path
astro-sax-machine-0.0.12.20090419 lib/sax-machine/sax_config.rb
ealdent-sax-machine-0.0.12 lib/sax-machine/sax_config.rb
pauldix-sax-machine-0.0.10 lib/sax-machine/sax_config.rb
pauldix-sax-machine-0.0.11 lib/sax-machine/sax_config.rb
pauldix-sax-machine-0.0.12 lib/sax-machine/sax_config.rb