Class: Digger::Model
- Inherits:
-
Object
- Object
- Digger::Model
- Defined in:
- lib/digger/model.rb
Constant Summary collapse
- @@digger_config =
{ 'pattern' => {}, 'index' => {} }
Class Method Summary collapse
-
.index_config ⇒ Object
index page.
- .index_page(pattern, *args) ⇒ Object
- .index_page? ⇒ Boolean
-
.pattern_config ⇒ Object
patterns.
- .validate_includeness(*keys) ⇒ Object
- .validate_presence(*keys) ⇒ Object
Instance Method Summary collapse
- #dig(cocurrence = 1) ⇒ Object
- #dig_url(url, opts = {}) ⇒ Object
- #dig_urls(urls, cocurrence = 1, opts = {}) ⇒ Object
- #match_page(page) ⇒ Object
Class Method Details
.index_config ⇒ Object
index page
34 35 36 |
# File 'lib/digger/model.rb', line 34 def index_config @@digger_config['index'][name] end |
.index_page(pattern, *args) ⇒ Object
38 39 40 |
# File 'lib/digger/model.rb', line 38 def index_page(pattern, *args) @@digger_config['index'][name] = Index.new(pattern, args) end |
.index_page? ⇒ Boolean
42 43 44 |
# File 'lib/digger/model.rb', line 42 def index_page? !index_config.nil? end |
.pattern_config ⇒ Object
patterns
11 12 13 |
# File 'lib/digger/model.rb', line 11 def pattern_config @@digger_config['pattern'][name] ||= {} end |
.validate_includeness(*keys) ⇒ Object
28 29 30 31 |
# 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) ⇒ Object
23 24 25 26 |
# 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 |
Instance Method Details
#dig(cocurrence = 1) ⇒ Object
65 66 67 68 69 70 71 |
# 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 = {}) ⇒ Object
55 56 57 58 59 |
# 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 = {}) ⇒ Object
61 62 63 |
# 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) ⇒ Object
47 48 49 50 51 52 53 |
# 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 |