Class: YahooWebAPI::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/yahoo_web_api/client.rb

Direct Known Subclasses

BlogSearchService, ImageSearchService

Class Method Summary collapse

Class Method Details

.make_response_object(doc) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/yahoo_web_api/client.rb', line 18

def make_response_object(doc)
  obj = Object.new
  klass = (class << obj; self; end)
  doc.elements.each do |elem|
    method_name = elem.name.gsub(/([a-z])([A-Z])/) {
                    $1 + '_' + $2
                  }.downcase
    if elem.elements.empty? 
      respond = elem.inner_text.gsub!(/^\s*/m) {''}
      respond.gsub!(/\s*$/m) {''}
    else
      respond = make_response_object(elem)
    end
    klass.__send__(:define_method, method_name) { respond }
  end
  obj
end

.parse(doc, selector) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/yahoo_web_api/client.rb', line 9

def parse(doc, selector)
  results = []
  xml_doc = Nokogiri::XML(doc)
  xml_doc.css(selector).each do |doc|
    results << make_response_object(doc)
  end
  results
end