meta_information 1.0.0 → 1.1.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: 1f66071a06238dc6aac14bf94b9c7308c744d87f
4
- data.tar.gz: 96dc74d10a6542551ed70c7e891d9932b4930ca2
2
+ SHA256:
3
+ metadata.gz: a986aa80d954fde7cd758f23b62fa4bc6c6ef564ab06a86b55f8b4980739812e
4
+ data.tar.gz: f2d878d8d1c57665677608e71e6d5f75dcfccf256ea4b625750695bab8740ca1
5
5
  SHA512:
6
- metadata.gz: 670b94bc7fdae7a68eed412e51ea0f8648eeab931ff8b6efafde8522694911959d77ae92c779d5e5d5ce77bf5985f3c70c8276fbf16eda1df97fdde6170de4bb
7
- data.tar.gz: c83c405927fd5b265f1a8cf7fe18cd1b7fffc013f4cdfad091e5aca505a8b758c56980cc476a4c5725b47341c67f12ac335677178efe2b1a5b8b5338beecda7b
6
+ metadata.gz: 00ad8369eb9559cb958b4fd2443c5e09d42a2c03d0ed1d4425ca7247f02d2abc90b66ecb4884a6d11faed122d74a812dbb87e36a273c2c0e8bad63f8dfbd1c87
7
+ data.tar.gz: 32798218b16280ca2cc0e7f58659d04f8b91853935a00646dade439b85e927305cc2a2f4d8e1bc8d5c0ff72cebfc22c29b45a1d18c753b70102ee13db6ec0d54
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ ## Changelog
2
+
3
+ ### 1.1.0
4
+
5
+ - Added rubocop
6
+ - Replaced open-uri by net/http
data/Gemfile CHANGED
@@ -1,5 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
- ruby '2.3.3'
4
+ ruby ['>= 2.1.0', '<= 2.7.0']
3
5
 
4
6
  gem 'nokogiri'
5
- gem 'rspec'
7
+
8
+ group :development, :test do
9
+ gem 'pry'
10
+ gem 'rspec'
11
+ gem 'rubocop'
12
+ end
data/README.md CHANGED
@@ -1,16 +1,26 @@
1
1
  # MetaInformation
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/meta_information.svg)](https://badge.fury.io/rb/meta_information)
4
+
2
5
  Simple gem for parsing meta information from websites. It scan all meta-tags by name or property attributes.
6
+
3
7
  ## Instalation
8
+
4
9
  Add this line to your application's Gemfile:
10
+
5
11
  ```ruby
6
12
  gem 'meta_information'
7
13
  ```
14
+
8
15
  Then run `bundle install`
9
16
  Or install it yourself as:
17
+
10
18
  ```sh
11
19
  gem install meta_information
12
20
  ```
21
+
13
22
  ## Usage
23
+
14
24
  ```ruby
15
25
  require 'pp'
16
26
  meta = MetaInformation.get_meta('https://www.awesome_site.com/awesome_page')
@@ -21,15 +31,20 @@ pp meta
21
31
  # :all_meta=>
22
32
  # [{:type=>"name",
23
33
  # :name=>"viewport",
34
+ # :property=>nil,
24
35
  # :content=>"width=device-width, initial-scale=1.0"},
25
- # {:type=>"name", :name=>"description", :content=>"some description"},
26
- # {:type=>"name", :name=>"title", :content=>"i am title"},
27
- # {:type=>"name", :name=>"og:title", :content=>"some content"},
28
- # {:type=>"name", :name=>"og:description", :content=>"some description"},
36
+ # {:type=>"name", :name=>"description", :property=>nil, :content=>"some description"},
37
+ # {:type=>"name", :name=>"title", :property=>nil, :content=>"i am title"},
38
+ # {:type=>"name", :name=>"og:title", :property=>nil, :content=>"some content"},
39
+ # {:type=>"name", :name=>"og:description", :property=>nil, :content=>"some description"},
29
40
  # {:type=>"name",
30
41
  # :name=>"og:image",
31
- # :content=> "https://www.awesome_site.com/assets/awesome_picture.jpg"}]}
42
+ # :property=>nil,
43
+ # :content=> "https://www.awesome_site.com/assets/awesome_picture.jpg"}]},
44
+ # {:type=>"property", :name=>nil, :property=>"fb:app_id", :content=>"1234567890"},
32
45
  ###
33
46
  ```
47
+
34
48
  ## License
35
- MIT License.
49
+
50
+ MIT License.
data/ROADMAP.md ADDED
@@ -0,0 +1,3 @@
1
+ ## ROADMAP
2
+
3
+ - Instead of returing hash, module `MetaInformation` should return struct object as a result. Each node should be a struct with methods to recognize a tag such as `.twitter?`, `.og?`, `.fb?`, '.vk?' (check it by property attr).
@@ -1,74 +1,101 @@
1
- require './lib/meta_information/version'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'meta_information/version'
2
4
  require 'nokogiri'
3
- require 'open-uri'
5
+ require 'uri'
6
+ require 'net/http'
4
7
 
5
- # MetaInformation - module for scaning meta information
6
- # form web page
7
- # for usage
8
+ # MetaInformation - module for scaning meta information from web page
8
9
  # MetaInformation.get_meta('https://some_site.com/some_page')
9
10
  module MetaInformation
10
- class << self
11
- def get_meta(input_url)
12
- return not_valid_url_error unless valid_url?(input_url)
11
+ extend self
13
12
 
14
- document = create_document(input_url)
15
- return nokogiri_error if document == false
13
+ def get_meta(input_url)
14
+ return not_valid_url_error unless valid_url?(input_url)
15
+ return not_valid_url_scheme unless valid_url_scheme?(input_url)
16
16
 
17
- meta_hash = create_meta_array(document)
18
- success_hash.merge(all_meta: meta_hash)
19
- end
17
+ document = create_document(input_url)
18
+ return nokogiri_error if document == false
19
+
20
+ meta_hash = create_meta_array(document)
21
+ success_hash.merge(all_meta: meta_hash)
22
+ end
23
+
24
+ private
20
25
 
21
- private
22
-
23
- def create_meta_array(document)
24
- array = []
25
- document.css('meta').each do |node|
26
- if !node['name'].nil?
27
- array.push(
28
- type: 'name',
29
- name: node['name'],
30
- content: node['content']
31
- )
32
- elsif !node['property'].nil?
33
- array.push(
34
- type: 'property',
35
- property: node['property'],
36
- content: node['content']
37
- )
38
- end
26
+ # TODO: change to struct
27
+ def create_meta_array(document)
28
+ document
29
+ .css('meta').reject { |node| node_type(node).nil? }
30
+ .map do |node|
31
+ {
32
+ type: node_type(node),
33
+ name: node['name'],
34
+ property: node['property'],
35
+ content: node['content'],
36
+ itemprop: node['itemprop']
37
+ }
39
38
  end
40
- array
41
- end
39
+ end
42
40
 
43
- def valid_url?(uri)
44
- !!uri.match(/^(https?:\/\/)?([\w\.]+)\.([a-z]{2,6}\.?)(\/[\w\.]*)*\/?$/)
41
+ def node_type(node)
42
+ if !node['name'].nil?
43
+ 'name'
44
+ elsif !node['property'].nil?
45
+ 'property'
46
+ elsif !node['itemprop'].nil?
47
+ 'itemprop'
48
+ else
49
+ nil
45
50
  end
51
+ end
46
52
 
47
- def create_document(input_url)
48
- Nokogiri::HTML(open(input_url))
49
- rescue
50
- false
51
- end
53
+ def valid_url?(uri)
54
+ !(uri =~ URI::DEFAULT_PARSER.make_regexp).nil?
55
+ end
52
56
 
53
- def not_valid_url_error
54
- {
55
- success: false,
56
- error: 'url is not valid'
57
- }
58
- end
57
+ def valid_url_scheme?(input_url)
58
+ URI(input_url).is_a?(URI::HTTP)
59
+ end
59
60
 
60
- def nokogiri_error
61
- {
62
- success: false,
63
- error: 'error with parsing a document'
64
- }
65
- end
61
+ def create_document(input_url)
62
+ uri = URI(input_url)
63
+ res = Net::HTTP.get_response(uri)
66
64
 
67
- def success_hash
68
- {
69
- succes: 'true',
70
- error: ''
71
- }
72
- end
65
+ raise 'Response code is not 2xx' if !(res.code.to_i >= 200 && res.code.to_i <= 299)
66
+ raise 'Response is without body' unless res.class.body_permitted?
67
+
68
+ Nokogiri::HTML(res.body)
69
+ rescue StandardError => e
70
+ puts e
71
+ false
72
+ end
73
+
74
+ def not_valid_url_error
75
+ {
76
+ success: false,
77
+ error: 'url is not valid'
78
+ }
79
+ end
80
+
81
+ def not_valid_url_scheme
82
+ {
83
+ success: false,
84
+ error: 'url must be http(s)'
85
+ }
86
+ end
87
+
88
+ def nokogiri_error
89
+ {
90
+ success: false,
91
+ error: 'error with parsing a document'
92
+ }
93
+ end
94
+
95
+ def success_hash
96
+ {
97
+ succes: 'true',
98
+ error: ''
99
+ }
73
100
  end
74
101
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MetaInformation
2
- VERSION = '1.0.0'
3
- end
4
+ VERSION = '1.1.0'
5
+ end
@@ -1,15 +1,25 @@
1
- $:.push File.expand_path("../lib", __FILE__)
2
- require "meta_information/version"
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+ require 'meta_information/version'
3
5
 
4
6
  Gem::Specification.new do |s|
7
+ s.required_ruby_version = '>= 2.1.0'
5
8
  s.name = 'meta_information'
6
9
  s.version = MetaInformation::VERSION
7
- s.date = '2017-02-26'
10
+ s.date = '2021-02-12'
8
11
  s.summary = 'MetaInformation - Simple gem for parsing meta information'
9
- s.description = 'Simple gem for parsing meta information from websites. It scan all meta-tags by name or property attributes.'
12
+ s.description = 'Simple gem for parsing meta information from websites. It scans all meta-tags by name, itemprop or property attributes.'
10
13
  s.author = 'Vladislav Kopylov'
11
14
  s.email = 'kopylov.vlad@gmail.com'
12
- s.files = `git ls-files`.split("\n")
15
+ s.files = `git ls-files -z`.split("\x0").reject { |f| f =~ /^bin/ }
16
+ s.executables = []
13
17
  s.homepage = 'https://github.com/kopylovvlad/meta_information'
14
18
  s.license = 'MIT'
15
- end
19
+
20
+ s.add_dependency('nokogiri')
21
+
22
+ s.add_development_dependency('pry')
23
+ s.add_development_dependency('rspec')
24
+ s.add_development_dependency('rubocop')
25
+ end
data/spec/config.rb ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.configure do |rspec|
4
+ rspec.shared_context_metadata_behavior = :apply_to_host_groups
5
+ rspec.include_context 'shared stuff', include_shared: true
6
+ end
@@ -1,38 +1,77 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require './lib/meta_information'
4
+ require './spec/shared_stuff'
5
+ require './spec/config'
2
6
 
3
7
  RSpec.describe 'MetaInformation' do
4
-
8
+ include_context 'shared stuff'
9
+
10
+ describe 'get_meta' do
11
+ it 'should return not_valid_url_error' do
12
+ allow(MetaInformation).to receive(:valid_url?).and_return(false)
13
+ result = MetaInformation.get_meta('http://some_url.com')
14
+ expect(result).to(
15
+ eq(
16
+ success: false,
17
+ error: 'url is not valid'
18
+ )
19
+ )
20
+ end
21
+
22
+ it 'should return not_valid_url_scheme_error' do
23
+ result = MetaInformation.get_meta('ftp://some_url.com')
24
+ expect(result).to(
25
+ eq(success: false, error: 'url must be http(s)')
26
+ )
27
+ end
28
+
29
+ describe 'with mock for valid_url?' do
30
+ before do
31
+ allow(MetaInformation).to receive(:valid_url?).and_return(true)
32
+ end
33
+ it 'should return nokogiri_error' do
34
+ allow(MetaInformation).to receive(:create_document).and_return(false)
35
+
36
+ result = MetaInformation.get_meta('http://some_url.com')
37
+ expect(result).to(
38
+ eq(
39
+ success: false,
40
+ error: 'error with parsing a document'
41
+ )
42
+ )
43
+ end
44
+
45
+ it 'should return success_hash' do
46
+ allow(MetaInformation).to(
47
+ receive(:create_document).and_return(
48
+ Nokogiri::HTML(default_html)
49
+ )
50
+ )
51
+
52
+ result = MetaInformation.get_meta('http://some_url.com')
53
+ expect(result).to(
54
+ eq(
55
+ succes: 'true',
56
+ error: '',
57
+ all_meta: default_html_meta_array
58
+ )
59
+ )
60
+ end
61
+ end
62
+ end
63
+
5
64
  describe 'create_meta_array' do
6
65
  describe 'we have meta' do
7
66
  it 'must create array' do
8
- document = Nokogiri::HTML('
9
- <html>
10
- <meta name="description" content="" />
11
- <meta name="title" content="some title" />
12
- <meta property="author" content="Bob" />
13
- <meta property="og:title" content="og_title" />
14
- <meta property="twitter:image" content="http://some_host.com/some_path" />
15
- <meta property="og:locale" content="ru_RU" />
16
- <meta property="al:ios:app_store_id" content="12345678900" />
17
- <body>
18
- <h1>Mr. Belvedere Fan Club</h1>
19
- </body>
20
- </html>
21
- ')
22
- expect(MetaInformation.send(:create_meta_array, document)).to eq([
23
- { type: 'name', name: 'description', content: '' },
24
- { type: 'name', name: 'title', content: 'some title' },
25
- { type: 'property', property: 'author', content: 'Bob' },
26
- { type: 'property', property: 'og:title', content: 'og_title' },
27
- { type: 'property', property: 'twitter:image', content: 'http://some_host.com/some_path' },
28
- { type: 'property', property: 'og:locale', content: 'ru_RU' },
29
- { type: 'property', property: 'al:ios:app_store_id', content: '12345678900' }
30
- ])
67
+ document = Nokogiri::HTML(default_html)
68
+ result = MetaInformation.send(:create_meta_array, document)
69
+ expect(result).to eq(default_html_meta_array)
31
70
  end
32
71
  end
33
-
34
- describe 'without meta' do
35
- it 'has empty array' do
72
+
73
+ describe 'without meta has empty array' do
74
+ it 'if have not mate' do
36
75
  first_document = Nokogiri::HTML('
37
76
  <html>
38
77
  <body>
@@ -40,51 +79,95 @@ RSpec.describe 'MetaInformation' do
40
79
  </body>
41
80
  </html>
42
81
  ')
43
- second_document = Nokogiri::HTML('')
44
82
  expect(MetaInformation.send(:create_meta_array, first_document)).to eq([])
83
+ end
84
+
85
+ it 'if html is empty' do
86
+ second_document = Nokogiri::HTML('')
45
87
  expect(MetaInformation.send(:create_meta_array, second_document)).to eq([])
46
88
  end
47
89
  end
48
90
  end
49
91
 
50
92
  describe 'valid_url?' do
51
- it 'must be valid' do
52
- expect(MetaInformation.send(:valid_url?, 'http://www.somesite.com')).to be_truthy
53
- expect(MetaInformation.send(:valid_url?, 'https://www.somesite.com')).to be_truthy
54
- expect(MetaInformation.send(:valid_url?, 'https://somesite.com')).to be_truthy
55
- expect(MetaInformation.send(:valid_url?, 'wwwsome_site.ru')).to be_truthy
56
- expect(MetaInformation.send(:valid_url?, 'https://somesite.com/some_page')).to be_truthy
57
- expect(MetaInformation.send(:valid_url?, 'https://somesite.com/some_page/page')).to be_truthy
58
- expect(MetaInformation.send(:valid_url?, 'https://somesite.com.uk/some_page')).to be_truthy
93
+ def self.validate_valid_url(url)
94
+ it "#{url} must be valid" do
95
+ expect(MetaInformation.send(:valid_url?, url)).to be_truthy
96
+ end
59
97
  end
60
-
61
- it 'does not valid' do
62
- expect(MetaInformation.send(:valid_url?, 'some_site')).to be_falsey
63
- expect(MetaInformation.send(:valid_url?, 'http\\:wwwsome_site.ru')).to be_falsey
64
- expect(MetaInformation.send(:valid_url?, 'com.some_site')).to be_falsey
98
+
99
+ validate_valid_url('http://www.somesite.com')
100
+ validate_valid_url('https://www.somesite.com')
101
+ validate_valid_url('https://somesite.com')
102
+ validate_valid_url('http://www.siteforadmin.ru')
103
+ validate_valid_url('https://somesite.com/some_page')
104
+ validate_valid_url('https://somesite.com/some_page/page')
105
+ validate_valid_url('http://somesite.com/some_page/2012/12/page/another_page')
106
+ validate_valid_url('http://somesite.com/2012/12/page-page-page')
107
+ validate_valid_url('https://somesite.com.uk/some_page')
108
+ validate_valid_url('https://meduza.io/short/2017/03/25/v-londone-proshel-mnogotysyachnyy-marsh-protiv-brekzita-fotografiya')
109
+
110
+ def self.validate_invalid_url(url)
111
+ it "#{url} must be invalid" do
112
+ expect(MetaInformation.send(:valid_url?, url)).to be_falsey
113
+ end
65
114
  end
115
+
116
+ validate_invalid_url('some_site')
117
+ validate_invalid_url('http\\:wwwsome_site.ru')
118
+ validate_invalid_url('com.some_site')
66
119
  end
67
-
120
+
68
121
  describe 'private hash equal' do
69
122
  it 'not_valid_url_error hash' do
70
123
  expect(MetaInformation.send(:not_valid_url_error)).to eq({
71
- success: false,
72
- error: 'url is not valid'
73
- })
124
+ success: false,
125
+ error: 'url is not valid'
126
+ })
74
127
  end
75
128
 
76
129
  it 'nokogiri_error hash' do
77
130
  expect(MetaInformation.send(:nokogiri_error)).to eq({
78
- success: false,
79
- error: 'error with parsing a document'
80
- })
131
+ success: false,
132
+ error: 'error with parsing a document'
133
+ })
81
134
  end
82
135
 
83
136
  it 'success_hash hash' do
84
137
  expect(MetaInformation.send(:success_hash)).to eq({
85
- succes: 'true',
86
- error: ''
87
- })
138
+ succes: 'true',
139
+ error: ''
140
+ })
141
+ end
142
+ end
143
+
144
+ describe 'node_type' do
145
+ it 'must return name' do
146
+ document = Nokogiri::HTML('<meta name="description" content="" />')
147
+ node = document.css('meta').first
148
+ expect(MetaInformation.send(:node_type, node)).to eq('name')
149
+ end
150
+
151
+ it 'must return property' do
152
+ document = Nokogiri::HTML(
153
+ '<meta property="og:title" content="og_title" />'
154
+ )
155
+ node = document.css('meta').first
156
+ expect(MetaInformation.send(:node_type, node)).to eq('property')
157
+ end
158
+
159
+ it 'must return property' do
160
+ document = Nokogiri::HTML(
161
+ '<meta itemprop="description" content="description" />'
162
+ )
163
+ node = document.css('meta').first
164
+ expect(MetaInformation.send(:node_type, node)).to eq('itemprop')
165
+ end
166
+
167
+ it 'must return nil' do
168
+ document = Nokogiri::HTML('<meta content="og_title" />')
169
+ node = document.css('meta').first
170
+ expect(MetaInformation.send(:node_type, node)).to eq(nil)
88
171
  end
89
172
  end
90
173
  end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.shared_context 'shared stuff', shared_context: :metadata do
4
+ let(:default_html) do
5
+ '
6
+ <html>
7
+ <meta name="description" content="" />
8
+ <meta name="title" content="some title" />
9
+ <meta property="author" content="Bob" />
10
+ <meta property="og:title" content="og_title" />
11
+ <meta property="twitter:image" content="http://some_host.com/some_path" />
12
+ <meta property="og:locale" content="ru_RU" />
13
+ <meta property="al:ios:app_store_id" content="12345678900" />
14
+ <meta itemprop="name" content="site name"/>
15
+ <meta itemprop="description" content="site description"/>
16
+ <body>
17
+ <h1>Mr. Belvedere Fan Club</h1>
18
+ </body>
19
+ </html>
20
+ '
21
+ end
22
+
23
+ let(:default_html_meta_array) do
24
+ [
25
+ {
26
+ type: 'name',
27
+ name: 'description',
28
+ property: nil,
29
+ itemprop: nil,
30
+ content: ''
31
+ },
32
+ {
33
+ type: 'name',
34
+ name: 'title',
35
+ property: nil,
36
+ itemprop: nil,
37
+ content: 'some title'
38
+ },
39
+ {
40
+ type: 'property',
41
+ name: nil,
42
+ property: 'author',
43
+ itemprop: nil,
44
+ content: 'Bob'
45
+ },
46
+ {
47
+ type: 'property',
48
+ name: nil,
49
+ property: 'og:title',
50
+ itemprop: nil,
51
+ content: 'og_title'
52
+ },
53
+ {
54
+ type: 'property',
55
+ name: nil,
56
+ property: 'twitter:image',
57
+ itemprop: nil,
58
+ content: 'http://some_host.com/some_path'
59
+ },
60
+ {
61
+ type: 'property',
62
+ name: nil,
63
+ property: 'og:locale',
64
+ itemprop: nil,
65
+ content: 'ru_RU'
66
+ },
67
+ {
68
+ type: 'property',
69
+ name: nil,
70
+ property: 'al:ios:app_store_id',
71
+ itemprop: nil,
72
+ content: '12345678900'
73
+ },
74
+ {
75
+ type: 'itemprop',
76
+ name: nil,
77
+ property: nil,
78
+ itemprop: 'name',
79
+ content: 'site name'
80
+ },
81
+ {
82
+ type: 'itemprop',
83
+ name: nil,
84
+ property: nil,
85
+ itemprop: 'description',
86
+ content: 'site description'
87
+ }
88
+ ]
89
+ end
90
+ end
metadata CHANGED
@@ -1,31 +1,91 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meta_information
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladislav Kopylov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-26 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Simple gem for parsing meta information from websites. It scan all meta-tags
14
- by name or property attributes.
11
+ date: 2021-02-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Simple gem for parsing meta information from websites. It scans all meta-tags
70
+ by name, itemprop or property attributes.
15
71
  email: kopylov.vlad@gmail.com
16
72
  executables: []
17
73
  extensions: []
18
74
  extra_rdoc_files: []
19
75
  files:
20
76
  - ".gitignore"
21
- - ".ruby-version"
77
+ - ".rspec"
78
+ - CHANGELOG.md
22
79
  - Gemfile
23
80
  - LICENSE.txt
24
81
  - README.md
82
+ - ROADMAP.md
25
83
  - lib/meta_information.rb
26
84
  - lib/meta_information/version.rb
27
85
  - meta_information.gemspec
86
+ - spec/config.rb
28
87
  - spec/lib/meta_information_spec.rb
88
+ - spec/shared_stuff.rb
29
89
  homepage: https://github.com/kopylovvlad/meta_information
30
90
  licenses:
31
91
  - MIT
@@ -38,15 +98,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
38
98
  requirements:
39
99
  - - ">="
40
100
  - !ruby/object:Gem::Version
41
- version: '0'
101
+ version: 2.1.0
42
102
  required_rubygems_version: !ruby/object:Gem::Requirement
43
103
  requirements:
44
104
  - - ">="
45
105
  - !ruby/object:Gem::Version
46
106
  version: '0'
47
107
  requirements: []
48
- rubyforge_project:
49
- rubygems_version: 2.6.10
108
+ rubygems_version: 3.1.2
50
109
  signing_key:
51
110
  specification_version: 4
52
111
  summary: MetaInformation - Simple gem for parsing meta information
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- ruby-2.3.3