Class: Amazon::Element

Inherits:
Object
  • Object
show all
Defined in:
lib/amazon/awis.rb

Overview

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(element) ⇒ Element

Pass Hpricot::Elements object



167
168
169
# File 'lib/amazon/awis.rb', line 167

def initialize(element)
	    @element = element
end

Class Method Details

.get(element, path = '') ⇒ Object

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



214
215
216
217
218
219
# File 'lib/amazon/awis.rb', line 214

def self.get(element, path='')
  	   return unless element
       result = element.at(path)
       result = result.inner_html if result
       result
end

.get_array(element, path = '') ⇒ Object

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



228
229
230
231
232
233
234
235
236
237
238
239
240
241
# File 'lib/amazon/awis.rb', line 228

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

.get_hash(element, path = '') ⇒ Object

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



244
245
246
247
248
249
250
251
252
253
254
255
256
# File 'lib/amazon/awis.rb', line 244

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

.get_unescaped(element, path = '') ⇒ Object

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



222
223
224
225
# File 'lib/amazon/awis.rb', line 222

def self.get_unescaped(element, path='')
       result = get(element, path)
       CGI::unescapeHTML(result) if result
end

Instance Method Details

#/(path) ⇒ Object

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



177
178
179
180
181
# File 'lib/amazon/awis.rb', line 177

def /(path)
	    elements = @element/path
	    return nil if elements.size == 0
	    elements
end

#elemObject

Returns Hpricot::Elments object



172
173
174
# File 'lib/amazon/awis.rb', line 172

def elem
	    @element
end

#get(path = '') ⇒ Object

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



194
195
196
# File 'lib/amazon/awis.rb', line 194

def get(path='')
	    Element.get(@element, path)
end

#get_array(path = '') ⇒ Object

Get the array values of the given path.



204
205
206
# File 'lib/amazon/awis.rb', line 204

def get_array(path='')
  	   Element.get_array(@element, path)
end

#get_hash(path = '') ⇒ Object

Get the children element text values in hash format with the element names as the hash keys.



209
210
211
# File 'lib/amazon/awis.rb', line 209

def get_hash(path='')
  	   Element.get_hash(@element, path)
end

#get_unescaped(path = '') ⇒ Object

Get the unescaped HTML text of the given path.



199
200
201
# File 'lib/amazon/awis.rb', line 199

def get_unescaped(path='')
	   Element.get_unescaped(@element, path)
end

#search_and_convert(path) ⇒ Object

Find Hpricot::Elements matching the given path, and convert to Amazon::Element. Returns an array Amazon::Elements if more than Hpricot::Elements size is greater than 1.



185
186
187
188
189
190
191
# File 'lib/amazon/awis.rb', line 185

def search_and_convert(path)
	    elements = self./(path)
	    return unless elements
	    elements = elements.map{|element| Element.new(element)}
	    return elements.first if elements.size == 1
	    elements
end

#to_sObject



258
259
260
# File 'lib/amazon/awis.rb', line 258

def to_s
	    elem.to_s if elem
end