metainspector 1.17.0 → 1.17.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|