Sha256: 26a0551f3b319d6ae85825247f199ab96fef6b6a6b6cb1f68c90a4d81cec9cf8

Contents?: true

Size: 907 Bytes

Versions: 1

Compression:

Stored size: 907 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 ||= []
            result = locate_first(p)
            p.result << result if result
          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

1 entries across 1 versions & 1 rubygems

Version Path
wombat-0.2.3 lib/wombat/parser.rb