jekyll_draft 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -2
- data/README.md +235 -50
- data/lib/draft.rb +49 -24
- data/lib/draft_html.rb +19 -5
- data/lib/else.rb +10 -4
- data/lib/filters.rb +21 -0
- data/lib/if_draft.rb +17 -7
- data/lib/jekyll_draft/version.rb +1 -1
- data/lib/jekyll_draft.rb +3 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d833da47df880dd897725f84046568f02e24e88a2dff0d14ec8b3c86e0d24265
|
4
|
+
data.tar.gz: 1bb026e448058d47f96f0841bd1a80bc8c217010cc00bfa628ff708bd34d2a8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5bf1572f2ac67123110e0c8cfd536c2b19d8c8f796468a0c0b18a39f5603909b70a29af4a126390980f631d61d7e32ea63566ec92603efaaa95e73306b6a180
|
7
|
+
data.tar.gz: b07fdb3abdba168e1a207a80382f6192ae142b23358f3a73d6dccfd95a24384e25932f4daa9f794942da4c1891d73ca91e5bb0c684aa5a2d81043019d5b1d4f5
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,24 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 2.0.1 / 2023-11-30
|
4
|
+
|
5
|
+
* Jekyll block tags: `if_draft` and `unless_draft`.
|
6
|
+
* Jekyll inline tags: `else_if_not_draft` and `else_if_draft`.
|
7
|
+
* Jekyll inline tag `draft_html`.
|
8
|
+
* Liquid filters:
|
9
|
+
* `is_draft`
|
10
|
+
* `draft_html`
|
11
|
+
* Module `Jekyll::Draft` defines an API with the following methods:
|
12
|
+
* `draft?` returns a boolean indicating if the document passed to it is a draft.
|
13
|
+
* `draft_html` returns the same string the `draft_html` tag returns,
|
14
|
+
indicating if the document passed to it is a draft.
|
15
|
+
|
16
|
+
|
3
17
|
## 2.0.0 / 2023-11-29
|
4
18
|
|
5
|
-
*
|
6
|
-
|
19
|
+
* This version was published prematurely by accident.
|
20
|
+
It is broken, do not use it.
|
21
|
+
* This is a complete rewrite, incompatible with previous versions.
|
7
22
|
|
8
23
|
|
9
24
|
## 1.1.2 / 2023-02-25
|
data/README.md
CHANGED
@@ -1,33 +1,87 @@
|
|
1
1
|
# jekyll_draft [![Gem Version](https://badge.fury.io/rb/jekyll_draft.svg)](https://badge.fury.io/rb/jekyll_draft)
|
2
2
|
|
3
|
-
This
|
3
|
+
This Jekyll plugin provides the following:
|
4
|
+
|
5
|
+
* Jekyll block tags: `if_draft` and `unless_draft`.
|
6
|
+
* Jekyll inline tags: `else_if_not_draft` and `else_if_draft`.
|
7
|
+
These are meant for use within `if_draft` and `unless_draft`, respectively.
|
8
|
+
Both of them are identical; they are both provided so usage seems natural.
|
9
|
+
* Jekyll inline tag `draft_html`, which generates HTML that indicates if the document it is embedded within is a draft.
|
10
|
+
* Liquid filters:
|
11
|
+
* `is_draft` returns a boolean indicating if the document passed to it is a draft.
|
12
|
+
* `draft_html` returns the same string the `draft_html` tag returns,
|
13
|
+
indicating if the document passed to it is a draft.
|
14
|
+
* Module `Jekyll::Draft` defines an API that your plugin can call.
|
15
|
+
It has the following methods:
|
16
|
+
* `draft?` returns a boolean indicating if the document passed to it is a draft.
|
17
|
+
* `draft_html` returns the same string that `draft_html` tag returns;
|
18
|
+
the response indicates if the document passed to it is a draft.
|
19
|
+
* `root` returns the path to the root of the collection that the document passed to it is a member of.
|
20
|
+
This method is not functionally related to Jekyll draft documents;
|
21
|
+
it should be packaged separately ... maybe one day...
|
22
|
+
|
23
|
+
The difference between the tag called `draft_html` and the filter of the same name
|
24
|
+
is that the tag only works on the document that it is embedded in,
|
25
|
+
while the filter works on any document passed to it.
|
26
|
+
Both the tag and the filter call the same API methods defined in the `Jekyll::Draft` module.
|
27
|
+
|
28
|
+
More information is available on [Mike Slinn’s website](https://www.mslinn.com/jekyll_plugins/jekyll_draft.html).
|
4
29
|
|
5
|
-
|
30
|
+
|
31
|
+
## Demo
|
32
|
+
|
33
|
+
The [demo](demo) subdirectory has working examples of this Jekyll plugin's functionality
|
34
|
+
in a demonstration website.
|
35
|
+
To run the demo, type:
|
36
|
+
|
37
|
+
```console
|
38
|
+
$ demo/_bin/debug -r
|
39
|
+
```
|
40
|
+
|
41
|
+
Now point your web browser to http://localhost:4444.
|
42
|
+
You should see:
|
43
|
+
|
44
|
+
![jekyll_draft demo](jekyll_draft_demo.png)
|
45
|
+
|
46
|
+
When the demonstration is running, any time you modify the <code>.html</code> files,
|
47
|
+
the demo website will regenerate.
|
48
|
+
Each time you make a change, the website instantly regenerates.
|
49
|
+
This helps the learning experience.
|
50
|
+
|
51
|
+
Please play with the contents of the <code>.html</code> files,
|
52
|
+
so you can learn how to write Jekyll pages that include this functionality.
|
6
53
|
|
7
54
|
|
8
55
|
## Installation
|
9
56
|
|
10
|
-
|
57
|
+
### For Use In A Jekyll Website
|
11
58
|
|
12
|
-
|
13
|
-
.jekyll_draft {
|
14
|
-
background-color: #fefeab;
|
15
|
-
padding-bottom: 2px;
|
16
|
-
padding-left: 0.5em;
|
17
|
-
padding-right: 0.5em;
|
18
|
-
padding-top: 2px;
|
19
|
-
}
|
20
|
-
```
|
59
|
+
Add the CSS found in [`demo/assets/css/jekyll_draft.css`](demo/assets/css/jekyll_draft.css) to your Jekyll layout(s).
|
21
60
|
|
22
|
-
Add
|
61
|
+
Add the following to your Jekyll website's `Gemfile`, within the `jekyll_plugins` group:
|
23
62
|
|
24
63
|
```ruby
|
25
64
|
group :jekyll_plugins do
|
26
|
-
gem 'jekyll_draft'
|
65
|
+
gem 'jekyll_draft', '>2.0.0' # v2.0.0 was a dud, do not use it
|
27
66
|
end
|
28
67
|
```
|
29
68
|
|
30
|
-
And then
|
69
|
+
And then type:
|
70
|
+
|
71
|
+
```shell
|
72
|
+
$ bundle
|
73
|
+
```
|
74
|
+
|
75
|
+
|
76
|
+
### For Use In a Gem
|
77
|
+
|
78
|
+
Add the following to your gem’s `.gemspec`:
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
spec.add_dependency 'jekyll_draft', '>2.0.0' # v2.0.0 was a dud, do not use it
|
82
|
+
```
|
83
|
+
|
84
|
+
And then type:
|
31
85
|
|
32
86
|
```shell
|
33
87
|
$ bundle
|
@@ -36,26 +90,132 @@ $ bundle
|
|
36
90
|
|
37
91
|
## Usage
|
38
92
|
|
39
|
-
### `
|
93
|
+
### `if_draft` and `unless_draft` Block Tags
|
94
|
+
|
95
|
+
The `if_draft` block tag acts as an `if-then` or an `if-then-else` programming construct.
|
96
|
+
|
97
|
+
```html
|
98
|
+
{% if_draft %}
|
99
|
+
<p>This is a draft document!</p>
|
100
|
+
{% endif_draft %}
|
101
|
+
```
|
102
|
+
|
103
|
+
```html
|
104
|
+
{% if_draft %}
|
105
|
+
<p>This is a draft document!</p>
|
106
|
+
{% else_if_not_draft %}
|
107
|
+
<p>This is not a draft document!</p>
|
108
|
+
{% endif_draft %}
|
109
|
+
```
|
110
|
+
|
111
|
+
The `unless_draft` block tag acts as a Ruby [unless-then](https://rubystyle.guide/#unless-for-negatives) or
|
112
|
+
an [unless-then-else](https://rubystyle.guide/#no-else-with-unless) programming construct.
|
113
|
+
|
114
|
+
```html
|
115
|
+
{% unless_draft %}
|
116
|
+
<p>This is not a draft document!</p>
|
117
|
+
{% endunless_draft %}
|
118
|
+
```
|
119
|
+
|
120
|
+
```html
|
121
|
+
{% unless_draft %}
|
122
|
+
<p>This is not a draft document!</p>
|
123
|
+
{% else_if_draft %}
|
124
|
+
<p>This is a draft document!</p>
|
125
|
+
{% endunless_draft %}
|
126
|
+
```
|
127
|
+
|
128
|
+
You can use the keywords `else_if_draft` and `else_if_not_draft` interchangeably.
|
129
|
+
They are actually made by registering the same code twice with different subclass names.
|
130
|
+
Use the keyword that makes the most sense to you.
|
131
|
+
|
132
|
+
|
133
|
+
### `draft_html` Inline Tag
|
134
|
+
|
135
|
+
Here is an example of embedding the `draft_html` inline tag into an HTML document:
|
136
|
+
|
137
|
+
```html
|
138
|
+
<p>Is this a draft document? Look here to see: {% draft_html %}</p>
|
139
|
+
```
|
140
|
+
|
141
|
+
By default, `draft_html` emits ` <i class='jekyll_draft>Draft</i>` if the document is a draft,
|
142
|
+
otherwise it does not emit anything.
|
143
|
+
|
144
|
+
You can change this behavior several ways:
|
145
|
+
|
146
|
+
* Add the `published_output` parameter to specify the HTML that should be emitted if the document is not a draft.
|
147
|
+
The default message will continue to be output for draft documents when the `published_output` parameter is used.
|
148
|
+
|
149
|
+
```html
|
150
|
+
{% draft_html published_output="<p>Not a draft</p>" %}
|
151
|
+
```
|
40
152
|
|
41
|
-
|
153
|
+
* Add the `draft_output` parameter to specify the HTML that should be emitted if the document is a draft:
|
154
|
+
|
155
|
+
```html
|
156
|
+
{% draft_html
|
157
|
+
draft_output="<p>Is a draft</p>"
|
158
|
+
%}
|
159
|
+
{% draft_html
|
160
|
+
draft_output="<p>Is a draft</p>"
|
161
|
+
published_output="<p>Not a draft</p>"
|
162
|
+
%}
|
163
|
+
```
|
164
|
+
|
165
|
+
* Add the `draft_class` parameter to specify the CSS class that should be added
|
166
|
+
to the emitted HTML if the document is a draft:
|
167
|
+
|
168
|
+
```html
|
169
|
+
{% draft_html draft_class="my_draft_class" %}
|
170
|
+
{% draft_html
|
171
|
+
draft_class="my_draft_class"
|
172
|
+
published_output="<p>Not a draft</p>"
|
173
|
+
%}
|
174
|
+
```
|
175
|
+
|
176
|
+
* Add the `draft_style` parameter to specify the CSS class that should be added
|
177
|
+
to the emitted HTML if the document is a draft:
|
178
|
+
|
179
|
+
```html
|
180
|
+
{% draft_html draft_style="font-size: 24pt;" %}
|
181
|
+
{% draft_html
|
182
|
+
draft_class="my_draft_class"
|
183
|
+
draft_style="font-size: 24pt;"
|
184
|
+
%}
|
185
|
+
{% draft_html
|
186
|
+
draft_class="my_draft_class"
|
187
|
+
draft_style="font-size: 24pt;"
|
188
|
+
published_output="<p>Not a draft</p>"
|
189
|
+
%}
|
190
|
+
```
|
191
|
+
|
192
|
+
|
193
|
+
### Filters
|
194
|
+
|
195
|
+
#### `is_draft`
|
196
|
+
|
197
|
+
This filter detects if a page is invisible when published in `production` mode,
|
42
198
|
and either returns `true` or `false`.
|
43
199
|
|
44
200
|
```html
|
45
201
|
{{ page | is_draft }} => true
|
46
202
|
```
|
47
203
|
|
48
|
-
|
204
|
+
|
205
|
+
#### `draft_html`
|
49
206
|
|
50
207
|
This filter generates HTML to display if a page is invisible when published in `production` mode.
|
51
208
|
If the page is not a draft then the empty string is returned.
|
52
209
|
The generated HTML for draft pages is:<br>
|
53
|
-
`"
|
210
|
+
`" <i class='jekyll_draft'>Draft</i>"`
|
54
211
|
|
55
212
|
```html
|
56
|
-
{{ page | draft_html }} => " <i class='
|
213
|
+
{{ page | draft_html }} => " <i class='jekyll_draft'>Draft</i>"
|
57
214
|
```
|
58
215
|
|
216
|
+
The optional parameters for the `draft_html` inline tag are not available for
|
217
|
+
use with the `draft_html` filter.
|
218
|
+
|
59
219
|
|
60
220
|
### Invoking From Another Jekyll Plugin
|
61
221
|
|
@@ -68,26 +228,18 @@ draft = Jekyll::Draft.draft_html post
|
|
68
228
|
```
|
69
229
|
|
70
230
|
|
71
|
-
## Demo
|
72
|
-
|
73
|
-
The [`demo`](./demo) directory contains a demonstration website, which uses the plugin.
|
74
|
-
To run, type:
|
75
|
-
|
76
|
-
```console
|
77
|
-
$ demo/_bin/debug -r
|
78
|
-
```
|
79
|
-
|
80
|
-
Now point your web browser to http://localhost:4444
|
81
|
-
|
82
231
|
|
83
232
|
## Development
|
84
233
|
|
85
|
-
|
234
|
+
### Setup
|
235
|
+
|
236
|
+
After checking out the repo, run `bin/setup` to install dependencies.
|
237
|
+
You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
86
238
|
|
87
239
|
Install development dependencies like this:
|
88
240
|
|
89
241
|
```shell
|
90
|
-
$ BUNDLE_WITH=
|
242
|
+
$ BUNDLE_WITH=development bundle
|
91
243
|
```
|
92
244
|
|
93
245
|
To install this gem onto your local machine, run:
|
@@ -96,39 +248,72 @@ To install this gem onto your local machine, run:
|
|
96
248
|
$ bundle exec rake install
|
97
249
|
```
|
98
250
|
|
99
|
-
|
251
|
+
### Debugging The Demo
|
100
252
|
|
101
|
-
|
102
|
-
2. Commit all changes to git; if you don't the next step might fail with an unexplainable error message.
|
103
|
-
3. Run the following:
|
104
|
-
|
105
|
-
```shell
|
106
|
-
$ bundle exec rake release
|
107
|
-
```
|
108
|
-
|
109
|
-
The above creates a git tag for the version, commits the created tag,
|
110
|
-
and pushes the new `.gem` file to [RubyGems.org](https://rubygems.org).
|
253
|
+
Set breakpoints, then use the Visual Studio Code launch configuration called `Debug Demo`.
|
111
254
|
|
112
255
|
|
113
|
-
### Debugging
|
256
|
+
### Debugging From Another Jekyll Site
|
114
257
|
|
115
258
|
Run `bin/attach` and pass the directory name of a Jekyll website that has a suitable script called `_bin/debug`.
|
116
259
|
The `demo` subdirectory fits this description.
|
117
260
|
|
118
261
|
```console
|
119
262
|
$ bin/attach demo
|
120
|
-
Successfully uninstalled jekyll_draft-
|
121
|
-
|
122
|
-
jekyll_draft
|
123
|
-
|
263
|
+
Successfully uninstalled jekyll_draft-1.1.2
|
264
|
+
Successfully uninstalled jekyll_draft-2.0.0
|
265
|
+
jekyll_draft 2.0.0 built to pkg/jekyll_draft-2.0.0.gem.
|
266
|
+
jekyll_draft (2.0.0) installed.
|
267
|
+
jekyll_draft 2.0.0 built to pkg/jekyll_draft-2.0.0.gem.
|
268
|
+
jekyll_draft (2.0.0) installed.
|
269
|
+
Fetching gem metadata from https://rubygems.org/..........
|
270
|
+
Resolving dependencies...
|
271
|
+
Bundle complete! 21 Gemfile dependencies, 104 gems now installed.
|
272
|
+
Use `bundle info [gemname]` to see where a bundled gem is installed.
|
273
|
+
|
274
|
+
|
275
|
+
INFO PluginMetaLogger: Loaded else_if_draft v0.1.0 plugin.
|
276
|
+
INFO PluginMetaLogger: Loaded else_if_not_draft v0.1.0 plugin.
|
277
|
+
INFO PluginMetaLogger: Loaded String and String, v2.0.0 plugin.
|
278
|
+
INFO PluginMetaLogger: Loaded if_draft v2.0.0 plugin.
|
279
|
+
INFO PluginMetaLogger: Loaded unless_draft v2.0.0 plugin.
|
280
|
+
INFO PluginMetaLogger: Loaded String and String, v2.0.0 plugin.
|
281
|
+
INFO PluginMetaLogger: Loaded exec v1.4.2 plugin.
|
282
|
+
INFO PluginMetaLogger: Loaded noselect v1.4.2 plugin.
|
283
|
+
INFO PluginMetaLogger: Loaded pre v1.4.2 plugin.
|
284
|
+
INFO PluginMetaLogger: Loaded jekyll_pre v1.4.2 plugin.
|
285
|
+
Configuration file: /mnt/f/work/jekyll/my_plugins/jekyll_draft/demo/_config.yml
|
286
|
+
Cleaner: Removing /mnt/f/work/jekyll/my_plugins/jekyll_draft/demo/_site...
|
287
|
+
Cleaner: Removing /mnt/f/work/jekyll/my_plugins/jekyll_draft/demo/.jekyll-metadata...
|
288
|
+
Cleaner: Removing /mnt/f/work/jekyll/my_plugins/jekyll_draft/demo/.jekyll-cache...
|
289
|
+
Cleaner: Nothing to do for .sass-cache.
|
290
|
+
DEBUGGER: Debugger can attach via TCP/IP (127.0.0.1:45409)
|
291
|
+
DEBUGGER: wait for debugger connection...
|
124
292
|
```
|
125
293
|
|
126
294
|
Now attach to the debugger process.
|
127
|
-
This git repo includes a [Visual Studio Code launcher](
|
295
|
+
This git repo includes a [Visual Studio Code launcher](.vscode/launch.json) for this purpose labeled `Attach rdbg`.
|
296
|
+
It uses TCP/IP port 45409 to attach; you might need to modify that value.
|
128
297
|
|
129
298
|
Now point your web browser to http://localhost:4444
|
130
299
|
|
131
300
|
|
301
|
+
### Releasing A New Version
|
302
|
+
|
303
|
+
To release a new version,
|
304
|
+
|
305
|
+
1. Update the version number in `version.rb`.
|
306
|
+
2. Commit all changes to git; if you don't the next step might fail with an unexplainable error message.
|
307
|
+
3. Run the following:
|
308
|
+
|
309
|
+
```shell
|
310
|
+
$ bundle exec rake release
|
311
|
+
```
|
312
|
+
|
313
|
+
The above creates a git tag for the version, commits the created tag,
|
314
|
+
and pushes the new `.gem` file to [RubyGems.org](https://rubygems.org).
|
315
|
+
|
316
|
+
|
132
317
|
## Contributing
|
133
318
|
|
134
319
|
Bug reports and pull requests are welcome on GitHub at https://github.com/mslinn/jekyll_draft.
|
data/lib/draft.rb
CHANGED
@@ -1,29 +1,54 @@
|
|
1
|
+
require 'jekyll_plugin_logger'
|
2
|
+
|
1
3
|
# Define these methods outside of the JekyllDraft class so they can be invoked externally and tested more easily
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
# - document front matter contains 'published: false'
|
6
|
-
def draft?(doc)
|
7
|
-
return true if doc.respond_to?(:draft) && doc.draft
|
8
|
-
return true if doc.key?('draft') && doc['draft'] # ignore !doc['draft']
|
9
|
-
return !doc['published'] if doc.key?('published')
|
10
|
-
|
11
|
-
false
|
12
|
-
rescue StandardError => e
|
13
|
-
@logger.error { e }
|
14
|
-
false
|
15
|
-
end
|
4
|
+
module Jekyll
|
5
|
+
module Draft
|
6
|
+
@logger = PluginMetaLogger.instance.new_logger(self, PluginMetaLogger.instance.config)
|
16
7
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
8
|
+
# @return true by checking in this order:
|
9
|
+
# - document is in _drafts directory, detectable by doc['draft']==true
|
10
|
+
# - document front matter contains 'published: false'
|
11
|
+
def draft?(doc)
|
12
|
+
if doc.respond_to? :data
|
13
|
+
return !doc.data['published'] if doc.data.key? 'published'
|
14
|
+
return doc.data['draft'] if doc.data.key? 'draft'
|
15
|
+
end
|
16
|
+
if doc.respond_to? :[]
|
17
|
+
return !doc['published'] if doc.key? 'published'
|
18
|
+
return doc['draft'] if doc.key? 'draft'
|
19
|
+
end
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
return doc.draft if doc.respond_to? :draft
|
22
|
+
|
23
|
+
false
|
24
|
+
rescue StandardError => e
|
25
|
+
@logger.error { e }
|
26
|
+
false
|
27
|
+
end
|
28
|
+
|
29
|
+
# @param doc [Jekyll::Drops::DocumentDrop]
|
30
|
+
# @return HTML that indicates if a doc is a draft or not
|
31
|
+
def draft_html(doc)
|
32
|
+
return '' unless draft? doc
|
27
33
|
|
28
|
-
|
34
|
+
" <i class='jekyll_draft'>Draft</i>"
|
35
|
+
rescue StandardError => e
|
36
|
+
@logger.error { e.full_message }
|
37
|
+
''
|
38
|
+
end
|
39
|
+
|
40
|
+
# @return path to root of the collection that doc is a member of
|
41
|
+
def root(doc, site)
|
42
|
+
return '/index.html' unless doc.respond_to?(:collection)
|
43
|
+
|
44
|
+
collection_name = doc.collection
|
45
|
+
docs = site.key?(collection_name) ? site[collection_name] : site.collections[collection_name].docs
|
46
|
+
index = docs.find { |d| d.url.end_with? 'index.html' }
|
47
|
+
return index.url if index
|
48
|
+
|
49
|
+
docs.min.url
|
50
|
+
end
|
51
|
+
|
52
|
+
module_function :draft?, :draft_html, :root
|
53
|
+
end
|
29
54
|
end
|
data/lib/draft_html.rb
CHANGED
@@ -1,13 +1,27 @@
|
|
1
1
|
require 'jekyll_plugin_support'
|
2
2
|
|
3
|
-
class
|
3
|
+
class DraftHtml < JekyllSupport::JekyllTag
|
4
4
|
VERSION = '0.1.0'.freeze
|
5
|
-
|
5
|
+
DRAFT_HTML = 'draft_html'.freeze unless defined? Else::VERSION
|
6
6
|
|
7
7
|
def render_impl
|
8
|
-
|
8
|
+
is_draft = Jekyll::Draft.draft?(@page)
|
9
|
+
|
10
|
+
published_output = @helper.parameter_specified? 'published_output'
|
11
|
+
return published_output if !is_draft && published_output
|
12
|
+
return unless is_draft
|
13
|
+
|
14
|
+
draft_output = @helper.parameter_specified? 'draft_output'
|
15
|
+
return draft_output if draft_output
|
16
|
+
|
17
|
+
draft_class = @helper.parameter_specified? 'class'
|
18
|
+
dc = " #{draft_class}" if draft_class
|
19
|
+
|
20
|
+
draft_style = @helper.parameter_specified? 'style'
|
21
|
+
ds = " style='#{draft_style}'" if draft_style
|
22
|
+
|
23
|
+
" <i class='jekyll_draft#{dc}'#{ds}>Draft</i>"
|
9
24
|
end
|
10
25
|
|
11
|
-
JekyllPluginHelper.register(self,
|
12
|
-
PluginMetaLogger.instance.info { "Loaded #{PLUGIN_NAME.class} v#{DraftVersion::VERSION} plugin." }
|
26
|
+
JekyllPluginHelper.register(self, DRAFT_HTML)
|
13
27
|
end
|
data/lib/else.rb
CHANGED
@@ -1,13 +1,19 @@
|
|
1
1
|
require 'jekyll_plugin_support'
|
2
2
|
|
3
|
-
class
|
3
|
+
class ElseBase < JekyllSupport::JekyllTag
|
4
4
|
VERSION = '0.1.0'.freeze
|
5
|
-
|
5
|
+
ELSE_DRAFT = 'else_if_draft'.freeze
|
6
|
+
ELSE_NOT_DRAFT = 'else_if_not_draft'.freeze
|
6
7
|
|
7
8
|
def render_impl
|
8
9
|
RECORD_SEPARATOR
|
9
10
|
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class ElseDraft < ElseBase
|
14
|
+
JekyllPluginHelper.register(self, ELSE_DRAFT)
|
15
|
+
end
|
10
16
|
|
11
|
-
|
12
|
-
|
17
|
+
class ElseNotDraft < ElseBase
|
18
|
+
JekyllPluginHelper.register(self, ELSE_NOT_DRAFT)
|
13
19
|
end
|
data/lib/filters.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'jekyll_plugin_logger'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
# Jekyll filters that detect draft documents
|
5
|
+
module Jekyll
|
6
|
+
module DraftFilter
|
7
|
+
def is_draft(doc) # rubocop:disable Naming/PredicateName
|
8
|
+
Draft.draft? doc
|
9
|
+
end
|
10
|
+
|
11
|
+
def draft_html(doc)
|
12
|
+
Draft.draft_html doc
|
13
|
+
end
|
14
|
+
|
15
|
+
def root(doc, site)
|
16
|
+
Draft.root(doc, site)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
Liquid::Template.register_filter(DraftFilter)
|
21
|
+
end
|
data/lib/if_draft.rb
CHANGED
@@ -1,17 +1,27 @@
|
|
1
1
|
require 'jekyll_plugin_support'
|
2
2
|
|
3
|
-
# Jekyll
|
4
|
-
class
|
5
|
-
|
6
|
-
|
3
|
+
# Jekyll block tags that detect draft documents
|
4
|
+
class DraftBase < JekyllSupport::JekyllBlock
|
5
|
+
IF_DRAFT = 'if_draft'.freeze
|
6
|
+
UNLESS_DRAFT = 'unless_draft'.freeze
|
7
|
+
VERSION = DraftVersion::VERSION.freeze
|
7
8
|
|
8
9
|
def render_impl(content)
|
9
10
|
true_value, false_value, extra = content.split(RECORD_SEPARATOR)
|
10
11
|
raise DraftError, "Warning: More than one else clause detected" if extra
|
11
12
|
|
12
|
-
|
13
|
+
if @tag_name == IF_DRAFT
|
14
|
+
return Jekyll::Draft.draft?(@page) ? true_value : false_value
|
15
|
+
end
|
16
|
+
|
17
|
+
Jekyll::Draft.draft?(@page) ? false_value : true_value
|
13
18
|
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class IfDraft < DraftBase
|
22
|
+
JekyllPluginHelper.register(self, IF_DRAFT)
|
23
|
+
end
|
14
24
|
|
15
|
-
|
16
|
-
|
25
|
+
class UnlessDraft < DraftBase
|
26
|
+
JekyllPluginHelper.register(self, UNLESS_DRAFT)
|
17
27
|
end
|
data/lib/jekyll_draft/version.rb
CHANGED
data/lib/jekyll_draft.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll_draft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Slinn
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- lib/draft.rb
|
57
57
|
- lib/draft_html.rb
|
58
58
|
- lib/else.rb
|
59
|
+
- lib/filters.rb
|
59
60
|
- lib/if_draft.rb
|
60
61
|
- lib/jekyll_draft.rb
|
61
62
|
- lib/jekyll_draft/version.rb
|