horsefield 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93b64a722a015a6650d95d6626fd155b29b869d9
4
- data.tar.gz: 9a34c2c66a48012b971cc936ea9fbdde4617d1f4
3
+ metadata.gz: 0f5b4da37cbaf7e0849d70748e380f7b207c7d1d
4
+ data.tar.gz: 830aa7acdc756a64cedc424f9dd04d49f5734ccb
5
5
  SHA512:
6
- metadata.gz: 9f7aa681e6ccf05561315be597b0f94a02f3d078ed8dffbbe31a5726cafc52d2802deddce0bb0564625e8f3ca0b9979573bf4fee4edd5d7c2611f0bbc9951a27
7
- data.tar.gz: d6cc5adbb6b01ef2a2ee43703e6a3a030ac889c6c2326bb3d80c5fc7140de292f1f99e87ba33089f63ab787e78a3a166f6704151c808d7b8be2327897ace053e
6
+ metadata.gz: c38b39c2a26f39994d1b1f09f013c5a4ef5c41b001e71f28cd7003da8d89a2d23a8267a528e4805cd587a9ed1d713245d857b8fcc5f4aea0a9ea9665441c98b1
7
+ data.tar.gz: e1ce59b3063d0bf4e3db3993d1aec8c11181ce9f544f57584d6355d1e244712e507df12c65bfa52fb9a1d72d210d63764cf2ab61a06efbcaeddfc4af28f21c5c
@@ -21,20 +21,25 @@ module Horsefield
21
21
  end
22
22
 
23
23
  def fields
24
- @fields ||= self.class.lambdas.reduce({}) { |fields, l| fields.merge(l.call(@doc)) }
24
+ @fields ||= self.class.lookups.reduce({}) { |fields, l| fields.merge(l.call(@doc)) }.
25
+ instance_eval(&self.class.postprocessor)
25
26
  end
26
27
 
27
28
  module ClassMethods
28
- def lambdas
29
- @lambdas ||= []
29
+ def lookups
30
+ @lookups ||= []
31
+ end
32
+
33
+ def postprocessor
34
+ @postprocessor || Proc.new { self }
30
35
  end
31
36
 
32
37
  def one(name, selector, lookup = :optional, &block)
33
- self.lambdas << lambda { |doc| doc.one(name, selector, lookup, &block) }
38
+ self.lookups << lambda { |doc| doc.one(name, selector, lookup, &block) }
34
39
  end
35
40
 
36
41
  def many(name, selector, lookup = :optional, &block)
37
- self.lambdas << lambda { |doc| doc.many(name, selector, lookup, &block) }
42
+ self.lookups << lambda { |doc| doc.many(name, selector, lookup, &block) }
38
43
  end
39
44
 
40
45
  def many!(name, selector, &block)
@@ -54,7 +59,11 @@ module Horsefield
54
59
  end
55
60
 
56
61
  def scope(selector, &block)
57
- self.lambdas << lambda { |doc| doc.at(selector).instance_eval(&block) }
62
+ self.lookups << lambda { |doc| doc.at(selector).instance_eval(&block) }
63
+ end
64
+
65
+ def postprocess(&block)
66
+ @postprocessor = block
58
67
  end
59
68
  end
60
69
  end
@@ -1,3 +1,3 @@
1
1
  module Horsefield
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require 'test_helper'
2
+ require 'pry'
2
3
 
3
4
  class RecipeScraper
4
5
  include Horsefield::Scraper
@@ -12,6 +13,11 @@ class RecipeScraper
12
13
  one(:type) { at('span').text }
13
14
  one(:value) { at('span.value').text }
14
15
  end
16
+
17
+ postprocess do |doc|
18
+ doc[:nutritional_value] = doc[:nutritional_value].uniq.compact
19
+ doc
20
+ end
15
21
  end
16
22
 
17
23
  class RecipeScraperWithOptionalField
@@ -41,6 +47,7 @@ class TestScraper < Minitest::Test
41
47
 
42
48
  def test_that_it_scrapes
43
49
  recipe = RecipeScraper.new(@html).scrape
50
+ p recipe
44
51
 
45
52
  assert_equal 'Traditional Welsh cawl', recipe[:title]
46
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: horsefield
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Strömberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-02 00:00:00.000000000 Z
11
+ date: 2015-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri