class Digger::Model
Public Class Methods
index_config()
click to toggle source
index page
# File lib/digger/model.rb, line 34 def index_config @@digger_config['index'][name] end
index_page(pattern, *args)
click to toggle source
# File lib/digger/model.rb, line 38 def index_page(pattern, *args) @@digger_config['index'][name] = Index.new(pattern, args) end
index_page?()
click to toggle source
# File lib/digger/model.rb, line 42 def index_page? !index_config.nil? end
pattern_config()
click to toggle source
patterns
# File lib/digger/model.rb, line 11 def pattern_config @@digger_config['pattern'][name] ||= {} end
validate_includeness(*keys)
click to toggle source
# File lib/digger/model.rb, line 28 def validate_includeness(*keys) is_all = pattern_config.keys.all? { |k| keys.include?(k) } raise "Pattern keys #{(pattern_config.keys - keys).join(', ')} should not be included" if is_all end
validate_presence(*keys)
click to toggle source
# File lib/digger/model.rb, line 23 def validate_presence(*keys) is_all = pattern_config.keys.all? { |k| keys.include?(k) } raise "Pattern keys #{(keys - keys_all).join(', ')} should be present" unless is_all end
Public Instance Methods
dig(cocurrence = 1)
click to toggle source
# File lib/digger/model.rb, line 65 def dig(cocurrence = 1) if self.class.index_page? self.class.index_config.process(cocurrence) do |url| dig_url(url) end end end
dig_url(url, opts = {})
click to toggle source
# File lib/digger/model.rb, line 55 def dig_url(url, opts = {}) client = Digger::HTTP.new(opts) page = client.fetch_page(url) match_page(page) end
dig_urls(urls, cocurrence = 1, opts = {})
click to toggle source
# File lib/digger/model.rb, line 61 def dig_urls(urls, cocurrence = 1, opts = {}) Index.batch(urls, cocurrence) { |url| dig_url(url, opts) } end
match_page(page)
click to toggle source
# File lib/digger/model.rb, line 47 def match_page(page) result = {} self.class.pattern_config.each_pair do |key, pattern| result[key] = pattern.match_page(page) end result end