horsefield 0.4.4 → 0.4.5

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: 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