Sha256: c72c0a9b38cf1ccd5c76eed299e6b53d0c5f4b983caaefab83100ab2131c7344
Contents?: true
Size: 1.28 KB
Versions: 2
Compression:
Stored size: 1.28 KB
Contents
module Digger class Model @@digger_config = {'pattern'=>{}, 'index'=>{}} class << self # patterns def pattern_config @@digger_config['pattern'][self.name] ||= {} end Pattern::TYPES.each do |method| define_method method, ->(pairs, &block){ pairs.each_pair do |key, value| pattern_config[key] = Pattern.new(type: method, value: value, block: block) end } end # index page def index_config @@digger_config['index'][self.name] end def index_page(pattern, *args) @@digger_config['index'][self.name] = Index.new(pattern, args) end def index_page? !index_config.nil? end end def match_page(page) result = {} self.class.pattern_config.each_pair do |key, pattern| result[key] = pattern.match_page(page) end result end def dig_url(url) client = Digger::HTTP.new page = client.fetch_page(url) match_page(page) end def dig_urls(urls, cocurrence = 1) Index.batch(urls, cocurrence){|url| dig_url(url) } end def dig(cocurrence = 1) if self.class.index_page? self.class.index_config.process(cocurrence){|url| dig_url(url) } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
digger-0.1.1 | lib/digger/model.rb |
digger-0.1.0 | lib/digger/model.rb |