horsefield 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
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