jekyll-redirect-from 0.10.0 → 0.11.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 +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
         |