#coding: utf-8 require 'wombat/metadata' require 'wombat/property' require 'wombat/parser' require 'active_support' require 'date' module Wombat module Crawler include Parser extend ActiveSupport::Concern def crawl(&block) if block @metadata_dup = self.class.send(:metadata).clone instance_eval do def method_missing method, *args, &block @metadata_dup.send method, *args, &block end end self.instance_eval &block parse @metadata_dup else parse self.class.send(:metadata) end end module ClassMethods def method_missing method, *args, &block metadata.send method, *args, &block end def for_each selector, &block metadata.for_each(selector).instance_eval(&block) if block end def follow_links selector end def to_ary end private def metadata @metadata ||= Metadata.new end end end end