lib/sax-machine/sax_config.rb in astro-sax-machine-0.0.16 vs lib/sax-machine/sax_config.rb in astro-sax-machine-0.0.17
- old
+ new
@@ -4,47 +4,47 @@
module SAXMachine
class SAXConfig
attr_reader :top_level_elements, :collection_elements
def initialize
- @top_level_elements = []
- @collection_elements = []
+ @top_level_elements = {}
+ @collection_elements = {}
end
def add_top_level_element(name, options)
- @top_level_elements << ElementConfig.new(name, options)
+ @top_level_elements[name.to_s] ||= []
+ @top_level_elements[name.to_s] << ElementConfig.new(name, options)
end
def add_collection_element(name, options)
- @collection_elements << CollectionConfig.new(name, options)
+ @collection_elements[name.to_s] ||= []
+ @collection_elements[name.to_s] << CollectionConfig.new(name, options)
end
def collection_config(name, nsstack)
prefix, name = name.split(':', 2)
prefix, name = nil, prefix unless name # No prefix
namespace = nsstack[prefix]
- @collection_elements.detect { |ce|
+ (@collection_elements[name.to_s] || []).detect { |ce|
ce.name.to_s == name.to_s &&
ce.xmlns_match?(namespace)
}
end
def element_configs_for_attribute(name, attrs)
name = name.split(':', 2).last
- @top_level_elements.select do |element_config|
- element_config.name == name &&
+ (@top_level_elements[name.to_s] || []).select do |element_config|
element_config.has_value_and_attrs_match?(attrs)
end
end
def element_config_for_tag(name, attrs, nsstack)
prefix, name = name.split(':', 2)
prefix, name = nil, prefix unless name # No prefix
namespace = nsstack[prefix]
- @top_level_elements.detect do |element_config|
- element_config.name == name &&
+ (@top_level_elements[name.to_s] || []).detect do |element_config|
element_config.xmlns_match?(namespace) &&
element_config.attrs_match?(attrs)
end
end