Sha256: 0ff77ab6bf41cbba833d75f64af469cc96217bc76b4b43c06518a08f6f479399

Contents?: true

Size: 869 Bytes

Versions: 2

Compression:

Stored size: 869 Bytes

Contents

 #coding: utf-8
require 'wombat/property_locator'
require 'mechanize'

module Wombat
  module Parser
    include PropertyLocator
    attr_accessor :mechanize, :context

    def initialize
      @mechanize = Mechanize.new
    end

    def parse metadata
      self.context = @mechanize.get("#{metadata[:base_url]}#{metadata[:list_page]}").parser
      original_context = self.context

      metadata.iterators.each do |it|
        select_nodes(it.selector).each do |n|
          self.context = n
          it.all_properties.each do |p|
            p.result ||= []
            p.result << locate_first(p)
          end
        end
      end

      self.context = original_context

      metadata.all_properties.each do |p|
        result = locate_first p
        p.result = p.callback ? p.callback.call(result) : result
      end

      metadata.flatten
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wombat-0.2.2 lib/wombat/parser.rb
wombat-0.2.0 lib/wombat/parser.rb