jekyll_draft 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -4
- data/CHANGELOG.md +7 -0
- data/README.md +54 -9
- data/jekyll_draft.gemspec +21 -31
- data/lib/jekyll_draft/version.rb +1 -3
- data/lib/jekyll_draft.rb +41 -17
- data/spec/jekyll_draft_spec.rb +0 -2
- data/spec/spec_helper.rb +0 -2
- data/spec/status_persistence.txt +3 -0
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2024b9ea176d56e527de8b6adfcb10c5072f6ea93d3c9d661cf64859e6c69dbc
|
4
|
+
data.tar.gz: d4518a8a07e342bd9586628c4d66a796ae284d89bd4808f805f0f77614b53ea5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5c3c44b58c2983dc6399822b0b223a387d06c3f624d0891748539569cf5abe72ab7ae1e109101c9fbeaae99002a3d8e02984e75af086940c866b2377997b282
|
7
|
+
data.tar.gz: bdef2fa61858f15620e7e54a43199ec434115a91147db7fe485b052f45c3a7cb0be1227e682da7bc6a8b1bdaef2f8d664f14b4f60dd73aaa9ec08ded17f918d0
|
data/.rubocop.yml
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
# require: rubocop-jekyll
|
2
|
-
# inherit_gem:
|
3
|
-
# rubocop-jekyll: .rubocop.yml
|
4
|
-
|
5
1
|
AllCops:
|
6
2
|
Exclude:
|
7
3
|
- vendor/**/*
|
@@ -9,5 +5,11 @@ AllCops:
|
|
9
5
|
NewCops: enable
|
10
6
|
TargetRubyVersion: 2.6
|
11
7
|
|
8
|
+
Layout/HashAlignment:
|
9
|
+
Enabled: false
|
10
|
+
|
12
11
|
Layout/LineLength:
|
13
12
|
Max: 150
|
13
|
+
|
14
|
+
Style/FrozenStringLiteralComment:
|
15
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## 1.1.1 / 2023-02-16
|
2
|
+
* Avoids Jekyll generating the message `Deprecation: Document#draft is now a key in the #data hash.`
|
3
|
+
|
4
|
+
## 1.1.0 / 2023-02-05
|
5
|
+
* Works with CSS classes instead of generating CSS styling
|
6
|
+
* Improved how unpublished documents are recognized
|
7
|
+
|
1
8
|
## 1.0.1 / 2022-08-05
|
2
9
|
* Improved how drafts are recognized
|
3
10
|
|
data/README.md
CHANGED
@@ -2,13 +2,24 @@ jekyll_draft
|
|
2
2
|
[![Gem Version](https://badge.fury.io/rb/jekyll_draft.svg)](https://badge.fury.io/rb/jekyll_draft)
|
3
3
|
===========
|
4
4
|
|
5
|
-
This is a Jekyll plugin that provides two Liquid filters
|
5
|
+
This is a Jekyll plugin that provides two Liquid filters: `is_draft` and `draft_html`.
|
6
6
|
|
7
|
-
More information is available on my
|
7
|
+
More information is available on my website about [my Jekyll plugins](https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html).
|
8
8
|
|
9
9
|
|
10
10
|
## Installation
|
11
11
|
|
12
|
+
Add the following to your CSS:
|
13
|
+
```css
|
14
|
+
.jekyll_draft {
|
15
|
+
background-color: #fefeab;
|
16
|
+
padding-bottom: 2px;
|
17
|
+
padding-left: 0.5em;
|
18
|
+
padding-right: 0.5em;
|
19
|
+
padding-top: 2px;
|
20
|
+
}
|
21
|
+
```
|
22
|
+
|
12
23
|
Add this line to your Jekyll website's `Gemfile`, within the `jekyll_plugins` group:
|
13
24
|
|
14
25
|
```ruby
|
@@ -21,21 +32,40 @@ And then execute:
|
|
21
32
|
|
22
33
|
$ bundle install
|
23
34
|
|
24
|
-
Or install it yourself as:
|
25
|
-
|
26
|
-
$ gem install jekyll_draft
|
27
|
-
|
28
35
|
|
29
36
|
## Usage
|
30
37
|
|
31
|
-
### is_draft
|
38
|
+
### `is_draft`
|
32
39
|
|
33
|
-
Filters a
|
34
|
-
Example: Extracts "blah/blah" from the path.
|
40
|
+
Filters a page according to the directory it resides in, and its front matter.
|
35
41
|
```
|
36
42
|
{{ page | is_draft }} => true
|
37
43
|
```
|
38
44
|
|
45
|
+
### `draft_html`
|
46
|
+
Filters a page according to the directory it resides in, and its front matter.
|
47
|
+
If the page is not a draft then the empty string is returned.
|
48
|
+
```
|
49
|
+
{{ page | draft_html }} => " <i class='bg_light_yellow' style='padding-left: 0.5em; padding-right: 0.5em;'>Draft</i>"
|
50
|
+
```
|
51
|
+
|
52
|
+
### Invoking From Another Jekyll Plugin
|
53
|
+
```ruby
|
54
|
+
require 'jekyll_draft'
|
55
|
+
|
56
|
+
p 'Found a draft' if Jekyll::Draft.is_draft post
|
57
|
+
|
58
|
+
draft = Jekyll::Draft.draft_html post
|
59
|
+
```
|
60
|
+
|
61
|
+
## Demo
|
62
|
+
The [`demo`](./demo) directory contains a demonstration website, which uses the plugin.
|
63
|
+
To run, type:
|
64
|
+
```console
|
65
|
+
$ demo/_bin/debug -r
|
66
|
+
```
|
67
|
+
Now point your web browser to http://localhost:4444
|
68
|
+
|
39
69
|
|
40
70
|
## Development
|
41
71
|
|
@@ -61,6 +91,21 @@ To release a new version,
|
|
61
91
|
The above creates a git tag for the version, commits the created tag,
|
62
92
|
and pushes the new `.gem` file to [RubyGems.org](https://rubygems.org).
|
63
93
|
|
94
|
+
### Debugging
|
95
|
+
Run `bin/attach` and pass the directory name of a Jekyll website that has a suitable script called `_bin/debug`.
|
96
|
+
The `demo` subdirectory fits this description.
|
97
|
+
```console
|
98
|
+
$ bin/attach demo
|
99
|
+
Successfully uninstalled jekyll_draft-0.1.0
|
100
|
+
jekyll_draft 0.1.0 built to pkg/jekyll_draft-0.1.0.gem.
|
101
|
+
jekyll_draft (0.1.0) installed.
|
102
|
+
Fast Debugger (ruby-debug-ide 0.7.3, debase 0.2.4.1, file filtering is supported) listens on 0.0.0.0:1234
|
103
|
+
```
|
104
|
+
Now attach to the debugger process.
|
105
|
+
This git repo includes a [Visual Studio Code launcher](./.vscode/launch.json) for this purpose labeled `Listen for rdebug-ide`.
|
106
|
+
|
107
|
+
Now point your web browser to http://localhost:4444
|
108
|
+
|
64
109
|
|
65
110
|
## Contributing
|
66
111
|
|
data/jekyll_draft.gemspec
CHANGED
@@ -1,46 +1,36 @@
|
|
1
|
-
|
1
|
+
require_relative 'lib/jekyll_draft/version'
|
2
2
|
|
3
|
-
|
3
|
+
Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
4
|
+
github = 'https://github.com/mslinn/jekyll_draft'
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
github = "https://github.com/mslinn/jekyll_draft"
|
8
|
-
|
9
|
-
spec.authors = ["Mike Slinn"]
|
10
|
-
spec.bindir = "exe"
|
6
|
+
spec.authors = ['Mike Slinn']
|
7
|
+
spec.bindir = 'exe'
|
11
8
|
spec.description = <<~END_OF_DESC
|
12
9
|
This Jekyll filter detects draft documents.
|
13
10
|
END_OF_DESC
|
14
|
-
spec.email = [
|
15
|
-
spec.files = Dir[
|
16
|
-
spec.homepage =
|
17
|
-
spec.license =
|
11
|
+
spec.email = ['mslinn@mslinn.com']
|
12
|
+
spec.files = Dir['.rubocop.yml', 'LICENSE.*', 'Rakefile', '{lib,spec}/**/*', '*.gemspec', '*.md']
|
13
|
+
spec.homepage = 'https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#basename'
|
14
|
+
spec.license = 'MIT'
|
18
15
|
spec.metadata = {
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
16
|
+
'allowed_push_host' => 'https://rubygems.org',
|
17
|
+
'bug_tracker_uri' => "#{github}/issues",
|
18
|
+
'changelog_uri' => "#{github}/CHANGELOG.md",
|
19
|
+
'homepage_uri' => spec.homepage,
|
20
|
+
'source_code_uri' => github,
|
24
21
|
}
|
25
|
-
spec.name =
|
22
|
+
spec.name = 'jekyll_draft'
|
26
23
|
spec.post_install_message = <<~END_MESSAGE
|
27
24
|
|
28
25
|
Thanks for installing #{spec.name}!
|
29
26
|
|
30
27
|
END_MESSAGE
|
31
|
-
spec.require_paths = [
|
32
|
-
spec.required_ruby_version =
|
33
|
-
spec.summary =
|
34
|
-
spec.test_files = spec.files.grep(%r
|
28
|
+
spec.require_paths = ['lib']
|
29
|
+
spec.required_ruby_version = '>= 2.6.0'
|
30
|
+
spec.summary = 'This Jekyll filter detects draft documents.'
|
31
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
35
32
|
spec.version = JekyllDraftVersion::VERSION
|
36
33
|
|
37
|
-
spec.add_dependency
|
38
|
-
spec.add_dependency
|
39
|
-
|
40
|
-
# spec.add_development_dependency "debase"
|
41
|
-
# spec.add_development_dependency "rubocop-jekyll"
|
42
|
-
# spec.add_development_dependency "rubocop-rake"
|
43
|
-
# spec.add_development_dependency "rubocop-rspec"
|
44
|
-
# spec.add_development_dependency "ruby-debug-ide"
|
34
|
+
spec.add_dependency 'jekyll', '>= 3.5.0'
|
35
|
+
spec.add_dependency 'jekyll_plugin_logger'
|
45
36
|
end
|
46
|
-
# rubocop:enable Metrics/BlockLength
|
data/lib/jekyll_draft/version.rb
CHANGED
data/lib/jekyll_draft.rb
CHANGED
@@ -1,27 +1,23 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
# @author Copyright 2022 {https://www.mslinn.com Michael Slinn}
|
4
2
|
|
5
3
|
require 'jekyll_plugin_logger'
|
6
4
|
require 'yaml'
|
7
5
|
|
8
|
-
#
|
6
|
+
# Jekyll filter that detects draft documents
|
9
7
|
module Jekyll
|
10
8
|
# Define these methods outside of module DraftFilter so they can be invoked externally and tested easily
|
11
9
|
module Draft
|
12
|
-
# @return true if
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
return doc['draft'] if doc.respond_to?(:[]) || (doc.respond_to?(:key) && doc.key?('draft'))
|
19
|
-
|
20
|
-
return !doc.data['published'] if doc.respond_to?(:data) && doc.data.key?('published')
|
10
|
+
# @return true if document front matter contains published that is not true,
|
11
|
+
# or document is in _drafts.
|
12
|
+
# If draft and published are both specified in front matter then published has priority.
|
13
|
+
def draft?(doc)
|
14
|
+
abort 'Jekyll::Draft.draft? doc is nil!'.red if doc.nil?
|
21
15
|
|
22
|
-
return doc
|
16
|
+
return is_unpublished(doc) if published_was_specified(doc)
|
23
17
|
|
24
|
-
|
18
|
+
# Try Jekyll's naming convention to determine draft status
|
19
|
+
return doc.data['draft'] if doc.respond_to?('data') && doc.data.key?('draft')
|
20
|
+
return doc.draft if doc.respond_to?(:draft)
|
25
21
|
|
26
22
|
false
|
27
23
|
end
|
@@ -30,7 +26,7 @@ module Jekyll
|
|
30
26
|
def draft_html(doc)
|
31
27
|
return '' unless draft?(doc)
|
32
28
|
|
33
|
-
" <i class='
|
29
|
+
" <i class='jekyll_draft'>Draft</i>"
|
34
30
|
end
|
35
31
|
|
36
32
|
# @return path to root of the collection that doc is a member of
|
@@ -45,10 +41,34 @@ module Jekyll
|
|
45
41
|
docs.min.url
|
46
42
|
end
|
47
43
|
|
48
|
-
|
44
|
+
# Non-standard name used so this method could be invoked from Liquid
|
45
|
+
# @return true if published was specified in a document's front matter, and the value is false
|
46
|
+
def published_was_specified(doc)
|
47
|
+
return true if doc.respond_to?('published')
|
48
|
+
|
49
|
+
return false unless doc.respond_to?('data')
|
50
|
+
|
51
|
+
return true if doc.data.key?('published')
|
52
|
+
|
53
|
+
false
|
54
|
+
end
|
55
|
+
|
56
|
+
# Non-standard name used so this method could be invoked from Liquid
|
57
|
+
# @return true if published was specified in a document's front matter, and the value is false
|
58
|
+
def is_unpublished(doc) # rubocop:disable Naming/PredicateName
|
59
|
+
return !doc.published if doc.respond_to?('published')
|
60
|
+
|
61
|
+
return !doc['published'] if doc.key?('published')
|
62
|
+
|
63
|
+
return !doc.data['published'] if doc.respond_to?('data') && doc.data.key?('published')
|
64
|
+
|
65
|
+
false
|
66
|
+
end
|
67
|
+
|
68
|
+
module_function :draft?, :draft_html, :is_unpublished, :published_was_specified, :root
|
49
69
|
end
|
50
70
|
|
51
|
-
#
|
71
|
+
# Jekyll filters interface
|
52
72
|
module DraftFilter
|
53
73
|
def is_draft(doc) # rubocop:disable Naming/PredicateName
|
54
74
|
Draft.draft?(doc)
|
@@ -58,6 +78,10 @@ module Jekyll
|
|
58
78
|
Draft.draft_html(doc)
|
59
79
|
end
|
60
80
|
|
81
|
+
def is_unpublished(doc) # rubocop:disable Naming/PredicateName
|
82
|
+
Draft.is_unpublished(doc)
|
83
|
+
end
|
84
|
+
|
61
85
|
def root(doc, site)
|
62
86
|
Draft.root(doc, site)
|
63
87
|
end
|
data/spec/jekyll_draft_spec.rb
CHANGED
data/spec/spec_helper.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: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Slinn
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -57,6 +57,7 @@ files:
|
|
57
57
|
- lib/jekyll_draft/version.rb
|
58
58
|
- spec/jekyll_draft_spec.rb
|
59
59
|
- spec/spec_helper.rb
|
60
|
+
- spec/status_persistence.txt
|
60
61
|
homepage: https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#basename
|
61
62
|
licenses:
|
62
63
|
- MIT
|
@@ -85,9 +86,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
86
|
version: '0'
|
86
87
|
requirements: []
|
87
88
|
rubygems_version: 3.3.3
|
88
|
-
signing_key:
|
89
|
+
signing_key:
|
89
90
|
specification_version: 4
|
90
91
|
summary: This Jekyll filter detects draft documents.
|
91
92
|
test_files:
|
92
93
|
- spec/jekyll_draft_spec.rb
|
93
94
|
- spec/spec_helper.rb
|
95
|
+
- spec/status_persistence.txt
|
96
|
+
...
|