metainspector 5.6.0 → 5.7.0

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
- SHA1:
3
- metadata.gz: 55d08720cc3d7c19b8bb04540300d7a5abbedeb7
4
- data.tar.gz: 005f6f7bc26e9d1b98ae850b1a232a4c60720489
2
+ SHA256:
3
+ metadata.gz: 860350c6b4704259715f0a0eea047893134d774928b0bf78c9633f5afec480ff
4
+ data.tar.gz: d0abcb709893e63be252886723f8f202137dae3d02b506173a59b3368dcda7f7
5
5
  SHA512:
6
- metadata.gz: e6175e3fa5a08dc5382ba0e49710548a5371ab1d6868001c8bbc6beb44c4f0aea419550adab8f1abcf35dce714ad3f69abcd9ea1bb66cf2019bf1a9a633c49ec
7
- data.tar.gz: 3d9216f15d36a5bb33b5dbe65b72de3a76e02b040b787d245c25eb12ee04ee7c1f8ad685b93ab34db6a078f68c619579eb1f6ba92131872c225f30b07be0bfb3
6
+ metadata.gz: ab74dde15e1864f4c747be953a512278578ab231bea4637e1fb752234766c5b895b47405bd8572c06fd421cd16170e69c4331fb3462a7177ea4c6c521748e1f9
7
+ data.tar.gz: fde5cf878c7320d49c82aa430b2fc422044a07168e4b6e6cce53d3b33655b28f6ee811cc535ffca06be46c19403b83e7c453aa942895b9e77c675468fa3fea12
@@ -1,6 +1,6 @@
1
1
  script: "bundle exec rspec -b"
2
2
  rvm:
3
- - 2.2.9
4
3
  - 2.3.6
5
4
  - 2.4.3
6
5
  - 2.5.0
6
+ - 2.6.4
@@ -1,48 +1,59 @@
1
1
  # MetaInpector Changelog
2
2
 
3
+ ## [Changes in 5.6](https://github.com/jaimeiniesta/metainspector/compare/v5.5.0...v5.6.0)
4
+
5
+ * New feature: `:encoding` option for force encoding of a parsed document.
6
+ * Improvement: make `best_title` and `best_author` work by order of preference, rather than length.
7
+
8
+ ## [Changes in 5.5](https://github.com/jaimeiniesta/metainspector/compare/v5.4.0...v5.5.0)
9
+
10
+ * New feature: adds `author`, `best_author`.
11
+ * Bugfix: adds presence validation for empty string on meta tag image values.
12
+ * Improves spider and links checker examples.
13
+ * Uses WebMock instead of FakeWeb in tests.
14
+
3
15
  ## [Changes in 5.4](https://github.com/jaimeiniesta/metainspector/compare/v5.3.0...v5.4.0)
4
16
 
5
- Supports Gzipped responses.
6
- Adds method `best_description` and makes `description` return just the meta description.
7
- Removes support for Ruby 2.0.0 and adds support for 2.4.0.
17
+ * Supports Gzipped responses.
18
+ * Adds method `best_description` and makes `description` return just the meta description.
19
+ * Removes support for Ruby 2.0.0 and adds support for 2.4.0.
8
20
 
9
21
  ## [Changes in 5.3](https://github.com/jaimeiniesta/metainspector/compare/v5.2.0...v5.3.0)
10
22
 
11
- Returns secondary description if meta description is empty.
12
- Adds a custom timeout on top of the ones for Faraday, and sets defaults for timeouts.
13
- Eliminates possible NULL char in HTML which breaks nokogiri.
23
+ * Returns secondary description if meta description is empty.
24
+ * Adds a custom timeout on top of the ones for Faraday, and sets defaults for timeouts.
25
+ * Eliminates possible NULL char in HTML which breaks nokogiri.
14
26
 
15
27
  ## [Changes in 5.2](https://github.com/jaimeiniesta/metainspector/compare/v5.1.0...v5.2.0)
16
28
 
17
- Removes the deprecated `html_content_only` option, and replaces it by `allow_non_html_content`, by default `false`.
29
+ * Removes the deprecated `html_content_only` option, and replaces it by `allow_non_html_content`, by default `false`.
18
30
 
19
31
  ## [Changes in 5.1](https://github.com/jaimeiniesta/metainspector/compare/v5.0.0...v5.1.0)
20
32
 
21
- Deprecates the `html_content_only` option, and turns it on by default.
33
+ * Deprecates the `html_content_only` option, and turns it on by default.
22
34
 
23
35
  ## [Changes in 5.0](https://github.com/jaimeiniesta/metainspector/compare/v4.7.1...v5.0.0)
24
36
 
25
- Removes the ExceptionLog, all exceptions are now encapsulated in our own exception classes and
37
+ * Removes the ExceptionLog, all exceptions are now encapsulated in our own exception classes and
26
38
  always raised.
27
39
 
28
40
  ## [Changes in 4.7](https://github.com/jaimeiniesta/metainspector/compare/v4.6.0...v4.7.1)
29
41
 
30
- MetaInspector can be configured to use [Faraday::HttpCache](https://github.com/plataformatec/faraday-http-cache) to cache page responses. For that you should pass the `faraday_http_cache` option with at least the `:store` key, for example:
42
+ * MetaInspector can be configured to use [Faraday::HttpCache](https://github.com/plataformatec/faraday-http-cache) to cache page responses. For that you should pass the `faraday_http_cache` option with at least the `:store` key, for example:
31
43
 
32
44
  ```ruby
33
45
  cache = ActiveSupport::Cache.lookup_store(:file_store, '/tmp/cache')
34
46
  page = MetaInspector.new('http://example.com', faraday_http_cache: { store: cache })
35
47
  ```
36
48
 
37
- Bugfixes:
38
-
39
- * Parsing of the document is done as soon as it is initialized (just like we do with the request), so
49
+ * Bugfixes:
50
+ * Parsing of the document is done as soon as it is initialized (just like we do with the request), so
40
51
  that parsing errors will be catched earlier.
41
- * Rescues from Faraday::SSLError.
52
+ * Rescues from Faraday::SSLError.
42
53
 
43
54
  ## [Changes in 4.6](https://github.com/jaimeiniesta/metainspector/compare/v4.5.0...v4.6.0)
44
55
 
45
- Faraday can be passed options via `:faraday_options`. This is useful in cases where we need to
56
+ * Faraday can be passed options via `:faraday_options`. This is useful in cases where we need to
46
57
  customize the way we request the page, like for example disabling SSL verification, like this:
47
58
 
48
59
  ```ruby
@@ -70,7 +81,7 @@ MetaInpector.new('https://example.com', faraday_options: { ssl: { verify: false
70
81
 
71
82
  ## [Changes in 4.4](https://github.com/jaimeiniesta/metainspector/compare/v4.3.0...v4.4.0)
72
83
 
73
- The default headers now include `'Accept-Encoding' => 'identity'` to minimize trouble with servers that respond with malformed compressed responses, [as explained here](https://github.com/lostisland/faraday/issues/337).
84
+ * The default headers now include `'Accept-Encoding' => 'identity'` to minimize trouble with servers that respond with malformed compressed responses, [as explained here](https://github.com/lostisland/faraday/issues/337).
74
85
 
75
86
  ## [Changes in 4.3](https://github.com/jaimeiniesta/metainspector/compare/v4.3.0...v4.4.0)
76
87
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # MetaInspector [![Build Status](https://secure.travis-ci.org/jaimeiniesta/metainspector.png)](http://travis-ci.org/jaimeiniesta/metainspector) [![Dependency Status](https://gemnasium.com/jaimeiniesta/metainspector.png)](https://gemnasium.com/jaimeiniesta/metainspector) [![Code Climate](https://codeclimate.com/github/jaimeiniesta/metainspector/badges/gpa.svg)](https://codeclimate.com/github/jaimeiniesta/metainspector)
1
+ # MetaInspector [![Build Status](https://secure.travis-ci.org/jaimeiniesta/metainspector.png)](http://travis-ci.org/jaimeiniesta/metainspector) [![Code Climate](https://codeclimate.com/github/jaimeiniesta/metainspector/badges/gpa.svg)](https://codeclimate.com/github/jaimeiniesta/metainspector)
2
2
 
3
3
  MetaInspector is a gem for web scraping purposes.
4
4
 
@@ -396,7 +396,8 @@ Web page scraping is tricky, you can expect to find different exceptions during
396
396
 
397
397
  * `MetaInspector::TimeoutError`. When fetching a web page has taken too long.
398
398
  * `MetaInspector::RequestError`. When there has been an error on the request phase. Examples: page not found, SSL failure, invalid URI.
399
- * `MetaInspector::ParserError`. When there has been an error parsing the contents of the page. Example: trying to parse an image file.
399
+ * `MetaInspector::ParserError`. When there has been an error parsing the contents of the page.
400
+ * `MetaInspector::NonHtmlError`. When the contents of the page was not HTML. See also the `allow_non_html_content` option
400
401
 
401
402
  ## Examples
402
403
 
@@ -105,7 +105,7 @@ module MetaInspector
105
105
 
106
106
  def document
107
107
  @document ||= if !allow_non_html_content && !content_type.nil? && content_type != 'text/html'
108
- fail MetaInspector::ParserError.new "The url provided contains #{content_type} content instead of text/html content"
108
+ fail MetaInspector::NonHtmlError.new "The url provided contains #{content_type} content instead of text/html content"
109
109
  else
110
110
  @request.read
111
111
  end
@@ -10,4 +10,6 @@ module MetaInspector
10
10
  class RequestError < Error; end
11
11
 
12
12
  class ParserError < Error; end
13
+
14
+ class NonHtmlError < ParserError; end
13
15
  end
@@ -29,14 +29,16 @@ module MetaInspector
29
29
  # If none found, tries with Twitter image
30
30
  def owner_suggested
31
31
  suggested_img = content_of(meta['og:image']) || content_of(meta['twitter:image'])
32
- URL.absolutify(suggested_img, base_url) if suggested_img
32
+ URL.absolutify(suggested_img, base_url, normalize: false) if suggested_img
33
33
  end
34
34
 
35
35
  # Returns an array of [img_url, width, height] sorted by image area (width * height)
36
36
  def with_size
37
37
  @with_size ||= begin
38
38
  img_nodes = parsed.search('//img').select{ |img_node| img_node['src'] }
39
- imgs_with_size = img_nodes.map { |img_node| [URL.absolutify(img_node['src'], base_url), img_node['width'], img_node['height']] }
39
+ imgs_with_size = img_nodes.map do |img_node|
40
+ [URL.absolutify(img_node['src'], base_url, normalize: false), img_node['width'], img_node['height']]
41
+ end
40
42
  imgs_with_size.uniq! { |url, width, height| url }
41
43
  if @download_images
42
44
  imgs_with_size.map! do |url, width, height|
@@ -71,7 +73,7 @@ module MetaInspector
71
73
  def favicon
72
74
  query = '//link[@rel="icon" or contains(@rel, "shortcut")]'
73
75
  value = parsed.xpath(query)[0].attributes['href'].value
74
- @favicon ||= URL.absolutify(value, base_url)
76
+ @favicon ||= URL.absolutify(value, base_url, normalize: false)
75
77
  rescue
76
78
  nil
77
79
  end
@@ -83,7 +85,7 @@ module MetaInspector
83
85
  end
84
86
 
85
87
  def absolutified_images
86
- parsed_images.map { |i| URL.absolutify(i, base_url) }
88
+ parsed_images.map { |i| URL.absolutify(i, base_url, normalize: false) }
87
89
  end
88
90
 
89
91
  def parsed_images
@@ -5,7 +5,7 @@ module MetaInspector
5
5
  attr_reader :url
6
6
 
7
7
  def initialize(initial_url, options = {})
8
- options = defaults.merge(options)
8
+ options = self.class.defaults.merge(options)
9
9
 
10
10
  @normalize = options[:normalize]
11
11
 
@@ -56,11 +56,13 @@ module MetaInspector
56
56
  # http:, ftp:, telnet:, mailto:, javascript: ...
57
57
  # Protocol-relative URLs are also resolved to use the same
58
58
  # schema as the base_url
59
- def self.absolutify(url, base_url)
59
+ def self.absolutify(url, base_url, options = {})
60
+ options = defaults.merge(options)
60
61
  if url =~ /^\w*\:/i
61
- MetaInspector::URL.new(url).url
62
+ MetaInspector::URL.new(url, options).url
62
63
  else
63
- Addressable::URI.join(base_url, url).normalize.to_s
64
+ uri = Addressable::URI.join(base_url, url)
65
+ options[:normalize] ? uri.normalize.to_s : uri.to_s
64
66
  end
65
67
  rescue MetaInspector::ParserError, Addressable::URI::InvalidURIError, ArgumentError
66
68
  nil
@@ -68,7 +70,7 @@ module MetaInspector
68
70
 
69
71
  private
70
72
 
71
- def defaults
73
+ def self.defaults
72
74
  { :normalize => true }
73
75
  end
74
76
 
@@ -1,3 +1,3 @@
1
1
  module MetaInspector
2
- VERSION = '5.6.0'
2
+ VERSION = '5.7.0'
3
3
  end
@@ -14,20 +14,20 @@ Gem::Specification.new do |gem|
14
14
  gem.require_paths = ["lib"]
15
15
  gem.version = MetaInspector::VERSION
16
16
 
17
- gem.add_dependency 'nokogiri', '~> 1.7'
18
- gem.add_dependency 'faraday', '~> 0.11'
19
- gem.add_dependency 'faraday_middleware', '~> 0.11'
20
- gem.add_dependency 'faraday-cookie_jar', '~> 0.0'
21
- gem.add_dependency 'faraday-http-cache', '~> 2.0'
22
- gem.add_dependency 'faraday-encoding', '~> 0.0'
23
- gem.add_dependency 'addressable', '~> 2.5'
24
- gem.add_dependency 'fastimage', '~> 2.1'
25
- gem.add_dependency 'nesty', '~> 1.0'
17
+ gem.add_dependency 'nokogiri', '~> 1.10.4'
18
+ gem.add_dependency 'faraday', '~> 0.15.3'
19
+ gem.add_dependency 'faraday_middleware', '~> 0.12.2'
20
+ gem.add_dependency 'faraday-cookie_jar', '~> 0.0.6'
21
+ gem.add_dependency 'faraday-http-cache', '~> 2.0.0'
22
+ gem.add_dependency 'faraday-encoding', '~> 0.0.5'
23
+ gem.add_dependency 'addressable', '~> 2.5.2'
24
+ gem.add_dependency 'fastimage', '~> 2.1.4'
25
+ gem.add_dependency 'nesty', '~> 1.0.2'
26
26
 
27
- gem.add_development_dependency 'rspec', '~> 3.0'
28
- gem.add_development_dependency 'webmock'
29
- gem.add_development_dependency 'awesome_print'
30
- gem.add_development_dependency 'rake', '~> 10.1.0'
31
- gem.add_development_dependency 'pry'
32
- gem.add_development_dependency 'rubocop'
27
+ gem.add_development_dependency 'rspec', '~> 3.8.0'
28
+ gem.add_development_dependency 'webmock', '~> 3.7.6'
29
+ gem.add_development_dependency 'awesome_print', '~> 1.8.0'
30
+ gem.add_development_dependency 'rake', '~> 12.3.1'
31
+ gem.add_development_dependency 'pry', '~> 0.12.2'
32
+ gem.add_development_dependency 'rubocop', '~> 0.60.0'
33
33
  end
@@ -82,14 +82,14 @@ describe MetaInspector::Document do
82
82
  expect do
83
83
  image_url = MetaInspector::Document.new('http://pagerankalert.com/image.png')
84
84
  image_url.title
85
- end.to raise_error(MetaInspector::ParserError)
85
+ end.to raise_error(MetaInspector::NonHtmlError)
86
86
  end
87
87
 
88
88
  it "should not allow non-html content type when explicitly disallowed" do
89
89
  expect do
90
90
  image_url = MetaInspector::Document.new('http://pagerankalert.com/image.png', allow_non_html_content: false)
91
91
  image_url.title
92
- end.to raise_error(MetaInspector::ParserError)
92
+ end.to raise_error(MetaInspector::NonHtmlError)
93
93
  end
94
94
 
95
95
  it "should allow non-html content type when explicitly allowed" do
@@ -57,7 +57,7 @@ Connection: keep-alive
57
57
  <meta property="og:title" content="More TechCrunch drama as Arrington-backed startup wins blog's contest"/>
58
58
  <meta property="og:type" content="article"/>
59
59
  <meta property="og:url" content="http://www.guardian.co.uk/media/pda/2011/sep/15/techcrunch-arrington-startups"/>
60
- <meta property="og:image" content="https://static-secure.guim.co.uk/sys-images/Guardian/Pix/pictures/2011/8/8/1312810126887/gu_192x115.jpg"/>
60
+ <meta property="og:image" content="https://i.guim.co.uk/img/media/020bf03ae1d259626803b6c83ac57fd57382f285/0_102_5760_3456/master/5760.jpg?width=1200&height=630&quality=85&auto=format&fit=crop&overlay-align=bottom%2Cleft&overlay-width=100p&overlay-base64=L2ltZy9zdGF0aWMvb3ZlcmxheXMvdGctZGVmYXVsdC5wbmc&s=46e054247285bdf48a7621d371fc5070"/>
61
61
  <meta property="og:site_name" content="the Guardian"/>
62
62
  <meta property="fb:app_id" content="180444840287"/>
63
63
  <meta property="og:description" content="Despite claiming transparency, TechCrunch readers are not convinced that a 'Habbo Hotel for Facebook' was a deserving winner of a coveted award. By Jemima Kiss"/>
@@ -126,6 +126,12 @@ describe MetaInspector do
126
126
 
127
127
  expect(page.images.owner_suggested).to be nil
128
128
  end
129
+
130
+ it "should not normalize image" do
131
+ page = MetaInspector.new("http://www.guardian.co.uk/media/pda/2011/sep/15/techcrunch-arrington-startups")
132
+
133
+ expect(page.images.owner_suggested).to eq("https://i.guim.co.uk/img/media/020bf03ae1d259626803b6c83ac57fd57382f285/0_102_5760_3456/master/5760.jpg?width=1200&height=630&quality=85&auto=format&fit=crop&overlay-align=bottom%2Cleft&overlay-width=100p&overlay-base64=L2ltZy9zdGF0aWMvb3ZlcmxheXMvdGctZGVmYXVsdC5wbmc&s=46e054247285bdf48a7621d371fc5070")
134
+ end
129
135
  end
130
136
 
131
137
  describe "images.with_size" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metainspector
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.6.0
4
+ version: 5.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jaime Iniesta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-27 00:00:00.000000000 Z
11
+ date: 2019-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -16,210 +16,210 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: 1.10.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: 1.10.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.11'
33
+ version: 0.15.3
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.11'
40
+ version: 0.15.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday_middleware
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.11'
47
+ version: 0.12.2
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.11'
54
+ version: 0.12.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: faraday-cookie_jar
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.0'
61
+ version: 0.0.6
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.0'
68
+ version: 0.0.6
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: faraday-http-cache
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '2.0'
75
+ version: 2.0.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '2.0'
82
+ version: 2.0.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: faraday-encoding
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.0'
89
+ version: 0.0.5
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.0'
96
+ version: 0.0.5
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: addressable
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.5'
103
+ version: 2.5.2
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2.5'
110
+ version: 2.5.2
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: fastimage
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '2.1'
117
+ version: 2.1.4
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '2.1'
124
+ version: 2.1.4
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: nesty
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '1.0'
131
+ version: 1.0.2
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '1.0'
138
+ version: 1.0.2
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '3.0'
145
+ version: 3.8.0
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '3.0'
152
+ version: 3.8.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: webmock
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '0'
159
+ version: 3.7.6
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '0'
166
+ version: 3.7.6
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: awesome_print
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
171
+ - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '0'
173
+ version: 1.8.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '0'
180
+ version: 1.8.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rake
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 10.1.0
187
+ version: 12.3.1
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 10.1.0
194
+ version: 12.3.1
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: pry
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - ">="
199
+ - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: '0'
201
+ version: 0.12.2
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ">="
206
+ - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: '0'
208
+ version: 0.12.2
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: rubocop
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - ">="
213
+ - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: '0'
215
+ version: 0.60.0
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - ">="
220
+ - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: '0'
222
+ version: 0.60.0
223
223
  description: MetaInspector lets you scrape a web page and get its links, images, texts,
224
224
  meta tags...
225
225
  email:
@@ -348,8 +348,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
348
348
  - !ruby/object:Gem::Version
349
349
  version: '0'
350
350
  requirements: []
351
- rubyforge_project:
352
- rubygems_version: 2.6.8
351
+ rubygems_version: 3.0.4
353
352
  signing_key:
354
353
  specification_version: 4
355
354
  summary: MetaInspector is a ruby gem for web scraping purposes, that returns metadata