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
30 31 32 |
# File 'lib/digger/model.rb', line 30 def index_config @@digger_config['index'][self.name] end |
.index_page(pattern, *args) ⇒ Object
34 35 36 |
# File 'lib/digger/model.rb', line 34 def index_page(pattern, *args) @@digger_config['index'][self.name] = Index.new(pattern, args) end |
.index_page? ⇒ Boolean
38 39 40 |
# File 'lib/digger/model.rb', line 38 def index_page? !index_config.nil? end |
.pattern_config ⇒ Object
patterns
8 9 10 |
# File 'lib/digger/model.rb', line 8 def pattern_config @@digger_config['pattern'][self.name] ||= {} end |
.validate_includeness(*keys) ⇒ Object
25 26 27 |
# File 'lib/digger/model.rb', line 25 def validate_includeness(*keys) raise "Pattern keys #{(pattern_config.keys - keys).join(', ')} should not be included" unless pattern_config.keys.all?{|k| keys.include?(k)} end |
.validate_presence(*keys) ⇒ Object
20 21 22 23 |
# File 'lib/digger/model.rb', line 20 def validate_presence(*keys) keys_all = pattern_config.keys raise "Pattern keys #{(keys - keys_all).join(', ')} should be present" unless keys.all?{|k| keys_all.include?(k) } end |
Instance Method Details
#dig(cocurrence = 1) ⇒ Object
61 62 63 64 65 |
# File 'lib/digger/model.rb', line 61 def dig(cocurrence = 1) if self.class.index_page? self.class.index_config.process(cocurrence){|url| dig_url(url) } end end |
#dig_url(url, opts = {}) ⇒ Object
51 52 53 54 55 |
# File 'lib/digger/model.rb', line 51 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
57 58 59 |
# File 'lib/digger/model.rb', line 57 def dig_urls(urls, cocurrence = 1, opts = {}) Index.batch(urls, cocurrence){|url| dig_url(url, opts) } end |
#match_page(page) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/digger/model.rb', line 43 def match_page(page) result = {} self.class.pattern_config.each_pair do |key, pattern| result[key] = pattern.match_page(page) end result end |