jekyll_plugin_support 0.4.1 → 0.5.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/.rubocop.yml +25 -2
- data/CHANGELOG.md +5 -0
- data/README.md +31 -8
- data/Rakefile +1 -1
- data/jekyll_plugin_support.gemspec +1 -13
- data/lib/jekyll_plugin_support/version.rb +2 -2
- data/lib/jekyll_plugin_support.rb +11 -3
- data/lib/jekyll_plugin_support_helper.rb +19 -6
- data/spec/status_persistence.txt +0 -0
- metadata +4 -72
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad3dd2c6f00993d77f9db69e844a1f70e52c21ac1ef66c47294cc7683dee5743
|
4
|
+
data.tar.gz: 121436f415bbcb0cddffa4f9b9c26f735e899aa733df38749e5be2856d56d238
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6d186e5d5347b7857cef3318a152a4a9db75e57ebe7dc244dd0574542b47b2c97c4ba55af03065099cca94c3ca3fb3e666268fb4e2427683b94a0c058388a7b
|
7
|
+
data.tar.gz: 1529488c906cc7c687356f22b65223f347d75eb35f1747742466166921b266c4f172233eaf638bb06af7fdf6fcd93e67d0f6ca25cbde0f98139edb05fb07d64a
|
data/.rubocop.yml
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
AllCops:
|
2
2
|
Exclude:
|
3
|
-
|
4
|
-
|
3
|
+
- exe/**/*
|
4
|
+
- vendor/**/*
|
5
|
+
- Gemfile*
|
5
6
|
NewCops: enable
|
6
7
|
TargetRubyVersion: 2.6
|
7
8
|
|
9
|
+
Gemspec/DeprecatedAttributeAssignment:
|
10
|
+
Enabled: false
|
11
|
+
|
12
|
+
Gemspec/RequireMFA:
|
13
|
+
Enabled: false
|
14
|
+
|
8
15
|
Layout/HashAlignment:
|
9
16
|
Enabled: false
|
10
17
|
|
@@ -14,5 +21,21 @@ Layout/LineLength:
|
|
14
21
|
Layout/MultilineMethodCallIndentation:
|
15
22
|
Enabled: false
|
16
23
|
|
24
|
+
Metrics/AbcSize:
|
25
|
+
Max: 20
|
26
|
+
|
27
|
+
Metrics/BlockLength:
|
28
|
+
Exclude:
|
29
|
+
- jekyll_plugin_support.gemspec
|
30
|
+
|
31
|
+
Metrics/MethodLength:
|
32
|
+
Max: 25
|
33
|
+
|
17
34
|
Style/FrozenStringLiteralComment:
|
18
35
|
Enabled: false
|
36
|
+
|
37
|
+
Style/Documentation:
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
Style/TrailingCommaInHashLiteral:
|
41
|
+
EnforcedStyleForMultiline: comma
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 0.5.0 / 2023-02-15
|
2
|
+
* Plugins now register themselves
|
3
|
+
* Plugins now report their name and version
|
4
|
+
* `@layout`, `@paginator`, and `@theme` have values if supported by the version of Jekyll, and they are active. (See [Jekyll docs](https://jekyllrb.com/docs/variables/).)
|
5
|
+
|
1
6
|
## 0.4.1 / 2023-02-14
|
2
7
|
* Fixed several problems
|
3
8
|
* Added demo site
|
data/README.md
CHANGED
@@ -50,11 +50,11 @@ and can parse parameters passed to the tag / block tag, [as described here](http
|
|
50
50
|
```ruby
|
51
51
|
# For a tag:
|
52
52
|
module Jekyll
|
53
|
-
class
|
53
|
+
class MyTag < JekyllSupport::JekyllTag
|
54
|
+
VERSION = '0.1.0'.freeze
|
55
|
+
|
54
56
|
def render_impl
|
55
|
-
|
56
|
-
@break = @helper.parameter_specified? 'break'
|
57
|
-
# ...
|
57
|
+
# Your code here
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -63,11 +63,34 @@ end
|
|
63
63
|
```ruby
|
64
64
|
# For a tag block:
|
65
65
|
module Jekyll
|
66
|
-
class
|
66
|
+
class MyBlock < JekyllSupport::JekyllBlock
|
67
|
+
VERSION = '0.1.0'.freeze
|
68
|
+
|
69
|
+
def render_impl(text)
|
70
|
+
# Your code here
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
```
|
75
|
+
|
76
|
+
Note that each tag or tag block must define a constant called `VERSION`.
|
77
|
+
If your plugin is packaged as a gem, then you might need to include `version.rb` into the plugin class.
|
78
|
+
For example, if `lib/my_plugin/version.rb` looks like this:
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
module MyPluginVersion
|
82
|
+
VERSION = '0.5.0'.freeze
|
83
|
+
end
|
84
|
+
```
|
85
|
+
|
86
|
+
Then your plugin can incorporate the `VERSION` constant into your plugin like this:
|
87
|
+
```ruby
|
88
|
+
module Jekyll
|
89
|
+
class MyBlock < JekyllSupport::JekyllBlock
|
90
|
+
include MyPluginVersion
|
91
|
+
|
67
92
|
def render_impl(text)
|
68
|
-
|
69
|
-
@break = @helper.parameter_specified? 'break'
|
70
|
-
# ...
|
93
|
+
# Your code here
|
71
94
|
end
|
72
95
|
end
|
73
96
|
end
|
data/Rakefile
CHANGED
@@ -21,26 +21,14 @@ Gem::Specification.new do |spec|
|
|
21
21
|
|
22
22
|
Thanks for installing #{spec.name}!
|
23
23
|
|
24
|
-
END_MESSAGE
|
25
|
-
spec.post_install_message = <<~END_MESSAGE
|
26
|
-
|
27
|
-
Thanks for installing #{spec.name}!
|
28
|
-
|
29
24
|
END_MESSAGE
|
30
25
|
spec.require_paths = ['lib']
|
31
26
|
spec.required_ruby_version = '>= 2.6.0'
|
32
27
|
spec.summary = 'Provides support for writing Jekyll plugins.'
|
33
28
|
spec.test_files = spec.files.grep %r{^(test|spec|features)/}
|
34
|
-
spec.version =
|
29
|
+
spec.version = JekyllPluginSupportVersion::VERSION
|
35
30
|
|
36
31
|
spec.add_dependency 'jekyll', '>= 3.5.0'
|
37
32
|
spec.add_dependency 'jekyll_plugin_logger'
|
38
33
|
spec.add_dependency 'key-value-parser'
|
39
|
-
|
40
|
-
spec.add_development_dependency 'debase'
|
41
|
-
spec.add_development_dependency 'rspec-match_ignoring_whitespace'
|
42
|
-
# spec.add_development_dependency 'rubocop-jekyll'
|
43
|
-
spec.add_development_dependency 'rubocop-rake'
|
44
|
-
spec.add_development_dependency 'rubocop-rspec'
|
45
|
-
spec.add_development_dependency 'ruby-debug-ide'
|
46
34
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
module
|
2
|
-
VERSION = '0.
|
1
|
+
module JekyllPluginSupportVersion
|
2
|
+
VERSION = '0.5.0'.freeze
|
3
3
|
end
|
@@ -75,11 +75,19 @@ module JekyllSupport
|
|
75
75
|
# Method prescribed by the Jekyll plugin lifecycle.
|
76
76
|
def render(liquid_context)
|
77
77
|
@helper.liquid_context = liquid_context
|
78
|
-
|
79
|
-
@
|
78
|
+
|
79
|
+
@envs = liquid_context.environments.first
|
80
|
+
|
81
|
+
@layout = @envs[:layout]
|
82
|
+
@paginator = @envs[:paginator]
|
83
|
+
@theme = @envs[:theme]
|
84
|
+
|
85
|
+
@page = liquid_context.registers[:page]
|
86
|
+
@site = liquid_context.registers[:site]
|
87
|
+
|
80
88
|
@config = @site.config
|
81
|
-
@envs = liquid_context.environments.first
|
82
89
|
@mode = @config['env']['JEKYLL_ENV'] || 'development'
|
90
|
+
|
83
91
|
render_impl
|
84
92
|
end
|
85
93
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require 'shellwords'
|
4
2
|
require 'key_value_parser'
|
5
3
|
|
@@ -7,7 +5,7 @@ require 'key_value_parser'
|
|
7
5
|
class JekyllPluginHelper
|
8
6
|
attr_reader :argv, :keys_values, :liquid_context, :logger, :markup, :params, :tag_name
|
9
7
|
|
10
|
-
# Expand
|
8
|
+
# Expand an environment variable reference
|
11
9
|
def self.expand_env(str, die_if_undefined: false)
|
12
10
|
str.gsub(/\$([a-zA-Z_][a-zA-Z0-9_]*)|\${\g<1>}|%\g<1>%/) do
|
13
11
|
envar = Regexp.last_match(1)
|
@@ -18,6 +16,21 @@ class JekyllPluginHelper
|
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
19
|
+
def self.register(klass, name)
|
20
|
+
abort("Error: The #{name} plugin does not define VERSION") \
|
21
|
+
unless klass.const_defined?(:VERSION)
|
22
|
+
|
23
|
+
version = klass.const_get(:VERSION)
|
24
|
+
|
25
|
+
abort("Error: The #{name} plugin is not an instance of JekyllSupport::JekyllBlock or JekyllSupport::JekyllTag") \
|
26
|
+
unless klass.instance_of?(Class) &&
|
27
|
+
(klass.ancestors.include?(JekyllSupport::JekyllBlock) || \
|
28
|
+
klass.ancestors.include?(JekyllSupport::JekyllTag))
|
29
|
+
|
30
|
+
Liquid::Template.register_tag(name, klass)
|
31
|
+
PluginMetaLogger.instance.info { "Loaded #{name} v#{version} plugin." }
|
32
|
+
end
|
33
|
+
|
21
34
|
# strip leading and trailing quotes if present
|
22
35
|
def self.remove_quotes(string)
|
23
36
|
string.strip.gsub(/\A'|\A"|'\Z|"\Z/, '').strip if string
|
@@ -35,14 +48,14 @@ class JekyllPluginHelper
|
|
35
48
|
def initialize(tag_name, markup, logger)
|
36
49
|
@tag_name = tag_name
|
37
50
|
@logger = logger
|
38
|
-
@logger.debug { "@keys_values='#{@keys_values}'" }
|
39
51
|
reinitialize(markup.strip)
|
52
|
+
@logger.debug { "@keys_values='#{@keys_values}'" }
|
40
53
|
end
|
41
54
|
|
42
55
|
def reinitialize(markup)
|
43
56
|
# @keys_values was a Hash[Symbol, String|Boolean] but now it is Hash[String, String|Boolean]
|
44
|
-
@markup = markup
|
45
|
-
@argv = Shellwords.split(
|
57
|
+
@markup = markup
|
58
|
+
@argv = Shellwords.split(self.class.expand_env(markup))
|
46
59
|
@keys_values = KeyValueParser \
|
47
60
|
.new({}, { array_values: false, normalize_keys: false, separator: /=/ }) \
|
48
61
|
.parse(@argv)
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll_plugin_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
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-02-
|
11
|
+
date: 2023-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -52,76 +52,6 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: debase
|
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
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec-match_ignoring_whitespace
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop-rake
|
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: rubocop-rspec
|
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: ruby-debug-ide
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
55
|
description:
|
126
56
|
email:
|
127
57
|
- mslinn@mslinn.com
|
@@ -142,6 +72,7 @@ files:
|
|
142
72
|
- spec/jekyll_block_plugin_support_spec.rb
|
143
73
|
- spec/jekyll_tag_plugin_support_spec.rb
|
144
74
|
- spec/spec_helper.rb
|
75
|
+
- spec/status_persistence.txt
|
145
76
|
homepage: https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#quote
|
146
77
|
licenses:
|
147
78
|
- MIT
|
@@ -177,4 +108,5 @@ test_files:
|
|
177
108
|
- spec/jekyll_block_plugin_support_spec.rb
|
178
109
|
- spec/jekyll_tag_plugin_support_spec.rb
|
179
110
|
- spec/spec_helper.rb
|
111
|
+
- spec/status_persistence.txt
|
180
112
|
...
|