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)