metainspector 1.17.0 → 1.17.1
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 +4 -4
- data/lib/meta_inspector/document.rb +1 -1
- data/lib/meta_inspector/meta_tags_dynamic_match.rb +18 -0
- data/lib/meta_inspector/parser.rb +8 -3
- data/lib/meta_inspector/version.rb +1 -1
- data/lib/meta_inspector.rb +1 -0
- data/meta_inspector.gemspec +1 -0
- data/spec/parser_spec.rb +40 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca50a3bad8a3a8f98f2dcdd6c5e5223ef78b8066
|
4
|
+
data.tar.gz: 5e3b651a1fd60fa5a63929a22880f87c28fe515b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 804bba1881a89677070abb29f98b0a516a80390d85a451e47178840093b3f8c98696f41edffe54811a1ffa26dc44d7e1e3448410612750385f2d20f35b1faf61
|
7
|
+
data.tar.gz: 60b8073a5062ea856dcfa38e23913a69dd654f2e4f23ae651912b07b61bc4c27a451bee586e6de29472ef5a786f61d08f33563479c71a185318ed10be1fb93db
|
@@ -39,7 +39,7 @@ module MetaInspector
|
|
39
39
|
extend Forwardable
|
40
40
|
def_delegators :@url, :url, :scheme, :host, :root_url
|
41
41
|
def_delegators :@request, :content_type
|
42
|
-
def_delegators :@parser, :parsed, :method_missing, :title, :description, :links, :internal_links, :external_links,
|
42
|
+
def_delegators :@parser, :parsed, :method_missing, :respond_to?, :title, :description, :links, :internal_links, :external_links,
|
43
43
|
:images, :image, :feed, :charset
|
44
44
|
|
45
45
|
# Returns all document data as a nested Hash
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module MetaInspector
|
2
|
+
|
3
|
+
# Encapsulates matching for method_missing and respond_to? for meta tags methods
|
4
|
+
class MetaTagsDynamicMatch
|
5
|
+
attr_reader :meta_tag
|
6
|
+
|
7
|
+
def initialize(method_name)
|
8
|
+
if method_name.to_s =~ /^meta_(.+)/
|
9
|
+
@meta_tag = $1
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def match?
|
14
|
+
@meta_tag
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -83,6 +83,10 @@ module MetaInspector
|
|
83
83
|
@charset ||= (charset_from_meta_charset || charset_from_meta_content_type)
|
84
84
|
end
|
85
85
|
|
86
|
+
def respond_to?(method_name, include_private = false)
|
87
|
+
MetaInspector::MetaTagsDynamicMatch.new(method_name).match? || super
|
88
|
+
end
|
89
|
+
|
86
90
|
private
|
87
91
|
|
88
92
|
def defaults
|
@@ -95,10 +99,11 @@ module MetaInspector
|
|
95
99
|
#
|
96
100
|
# It will first try with meta name="..." and if nothing found,
|
97
101
|
# with meta http-equiv="...", substituting "_" by "-"
|
98
|
-
# TODO: define respond_to? to return true on the meta_name methods
|
99
102
|
def method_missing(method_name)
|
100
|
-
|
101
|
-
|
103
|
+
meta_tags_method = MetaInspector::MetaTagsDynamicMatch.new(method_name)
|
104
|
+
|
105
|
+
if meta_tags_method.match?
|
106
|
+
key = meta_tags_method.meta_tag
|
102
107
|
|
103
108
|
#special treatment for opengraph (og:) and twitter card (twitter:) tags
|
104
109
|
key.gsub!("_",":") if key =~ /^og_(.*)/ || key =~ /^twitter_(.*)/
|
data/lib/meta_inspector.rb
CHANGED
@@ -5,6 +5,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), 'meta_inspector/excep
|
|
5
5
|
require File.expand_path(File.join(File.dirname(__FILE__), 'meta_inspector/exception_log'))
|
6
6
|
require File.expand_path(File.join(File.dirname(__FILE__), 'meta_inspector/request'))
|
7
7
|
require File.expand_path(File.join(File.dirname(__FILE__), 'meta_inspector/url'))
|
8
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'meta_inspector/meta_tags_dynamic_match'))
|
8
9
|
require File.expand_path(File.join(File.dirname(__FILE__), 'meta_inspector/parser'))
|
9
10
|
require File.expand_path(File.join(File.dirname(__FILE__), 'meta_inspector/document'))
|
10
11
|
require File.expand_path(File.join(File.dirname(__FILE__), 'meta_inspector/deprecations'))
|
data/meta_inspector.gemspec
CHANGED
@@ -7,6 +7,7 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.description = %q{MetaInspector lets you scrape a web page and get its title, charset, link and meta tags}
|
8
8
|
gem.summary = %q{MetaInspector is a ruby gem for web scraping purposes, that returns a hash with metadata from a given URL}
|
9
9
|
gem.homepage = "http://jaimeiniesta.github.io/metainspector/"
|
10
|
+
gem.license = "MIT"
|
10
11
|
|
11
12
|
gem.files = `git ls-files`.split("\n")
|
12
13
|
gem.test_files = `git ls-files -- {spec}/*`.split("\n")
|
data/spec/parser_spec.rb
CHANGED
@@ -267,6 +267,46 @@ describe MetaInspector::Parser do
|
|
267
267
|
end
|
268
268
|
end
|
269
269
|
|
270
|
+
describe 'respond_to? for meta tags ghost methods' do
|
271
|
+
before(:each) do
|
272
|
+
@m = MetaInspector.new('http://pagerankalert.com')
|
273
|
+
end
|
274
|
+
|
275
|
+
it "should return true for meta tags as string" do
|
276
|
+
@m.respond_to?("meta_robots").should be_true
|
277
|
+
end
|
278
|
+
|
279
|
+
it "should return true for meta tags as symbols" do
|
280
|
+
@m.respond_to?(:meta_robots).should be_true
|
281
|
+
end
|
282
|
+
|
283
|
+
it "should return true for meta_twitter_site as string" do
|
284
|
+
@m = MetaInspector.new('http://www.youtube.com/watch?v=iaGSSrp49uc')
|
285
|
+
@m.respond_to?("meta_twitter_site").should be_true
|
286
|
+
end
|
287
|
+
|
288
|
+
it "should return true for meta_twitter_site as symbol" do
|
289
|
+
@m = MetaInspector.new('http://www.youtube.com/watch?v=iaGSSrp49uc')
|
290
|
+
@m.respond_to?(:meta_twitter_player_width).should be_true
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
294
|
+
describe 'respond_to? for not implemented methods' do
|
295
|
+
|
296
|
+
before(:each) do
|
297
|
+
@m = MetaInspector.new('http://pagerankalert.com')
|
298
|
+
end
|
299
|
+
|
300
|
+
it "should return false when method name passed as string" do
|
301
|
+
@m.respond_to?("method_not_implemented").should be_false
|
302
|
+
end
|
303
|
+
|
304
|
+
it "should return false when method name passed as symbols" do
|
305
|
+
@m = MetaInspector.new('http://www.youtube.com/watch?v=iaGSSrp49uc')
|
306
|
+
@m.respond_to?(:method_not_implemented).should be_false
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
270
310
|
describe 'Getting meta tags by ghost methods' do
|
271
311
|
before(:each) do
|
272
312
|
@m = MetaInspector::Parser.new(doc 'http://pagerankalert.com')
|
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: 1.17.
|
4
|
+
version: 1.17.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jaime Iniesta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -142,6 +142,7 @@ files:
|
|
142
142
|
- lib/meta_inspector/document.rb
|
143
143
|
- lib/meta_inspector/exception_log.rb
|
144
144
|
- lib/meta_inspector/exceptionable.rb
|
145
|
+
- lib/meta_inspector/meta_tags_dynamic_match.rb
|
145
146
|
- lib/meta_inspector/parser.rb
|
146
147
|
- lib/meta_inspector/request.rb
|
147
148
|
- lib/meta_inspector/url.rb
|
@@ -186,7 +187,8 @@ files:
|
|
186
187
|
- spec/spec_helper.rb
|
187
188
|
- spec/url_spec.rb
|
188
189
|
homepage: http://jaimeiniesta.github.io/metainspector/
|
189
|
-
licenses:
|
190
|
+
licenses:
|
191
|
+
- MIT
|
190
192
|
metadata: {}
|
191
193
|
post_install_message:
|
192
194
|
rdoc_options: []
|
@@ -194,17 +196,17 @@ require_paths:
|
|
194
196
|
- lib
|
195
197
|
required_ruby_version: !ruby/object:Gem::Requirement
|
196
198
|
requirements:
|
197
|
-
- -
|
199
|
+
- - '>='
|
198
200
|
- !ruby/object:Gem::Version
|
199
201
|
version: '0'
|
200
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
203
|
requirements:
|
202
|
-
- -
|
204
|
+
- - '>='
|
203
205
|
- !ruby/object:Gem::Version
|
204
206
|
version: '0'
|
205
207
|
requirements: []
|
206
208
|
rubyforge_project:
|
207
|
-
rubygems_version: 2.
|
209
|
+
rubygems_version: 2.1.3
|
208
210
|
signing_key:
|
209
211
|
specification_version: 4
|
210
212
|
summary: MetaInspector is a ruby gem for web scraping purposes, that returns a hash
|