jekyll-template 0.2.0 → 0.3.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/.travis.yml +6 -0
- data/Gemfile +0 -4
- data/README.md +149 -1
- data/Rakefile +14 -4
- data/jekyll-template.gemspec +6 -1
- data/lib/jekyll/template/version.rb +1 -1
- metadata +74 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbaf9542ef68675be688856585381ee273716af0
|
4
|
+
data.tar.gz: 3cb196191b5eef544a7e2d714736ba4d8455f6b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6361f538145c5f0d03fd4778b861042355e95b63a737943e44ccba4a43dc1c0e83a0de7695a85afa05316b669526fb8dc9eddb5dec728a99e76359db816e76e5
|
7
|
+
data.tar.gz: 0c82dc7b6d99d39aa22ba787a8f90c5364bda759917cdbd6e9c50c59e36c08a0751c2ae1f10582f44df2747dafc9036363ac72077c1e93df6aaf08f600861197
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
-
#
|
1
|
+
# jekyll-template [](https://travis-ci.org/helpscout/jekyll-template)
|
2
|
+
|
3
|
+
Custom template block with YAML front matter support for Jekyll
|
4
|
+
|
2
5
|
|
3
6
|
## Installation
|
4
7
|
|
@@ -17,3 +20,148 @@ Or install it yourself as:
|
|
17
20
|
```
|
18
21
|
gem install jekyll-template
|
19
22
|
```
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
---
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
## Documentation
|
31
|
+
|
32
|
+
Templates (`{% template %}`) work similarly to Jekyll's `{% include %}` tag. It references an existing `.html` file for markup. However, the biggest difference (and most awesome feature) between `{% template %}` vs. `{% include %}` is that templates allow for content to be used inside the block.
|
33
|
+
|
34
|
+
### Setting up the template directory
|
35
|
+
|
36
|
+
The first thing you have to do to allow for template blocks to work is to create a new directory called `_templates` within your Jekyll site's source directory:
|
37
|
+
|
38
|
+
```
|
39
|
+
my-jekyll-site/
|
40
|
+
├── _data/
|
41
|
+
├── _includes/
|
42
|
+
├── _plugins/
|
43
|
+
├── _posts/
|
44
|
+
├── _templates/ <-- Right here!
|
45
|
+
└── index.md
|
46
|
+
```
|
47
|
+
|
48
|
+
Once you have your directory created, add template files as regular `.html` files (just like you would `_includes/` files).
|
49
|
+
|
50
|
+
|
51
|
+
### Creating a template file
|
52
|
+
|
53
|
+
Let's create a template file called `awesome.html`, which will be added to `_templates`.
|
54
|
+
(Full path is `_templates/awesome.html`)
|
55
|
+
|
56
|
+
```markdown
|
57
|
+
<div class="awesome">
|
58
|
+
{{ template.content }}
|
59
|
+
</div>
|
60
|
+
```
|
61
|
+
|
62
|
+
You can write whatever markup you would like inside a template file. The most important thing is to include a `{{ template.content }}` tag. This destinates where your content will be rendered.
|
63
|
+
|
64
|
+
|
65
|
+
### Using a template block
|
66
|
+
|
67
|
+
After creating our `awesome.html` template, we can use it in any of our Jekyll pages (or posts… heck even in `_include` files).
|
68
|
+
|
69
|
+
For this example, let's add it to our `index.md` file:
|
70
|
+
|
71
|
+
```markdown
|
72
|
+
# Hello
|
73
|
+
{% template awesome.html %}
|
74
|
+
I am content!
|
75
|
+
{% endtemplate %}
|
76
|
+
```
|
77
|
+
|
78
|
+
Your template content needs to begin with `{% template %}` and end with `{% endtemplate %}`. Be sure to include the path/name of the template file you wish to use.
|
79
|
+
|
80
|
+
The final rendered `.html` will look like this:
|
81
|
+
|
82
|
+
```html
|
83
|
+
<h1 id="hello">Hello</h1>
|
84
|
+
<div class="awesome"> <p>I am content!</p> </div>
|
85
|
+
```
|
86
|
+
|
87
|
+
|
88
|
+
## Rendering template content as HTML
|
89
|
+
|
90
|
+
By default, templates parse and render content as **markdown**. To force templates to render content as HTML, all the `parse: "html"` attribute to your `{% template %}` tag.
|
91
|
+
|
92
|
+
```markdown
|
93
|
+
{% template awesome.html parse: "html" %}
|
94
|
+
# Title
|
95
|
+
I am content! As HTML!
|
96
|
+
{% endtemplate %}
|
97
|
+
```
|
98
|
+
|
99
|
+
The final rendered `.html` will look like this:
|
100
|
+
|
101
|
+
```html
|
102
|
+
<div class="awesome"> # Title I am content! As HTML! </div>
|
103
|
+
```
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
## Using YAML front matter
|
108
|
+
|
109
|
+
You can add YAML front matter to both your template files, just like Jekyll pages and posts.
|
110
|
+
|
111
|
+
```
|
112
|
+
---
|
113
|
+
title: Awesome title
|
114
|
+
---
|
115
|
+
<div class="awesome">
|
116
|
+
<h1>{{ template.title</h1>
|
117
|
+
|
118
|
+
{{ template.content }}
|
119
|
+
</div>
|
120
|
+
```
|
121
|
+
|
122
|
+
Front matter can also be defined in your `{% template %}` block. Any front matter data defined here will override the data defined in your original template.
|
123
|
+
|
124
|
+
```
|
125
|
+
{% template awesome.html %}
|
126
|
+
---
|
127
|
+
title: Best title
|
128
|
+
---
|
129
|
+
I am content!
|
130
|
+
{% endtemplate %}
|
131
|
+
```
|
132
|
+
|
133
|
+
```html
|
134
|
+
<div class="awesome">
|
135
|
+
<h1>Best title</h1>
|
136
|
+
<p>I am content!</p>
|
137
|
+
</div>
|
138
|
+
```
|
139
|
+
|
140
|
+
|
141
|
+
## Using templates within templates
|
142
|
+
|
143
|
+
Yo dawg. I heard you liked templates! The template block supports nesting 👏
|
144
|
+
|
145
|
+
```markdown
|
146
|
+
{% template outer.html %}
|
147
|
+
{% template inner.html %}
|
148
|
+
Hi!
|
149
|
+
{% endtemplate %}
|
150
|
+
{% endtemplate %}
|
151
|
+
```
|
152
|
+
|
153
|
+
|
154
|
+
---
|
155
|
+
|
156
|
+
|
157
|
+
More documentation coming soon!
|
158
|
+
|
159
|
+
|
160
|
+
---
|
161
|
+
|
162
|
+
|
163
|
+
## Note
|
164
|
+
|
165
|
+
I am **not** a Ruby developer. (My background is mostly with Javascript). I wrote this plugin based on experimentation and combing through [Jekyll's](https://github.com/jekyll/jekyll) and [Liquid's](https://github.com/Shopify/liquid) source code + documentation. I'm sure there's probably code in there somewhere that's offensive to Ruby devs.
|
166
|
+
|
167
|
+
We've been using `{% template %}` for many months now on the [Help Scout website](https://www.helpscout.net/), and it's been working great! We haven't noticed any slowdowns in build times (and we use **a lot** of templates).
|
data/Rakefile
CHANGED
@@ -1,6 +1,16 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rake'
|
4
|
+
require 'rdoc'
|
5
|
+
require 'date'
|
6
|
+
require 'yaml'
|
7
|
+
require 'rake/testtask'
|
3
8
|
|
4
|
-
|
9
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w[lib]))
|
10
|
+
require 'jekyll/version'
|
5
11
|
|
6
|
-
|
12
|
+
Rake::TestTask.new(:test) do |test|
|
13
|
+
test.libs << 'lib' << 'test'
|
14
|
+
test.pattern = 'test/**/test_*.rb'
|
15
|
+
test.verbose = true
|
16
|
+
end
|
data/jekyll-template.gemspec
CHANGED
@@ -26,5 +26,10 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_development_dependency "bundler", "~> 1.13"
|
28
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
29
|
-
spec.add_development_dependency "
|
29
|
+
spec.add_development_dependency "minitest-reporters"
|
30
|
+
spec.add_development_dependency "minitest-profile"
|
31
|
+
spec.add_development_dependency "minitest", "~> 5.8"
|
32
|
+
spec.add_development_dependency "rspec-mocks"
|
33
|
+
spec.add_development_dependency "shoulda"
|
34
|
+
spec.add_development_dependency "kramdown"
|
30
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ItsJonQ
|
@@ -81,19 +81,89 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '10.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: minitest-reporters
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: minitest-profile
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: minitest
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
117
|
+
version: '5.8'
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
124
|
+
version: '5.8'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec-mocks
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: shoulda
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: kramdown
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
97
167
|
description:
|
98
168
|
email:
|
99
169
|
- itsjonq@gmail.com
|