jekyll_plugin_template 0.2.0 → 0.3.1

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: 1b8804da5578887e2b1dd581de8ad30d4e7e4f4ed4a9a4d6c517e710f52a94c3
4
- data.tar.gz: 9237ebfda58f9da784c9c19c13f60ca9f4b7fcaa62a818b9b383c58b66a931ae
3
+ metadata.gz: bbf29c25ea3f418a5aaed7a236aedaf123bdc00a56e9c5d4d695ff0fba17b7ca
4
+ data.tar.gz: 753290a87bcab62f7f67649633b6c26b1a5cdff1ebde9d8bd44cad4370616e3d
5
5
  SHA512:
6
- metadata.gz: 8a034a2186a0cd8835a96de90c959da5969b8703d8321c86cd3ed5a34fc8473d8ef6363c67aa6ce51a5214b97e97d19be8d790f8d22667ff9eb460f6279e27be
7
- data.tar.gz: 2286531c8782695985b19746a019f1215c257ea2c4ffee55bf2fdacf38d3555c85f8a15cd3145f30d466a67c6d31d7ba522b86b4baae1d6779bafeecb9bba86b
6
+ metadata.gz: 92dd8e9cade06df75d6cadde7156d9ef55762ae59e7f2a28a7d3965477742513aca7ec71cd24461148c3991e9f254f9c79df006b873dcaf365340f5a6c1c3b36
7
+ data.tar.gz: db9fc71ce9001fd46cb3a5068f707a1670288c574cb87e3b757e9bef23c11b249e6ca0ee00a6ffd52358e7779df7f1fa1230144cb18ec20560cf54ada57c86a9
data/.rubocop.yml CHANGED
@@ -1,37 +1,82 @@
1
- # require: rubocop-jekyll
2
- # inherit_gem:
3
- # rubocop-jekyll: .rubocop.yml
1
+ require:
2
+ # - rubocop-jekyll
3
+ - rubocop-md
4
+ - rubocop-performance
5
+ - rubocop-rake
6
+ - rubocop-rspec
4
7
 
5
8
  AllCops:
6
9
  Exclude:
7
- - vendor/**/*
8
- - Gemfile*
9
- - '*.gemspec' # This does nothing. Why?
10
+ - demo/_site/**/*
11
+ - binstub/**/*
12
+ - vendor/**/*
13
+ - Gemfile*
14
+ - Rakefile
15
+ - jekyll_plugin_template.gemspec
10
16
  NewCops: enable
11
- TargetRubyVersion: 2.6
12
17
 
13
- # Gemspec/RequireMFA:
14
- # Enabled: false
18
+ Gemspec/DeprecatedAttributeAssignment:
19
+ Enabled: false
20
+
21
+ Gemspec/RequiredRubyVersion:
22
+ Enabled: false
23
+
24
+ Gemspec/RequireMFA:
25
+ Enabled: false
15
26
 
16
- # Jekyll/NoPutsAllowed:
17
- # Enabled: false
27
+ Layout/InitialIndentation:
28
+ Exclude:
29
+ - README.md
18
30
 
19
31
  Layout/HashAlignment:
32
+ EnforcedColonStyle: table
20
33
  EnforcedHashRocketStyle: table
21
34
 
22
35
  Layout/LineLength:
23
36
  Max: 150
24
37
 
38
+ Layout/MultilineMethodCallIndentation:
39
+ Enabled: false
40
+
41
+ Lint/RedundantCopDisableDirective:
42
+ Exclude:
43
+ - jekyll_plugin_template.gemspec
44
+
25
45
  Metrics/AbcSize:
26
- Max: 20
46
+ Max: 35
27
47
 
28
48
  Metrics/BlockLength:
29
- Max: 50
49
+ Exclude:
50
+ - jekyll_plugin_template.gemspec
51
+ - spec/**/*
52
+
53
+ Metrics/ClassLength:
54
+ Exclude:
55
+ - spec/**/*
30
56
 
31
57
  Metrics/MethodLength:
32
58
  Max: 40
33
59
 
34
- Metrics/ModuleLength:
60
+ Metrics/CyclomaticComplexity:
61
+ Max: 10
62
+
63
+ Metrics/PerceivedComplexity:
64
+ Max: 10
65
+
66
+ Naming/FileName:
67
+ Exclude:
68
+ - Rakefile
69
+
70
+ RSpec/ExampleLength:
71
+ Max: 20
72
+
73
+ RSpec/MultipleExpectations:
74
+ Max: 15
75
+
76
+ Style/CommandLiteral:
77
+ Enabled: false
78
+
79
+ Style/CommentedKeyword:
35
80
  Enabled: false
36
81
 
37
82
  Style/Documentation:
@@ -40,5 +85,21 @@ Style/Documentation:
40
85
  Style/FrozenStringLiteralComment:
41
86
  Enabled: false
42
87
 
88
+ Style/PercentLiteralDelimiters:
89
+ Enabled: false
90
+
91
+ Style/RegexpLiteral:
92
+ Enabled: false
93
+
94
+ Style/StringConcatenation:
95
+ Exclude:
96
+ - spec/**/*
97
+
43
98
  Style/StringLiterals:
44
99
  Enabled: false
100
+
101
+ Style/StringLiteralsInInterpolation:
102
+ Enabled: false
103
+
104
+ Style/TrailingCommaInHashLiteral:
105
+ EnforcedStyleForMultiline: comma
data/CHANGELOG.md CHANGED
@@ -1,17 +1,38 @@
1
+ # Change Log
2
+
3
+
4
+ ## 0.3.1 / 2024-07-24
5
+
6
+ * Updated to `jekyll_plugin_support` v1.0.0.
7
+
8
+
9
+ ## 0.3.0 / 2023-04-05
10
+
11
+ * Updated to `jekyll_plugin_support` v0.6.0 for attribution support.
12
+ * Fixed `jeky_block_tag_plugin.rb` so it works properly with `jekyll_plugin_support`.
13
+
14
+
1
15
  ## 0.2.0 / 2023-02-16
2
- * Updated to `jekyll_plugin_support` v0.5.0.
16
+
17
+ * Updated to `jekyll_plugin_support` v0.5.0.
18
+
3
19
 
4
20
  ## 0.1.3 / 2023-02-12
5
- * Added `grin`, `horns`, `open`, `poop` and `sad` emojis.
6
- * Now based on [`JekyllSupport::JekyllTag`](https://mslinn.com/jekyll/10200-jekyll-plugin-support.html) instead of `Liquid::Tag`.
7
- * Added `list` and `emoji_and_name` options.
8
- * Updated `demo` to exercise the new features.
9
- * `Demo` now builds the plugins prior to each run.
21
+
22
+ * Added `grin`, `horns`, `open`, `poop` and `sad` emojis.
23
+ * Now based on [`JekyllSupport::JekyllTag`](https://mslinn.com/jekyll/10200-jekyll-plugin-support.html) instead of `Liquid::Tag`.
24
+ * Added `list` and `emoji_and_name` options.
25
+ * Updated `demo` to exercise the new features.
26
+ * `Demo` now builds the plugins prior to each run.
27
+
10
28
 
11
29
  ## 0.1.3 / 2022-04-15
12
- * Renamed `lib/jekyll_tag_plugins.rb` to `lib/jekyll_block_tag_plugin.rb`
13
- * Added `lib/jekyll_tag_plugin.rb`
30
+
31
+ * Renamed `lib/jekyll_tag_plugins.rb` to `lib/jekyll_block_tag_plugin.rb`
32
+ * Added `lib/jekyll_tag_plugin.rb`
33
+
14
34
 
15
35
  ## 0.1.2 / 2022-04-05
16
- * Initial version published
17
- * `bin/run_this_first` is unfinished but plugins work
36
+
37
+ * Initial version published
38
+ * `bin/run_this_first` is unfinished but plugins work
data/README.md CHANGED
@@ -45,7 +45,7 @@ The customized gem is ready to be pushed to `RubyGems.org`, or any other Ruby ge
45
45
  ```
46
46
  5) Build the plugins provided with this template.
47
47
  ```shell
48
- $ rake install:local
48
+ $ bundle exec rake install
49
49
  ```
50
50
  6) You can now use your new Jekyll plugins in a Jekyll website.
51
51
 
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
- task :default => :spec
5
+ task default: :spec
@@ -1,10 +1,10 @@
1
1
  require_relative 'lib/jekyll_plugin_template/version'
2
2
 
3
- Gem::Specification.new do |spec|
3
+ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
4
4
  github = 'https://github.com/mslinn/jekyll_plugin_template'
5
5
 
6
- spec.authors = ['Firstname Lastname']
7
- spec.bindir = 'bin'
6
+ spec.authors = ['Mike Slinn']
7
+ spec.bindir = 'exe'
8
8
  spec.description = <<~END_OF_DESC
9
9
  Expand on what spec.summary says.
10
10
  END_OF_DESC
@@ -14,8 +14,8 @@ Gem::Specification.new do |spec|
14
14
  # Specify which files should be added to the gem when it is released.
15
15
  spec.files = Dir['.rubocop.yml', 'LICENSE.*', 'Rakefile', '{lib,spec}/**/*', '*.gemspec', '*.md']
16
16
 
17
- spec.homepage = 'https://www.mslinn.com/blog/2020/12/30/jekyll-plugin-template-collection.html'
18
- spec.license = 'CC0-1.0'
17
+ spec.homepage = 'https://www.mslinn.com/jekyll/10400-jekyll-plugin-template-collection.html'
18
+ spec.license = 'CC0-1.0' # MIT is most popular for Ruby gems
19
19
  spec.metadata = {
20
20
  'allowed_push_host' => 'https://rubygems.org',
21
21
  'bug_tracker_uri' => "#{github}/issues",
@@ -30,13 +30,10 @@ Gem::Specification.new do |spec|
30
30
  spec.version = JekyllPluginTemplateVersion::VERSION
31
31
 
32
32
  spec.add_dependency 'jekyll', '>= 3.5.0'
33
- spec.add_dependency 'jekyll_plugin_support', '~> 0.5.0'
33
+ spec.add_dependency 'jekyll_plugin_support', '>= 1.0.0'
34
34
  spec.add_dependency 'git'
35
35
  spec.add_dependency 'nokogiri'
36
36
  spec.add_dependency 'os'
37
37
  spec.add_dependency 'talk_like_a_pirate', '~> 0.2.2'
38
38
  spec.add_dependency 'tty-prompt'
39
-
40
- # spec.add_development_dependency 'debase'
41
- # spec.add_development_dependency 'ruby-debug-ide'
42
39
  end
@@ -1,7 +1,7 @@
1
1
  require 'jekyll_plugin_support'
2
2
 
3
3
  module JekyllPluginBlockTagTemplate
4
- PLUGIN_NAME = 'block_tag_template'
4
+ PLUGIN_NAME = 'block_tag_template'.freeze
5
5
  end
6
6
 
7
7
  # This is the module-level description.
@@ -23,34 +23,24 @@ module JekyllBlockTagPlugin
23
23
  class MyBlock < JekyllSupport::JekyllBlock
24
24
  include JekyllPluginTemplateVersion
25
25
 
26
- # See https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers#create-your-own-tags
27
- # @param tag_name [String] the name of the tag, which we already know.
28
- # @param argument_string [String] the arguments from the tag, as a single string.
29
- # @param _parse_context [Liquid::ParseContext] hash that stores Liquid options.
30
- # By default it has two keys: :locale and :line_numbers, the first is a Liquid::I18n object, and the second,
31
- # a boolean parameter that determines if error messages should display the line number the error occurred.
32
- # This argument is used mostly to display localized error messages on Liquid built-in Tags and Filters.
33
- # See https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers#create-your-own-tags
34
- # @return [void]
35
- def initialize(tag_name, argument_string, parse_context) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
36
- super
37
- @logger = PluginMetaLogger.instance.new_logger(self, PluginMetaLogger.instance.config)
26
+ REJECTED_ATTRIBUTES = %w[content excerpt next previous].freeze
38
27
 
39
- @argument_string = argument_string
28
+ # Method prescribed by the Jekyll support plugin.
29
+ # @return [String]
30
+ def render_impl(content)
31
+ @helper.gem_file __FILE__ # This enables attribution
40
32
 
41
- argv = Shellwords.split(argument_string) # Scans name/value arguments
42
- params = KeyValueParser.new.parse(argv) # Extracts key/value pairs, default value for non-existant keys is nil
43
- @param1 = params[:param1] # Obtain the value of parameter param1
44
- @param2 = params[:param2]
45
- @param3 = params[:param3]
46
- @param4 = params[:param4]
47
- @param5 = params[:param5]
48
- @param_x = params[:not_present] # The value of parameters that are present is nil, but displays as the empty string
33
+ @param1 = @helper.keys_values['param1'] # Obtain the value of parameter param1
34
+ @param2 = @helper.keys_values['param2']
35
+ @param3 = @helper.keys_values['param3']
36
+ @param4 = @helper.keys_values['param4']
37
+ @param5 = @helper.keys_values['param5']
38
+ @param_x = @helper.keys_values['not_present'] # The value of parameters that are present is nil, but displays as the empty string
49
39
 
50
40
  @logger.debug do
51
41
  <<~HEREDOC
52
- tag_name = '#{tag_name}'
53
- argument_string = '#{argument_string}'
42
+ tag_name = '#{@helper.tag_name}'
43
+ argument_string = '#{@helper.argument_string}'
54
44
  @param1 = '#{@param1}'
55
45
  @param2 = '#{@param2}'
56
46
  @param3 = '#{@param3}'
@@ -58,36 +48,14 @@ module JekyllBlockTagPlugin
58
48
  @param5 = '#{@param5}'
59
49
  @param_x = '#{@param_x}'
60
50
  params =
61
- #{params.map { |k, v| "#{k} = #{v}" }.join("\n ")}
51
+ #{@helper.keys_values.map { |k, v| "#{k} = #{v}" }.join("\n ")}
62
52
  HEREDOC
63
53
  end
64
- end
65
-
66
- REJECTED_ATTRIBUTES = %w[content excerpt next previous].freeze
67
-
68
- # Method prescribed by the Jekyll plugin lifecycle.
69
- # @param liquid_context [Liquid::Context]
70
- # @return [String]
71
- def render(liquid_context) # rubocop:disable Metrics/AbcSize
72
- content = super # This underdocumented assignment returns the text within the block.
73
-
74
- @site = liquid_context.registers[:site]
75
- @config = @site.config
76
- @mode = @config.dig('env', 'JEKYLL_ENV') || 'development'
77
-
78
- # variables defined in pages are stored as hash values in liquid_context
79
- _assigned_page_variable = liquid_context['assigned_page_variable']
80
-
81
- # The names of front matter variables are hash keys for @page
82
- @page = liquid_context.registers[:page] # @page is a Jekyll::Drops::DocumentDrop
83
- # layout = @page['layout']
84
54
 
85
- @envs = liquid_context.environments.first
86
55
  @layout_hash = @envs['layout']
87
56
 
88
57
  @logger.debug do
89
58
  <<~HEREDOC
90
- liquid_context.scopes=#{liquid_context.scopes}
91
59
  mode="#{@mode}"
92
60
  page attributes:
93
61
  #{@page.sort
@@ -101,10 +69,14 @@ module JekyllBlockTagPlugin
101
69
  <<~HEREDOC
102
70
  <p style='color: green; background-color: yellow; padding: 1em; border: solid thin grey;'>
103
71
  #{content} #{@param1}
72
+ #{@helper.attribute if @helper.attribution}
104
73
  </p>
105
74
  HEREDOC
75
+ rescue StandardError => e
76
+ @logger.error { "#{self.class} died with a #{e.full_message}" }
77
+ exit 3
106
78
  end
107
79
 
108
- JekyllPluginHelper.register(self, JekyllPluginBlockTagTemplate::PLUGIN_NAME)
80
+ JekyllSupport::JekyllPluginHelper.register(self, JekyllPluginBlockTagTemplate::PLUGIN_NAME)
109
81
  end
110
82
  end
@@ -1,3 +1,3 @@
1
1
  module JekyllPluginTemplateVersion
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.3.1'.freeze
3
3
  end
@@ -1,9 +1,5 @@
1
1
  require 'jekyll_plugin_support'
2
2
 
3
- module JekyllPluginTagTemplate
4
- PLUGIN_NAME = 'tag_template'.freeze
5
- end
6
-
7
3
  # This Jekyll tag plugin creates an emoji of the desired size and alignment.
8
4
  #
9
5
  # @example Float Smiley emoji right, sized 3em
@@ -22,6 +18,8 @@ end
22
18
  # plugin_loggers:
23
19
  # MyTag: debug
24
20
  module JekyllTagPlugin
21
+ PLUGIN_NAME = 'tag_template'.freeze
22
+
25
23
  # This class implements the Jekyll tag functionality
26
24
  class MyTag < JekyllSupport::JekyllTag
27
25
  include JekyllPluginTemplateVersion
@@ -41,7 +39,7 @@ module JekyllTagPlugin
41
39
  'smiley' => '&#x1F601;', # default emoji
42
40
  'smirk' => '&#x1F60F;',
43
41
  'two_hearts' => '&#x1F495;',
44
- }.sort_by { |k, v| [k] }.to_h
42
+ }.sort_by { |k, _v| [k] }.to_h
45
43
 
46
44
  # @param tag_name [String] is the name of the tag, which we already know.
47
45
  # @param argument_string [String] the arguments from the web page.
@@ -101,13 +99,16 @@ module JekyllTagPlugin
101
99
  end
102
100
 
103
101
  def list
104
- "<ul class='emoji_list'>\n" +
105
- (@@emojis.map do |ename, hex_code|
106
- " <li>#{ assemble_emoji(ename, hex_code) }</li>\n"
107
- end).join +
108
- "</ul>\n"
102
+ items = @@emojis.map do |ename, hex_code|
103
+ " <li>#{assemble_emoji(ename, hex_code)}</li>"
104
+ end
105
+ <<~END_RESULT
106
+ <ul class='emoji_list'>
107
+ #{items.join("\n ")}
108
+ </ul>
109
+ END_RESULT
109
110
  end
110
111
 
111
- JekyllPluginHelper.register(self, JekyllPluginTagTemplate::PLUGIN_NAME)
112
+ JekyllSupport::JekyllPluginHelper.register(self, JekyllTagPlugin::PLUGIN_NAME)
112
113
  end
113
114
  end
data/spec/spec_helper.rb CHANGED
@@ -8,9 +8,8 @@ require_relative '../lib/jekyll_plugin_template'
8
8
  Jekyll.logger.log_level = :info
9
9
 
10
10
  RSpec.configure do |config|
11
- config.filter_run :focus
11
+ config.filter_run_when_matching focus: true
12
12
  config.order = 'random'
13
- config.run_all_when_everything_filtered = true
14
13
 
15
14
  # See https://relishapp.com/rspec/rspec-core/docs/command-line/only-failures
16
15
  config.example_status_persistence_file_path = 'spec/status_persistence.txt'
@@ -0,0 +1,5 @@
1
+ example_id | status | run_time |
2
+ ------------------------------------------ | ------ | --------------- |
3
+ ./spec/jekyll_plugin_template_spec.rb[1:1] | passed | 0.02165 seconds |
4
+ ./spec/run_this_first_spec.rb[1:1] | failed | 0.00134 seconds |
5
+ ./spec/run_this_first_spec.rb[1:2] | failed | 2.84 seconds |
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll_plugin_template
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
- - Firstname Lastname
7
+ - Mike Slinn
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-16 00:00:00.000000000 Z
11
+ date: 2024-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: jekyll_plugin_support
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.5.0
33
+ version: 1.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.5.0
40
+ version: 1.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: git
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -143,14 +143,15 @@ files:
143
143
  - spec/run_this_first_helper.rb
144
144
  - spec/run_this_first_spec.rb
145
145
  - spec/spec_helper.rb
146
- homepage: https://www.mslinn.com/blog/2020/12/30/jekyll-plugin-template-collection.html
146
+ - spec/status_persistence.txt
147
+ homepage: https://www.mslinn.com/jekyll/10400-jekyll-plugin-template-collection.html
147
148
  licenses:
148
149
  - CC0-1.0
149
150
  metadata:
150
151
  allowed_push_host: https://rubygems.org
151
152
  bug_tracker_uri: https://github.com/mslinn/jekyll_plugin_template/issues
152
153
  changelog_uri: https://github.com/mslinn/jekyll_plugin_template/CHANGELOG.md
153
- homepage_uri: https://www.mslinn.com/blog/2020/12/30/jekyll-plugin-template-collection.html
154
+ homepage_uri: https://www.mslinn.com/jekyll/10400-jekyll-plugin-template-collection.html
154
155
  source_code_uri: https://github.com/mslinn/jekyll_plugin_template
155
156
  post_install_message:
156
157
  rdoc_options: []
@@ -167,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
168
  - !ruby/object:Gem::Version
168
169
  version: '0'
169
170
  requirements: []
170
- rubygems_version: 3.3.3
171
+ rubygems_version: 3.5.16
171
172
  signing_key:
172
173
  specification_version: 4
173
174
  summary: Write a short summary; RubyGems requires one.