microformats 4.0.0 → 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +2 -2
- data/lib/microformats/absolute_uri.rb +2 -2
- data/lib/microformats/parser.rb +5 -2
- data/lib/microformats/version.rb +1 -1
- data/spec/lib/microformats/absolute_uri_spec.rb +11 -3
- data/spec/lib/microformats/parser_spec.rb +14 -0
- data/spec/support/lib/edge_cases/blank_href.html +23 -0
- data/spec/support/lib/edge_cases/blank_href.js +15 -0
- data/spec/support/lib/edge_cases/blank_src.html +24 -0
- data/spec/support/lib/edge_cases/blank_src.js +16 -0
- data/spec/support/lib/edge_cases/relative.html +29 -0
- data/spec/support/lib/edge_cases/relative.js +15 -0
- data/spec/support/lib/microformats/blank_href.html +23 -0
- data/spec/support/lib/microformats/blank_href.js +11 -0
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c0e2d46df6df0a2df0e8dfa27d33e61e1327d1f
|
4
|
+
data.tar.gz: 0e1ad7b965a34f19fd3593f4740d93751c9ec022
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5dc7e236af033b40fdf763c2682588ed08fce8fe6e38fbfcd3c32512e978835e87865780ca667a979e275ce28afe656d9a554298cd2389a2ab4e53369b83c08
|
7
|
+
data.tar.gz: 6a5f738f750ff5d66a444a86db2b2ba86771073c58ed215fbce9f91a5da95ff24170ef0318abb32f6ec2ab84c9caab1a3cd0b865a07c8526867bea1fe862a112
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -10,9 +10,9 @@ module Microformats
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def absolutize
|
13
|
-
|
14
|
-
return nil if relative.nil? or relative == ""
|
13
|
+
return base if relative.nil? or relative == ""
|
15
14
|
return relative if relative =~ /^https?:\/\//
|
15
|
+
return base + relative if relative =~ /^#/
|
16
16
|
|
17
17
|
uri = URI.parse(relative)
|
18
18
|
|
data/lib/microformats/parser.rb
CHANGED
@@ -28,11 +28,11 @@ module Microformats
|
|
28
28
|
document.traverse do |node|
|
29
29
|
if not node.attribute('src').nil?
|
30
30
|
absolute_url = Microformats::AbsoluteUri.new(node.attribute('src').value.to_s, base: @base).absolutize
|
31
|
-
node.attribute('src').value = absolute_url
|
31
|
+
node.attribute('src').value = absolute_url.to_s
|
32
32
|
|
33
33
|
elsif not node.attribute('href').nil?
|
34
34
|
absolute_url = Microformats::AbsoluteUri.new(node.attribute('href').value.to_s, base: @base).absolutize
|
35
|
-
node.attribute('href').value = absolute_url
|
35
|
+
node.attribute('href').value = absolute_url.to_s
|
36
36
|
end
|
37
37
|
end
|
38
38
|
parse_node(document)
|
@@ -46,6 +46,9 @@ module Microformats
|
|
46
46
|
@http_headers = response.meta if response.respond_to?(:meta)
|
47
47
|
@http_body = response.read
|
48
48
|
end
|
49
|
+
if @base.nil?
|
50
|
+
@base = html
|
51
|
+
end
|
49
52
|
@http_body
|
50
53
|
rescue Errno::ENOENT, Errno::ENAMETOOLONG => e
|
51
54
|
@http_body = html
|
data/lib/microformats/version.rb
CHANGED
@@ -4,19 +4,21 @@ require "microformats/absolute_uri"
|
|
4
4
|
describe Microformats::AbsoluteUri do
|
5
5
|
describe "#absolutize" do
|
6
6
|
subject { Microformats::AbsoluteUri.new(relative, base: base).absolutize }
|
7
|
-
let(:base) { nil }
|
8
7
|
|
9
8
|
context "when relative is nil" do
|
10
9
|
let(:relative) { nil }
|
11
|
-
|
10
|
+
let(:base) { "http://example.com" }
|
11
|
+
it { should eq base }
|
12
12
|
end
|
13
13
|
|
14
14
|
context "when relative is an empty string" do
|
15
15
|
let(:relative) { "" }
|
16
|
-
|
16
|
+
let(:base) { "http://example.com" }
|
17
|
+
it { should eq base }
|
17
18
|
end
|
18
19
|
|
19
20
|
context "when relative is a valid absolute URI" do
|
21
|
+
let(:base) { nil }
|
20
22
|
let(:relative) { "http://google.com" }
|
21
23
|
it { should eq("http://google.com") }
|
22
24
|
end
|
@@ -38,9 +40,15 @@ describe Microformats::AbsoluteUri do
|
|
38
40
|
let(:base) { nil }
|
39
41
|
it { should eq("bar/qux") }
|
40
42
|
end
|
43
|
+
|
44
|
+
context "and base has a subdir" do
|
45
|
+
let(:base) { "http://google.com/asdf.html" }
|
46
|
+
it { should eq("http://google.com/bar/qux") }
|
47
|
+
end
|
41
48
|
end
|
42
49
|
|
43
50
|
context "when relative is an invalid URI" do
|
51
|
+
let(:base) { nil }
|
44
52
|
let(:relative) { "git@github.com:indieweb/microformats-ruby.git" }
|
45
53
|
it { should eq("git@github.com:indieweb/microformats-ruby.git") }
|
46
54
|
end
|
@@ -39,6 +39,20 @@ describe Microformats::Parser do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
describe "edge cases" do
|
43
|
+
cases_dir = "spec/support/lib/edge_cases/"
|
44
|
+
Dir[File.join(cases_dir, "*")].keep_if { |f| f =~ /([.]js$)/ }.each do |json_file|
|
45
|
+
it "#{json_file.split("/").last}" do
|
46
|
+
|
47
|
+
html_file = json_file.gsub(/([.]js$)/, ".html")
|
48
|
+
html = open(html_file).read
|
49
|
+
json = open(json_file).read
|
50
|
+
|
51
|
+
expect(JSON.parse(Microformats.parse(html).to_json)).to eq(JSON.parse(json))
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
42
56
|
describe "microformat-tests/tests" do
|
43
57
|
cases_dir = "vendor/tests/tests/*"
|
44
58
|
#cases_dir = "vendor/tests/tests/microformats-mixed"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<base href="http://example.org/">
|
4
|
+
<body>
|
5
|
+
<div class="h-card">
|
6
|
+
<a href="/" class="u-url p-name">
|
7
|
+
Jessica Lynn Suttles
|
8
|
+
</a>
|
9
|
+
<a href="" class="u-url">
|
10
|
+
@jlsuttles
|
11
|
+
</a>
|
12
|
+
<a href="http://twitter.com/jlsuttles" class="u-url">
|
13
|
+
@jlsuttles
|
14
|
+
</a>
|
15
|
+
<time class="dt-bday" datetime="1990-10-15">
|
16
|
+
October 15, 1990
|
17
|
+
</time>
|
18
|
+
<div class="e-content">
|
19
|
+
<p>Vegan. Cat lover. Coder.</p>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</body>
|
23
|
+
</html>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{ "items": [{
|
2
|
+
"type": ["h-card"],
|
3
|
+
"properties": {
|
4
|
+
"url": ["http://example.org/", "http://example.org/", "http://twitter.com/jlsuttles"],
|
5
|
+
"name": ["Jessica Lynn Suttles"],
|
6
|
+
"bday": ["1990-10-15"],
|
7
|
+
"content": [{
|
8
|
+
"value": "Vegan. Cat lover. Coder.",
|
9
|
+
"html": "\n <p>Vegan. Cat lover. Coder.</p>\n"
|
10
|
+
}]
|
11
|
+
}
|
12
|
+
}],
|
13
|
+
"rels": {},
|
14
|
+
"rel-urls": {}
|
15
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<base href="http://example.org/">
|
4
|
+
<body>
|
5
|
+
<div class="h-card">
|
6
|
+
<img src="" class="u-photo" />
|
7
|
+
<a href="/" class="u-url p-name">
|
8
|
+
Jessica Lynn Suttles
|
9
|
+
</a>
|
10
|
+
<a href="http://flickr.com" class="u-url">
|
11
|
+
@jlsuttles
|
12
|
+
</a>
|
13
|
+
<a href="http://twitter.com/jlsuttles" class="u-url">
|
14
|
+
@jlsuttles
|
15
|
+
</a>
|
16
|
+
<time class="dt-bday" datetime="1990-10-15">
|
17
|
+
October 15, 1990
|
18
|
+
</time>
|
19
|
+
<div class="e-content">
|
20
|
+
<p>Vegan. Cat lover. Coder.</p>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</body>
|
24
|
+
</html>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{ "items": [{
|
2
|
+
"type": ["h-card"],
|
3
|
+
"properties": {
|
4
|
+
"photo": ["http://example.org/"],
|
5
|
+
"url": ["http://example.org/", "http://flickr.com", "http://twitter.com/jlsuttles"],
|
6
|
+
"name": ["Jessica Lynn Suttles"],
|
7
|
+
"bday": ["1990-10-15"],
|
8
|
+
"content": [{
|
9
|
+
"value": "Vegan. Cat lover. Coder.",
|
10
|
+
"html": "\n <p>Vegan. Cat lover. Coder.</p>\n"
|
11
|
+
}]
|
12
|
+
}
|
13
|
+
}],
|
14
|
+
"rels": {},
|
15
|
+
"rel-urls": {}
|
16
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<base href="http://example.org/index.html">
|
4
|
+
<body>
|
5
|
+
<div class="h-card">
|
6
|
+
<a href="/" class="u-url p-name">
|
7
|
+
Jessica Lynn Suttles
|
8
|
+
</a>
|
9
|
+
<a href="relative/page.html" class="u-url">
|
10
|
+
@jlsuttles
|
11
|
+
</a>
|
12
|
+
<a href="http://twitter.com/jlsuttles" class="u-url">
|
13
|
+
@jlsuttles
|
14
|
+
</a>
|
15
|
+
<a href="#fragment" class="u-url">
|
16
|
+
something on this page
|
17
|
+
</a>
|
18
|
+
<a href="#" class="u-url">
|
19
|
+
this page
|
20
|
+
</a>
|
21
|
+
<time class="dt-bday" datetime="1990-10-15">
|
22
|
+
October 15, 1990
|
23
|
+
</time>
|
24
|
+
<div class="e-content">
|
25
|
+
<p>Vegan. Cat lover. Coder.</p>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</body>
|
29
|
+
</html>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{ "items": [{
|
2
|
+
"type": ["h-card"],
|
3
|
+
"properties": {
|
4
|
+
"url": ["http://example.org/", "http://example.org/relative/page.html", "http://twitter.com/jlsuttles", "http://example.org/index.html#fragment", "http://example.org/index.html#" ],
|
5
|
+
"name": ["Jessica Lynn Suttles"],
|
6
|
+
"bday": ["1990-10-15"],
|
7
|
+
"content": [{
|
8
|
+
"value": "Vegan. Cat lover. Coder.",
|
9
|
+
"html": "\n <p>Vegan. Cat lover. Coder.</p>\n"
|
10
|
+
}]
|
11
|
+
}
|
12
|
+
}],
|
13
|
+
"rels": {},
|
14
|
+
"rel-urls": {}
|
15
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<base href="http://example.org/">
|
4
|
+
<body>
|
5
|
+
<div class="h-card">
|
6
|
+
<a href="/" class="u-url p-name">
|
7
|
+
Jessica Lynn Suttles
|
8
|
+
</a>
|
9
|
+
<a href="" class="u-url">
|
10
|
+
@jlsuttles
|
11
|
+
</a>
|
12
|
+
<a href="http://twitter.com/jlsuttles" class="u-url">
|
13
|
+
@jlsuttles
|
14
|
+
</a>
|
15
|
+
<time class="dt-bday" datetime="1990-10-15">
|
16
|
+
October 15, 1990
|
17
|
+
</time>
|
18
|
+
<div class="e-content">
|
19
|
+
<p>Vegan. Cat lover. Coder.</p>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</body>
|
23
|
+
</html>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
{ "items": [{
|
2
|
+
"type": ["h-card"],
|
3
|
+
"properties": {
|
4
|
+
"url": ["http://example.org/", "", "http://twitter.com/jlsuttles"],
|
5
|
+
"name": ["Jessica Lynn Suttles"],
|
6
|
+
"bday": ["1990-10-15"],
|
7
|
+
"content": ["<p>Vegan. Cat lover. Coder.</p>"]
|
8
|
+
}
|
9
|
+
}],
|
10
|
+
"rels": {}
|
11
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: microformats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shane Becker
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-05-
|
13
|
+
date: 2017-05-18 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -179,6 +179,14 @@ files:
|
|
179
179
|
- spec/support/cases/microformats.org/microformats-2/microformats-2-8.js
|
180
180
|
- spec/support/cases/microformats.org/microformats-2/microformats-2-9.html
|
181
181
|
- spec/support/cases/microformats.org/microformats-2/microformats-2-9.js
|
182
|
+
- spec/support/lib/edge_cases/blank_href.html
|
183
|
+
- spec/support/lib/edge_cases/blank_href.js
|
184
|
+
- spec/support/lib/edge_cases/blank_src.html
|
185
|
+
- spec/support/lib/edge_cases/blank_src.js
|
186
|
+
- spec/support/lib/edge_cases/relative.html
|
187
|
+
- spec/support/lib/edge_cases/relative.js
|
188
|
+
- spec/support/lib/microformats/blank_href.html
|
189
|
+
- spec/support/lib/microformats/blank_href.js
|
182
190
|
- spec/support/lib/microformats/implied_property/name-fail.html
|
183
191
|
- spec/support/lib/microformats/implied_property/name-pass.html
|
184
192
|
- spec/support/lib/microformats/implied_property/photo-fail.html
|
@@ -500,7 +508,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
500
508
|
version: '0'
|
501
509
|
requirements: []
|
502
510
|
rubyforge_project:
|
503
|
-
rubygems_version: 2.
|
511
|
+
rubygems_version: 2.5.1
|
504
512
|
signing_key:
|
505
513
|
specification_version: 4
|
506
514
|
summary: Microformats and microformats2 parser
|
@@ -529,6 +537,14 @@ test_files:
|
|
529
537
|
- spec/support/cases/microformats.org/microformats-2/microformats-2-8.js
|
530
538
|
- spec/support/cases/microformats.org/microformats-2/microformats-2-9.html
|
531
539
|
- spec/support/cases/microformats.org/microformats-2/microformats-2-9.js
|
540
|
+
- spec/support/lib/edge_cases/blank_href.html
|
541
|
+
- spec/support/lib/edge_cases/blank_href.js
|
542
|
+
- spec/support/lib/edge_cases/blank_src.html
|
543
|
+
- spec/support/lib/edge_cases/blank_src.js
|
544
|
+
- spec/support/lib/edge_cases/relative.html
|
545
|
+
- spec/support/lib/edge_cases/relative.js
|
546
|
+
- spec/support/lib/microformats/blank_href.html
|
547
|
+
- spec/support/lib/microformats/blank_href.js
|
532
548
|
- spec/support/lib/microformats/implied_property/name-fail.html
|
533
549
|
- spec/support/lib/microformats/implied_property/name-pass.html
|
534
550
|
- spec/support/lib/microformats/implied_property/photo-fail.html
|