horsefield 0.4.4 → 0.4.5

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: 72eb85dd308813a1ce44691c3f9317c7b919ec68
4
- data.tar.gz: 6d4cb9ad913266aa0a592b4305366cc62939b518
3
+ metadata.gz: 9d7c5b46ca33faa902ca0b3f2bcb95f1a73b7847
4
+ data.tar.gz: 85d693b67216dfd9f8d892c7d807c7eec44eb756
5
5
  SHA512:
6
- metadata.gz: 42498ab4dda63c224fb6fc52831a28114343d69d2f321ec02cf4a7668308434b4a8350ab811b25500be6d76047062787ba6d3793480ecc0f4a83f60f2a9941b6
7
- data.tar.gz: 72162c772ec6561119751e9d22b6bcacfea590674c442f0b8dc05b2ddde629d8a0e796ab141086333f30ad66e70d2dde60e81f9a6b7979d089630e4f0c2b6634
6
+ metadata.gz: fc0cc13c94212af228dad182f1e824c1b60b84e001fa1b08f7a870c5d572ff3ed76058fd0eb16016d44e7f5f32cc53a4a5f8c1ac658520d971bc721e06441e5a
7
+ data.tar.gz: 531ff538e0989e95baa6081f3e9ff5dc87bcd63638b5b1ebecdb4aadc44bc34a20806dcf029cc535976eac76effb881714b751801a2eeaac6bbf464d1e056c6d
@@ -2,8 +2,10 @@ module Horsefield
2
2
  module Diggable
3
3
  def many(name, selector, lookup = :optional, &block)
4
4
  docs = search(selector)
5
+
5
6
  raise MissingSelectorError if lookup == :required && docs.empty?
6
7
  return fields if lookup == :presence && docs.empty?
8
+
7
9
  nodes = docs.map do |doc|
8
10
  doc.instance_eval(&processor(&block))
9
11
  end
@@ -13,8 +15,10 @@ module Horsefield
13
15
 
14
16
  def one(name, selector = nil, lookup = :optional, &block)
15
17
  doc = selector ? at(selector) : self
18
+
16
19
  raise MissingSelectorError if lookup == :required && !doc
17
20
  return fields if lookup == :presence && !doc
21
+
18
22
  fields.merge!(Hash[[[name, doc && doc.instance_eval(&processor(&block))]]])
19
23
  end
20
24
 
@@ -4,6 +4,13 @@ require 'nokogiri'
4
4
 
5
5
  module Horsefield
6
6
  module Scraper
7
+ def self.scrape(html_or_url, &block)
8
+ Class.new {
9
+ include Horsefield::Scraper
10
+ instance_eval(&block)
11
+ }.new(html_or_url).scrape
12
+ end
13
+
7
14
  def self.included(base)
8
15
  base.extend(ClassMethods)
9
16
  end
@@ -1,3 +1,3 @@
1
1
  module Horsefield
2
- VERSION = "0.4.4"
2
+ VERSION = "0.4.5"
3
3
  end
@@ -55,7 +55,6 @@ class TestScraper < Minitest::Test
55
55
 
56
56
  def test_that_it_scrapes
57
57
  recipe = RecipeScraper.new(@html).scrape
58
- p recipe
59
58
 
60
59
  assert_equal 'Traditional Welsh cawl', recipe[:title]
61
60
  end
@@ -68,4 +67,12 @@ class TestScraper < Minitest::Test
68
67
  def test_that_it_raises_with_missing_required_field
69
68
  assert_raises(Horsefield::MissingSelectorError) { RecipeScraperWithRequiredField.new(@html).scrape }
70
69
  end
70
+
71
+ def test_standalone_scraper
72
+ recipe = Horsefield::Scraper.scrape(@html) do
73
+ one :title, '.hide_from_screen h1'
74
+ end
75
+
76
+ assert_equal 'Traditional Welsh cawl', recipe[:title]
77
+ end
71
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: horsefield
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Strömberg