Class: XML::Smart::Dom::NamespaceSet
- Inherits:
-
Object
- Object
- XML::Smart::Dom::NamespaceSet
- Includes:
- Enumerable
- Defined in:
- lib/xml/smart_domnamespaceset.rb
Instance Method Summary collapse
- #===(cls) ⇒ Object
- #[](name) ⇒ Object
- #[]=(name, value) ⇒ Object
- #add(name, value) ⇒ Object
- #delete_all! ⇒ Object
- #delete_at(name) ⇒ Object
- #delete_if(&block) ⇒ Object
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
- #has_ns?(a) ⇒ Boolean (also: #include?, #ns?, #member?)
-
#initialize(parent, node) ⇒ NamespaceSet
constructor
A new instance of NamespaceSet.
- #length ⇒ Object
Constructor Details
#initialize(parent, node) ⇒ NamespaceSet
Returns a new instance of NamespaceSet.
8 9 10 11 |
# File 'lib/xml/smart_domnamespaceset.rb', line 8 def initialize(parent,node) @parent = parent @node = node end |
Instance Method Details
#===(cls) ⇒ Object
13 |
# File 'lib/xml/smart_domnamespaceset.rb', line 13 def ===(cls); self.is_a? cls; end |
#[](name) ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/xml/smart_domnamespaceset.rb', line 20 def [](name) if name.nil? || name.respond_to?(:to_s) name = name.to_s unless name.nil? name = nil if name =~ /^xmlns\d*$/ nd = @node.namespace_definitions.find{|n| n.prefix == name} (name.respond_to?(:to_s) || name.nil?) && nd ? Namespace.new(nd) : nil; end end |
#[]=(name, value) ⇒ Object
28 29 30 31 |
# File 'lib/xml/smart_domnamespaceset.rb', line 28 def []=(name,value) name = nil if name == 'xmlns' self.add(name,value) end |
#add(name, value) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/xml/smart_domnamespaceset.rb', line 33 def add(name,value) if (name.respond_to?(:to_s) || name.nil?) && value.respond_to?(:to_s) nnod = Nokogiri::XML::Node.new(@node.name,@node.document) nnew = Element.new(nnod) nold = Element.new(@node) nold.attributes.each do |attr| nnew.attributes[attr.qname.name] = attr.value end ns = nnod.add_namespace_definition(name.nil? ? nil : name.to_s,value.to_s) @node.namespace_definitions.each do |nst| nnod.add_namespace_definition(nst.prefix,nst.href) end nnew.add(nold.children) nold.replace_by(nnew) @node = nnod @parent.instance_variable_set(:@node,@node) @node.document.custom_namespace_prefixes_update @node.document.ns_update Namespace.new(ns) end end |
#delete_all! ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/xml/smart_domnamespaceset.rb', line 57 def delete_all! nnod = Nokogiri::XML::Node.new(@node.name,@node.document) nnew = Element.new(nnod) nold = Element.new(@node) nold.attributes.each do |attr| nnew.attributes[attr.qname.name] = attr.value end nnew.add(nold.children) nold.replace_by(nnew) @node = nnod @parent.instance_variable_set(:@node,@node) @node.document.custom_namespace_prefixes_update @node.document.ns_update nil end |
#delete_at(name) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/xml/smart_domnamespaceset.rb', line 79 def delete_at(name) if (name.respond_to?(:to_s) || name.nil?) return false unless @node.namespace_definitions.one?{|e| e.prefix == name} nnod = Nokogiri::XML::Node.new(@node.name,@node.document) nnew = Element.new(nnod) nold = Element.new(@node) nold.attributes.each do |attr| nnew.attributes[attr.qname.name] = attr.value end @node.namespace_definitions.each do |ns| nnod.add_namespace_definition(ns.prefix,ns.href) unless ns.prefix == name end nnew.add(nold.children) nold.replace_by(nnew) @node = nnod @parent.instance_variable_set(:@node,@node) @node.document.custom_namespace_prefixes_update @node.document.ns_update true else false end end |
#delete_if(&block) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/xml/smart_domnamespaceset.rb', line 104 def delete_if(&block) return self if block.nil? nnod = Nokogiri::XML::Node.new(@node.name,@node.document) nnew = Element.new(nnod) nold = Element.new(@node) nold.attributes.each do |attr| nnew.attributes[attr.qname.name] = attr.value end @node.namespace_definitions.each do |ns| nnod.add_namespace_definition(ns.prefix,ns.href) unless block.call(Dom::smart_helper(ns)) end nnew.add(nold.children) nold.replace_by(nnew) @node = nnod @parent.instance_variable_set(:@node,@node) @node.document.custom_namespace_prefixes_update @node.document.ns_update self end |
#each(&block) ⇒ Object
73 74 75 76 77 |
# File 'lib/xml/smart_domnamespaceset.rb', line 73 def each(&block) @node.namespace_definitions.each do |ns| block.call Namespace.new(ns) end end |
#empty? ⇒ Boolean
56 |
# File 'lib/xml/smart_domnamespaceset.rb', line 56 def empty?; @node.namespace_definitions.empty?; end |
#has_ns?(a) ⇒ Boolean Also known as: include?, ns?, member?
15 |
# File 'lib/xml/smart_domnamespaceset.rb', line 15 def has_ns?(a); @node.namespace_definitions.one?{|e| e.href == a || e.prefix == a}; end |
#length ⇒ Object
55 |
# File 'lib/xml/smart_domnamespaceset.rb', line 55 def length; @node.namespace_definitions.length; end |