class Sevennet::Element
Internal wrapper class to provide convenient method to access Nokogiri element value.
Public Class Methods
Return the text value of an element.
# File lib/sevennet/api.rb, line 231 def get(element, path='.') return unless element result = element.at_xpath(path) result = result.inner_html if result result end
Return an array of values based on the given path.
# File lib/sevennet/api.rb, line 245 def get_array(element, path='.') return unless element result = element/path if (result.is_a? Nokogiri::XML::NodeSet) || (result.is_a? Array) result.collect { |item| self.get(item) } else [self.get(result)] end end
Return child element text values of the given path.
# File lib/sevennet/api.rb, line 257 def get_hash(element, path='.') return unless element result = element.at_xpath(path) if result hash = {} result = result.children result.each do |item| hash[item.name] = item.inner_html end hash end end
Return an unescaped text value of an element.
# File lib/sevennet/api.rb, line 239 def get_unescaped(element, path='.') result = self.get(element, path) CGI.unescape(result) if result end
Pass Nokogiri::XML::Element object
# File lib/sevennet/api.rb, line 273 def initialize(element) @element = element end
Public Instance Methods
Returns a Nokogiri::XML::NodeSet of elements matching the given path. Example: element/“author”.
# File lib/sevennet/api.rb, line 283 def /(path) elements = @element/path return nil if elements.size == 0 elements end
# File lib/sevennet/api.rb, line 322 def attributes return unless self.elem self.elem.attributes end
Returns Nokogiri::XML::Element object
# File lib/sevennet/api.rb, line 278 def elem @element end
Get the text value of the given path, leave empty to retrieve current element value.
# File lib/sevennet/api.rb, line 303 def get(path='.') Element.get(@element, path) end
Get the array values of the given path.
# File lib/sevennet/api.rb, line 313 def get_array(path='.') Element.get_array(@element, path) end
Similar with search_and_convert but always return first element if more than one elements found
# File lib/sevennet/api.rb, line 297 def get_element(path) elements = get_elements(path) elements[0] if elements end
Return an array of Sevennet::Element
matching the given path
# File lib/sevennet/api.rb, line 290 def get_elements(path) elements = self./(path) return unless elements elements = elements.map{|element| Element.new(element)} end
Get the children element text values in hash format with the element names as the hash keys.
# File lib/sevennet/api.rb, line 318 def get_hash(path='.') Element.get_hash(@element, path) end
Get the unescaped HTML text of the given path.
# File lib/sevennet/api.rb, line 308 def get_unescaped(path='.') Element.get_unescaped(@element, path) end
# File lib/sevennet/api.rb, line 327 def to_s elem.to_s if elem end