jekyll_plugin_support 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 53975ba14d38fdc37e99ed9363b3d30885a301541c254584ae70d18157fc0e3f
4
- data.tar.gz: ccd9fc245d26fce6fa24bbc8edcda670faa017df3e08c75ec08effa760fa44ae
3
+ metadata.gz: ad3dd2c6f00993d77f9db69e844a1f70e52c21ac1ef66c47294cc7683dee5743
4
+ data.tar.gz: 121436f415bbcb0cddffa4f9b9c26f735e899aa733df38749e5be2856d56d238
5
5
  SHA512:
6
- metadata.gz: f78badf8195aebeb9401a974aebd589b1f9af69e9d6c83a3dd7d7340f2edc93ad418ef6806915dc130cb4deab5c0beb80eca15cd27189cdca999bd15d1434081
7
- data.tar.gz: dde45223b684b140e3c5e7d2633d96f39e974c148094243a979cebe60c33af5383e761c3e9aa6a60d34cdd71b90a550c39964f7e6e63c692660d536990074b39
6
+ metadata.gz: b6d186e5d5347b7857cef3318a152a4a9db75e57ebe7dc244dd0574542b47b2c97c4ba55af03065099cca94c3ca3fb3e666268fb4e2427683b94a0c058388a7b
7
+ data.tar.gz: 1529488c906cc7c687356f22b65223f347d75eb35f1747742466166921b266c4f172233eaf638bb06af7fdf6fcd93e67d0f6ca25cbde0f98139edb05fb07d64a
data/.rubocop.yml CHANGED
@@ -1,10 +1,17 @@
1
1
  AllCops:
2
2
  Exclude:
3
- - vendor/**/*
4
- - Gemfile*
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 Quote < JekyllSupport::JekyllTag
53
+ class MyTag < JekyllSupport::JekyllTag
54
+ VERSION = '0.1.0'.freeze
55
+
54
56
  def render_impl
55
- site_data = @site.data
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 Quote < JekyllSupport::JekyllBlock
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
- site_url = @site.url
69
- @break = @helper.parameter_specified? 'break'
70
- # ...
93
+ # Your code here
71
94
  end
72
95
  end
73
96
  end
data/Rakefile CHANGED
@@ -2,4 +2,4 @@ require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
- task :default => :spec
5
+ task default: :spec
@@ -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 = JekyllQuoteVersion::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 JekyllQuoteVersion
2
- VERSION = '0.4.1'.freeze
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
- @page = liquid_context.registers[:page]
79
- @site = liquid_context.registers[:site]
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 a environment variable reference
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 # Useful for debugging
45
- @argv = Shellwords.split(JekyllPluginHelper.expand_env(markup))
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.1
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-14 00:00:00.000000000 Z
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
  ...