lib/happymapper.rb in nokogiri-happymapper-0.3.5 vs lib/happymapper.rb in nokogiri-happymapper-0.3.6

- old
+ new

@@ -10,10 +10,12 @@ DEFAULT_NS = "happymapper" def self.included(base) base.instance_variable_set("@attributes", {}) base.instance_variable_set("@elements", {}) + base.instance_variable_set("@registered_namespaces", {}) + base.extend ClassMethods end module ClassMethods def attribute(name, type, options={}) @@ -25,10 +27,14 @@ def attributes @attributes[to_s] || [] end + def register_namespace(namespace, ns) + @registered_namespaces.merge!({namespace => ns}) + end + def element(name, type, options={}) element = Element.new(name, type, options) @elements[to_s] ||= [] @elements[to_s] << element attr_accessor element.method_name.intern @@ -91,9 +97,10 @@ # This is the entry point into the parsing pipeline, so the default # namespace prefix registered here will propagate down namespaces = options[:namespaces] namespaces ||= {} namespaces = namespaces.merge(xml.collect_namespaces) if xml.respond_to?(:collect_namespaces) + namespaces = namespaces.merge(@registered_namespaces) if namespaces.has_key?("xmlns") namespace ||= DEFAULT_NS namespaces[namespace] = namespaces.delete("xmlns") elsif namespaces.has_key?(DEFAULT_NS)