jekyll-redirects 0.0.1

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.
Files changed (2) hide show
  1. data/lib/jekyll-redirects.rb +58 -0
  2. metadata +46 -0
@@ -0,0 +1,58 @@
1
+ module Jekyll
2
+
3
+ # The redirect page creates a simple page that refreshes a user from a URL alias to an existing post.
4
+ # Redirects are only generated if there is a "redirects" parameter _config.yml
5
+
6
+ class Redirects < Generator
7
+
8
+ safe true
9
+ priority :low
10
+
11
+ # only process redirects if it's set in the config file
12
+ def generate(site)
13
+ generate_redirects(site) if (site.config['redirects'])
14
+ end
15
+
16
+ # find all posts with a redirect property and create a new page for each entry
17
+ def generate_redirects(site)
18
+ redirecting_pages(site).each do |page|
19
+ page.data['redirects'].each do |r|
20
+ redirect = RedirectPage.new(site, site.source, r, destination_for(page))
21
+ redirect.render(site.layouts, site.site_payload)
22
+ redirect.write(site.dest)
23
+ site.pages << redirect
24
+ end
25
+ end
26
+ end
27
+
28
+
29
+ def redirecting_pages(site)
30
+ (site.posts + site.pages).select{|x| x.data.key? 'redirects' }
31
+ end
32
+
33
+ def destination_for(page)
34
+ page.data.fetch("redirects_to", page.url)
35
+ end
36
+
37
+ end
38
+
39
+ # a class for generating the redirect pages.
40
+ class RedirectPage < Page
41
+
42
+ def initialize(site, base, path, destination)
43
+
44
+ @site = site
45
+ @base = base
46
+ @dir = path
47
+ @name = 'index.html'
48
+ self.process(@name)
49
+
50
+ # Read the YAML data from the layout page.
51
+ self.read_yaml(File.join(base, '_layouts'), 'redirect.html')
52
+ self.data['source_url'] = destination
53
+
54
+ end
55
+
56
+ end
57
+
58
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-redirects
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Keith Marran
9
+ - Zee Spencer
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-02-06 00:00:00.000000000 Z
14
+ dependencies: []
15
+ description: A Jekyll extension that makes redirecting within your site a breeze!
16
+ email: zee@zeespencer.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/jekyll-redirects.rb
22
+ homepage: http://rubygems.org/gems/jekyll-redirects
23
+ licenses: []
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 1.8.25
43
+ signing_key:
44
+ specification_version: 3
45
+ summary: Never worry about moving a Jekyll page again!
46
+ test_files: []