jekyll-redirect-from 0.9.1 → 0.10.0
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/History.markdown +5 -1
- data/lib/jekyll-redirect-from.rb +7 -0
- data/lib/jekyll-redirect-from/redirect_page.rb +10 -2
- data/lib/jekyll-redirect-from/redirector.rb +1 -1
- data/lib/jekyll-redirect-from/version.rb +1 -1
- data/script/test +2 -0
- data/spec/integrations_spec.rb +4 -4
- data/spec/jekyll_redirect_from/redirect_page_spec.rb +12 -6
- data/spec/jekyll_redirect_from/redirector_spec.rb +15 -15
- data/spec/spec_helper.rb +8 -15
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fa3f92815ea1139cb6a777eec89fea9088c969a
|
4
|
+
data.tar.gz: c2eacde6b4baf40005a2bcdfeabdad17583c3f87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fa268f45a18a89bc730731c3bf607cb83eaba4305b5e0d661675699179f791e818092b2b5b10a568bcc8120344dc96b07d82630ae748dbcecf8cdb7d56743e5
|
7
|
+
data.tar.gz: 76bf75329d712007916612d41258a977e1ef3b7e48bb3408d3de734b3fa9ee181f7a65814e47dd8ef6d140f94092c53ec0ae4d6bbb187787f47e9a20e513a0fc
|
data/History.markdown
CHANGED
data/lib/jekyll-redirect-from.rb
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
require "jekyll"
|
2
|
+
|
3
|
+
module JekyllRedirectFrom
|
4
|
+
def self.jekyll_3?
|
5
|
+
@jekyll_3 ||= (Jekyll::VERSION >= '3.0.0')
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
2
9
|
require "jekyll-redirect-from/version"
|
3
10
|
require "jekyll-redirect-from/redirect_page"
|
4
11
|
require "jekyll-redirect-from/redirector"
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# Encoding: utf-8
|
2
|
+
|
1
3
|
module JekyllRedirectFrom
|
2
4
|
class RedirectPage < Jekyll::Page
|
3
5
|
# Initialize a new RedirectPage.
|
@@ -14,16 +16,22 @@ module JekyllRedirectFrom
|
|
14
16
|
|
15
17
|
self.process(name)
|
16
18
|
self.data = {}
|
19
|
+
|
20
|
+
data.default_proc = proc do |_, key|
|
21
|
+
site.frontmatter_defaults.find(File.join(dir, name), type, key)
|
22
|
+
end
|
23
|
+
|
24
|
+
Jekyll::Hooks.trigger :pages, :post_init, self if JekyllRedirectFrom.jekyll_3?
|
17
25
|
end
|
18
26
|
|
19
27
|
def generate_redirect_content(item_url)
|
20
28
|
self.output = self.content = <<-EOF
|
21
29
|
<!DOCTYPE html>
|
22
30
|
<meta charset="utf-8">
|
23
|
-
<title>Redirecting
|
31
|
+
<title>Redirecting…</title>
|
24
32
|
<link rel="canonical" href="#{item_url}">
|
25
33
|
<meta http-equiv="refresh" content="0; url=#{item_url}">
|
26
|
-
<h1>Redirecting
|
34
|
+
<h1>Redirecting…</h1>
|
27
35
|
<a href="#{item_url}">Click here if you are not redirected.</a>
|
28
36
|
<script>location="#{item_url}"</script>
|
29
37
|
EOF
|
@@ -13,7 +13,7 @@ module JekyllRedirectFrom
|
|
13
13
|
list.each do |item|
|
14
14
|
if has_alt_urls?(item)
|
15
15
|
alt_urls(item).each do |alt_url|
|
16
|
-
redirect_page = RedirectPage.new(site, site.source, "", "")
|
16
|
+
redirect_page = RedirectPage.new(site, site.source, "", "redirect.html")
|
17
17
|
redirect_page.data['permalink'] = alt_url
|
18
18
|
redirect_page.data['sitemap'] = false
|
19
19
|
redirect_page.generate_redirect_content(redirect_url(site, item))
|
data/script/test
ADDED
data/spec/integrations_spec.rb
CHANGED
@@ -2,12 +2,12 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe("Integration Tests") do
|
4
4
|
it "writes the redirect pages for collection items which are outputted" do
|
5
|
-
expect(
|
6
|
-
expect(
|
5
|
+
expect(dest_dir("articles", "redirect-me-plz.html")).to exist
|
6
|
+
expect(dest_dir("articles", "23128432159832", "mary-had-a-little-lamb#{forced_output_ext}")).to exist
|
7
7
|
end
|
8
8
|
|
9
9
|
it "doesn't write redirect pages for collection items which are not outputted" do
|
10
|
-
expect(
|
11
|
-
expect(
|
10
|
+
expect(dest_dir("authors")).not_to exist
|
11
|
+
expect(dest_dir("kansaichris")).not_to exist
|
12
12
|
end
|
13
13
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# Encoding: utf-8
|
2
|
+
|
1
3
|
require "spec_helper"
|
2
4
|
|
3
5
|
describe JekyllRedirectFrom::RedirectPage do
|
@@ -8,7 +10,7 @@ describe JekyllRedirectFrom::RedirectPage do
|
|
8
10
|
|
9
11
|
context "#generate_redirect_content" do
|
10
12
|
it "sets the #content to the generated refresh page" do
|
11
|
-
expect(page_content).to eq("<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Redirecting
|
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")
|
12
14
|
end
|
13
15
|
|
14
16
|
it "contains the meta refresh tag" do
|
@@ -34,15 +36,19 @@ describe JekyllRedirectFrom::RedirectPage do
|
|
34
36
|
let(:redirect_page) { new_redirect_page(permalink_dir) }
|
35
37
|
|
36
38
|
it "knows to add the index.html if it's a folder" do
|
37
|
-
|
38
|
-
|
39
|
+
expected = dest_dir("posts", "1914798137981389", "larry-had-a-little-lamb", "index.html").to_s
|
40
|
+
dest = redirect_page.destination("/")
|
41
|
+
dest = "#{@site.dest}#{dest}" unless dest.start_with? @site.dest
|
42
|
+
expect(dest).to eql(expected)
|
39
43
|
end
|
40
44
|
end
|
41
45
|
|
42
46
|
context "of a redirect page meant to be a file" do
|
43
47
|
it "knows not to add the index.html if it's not a folder" do
|
44
|
-
|
45
|
-
|
48
|
+
expected = dest_dir("posts", "12435151125", "larry-had-a-little-lamb#{forced_output_ext}").to_s
|
49
|
+
dest = redirect_page.destination("/")
|
50
|
+
dest = "#{@site.dest}#{dest}" unless dest.start_with? @site.dest
|
51
|
+
expect(dest).to eql(expected)
|
46
52
|
end
|
47
53
|
end
|
48
54
|
end
|
@@ -56,7 +62,7 @@ describe JekyllRedirectFrom::RedirectPage do
|
|
56
62
|
end
|
57
63
|
|
58
64
|
it "fetches the path properly" do
|
59
|
-
expect(redirect_page_full_path).to match /\/spec\/fixtures\/\_site\/posts\/12435151125\/larry-had-a-little-lamb$/
|
65
|
+
expect(redirect_page_full_path).to match /\/spec\/fixtures\/\_site\/posts\/12435151125\/larry-had-a-little-lamb#{forced_output_ext}$/
|
60
66
|
end
|
61
67
|
|
62
68
|
it "is written to the proper location" do
|
@@ -11,10 +11,10 @@ describe JekyllRedirectFrom::Redirector do
|
|
11
11
|
let(:page_with_many_redirect_to) { setup_page("multiple_redirect_tos.md") }
|
12
12
|
|
13
13
|
it "knows if a page or post is requesting a redirect page" do
|
14
|
-
if
|
15
|
-
expect(redirector.has_alt_urls?(post_to_redirect)).to be_truthy
|
16
|
-
else
|
14
|
+
if JekyllRedirectFrom.jekyll_3?
|
17
15
|
skip "Don't need to test posts in Jekyll 3"
|
16
|
+
else
|
17
|
+
expect(redirector.has_alt_urls?(post_to_redirect)).to be_truthy
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -52,33 +52,33 @@ describe JekyllRedirectFrom::Redirector do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it "generates the refresh page for the post properly" do
|
55
|
-
expect(
|
55
|
+
expect(dest_dir("posts/23128432159832/mary-had-a-little-lamb#{forced_output_ext}")).to exist
|
56
56
|
end
|
57
57
|
|
58
58
|
it "generates the refresh pages for the page with multiple redirect_from urls" do
|
59
|
-
expect(
|
60
|
-
expect(
|
61
|
-
expect(
|
62
|
-
expect(
|
59
|
+
expect(dest_dir("help")).to be_truthy
|
60
|
+
expect(dest_dir("contact")).to be_truthy
|
61
|
+
expect(dest_dir("let-there/be/light-he-said")).to be_truthy
|
62
|
+
expect(dest_dir("/geepers/mccreepin")).to be_truthy
|
63
63
|
end
|
64
64
|
|
65
65
|
it "generates the refresh page for the page with one redirect_from url" do
|
66
|
-
expect(
|
66
|
+
expect(dest_dir("mencius/was/my/father#{forced_output_ext}")).to exist
|
67
67
|
end
|
68
68
|
|
69
69
|
it "generates the refresh page for the collection with one redirect_to url" do
|
70
|
-
expect(
|
71
|
-
expect(
|
70
|
+
expect(dest_dir("articles", "redirect-somewhere-else-plz.html")).to exist
|
71
|
+
expect(dest_dir("articles", "redirect-somewhere-else-plz.html").read).to include(%|<meta http-equiv="refresh" content="0; url=http://www.zombo.com">|)
|
72
72
|
end
|
73
73
|
|
74
74
|
it "generates the refresh page for the page with one redirect_to url" do
|
75
|
-
expect(
|
76
|
-
expect(
|
75
|
+
expect(dest_dir("one_redirect_to.html")).to exist
|
76
|
+
expect(dest_dir("one_redirect_to.html").read).to include(%|<meta http-equiv="refresh" content="0; url=https://www.github.com">|)
|
77
77
|
end
|
78
78
|
|
79
79
|
it "generates the refresh page for the page with multiple redirect_to urls" do
|
80
|
-
expect(
|
81
|
-
expect(
|
80
|
+
expect(dest_dir("multiple_redirect_tos.html")).to exist
|
81
|
+
expect(dest_dir("multiple_redirect_tos.html").read).to include(%|<meta http-equiv="refresh" content="0; url=https://www.jekyllrb.com">|)
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
data/spec/spec_helper.rb
CHANGED
@@ -38,7 +38,7 @@ RSpec.configure do |config|
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def dest_dir(*paths)
|
41
|
-
|
41
|
+
@dest.join(*paths)
|
42
42
|
end
|
43
43
|
|
44
44
|
def unpublished_doc
|
@@ -57,26 +57,19 @@ RSpec.configure do |config|
|
|
57
57
|
Jekyll::Page.new(@site, @fixtures_path.to_s, File.dirname(file), File.basename(file))
|
58
58
|
end
|
59
59
|
|
60
|
-
def destination_file_exists?(file)
|
61
|
-
File.exists?(File.join(@dest.to_s, file))
|
62
|
-
end
|
63
|
-
|
64
|
-
def destination_file_contents(file)
|
65
|
-
File.read(File.join(@dest.to_s, file))
|
66
|
-
end
|
67
|
-
|
68
|
-
def destination_doc_contents(collection, file)
|
69
|
-
File.read(File.join(@dest.to_s, collection, file))
|
70
|
-
end
|
71
|
-
|
72
60
|
def new_redirect_page(permalink)
|
73
|
-
page = JekyllRedirectFrom::RedirectPage.new(@site, @site.source, "", "")
|
61
|
+
page = JekyllRedirectFrom::RedirectPage.new(@site, @site.source, "", "index.html")
|
74
62
|
page.data['permalink'] = permalink
|
63
|
+
page.data['sitemap'] = false
|
75
64
|
page
|
76
65
|
end
|
77
66
|
|
78
67
|
def destination_sitemap
|
79
|
-
|
68
|
+
@dest.join("sitemap.xml").read
|
69
|
+
end
|
70
|
+
|
71
|
+
def forced_output_ext
|
72
|
+
JekyllRedirectFrom.jekyll_3? ? ".html" : ""
|
80
73
|
end
|
81
74
|
end
|
82
75
|
|
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.10.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:
|
11
|
+
date: 2016-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -103,6 +103,7 @@ files:
|
|
103
103
|
- script/bootstrap
|
104
104
|
- script/cibuild
|
105
105
|
- script/release
|
106
|
+
- script/test
|
106
107
|
- spec/fixtures/_articles/redirect-me-plz.md
|
107
108
|
- spec/fixtures/_articles/redirect-somewhere-else-plz.html
|
108
109
|
- spec/fixtures/_authors/kansaichris.md
|
@@ -136,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
137
|
version: '0'
|
137
138
|
requirements: []
|
138
139
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.
|
140
|
+
rubygems_version: 2.5.1
|
140
141
|
signing_key:
|
141
142
|
specification_version: 4
|
142
143
|
summary: Seamlessly specify multiple redirection URLs for your pages and posts
|