jekyll-version-helper 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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.travis.yml +6 -0
- data/Gemfile +4 -0
- data/README.md +29 -0
- data/Rakefile +6 -0
- data/_site/Gemfile +4 -0
- data/_site/README.md +0 -0
- data/_site/Rakefile +6 -0
- data/_site/jekyll-version-helper.gemspec +24 -0
- data/_site/lib/configurer.rb +33 -0
- data/_site/lib/jekyll-version-helper.rb +4 -0
- data/_site/lib/permalinker.rb +29 -0
- data/_site/spec/jekyll-version-helper/configurer_spec.rb +12 -0
- data/_site/spec/spec_helper.rb +41 -0
- data/jekyll-version-helper.gemspec +24 -0
- data/lib/configurer.rb +33 -0
- data/lib/jekyll-version-helper.rb +3 -0
- data/script/bootstrap +3 -0
- data/script/cibuild +4 -0
- data/spec/fixtures/_config.yml +15 -0
- data/spec/fixtures/_source/folder/file1.md +5 -0
- data/spec/fixtures/_source/folder/file2.md +5 -0
- data/spec/fixtures/_source/folder/index.md +5 -0
- data/spec/fixtures/_source/folder/search/search.html +5 -0
- data/spec/fixtures/_source/index.html +5 -0
- data/spec/fixtures/_source/page1.md +5 -0
- data/spec/fixtures/_source/search.html +0 -0
- data/spec/jekyll-version-helper/configurer_spec.rb +13 -0
- data/spec/spec_helper.rb +49 -0
- metadata +129 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 32a2bb9164b0b66f6727c8b2a496891da1ecbb64
|
4
|
+
data.tar.gz: 9f4cd202597d5763459df68335a17783cf7397db
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b9fed804402820d8b609d68d0dd951bd165d886320b43ac9d8be7e7a0854d5c9b974c248bd672e3a609fef4225aa3f9f300d968e335459c647c9523c9d251839
|
7
|
+
data.tar.gz: e1390601d9da783f61383d06036df196db3905cffe722a0f8394250614d7a72baaf767af281a3b6a9623e9ee5527cea77e5208cc36407430db8324c8fa50fd76
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
jekyll-verison-helper
|
2
|
+
=======================
|
3
|
+
|
4
|
+
This gem incorporates additional features for Jekyll sites.
|
5
|
+
|
6
|
+
## Variables within *_config.yml* files
|
7
|
+
|
8
|
+
You can define a variable within a *_config.yml* file and refer to it through the same file.
|
9
|
+
|
10
|
+
To do that, first, create a key called `variables`, and populate it with any set of variable names you like:
|
11
|
+
|
12
|
+
``` yaml
|
13
|
+
variables:
|
14
|
+
latest_version: "2.0"
|
15
|
+
```
|
16
|
+
|
17
|
+
In this case, a new variable called `latest_version` is available to use, and it's defined a `"2.0"`. You can use this variable throughout your YAML file with the `%{...}` notation. For example:
|
18
|
+
|
19
|
+
``` yaml
|
20
|
+
defaults:
|
21
|
+
-
|
22
|
+
scope:
|
23
|
+
path: ""
|
24
|
+
type: "source"
|
25
|
+
values:
|
26
|
+
version: "%{latest_version}"
|
27
|
+
```
|
28
|
+
|
29
|
+
This sets a frontmatter of `version` on all the files in the `source` collection. It uses whatever value is defined in `latest_version` to set that up.
|
data/Rakefile
ADDED
data/_site/Gemfile
ADDED
data/_site/README.md
ADDED
File without changes
|
data/_site/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = 'jekyll-version-helper'
|
6
|
+
spec.version = '0.0.1'
|
7
|
+
spec.authors = ['Garen Torikian']
|
8
|
+
spec.email = ['gjtorikian@gmail.com']
|
9
|
+
spec.summary = 'A set of monkey-patching plugins to help Jekyll when building versioned sites'
|
10
|
+
spec.description = ''
|
11
|
+
spec.homepage = ''
|
12
|
+
spec.license = 'MIT'
|
13
|
+
|
14
|
+
spec.files = `git ls-files`.split($/)
|
15
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
+
spec.test_files = spec.files.grep(%r{^(test)/})
|
17
|
+
spec.require_paths = ['lib']
|
18
|
+
|
19
|
+
spec.add_runtime_dependency 'jekyll', '~> 2.0'
|
20
|
+
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'rspec'
|
24
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
def iterate(h, variables)
|
4
|
+
h.each do |k, v|
|
5
|
+
# If v is nil, an array is being iterated and the value is k.
|
6
|
+
# If v is not nil, a hash is being iterated and the value is v.
|
7
|
+
#
|
8
|
+
value = v || k
|
9
|
+
|
10
|
+
if value.is_a?(Hash) || value.is_a?(Array)
|
11
|
+
iterate(value, variables)
|
12
|
+
else
|
13
|
+
variables.each_pair { |var, val| v.gsub!(/\%\{#{var}\}/, val) } if v.is_a? String
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module Jekyll
|
19
|
+
class Site
|
20
|
+
|
21
|
+
alias_method :old_process, :process
|
22
|
+
|
23
|
+
def process
|
24
|
+
variables = self.config['variables']
|
25
|
+
return old_process if variables.nil?
|
26
|
+
|
27
|
+
iterate(self.config, variables)
|
28
|
+
|
29
|
+
old_process
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
class Document
|
5
|
+
alias_method :old_url_placeholders, :url_placeholders
|
6
|
+
|
7
|
+
PROTECTED_NAMES = %w(index search)
|
8
|
+
|
9
|
+
def url_placeholders
|
10
|
+
additional_placeholders = site.config['placeholders'] || {}
|
11
|
+
split_path = cleaned_relative_path.split('/')
|
12
|
+
filename = split_path.pop # last value is the filename
|
13
|
+
|
14
|
+
if !PROTECTED_NAMES.include? filename
|
15
|
+
if split_path.last == 'hidden'
|
16
|
+
split_path.pop
|
17
|
+
path = (split_path << filename).join('/')
|
18
|
+
else
|
19
|
+
path = old_url_placeholders[:path]
|
20
|
+
end
|
21
|
+
additional_placeholders[:dirpath] = File.join(path, "index#{old_url_placeholders[:output_ext]}")
|
22
|
+
else
|
23
|
+
additional_placeholders[:dirpath] = File.join(*split_path, "#{filename}#{old_url_placeholders[:output_ext]}")
|
24
|
+
end
|
25
|
+
|
26
|
+
old_url_placeholders.merge(additional_placeholders)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'jekyll'
|
2
|
+
require 'yaml'
|
3
|
+
require File.expand_path('lib/jekyll-version-helper.rb')
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
|
7
|
+
config.run_all_when_everything_filtered = true
|
8
|
+
config.filter_run :focus
|
9
|
+
config.order = 'random'
|
10
|
+
|
11
|
+
config.expect_with :rspec do |c|
|
12
|
+
c.syntax = :expect
|
13
|
+
end
|
14
|
+
|
15
|
+
config.before(:each) do
|
16
|
+
Jekyll.logger.log_level = :error
|
17
|
+
|
18
|
+
@fixtures_path = Pathname.new(__FILE__).parent.join('fixtures')
|
19
|
+
@dest = @fixtures_path.join('_site')
|
20
|
+
@config_src = @fixtures_path.join('_config.yml')
|
21
|
+
# @posts_src = @fixtures_path.join('_posts')
|
22
|
+
# @layouts_src = @fixtures_path.join('_layouts')
|
23
|
+
# @plugins_src = @fixtures_path.join('_plugins')
|
24
|
+
|
25
|
+
@site = Jekyll::Site.new(Jekyll.configuration(
|
26
|
+
YAML.load_file(@config_src)
|
27
|
+
))
|
28
|
+
|
29
|
+
@dest.rmtree if @dest.exist?
|
30
|
+
@site.process
|
31
|
+
end
|
32
|
+
|
33
|
+
config.after(:each) do
|
34
|
+
# @dest.rmtree if @dest.exist?
|
35
|
+
end
|
36
|
+
|
37
|
+
def setup_doc(doc_filename)
|
38
|
+
puts @site.collections['source'].docs
|
39
|
+
@site.collections['source'].docs.find { |d| d.relative_path.match(doc_filename) }
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = 'jekyll-version-helper'
|
6
|
+
spec.version = '0.0.1'
|
7
|
+
spec.authors = ['Garen Torikian']
|
8
|
+
spec.email = ['gjtorikian@gmail.com']
|
9
|
+
spec.summary = 'A set of monkey-patching plugins to help Jekyll when building versioned sites'
|
10
|
+
spec.description = ''
|
11
|
+
spec.homepage = ''
|
12
|
+
spec.license = 'MIT'
|
13
|
+
|
14
|
+
spec.files = `git ls-files`.split($/)
|
15
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
+
spec.test_files = spec.files.grep(%r{^(test)/})
|
17
|
+
spec.require_paths = ['lib']
|
18
|
+
|
19
|
+
spec.add_runtime_dependency 'jekyll', '~> 2.0'
|
20
|
+
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'rspec'
|
24
|
+
end
|
data/lib/configurer.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
def iterate(h, variables)
|
4
|
+
h.each do |k, v|
|
5
|
+
# If v is nil, an array is being iterated and the value is k.
|
6
|
+
# If v is not nil, a hash is being iterated and the value is v.
|
7
|
+
#
|
8
|
+
value = v || k
|
9
|
+
|
10
|
+
if value.is_a?(Hash) || value.is_a?(Array)
|
11
|
+
iterate(value, variables)
|
12
|
+
else
|
13
|
+
variables.each_pair { |var, val| v.gsub!(/\%\{#{var}\}/, val) } if v.is_a? String
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module Jekyll
|
19
|
+
class Site
|
20
|
+
|
21
|
+
alias_method :old_process, :process
|
22
|
+
|
23
|
+
def process
|
24
|
+
variables = self.config['variables']
|
25
|
+
return old_process if variables.nil?
|
26
|
+
|
27
|
+
iterate(self.config, variables)
|
28
|
+
|
29
|
+
old_process
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
data/script/bootstrap
ADDED
data/script/cibuild
ADDED
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe('Configurer') do
|
4
|
+
let(:index) { setup_doc('index.html') }
|
5
|
+
let(:file1) { setup_doc('file1.md') }
|
6
|
+
let(:file2) { setup_doc('file2.md') }
|
7
|
+
|
8
|
+
it 'writes the default frontmatter using a variable' do
|
9
|
+
expect(file1.data['version']).to eql('2.0')
|
10
|
+
expect(file2.data['version']).to eql('2.0')
|
11
|
+
expect(index.data['version']).to eql('2.0')
|
12
|
+
end
|
13
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'jekyll'
|
2
|
+
require 'yaml'
|
3
|
+
require File.expand_path('lib/jekyll-version-helper.rb')
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
|
7
|
+
config.run_all_when_everything_filtered = true
|
8
|
+
config.filter_run :focus
|
9
|
+
config.order = 'random'
|
10
|
+
|
11
|
+
config.expect_with :rspec do |c|
|
12
|
+
c.syntax = :expect
|
13
|
+
end
|
14
|
+
|
15
|
+
config.before(:each) do
|
16
|
+
Jekyll.logger.log_level = :error
|
17
|
+
|
18
|
+
@fixtures_path = Pathname.new(__FILE__).parent.join('fixtures')
|
19
|
+
@dest = @fixtures_path.join('_site')
|
20
|
+
@config_src = @fixtures_path.join('_config.yml')
|
21
|
+
@posts_src = @fixtures_path.join('_posts')
|
22
|
+
@layouts_src = @fixtures_path.join('_layouts')
|
23
|
+
@plugins_src = @fixtures_path.join('_plugins')
|
24
|
+
|
25
|
+
@site = Jekyll::Site.new(Jekyll.configuration(
|
26
|
+
'source' => @fixtures_path.to_s,
|
27
|
+
'destination' => @dest.to_s,
|
28
|
+
'plugins' => @plugins_src.to_s,
|
29
|
+
'collections' => {
|
30
|
+
'source' => {'output' => true}
|
31
|
+
}
|
32
|
+
))
|
33
|
+
|
34
|
+
@dest.rmtree if @dest.exist?
|
35
|
+
@site.process
|
36
|
+
end
|
37
|
+
|
38
|
+
# config.after(:each) do
|
39
|
+
# @dest.rmtree if @dest.exist?
|
40
|
+
# end
|
41
|
+
|
42
|
+
def setup_doc(doc_filename)
|
43
|
+
@site.collections['source'].docs.find { |d| d.relative_path.match(doc_filename) }
|
44
|
+
end
|
45
|
+
|
46
|
+
def destination_file_exists?(file)
|
47
|
+
File.exist?(File.join(@dest.to_s, file))
|
48
|
+
end
|
49
|
+
end
|
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-version-helper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Garen Torikian
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-12-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: ''
|
70
|
+
email:
|
71
|
+
- gjtorikian@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".travis.yml"
|
78
|
+
- Gemfile
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- _site/Gemfile
|
82
|
+
- _site/README.md
|
83
|
+
- _site/Rakefile
|
84
|
+
- _site/jekyll-version-helper.gemspec
|
85
|
+
- _site/lib/configurer.rb
|
86
|
+
- _site/lib/jekyll-version-helper.rb
|
87
|
+
- _site/lib/permalinker.rb
|
88
|
+
- _site/spec/jekyll-version-helper/configurer_spec.rb
|
89
|
+
- _site/spec/spec_helper.rb
|
90
|
+
- jekyll-version-helper.gemspec
|
91
|
+
- lib/configurer.rb
|
92
|
+
- lib/jekyll-version-helper.rb
|
93
|
+
- script/bootstrap
|
94
|
+
- script/cibuild
|
95
|
+
- spec/fixtures/_config.yml
|
96
|
+
- spec/fixtures/_source/folder/file1.md
|
97
|
+
- spec/fixtures/_source/folder/file2.md
|
98
|
+
- spec/fixtures/_source/folder/index.md
|
99
|
+
- spec/fixtures/_source/folder/search/search.html
|
100
|
+
- spec/fixtures/_source/index.html
|
101
|
+
- spec/fixtures/_source/page1.md
|
102
|
+
- spec/fixtures/_source/search.html
|
103
|
+
- spec/jekyll-version-helper/configurer_spec.rb
|
104
|
+
- spec/spec_helper.rb
|
105
|
+
homepage: ''
|
106
|
+
licenses:
|
107
|
+
- MIT
|
108
|
+
metadata: {}
|
109
|
+
post_install_message:
|
110
|
+
rdoc_options: []
|
111
|
+
require_paths:
|
112
|
+
- lib
|
113
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
requirements: []
|
124
|
+
rubyforge_project:
|
125
|
+
rubygems_version: 2.2.2
|
126
|
+
signing_key:
|
127
|
+
specification_version: 4
|
128
|
+
summary: A set of monkey-patching plugins to help Jekyll when building versioned sites
|
129
|
+
test_files: []
|