jekyll-redirects 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []