jekyll-redirect-from 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.markdown +7 -0
- data/README.md +2 -1
- data/lib/jekyll-redirect-from/redirect_page.rb +3 -1
- data/lib/jekyll-redirect-from/redirector.rb +8 -3
- data/lib/jekyll-redirect-from/version.rb +1 -1
- data/spec/fixtures/_articles/redirect-somewhere-else-im-a-permalink.html +7 -0
- data/spec/fixtures/_layouts/layout.html +6 -0
- data/spec/fixtures/tags/how we work.md +4 -0
- data/spec/jekyll_redirect_from/redirect_page_spec.rb +1 -1
- data/spec/jekyll_redirect_from/redirector_spec.rb +47 -14
- data/spec/spec_helper.rb +5 -1
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d791a13d885f60395b4ae51369248e46e4b049b
|
4
|
+
data.tar.gz: d4bb94fb82a1dca865b49d404ec035ce037b3e65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d918ab960428cd3d81738dddf6c8b66a68560ea686db49d29c775d0c722ea5ea3cd5d4722e1ffa67f7ad6eaf6ab802a91332a9a30a5bd3c16a316d2afd82cc39
|
7
|
+
data.tar.gz: a9c2dd79f38008c59b9fca3314bea0a4d3c1b1a51bb218e60e4837bcf75f33ba7fcc3be67dd55a6aa4e2011c9f6c9eaf6074503e4318764485a75cded95e19c0
|
data/History.markdown
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## 0.11.0 / 2016-07-06
|
2
|
+
|
3
|
+
* Redirect page should not have any layout (#106)
|
4
|
+
* Include absolute path in canonical url (#109)
|
5
|
+
* Add <html> tag and language (#100)
|
6
|
+
* Ensure redirect_to links produce an HTML file. (#111)
|
7
|
+
|
1
8
|
## 0.10.0 / 2016-03-16
|
2
9
|
|
3
10
|
* Ensure output extension is assigned (#96)
|
data/README.md
CHANGED
@@ -117,7 +117,8 @@ redirect_to:
|
|
117
117
|
|
118
118
|
If you have multiple `redirect_to`s set, only the first one will be respected.
|
119
119
|
|
120
|
-
|
120
|
+
|
121
|
+
**Note**: Using `redirect_to` or `redirect_from` with collections will only work with files which are output to HTML, such as `.md`, `.textile`, `.html` etc.
|
121
122
|
|
122
123
|
## Contributing
|
123
124
|
|
@@ -15,7 +15,7 @@ module JekyllRedirectFrom
|
|
15
15
|
@name = name
|
16
16
|
|
17
17
|
self.process(name)
|
18
|
-
self.data = {}
|
18
|
+
self.data = { "layout" => nil }
|
19
19
|
|
20
20
|
data.default_proc = proc do |_, key|
|
21
21
|
site.frontmatter_defaults.find(File.join(dir, name), type, key)
|
@@ -27,6 +27,7 @@ module JekyllRedirectFrom
|
|
27
27
|
def generate_redirect_content(item_url)
|
28
28
|
self.output = self.content = <<-EOF
|
29
29
|
<!DOCTYPE html>
|
30
|
+
<html lang="en-US">
|
30
31
|
<meta charset="utf-8">
|
31
32
|
<title>Redirecting…</title>
|
32
33
|
<link rel="canonical" href="#{item_url}">
|
@@ -34,6 +35,7 @@ module JekyllRedirectFrom
|
|
34
35
|
<h1>Redirecting…</h1>
|
35
36
|
<a href="#{item_url}">Click here if you are not redirected.</a>
|
36
37
|
<script>location="#{item_url}"</script>
|
38
|
+
</html>
|
37
39
|
EOF
|
38
40
|
end
|
39
41
|
end
|
@@ -23,7 +23,10 @@ module JekyllRedirectFrom
|
|
23
23
|
if has_redirect_to_url?(item)
|
24
24
|
redirect_to_url(item).flatten.each do |alt_url|
|
25
25
|
item.data['sitemap'] = false
|
26
|
+
|
27
|
+
item.url << "index.html" if item.url.end_with?("/")
|
26
28
|
redirect_page = RedirectPage.new(site, site.source, File.dirname(item.url), File.basename(item.url))
|
29
|
+
|
27
30
|
redirect_page.data['permalink'] = item.url
|
28
31
|
redirect_page.data['sitemap'] = false
|
29
32
|
redirect_page.generate_redirect_content(alt_url)
|
@@ -69,7 +72,7 @@ module JekyllRedirectFrom
|
|
69
72
|
end
|
70
73
|
|
71
74
|
def redirect_prefix(site)
|
72
|
-
config_github_url(site) ||
|
75
|
+
config_github_url(site) || config_url(site)
|
73
76
|
end
|
74
77
|
|
75
78
|
def config_github_url(site)
|
@@ -79,8 +82,10 @@ module JekyllRedirectFrom
|
|
79
82
|
end
|
80
83
|
end
|
81
84
|
|
82
|
-
def
|
83
|
-
site.config.fetch('
|
85
|
+
def config_url(site)
|
86
|
+
url = site.config.fetch('url', nil) || ""
|
87
|
+
baseurl = site.config.fetch('baseurl', nil) || ""
|
88
|
+
File.join url, baseurl
|
84
89
|
end
|
85
90
|
end
|
86
91
|
end
|
@@ -10,7 +10,7 @@ describe JekyllRedirectFrom::RedirectPage do
|
|
10
10
|
|
11
11
|
context "#generate_redirect_content" do
|
12
12
|
it "sets the #content to the generated refresh page" do
|
13
|
-
expect(page_content).to eq("<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Redirecting…</title>\n<link rel=\"canonical\" href=\"#{item_url}\">\n<meta http-equiv=\"refresh\" content=\"0; url=#{item_url}\">\n<h1>Redirecting…</h1>\n<a href=\"#{item_url}\">Click here if you are not redirected.</a>\n<script>location=\"#{item_url}\"</script>\n")
|
13
|
+
expect(page_content).to eq("<!DOCTYPE html>\n<html lang=\"en-US\">\n<meta charset=\"utf-8\">\n<title>Redirecting…</title>\n<link rel=\"canonical\" href=\"#{item_url}\">\n<meta http-equiv=\"refresh\" content=\"0; url=#{item_url}\">\n<h1>Redirecting…</h1>\n<a href=\"#{item_url}\">Click here if you are not redirected.</a>\n<script>location=\"#{item_url}\"</script>\n</html>\n")
|
14
14
|
end
|
15
15
|
|
16
16
|
it "contains the meta refresh tag" do
|
@@ -5,10 +5,12 @@ describe JekyllRedirectFrom::Redirector do
|
|
5
5
|
let(:post_to_redirect) { setup_post("2014-01-03-redirect-me-plz.md") }
|
6
6
|
let(:doc_to_redirect_from) { setup_doc("redirect-me-plz.md") }
|
7
7
|
let(:doc_to_redirect_to) { setup_doc("redirect-somewhere-else-plz.html") }
|
8
|
+
let(:doc_to_redirect_to_permalnk) { setup_doc("redirect-somewhere-else-im-a-permalink.html") }
|
8
9
|
let(:page_with_one) { setup_page("one_redirect_url.md") }
|
9
10
|
let(:page_with_many) { setup_page("multiple_redirect_urls.md") }
|
10
11
|
let(:page_with_one_redirect_to) { setup_page("one_redirect_to.md") }
|
11
12
|
let(:page_with_many_redirect_to) { setup_page("multiple_redirect_tos.md") }
|
13
|
+
let(:page_to_redirect_to_permlnk) { setup_page("tags/how we work.md") }
|
12
14
|
|
13
15
|
it "knows if a page or post is requesting a redirect page" do
|
14
16
|
if JekyllRedirectFrom.jekyll_3?
|
@@ -26,6 +28,10 @@ describe JekyllRedirectFrom::Redirector do
|
|
26
28
|
expect(redirector.redirect_to_url(doc_to_redirect_to)).to eql(["http://www.zombo.com"])
|
27
29
|
end
|
28
30
|
|
31
|
+
it "knows if a document is requesting a redirect away" do
|
32
|
+
expect(redirector.redirect_to_url(doc_to_redirect_to_permalnk)).to eql(["/tags/our-projects/"])
|
33
|
+
end
|
34
|
+
|
29
35
|
it "handles one redirect path" do
|
30
36
|
expect(redirector.alt_urls(page_with_one)).to eql(["mencius/was/my/father"])
|
31
37
|
end
|
@@ -71,6 +77,12 @@ describe JekyllRedirectFrom::Redirector do
|
|
71
77
|
expect(dest_dir("articles", "redirect-somewhere-else-plz.html").read).to include(%|<meta http-equiv="refresh" content="0; url=http://www.zombo.com">|)
|
72
78
|
end
|
73
79
|
|
80
|
+
it "generates the refresh page for the collection with one redirect_to url and a permalink" do
|
81
|
+
expect(dest_dir("tags", "our projects", "index")).not_to exist
|
82
|
+
expect(dest_dir("tags", "our projects", "index.html")).to exist
|
83
|
+
expect(dest_dir("tags", "our projects", "index.html").read).to include(%|<meta http-equiv="refresh" content="0; url=/tags/our-projects/">|)
|
84
|
+
end
|
85
|
+
|
74
86
|
it "generates the refresh page for the page with one redirect_to url" do
|
75
87
|
expect(dest_dir("one_redirect_to.html")).to exist
|
76
88
|
expect(dest_dir("one_redirect_to.html").read).to include(%|<meta http-equiv="refresh" content="0; url=https://www.github.com">|)
|
@@ -80,36 +92,57 @@ describe JekyllRedirectFrom::Redirector do
|
|
80
92
|
expect(dest_dir("multiple_redirect_tos.html")).to exist
|
81
93
|
expect(dest_dir("multiple_redirect_tos.html").read).to include(%|<meta http-equiv="refresh" content="0; url=https://www.jekyllrb.com">|)
|
82
94
|
end
|
95
|
+
|
96
|
+
it "does not include any default layout" do
|
97
|
+
expect(dest_dir("multiple_redirect_tos.html")).to exist
|
98
|
+
expect(dest_dir("multiple_redirect_tos.html").read).not_to include('LAYOUT INCLUDED')
|
99
|
+
end
|
100
|
+
|
101
|
+
it "generates the refresh page for the page with one redirect_to url and a permalink" do
|
102
|
+
expect(dest_dir("tags", "how we work", "index")).not_to exist
|
103
|
+
expect(dest_dir("tags", "how we work", "index.html")).to exist
|
104
|
+
expect(dest_dir("tags", "how we work", "index.html").read).to include(%|<meta http-equiv="refresh" content="0; url=/tags/how-we-work/">|)
|
105
|
+
end
|
83
106
|
end
|
84
107
|
|
85
108
|
context "prefix" do
|
86
|
-
it "uses site.
|
87
|
-
@site.config['
|
88
|
-
|
109
|
+
it "uses site.url as the redirect prefix when site.github.url is not set" do
|
110
|
+
@site.config['url'] = "http://notgithub.io"
|
111
|
+
@site.config['baseurl'] = nil
|
112
|
+
expect(redirector.redirect_url(@site, page_with_one)).to eql("http://notgithub.io/one_redirect_url.html")
|
89
113
|
end
|
90
114
|
|
91
|
-
it "
|
92
|
-
@site.config['
|
93
|
-
|
115
|
+
it "uses site.baseurl as the redirect prefix when site.github.url is not set" do
|
116
|
+
@site.config['url'] = nil
|
117
|
+
@site.config['baseurl'] = "/fancy/prefix"
|
118
|
+
expect(redirector.redirect_url(@site, page_with_one)).to eql("/fancy/prefix/one_redirect_url.html")
|
94
119
|
end
|
95
120
|
|
96
|
-
it "uses site.baseurl as the redirect prefix when site.github.url is not set" do
|
121
|
+
it "uses site.url + site.baseurl as the redirect prefix when site.github.url is not set" do
|
122
|
+
@site.config['url'] = "http://notgithub.io"
|
97
123
|
@site.config['baseurl'] = "/fancy/prefix"
|
98
|
-
expect(redirector.redirect_url(@site, page_with_one)).to
|
124
|
+
expect(redirector.redirect_url(@site, page_with_one)).to eql("http://notgithub.io/fancy/prefix/one_redirect_url.html")
|
99
125
|
end
|
100
126
|
|
101
|
-
it "prefers site.github.url over site.baseurl" do
|
127
|
+
it "prefers site.github.url over site.url or site.baseurl" do
|
128
|
+
@site.config['url'] = "http://notgithub.io"
|
129
|
+
@site.config['baseurl'] = "/fancy/prefix"
|
102
130
|
@site.config['github'] = { "url" => "http://example.github.io/test" }
|
103
|
-
@site.
|
104
|
-
expect(redirector.redirect_url(@site, page_with_one)).to start_with("http://example.github.io/test")
|
131
|
+
expect(redirector.redirect_url(@site, page_with_one)).to eql("http://example.github.io/test/one_redirect_url.html")
|
105
132
|
end
|
106
133
|
|
107
|
-
it "
|
108
|
-
|
134
|
+
it "converts non-string values in site.github.url to strings" do
|
135
|
+
@site.config['github'] = { "url" => TestStringContainer.new("http://example.github.io/test") }
|
136
|
+
expect(redirector.redirect_url(@site, page_with_one)).to eql("http://example.github.io/test/one_redirect_url.html")
|
109
137
|
end
|
110
138
|
|
111
|
-
it "
|
139
|
+
it "uses site.url when site.github is set but site.github.url is not" do
|
112
140
|
@site.config['github'] = "username"
|
141
|
+
expect(redirector.redirect_url(@site, page_with_one)).to eql("http://jekyllrb.com/one_redirect_url.html")
|
142
|
+
end
|
143
|
+
|
144
|
+
it "no-ops when site.github.url and site.baseurl and site.url are not set" do
|
145
|
+
@site.config['url'] = nil
|
113
146
|
expect(redirector.redirect_url(@site, page_with_one)).to eql("/one_redirect_url.html")
|
114
147
|
end
|
115
148
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -26,7 +26,11 @@ RSpec.configure do |config|
|
|
26
26
|
"collections" => {
|
27
27
|
"articles" => {"output" => true},
|
28
28
|
"authors" => {}
|
29
|
-
}
|
29
|
+
},
|
30
|
+
"defaults" => [{
|
31
|
+
"scope" => { "path" => "" },
|
32
|
+
"values" => { "layout" => "layout" }
|
33
|
+
}]
|
30
34
|
}))
|
31
35
|
|
32
36
|
@dest.rmtree if @dest.exist?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-redirect-from
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Parker Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -105,14 +105,17 @@ files:
|
|
105
105
|
- script/release
|
106
106
|
- script/test
|
107
107
|
- spec/fixtures/_articles/redirect-me-plz.md
|
108
|
+
- spec/fixtures/_articles/redirect-somewhere-else-im-a-permalink.html
|
108
109
|
- spec/fixtures/_articles/redirect-somewhere-else-plz.html
|
109
110
|
- spec/fixtures/_authors/kansaichris.md
|
110
111
|
- spec/fixtures/_config.yml
|
112
|
+
- spec/fixtures/_layouts/layout.html
|
111
113
|
- spec/fixtures/_posts/2014-01-03-redirect-me-plz.md
|
112
114
|
- spec/fixtures/multiple_redirect_tos.md
|
113
115
|
- spec/fixtures/multiple_redirect_urls.md
|
114
116
|
- spec/fixtures/one_redirect_to.md
|
115
117
|
- spec/fixtures/one_redirect_url.md
|
118
|
+
- spec/fixtures/tags/how we work.md
|
116
119
|
- spec/integrations_spec.rb
|
117
120
|
- spec/jekyll_redirect_from/redirect_page_spec.rb
|
118
121
|
- spec/jekyll_redirect_from/redirector_spec.rb
|
@@ -137,20 +140,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
140
|
version: '0'
|
138
141
|
requirements: []
|
139
142
|
rubyforge_project:
|
140
|
-
rubygems_version: 2.
|
143
|
+
rubygems_version: 2.4.8
|
141
144
|
signing_key:
|
142
145
|
specification_version: 4
|
143
146
|
summary: Seamlessly specify multiple redirection URLs for your pages and posts
|
144
147
|
test_files:
|
145
148
|
- spec/fixtures/_articles/redirect-me-plz.md
|
149
|
+
- spec/fixtures/_articles/redirect-somewhere-else-im-a-permalink.html
|
146
150
|
- spec/fixtures/_articles/redirect-somewhere-else-plz.html
|
147
151
|
- spec/fixtures/_authors/kansaichris.md
|
148
152
|
- spec/fixtures/_config.yml
|
153
|
+
- spec/fixtures/_layouts/layout.html
|
149
154
|
- spec/fixtures/_posts/2014-01-03-redirect-me-plz.md
|
150
155
|
- spec/fixtures/multiple_redirect_tos.md
|
151
156
|
- spec/fixtures/multiple_redirect_urls.md
|
152
157
|
- spec/fixtures/one_redirect_to.md
|
153
158
|
- spec/fixtures/one_redirect_url.md
|
159
|
+
- spec/fixtures/tags/how we work.md
|
154
160
|
- spec/integrations_spec.rb
|
155
161
|
- spec/jekyll_redirect_from/redirect_page_spec.rb
|
156
162
|
- spec/jekyll_redirect_from/redirector_spec.rb
|