Class Amazon::Element
In: lib/amazon/ecs.rb
Parent: Object

Internal wrapper class to provide convenient method to access Hpricot element value.

Methods

Public Class methods

Similar to get, except an element object must be passed-in.

[Source]

# File lib/amazon/ecs.rb, line 334
    def self.get(element, path='')
      return unless element
      result = element.at(path)
      result = result.inner_html if result
      result
    end

Similar to get_array, except an element object must be passed-in.

[Source]

# File lib/amazon/ecs.rb, line 348
    def self.get_array(element, path='')
      return unless element
      
      result = element/path
      if (result.is_a? Hpricot::Elements) || (result.is_a? Array)
        parsed_result = []
        result.each {|item|
          parsed_result << Element.get(item)
        }
        parsed_result
      else
        [Element.get(result)]
      end
    end

Similar to get_hash, except an element object must be passed-in.

[Source]

# File lib/amazon/ecs.rb, line 364
    def self.get_hash(element, path='')
      return unless element
    
      result = element.at(path)
      if result
        hash = {}
        result = result.children
        result.each do |item|
          hash[item.name.to_sym] = item.inner_html
        end 
        hash
      end
    end

Similar to get_unescaped, except an element object must be passed-in.

[Source]

# File lib/amazon/ecs.rb, line 342
    def self.get_unescaped(element, path='')
      result = get(element, path)
      CGI::unescapeHTML(result) if result
    end

Pass Hpricot::Elements object

[Source]

# File lib/amazon/ecs.rb, line 269
    def initialize(element)
      @element = element
    end

Public Instance methods

Find Hpricot::Elements matching the given path. Example: element/"author".

[Source]

# File lib/amazon/ecs.rb, line 279
    def /(path)
      elements = @element/path
      return nil if elements.size == 0
      elements
    end

[Source]

# File lib/amazon/ecs.rb, line 328
    def attributes
      return unless self.elem
      self.elem.attributes
    end

Returns Hpricot::Elments object

[Source]

# File lib/amazon/ecs.rb, line 274
    def elem
      @element
    end

Get the text value of the given path, leave empty to retrieve current element value.

[Source]

# File lib/amazon/ecs.rb, line 309
    def get(path='')
      Element.get(@element, path)
    end

Get the array values of the given path.

[Source]

# File lib/amazon/ecs.rb, line 319
    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

[Source]

# File lib/amazon/ecs.rb, line 303
    def get_element(path)
      elements = get_elements(path)
      elements[0] if elements
    end

Return an array of Amazon::Element matching the given path

[Source]

# File lib/amazon/ecs.rb, line 296
    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.

[Source]

# File lib/amazon/ecs.rb, line 324
    def get_hash(path='')
      Element.get_hash(@element, path)
    end

Get the unescaped HTML text of the given path.

[Source]

# File lib/amazon/ecs.rb, line 314
    def get_unescaped(path='')
      Element.get_unescaped(@element, path)
    end

Return an array of Amazon::Element matching the given path, or Amazon::Element if there is only one element found.

DEPRECATED: Please use get_elements and get_element instead.

[Source]

# File lib/amazon/ecs.rb, line 289
    def search_and_convert(path)
      elements = self.get_elements(path)
      return elements.first if elements and elements.size == 1
      elements
    end

[Source]

# File lib/amazon/ecs.rb, line 378
    def to_s
      elem.to_s if elem
    end

[Validate]