Class: XML::Smart::Dom::Element
- Inherits:
-
Object
- Object
- XML::Smart::Dom::Element
- Defined in:
- lib/xml/smart_domelement.rb
Instance Method Summary collapse
- #==(other) ⇒ Object
- #===(cls) ⇒ Object
- #add(*attrs) ⇒ Object
- #add_after(*attrs) ⇒ Object
- #add_before(*attrs) ⇒ Object
- #append(*attrs) ⇒ Object
- #attributes ⇒ Object
- #children ⇒ Object
- #children? ⇒ Boolean
- #dump ⇒ Object
- #element_only? ⇒ Boolean
- #empty? ⇒ Boolean
- #find(xpath) ⇒ Object
-
#initialize(element) ⇒ Element
constructor
A new instance of Element.
- #mixed? ⇒ Boolean
- #namespace ⇒ Object
- #namespace=(n) ⇒ Object
- #namespace? ⇒ Boolean
- #namespaces ⇒ Object
- #parent ⇒ Object
- #parent? ⇒ Boolean
- #path ⇒ Object
- #prepend(*attrs) ⇒ Object
- #qname ⇒ Object
- #replace_by(n) ⇒ Object
- #text ⇒ Object
- #text=(t) ⇒ Object
- #text_only? ⇒ Boolean
- #to_doc ⇒ Object
- #to_f ⇒ Object
- #to_i ⇒ Object
- #to_s ⇒ Object
- #unique_id ⇒ Object
- #xinclude!(basedir = nil) ⇒ Object
Constructor Details
#initialize(element) ⇒ Element
Returns a new instance of Element.
6 7 8 |
# File 'lib/xml/smart_domelement.rb', line 6 def initialize(element) @element = element end |
Instance Method Details
#==(other) ⇒ Object
208 209 210 211 212 |
# File 'lib/xml/smart_domelement.rb', line 208 def ==(other) return false unless other return false unless other.respond_to?(:unique_id) unique_id == other.unique_id end |
#===(cls) ⇒ Object
10 |
# File 'lib/xml/smart_domelement.rb', line 10 def ===(cls); self.is_a? cls; end |
#add(*attrs) ⇒ Object
102 103 104 105 106 107 108 109 110 |
# File 'lib/xml/smart_domelement.rb', line 102 def add(*attrs) tmp, update = add_helper(attrs) res = Dom::smart_helper(@element.add_child tmp) if update @element.document.custom_namespace_prefixes_update @element.document.ns_update end res end |
#add_after(*attrs) ⇒ Object
127 128 129 130 131 132 133 134 135 |
# File 'lib/xml/smart_domelement.rb', line 127 def add_after(*attrs) tmp, update = add_helper(attrs) res = Dom::smart_helper(@element.add_next_sibling tmp) if update @element.document.custom_namespace_prefixes_update @element.document.ns_update end res end |
#add_before(*attrs) ⇒ Object
118 119 120 121 122 123 124 125 126 |
# File 'lib/xml/smart_domelement.rb', line 118 def add_before(*attrs) tmp, update = add_helper(attrs) res = Dom::smart_helper(@element.add_previous_sibling tmp) if update @element.document.custom_namespace_prefixes_update @element.document.ns_update end res end |
#append(*attrs) ⇒ Object
111 112 113 |
# File 'lib/xml/smart_domelement.rb', line 111 def append(*attrs) add(*attrs) end |
#attributes ⇒ Object
183 |
# File 'lib/xml/smart_domelement.rb', line 183 def attributes; AttributeSet.new @element; end |
#children ⇒ Object
188 |
# File 'lib/xml/smart_domelement.rb', line 188 def children; find('*|text()'); end |
#children? ⇒ Boolean
189 |
# File 'lib/xml/smart_domelement.rb', line 189 def children?; find('*|text()').length > 0 end |
#dump ⇒ Object
137 |
# File 'lib/xml/smart_domelement.rb', line 137 def dump; @element.to_s; end |
#element_only? ⇒ Boolean
202 203 204 |
# File 'lib/xml/smart_domelement.rb', line 202 def element_only?; @element.xpath_fast('*').length > 0 && @element.xpath_fast("string(text())") == ''; end |
#empty? ⇒ Boolean
195 |
# File 'lib/xml/smart_domelement.rb', line 195 def empty?; @element.blank?; end |
#find(xpath) ⇒ Object
12 13 14 |
# File 'lib/xml/smart_domelement.rb', line 12 def find(xpath) Dom::smart_helper(@element.xpath_fast(xpath)) end |
#mixed? ⇒ Boolean
196 197 198 |
# File 'lib/xml/smart_domelement.rb', line 196 def mixed?; @element.xpath_fast('*').length > 0 && @element.xpath_fast("string(text())") != ''; end |
#namespace ⇒ Object
143 |
# File 'lib/xml/smart_domelement.rb', line 143 def namespace; namespace? ? Namespace.new(@element.namespace) : nil; end |
#namespace=(n) ⇒ Object
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/xml/smart_domelement.rb', line 144 def namespace=(n) n = case n when Namespace n.prefix when String n else return end tmp = @element.document.custom_namespace_prefixes[n] || @element.document.user_custom_namespace_prefixes[n] unless tmp.nil? @element.namespace_scopes.each do |nss| @element.namespace = nss if nss.href == tmp end end end |
#namespace? ⇒ Boolean
142 |
# File 'lib/xml/smart_domelement.rb', line 142 def namespace?; !@element.namespace.nil?; end |
#namespaces ⇒ Object
160 |
# File 'lib/xml/smart_domelement.rb', line 160 def namespaces; NamespaceSet.new(self,@element); end |
#parent ⇒ Object
190 191 192 |
# File 'lib/xml/smart_domelement.rb', line 190 def parent Dom::smart_helper(@element.parent) end |
#parent? ⇒ Boolean
193 |
# File 'lib/xml/smart_domelement.rb', line 193 def parent?; !@element.parent.nil?; end |
#path ⇒ Object
206 |
# File 'lib/xml/smart_domelement.rb', line 206 def path; @element.path; end |
#prepend(*attrs) ⇒ Object
114 115 116 117 |
# File 'lib/xml/smart_domelement.rb', line 114 def prepend(*attrs) c = children c.empty? ? add(*attrs) : c.first.add_before(*attrs) end |
#qname ⇒ Object
182 |
# File 'lib/xml/smart_domelement.rb', line 182 def qname; QName.new @element; end |
#replace_by(n) ⇒ Object
173 174 175 176 177 178 179 180 |
# File 'lib/xml/smart_domelement.rb', line 173 def replace_by(n) case n when Element; Element.new @element.replace(n.instance_variable_get(:@element)) when NodeSet; NodeSet.new @element.replace(n.instance_variable_get(:@nodeset)) else nil end end |
#text ⇒ Object
185 |
# File 'lib/xml/smart_domelement.rb', line 185 def text; @element.xpath_fast("string(text())"); end |
#text=(t) ⇒ Object
186 |
# File 'lib/xml/smart_domelement.rb', line 186 def text=(t); @element.content = t.to_s if t.respond_to? :to_s; end |
#text_only? ⇒ Boolean
199 200 201 |
# File 'lib/xml/smart_domelement.rb', line 199 def text_only?; @element.xpath_fast('*').length == 0 && @element.xpath_fast("string(text())") != ''; end |
#to_doc ⇒ Object
215 216 217 218 219 |
# File 'lib/xml/smart_domelement.rb', line 215 def to_doc doc = Nokogiri::XML::Document.new doc.root = @element dom = Dom.new(doc) end |
#to_f ⇒ Object
140 |
# File 'lib/xml/smart_domelement.rb', line 140 def to_f; @element.content.to_f; end |
#to_i ⇒ Object
139 |
# File 'lib/xml/smart_domelement.rb', line 139 def to_i; @element.content.to_i; end |
#to_s ⇒ Object
138 |
# File 'lib/xml/smart_domelement.rb', line 138 def to_s; @element.content; end |
#unique_id ⇒ Object
213 |
# File 'lib/xml/smart_domelement.rb', line 213 def unique_id; @element.pointer_id; end |
#xinclude!(basedir = nil) ⇒ Object
162 163 164 165 166 167 168 169 170 171 |
# File 'lib/xml/smart_domelement.rb', line 162 def xinclude!(basedir=nil) if basedir.is_a?(String) && File.directory?(basedir) Dir.chdir(basedir) { @element.do_xinclude Nokogiri::XML::ParseOptions::STRICT } else @element.do_xinclude Nokogiri::XML::ParseOptions::STRICT end @element.document.custom_namespace_prefixes_update @element.document.ns_update true end |