jekyll_plugin_template 0.1.3 → 0.2.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 +9 -0
- data/CHANGELOG.md +11 -0
- data/Rakefile +0 -2
- data/jekyll_plugin_template.gemspec +26 -30
- data/lib/category_combiner.rb +0 -2
- data/lib/category_index_generator.rb +8 -10
- data/lib/dumpers.rb +1 -3
- data/lib/jekyll_block_tag_plugin.rb +11 -14
- data/lib/jekyll_filter_template.rb +4 -6
- data/lib/jekyll_hook_examples.rb +10 -12
- data/lib/jekyll_hooks.rb +55 -57
- data/lib/jekyll_plugin_template/version.rb +1 -3
- data/lib/jekyll_plugin_template.rb +10 -12
- data/lib/jekyll_tag_plugin.rb +51 -51
- data/spec/jekyll_plugin_template_spec.rb +12 -14
- data/spec/nokogiri_test.rb +3 -5
- data/spec/run_this_first_data/lib/old_name/old_name.rb +1 -3
- data/spec/run_this_first_data/lib/old_name/version.rb +1 -3
- data/spec/run_this_first_data/lib/old_name.rb +1 -3
- data/spec/run_this_first_data/old_name.gemspec +3 -5
- data/spec/run_this_first_helper.rb +5 -7
- data/spec/run_this_first_spec.rb +20 -22
- data/spec/spec_helper.rb +7 -9
- metadata +9 -38
- data/spec/status_persistence.txt +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b8804da5578887e2b1dd581de8ad30d4e7e4f4ed4a9a4d6c517e710f52a94c3
|
4
|
+
data.tar.gz: 9237ebfda58f9da784c9c19c13f60ca9f4b7fcaa62a818b9b383c58b66a931ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a034a2186a0cd8835a96de90c959da5969b8703d8321c86cd3ed5a34fc8473d8ef6363c67aa6ce51a5214b97e97d19be8d790f8d22667ff9eb460f6279e27be
|
7
|
+
data.tar.gz: 2286531c8782695985b19746a019f1215c257ea2c4ffee55bf2fdacf38d3555c85f8a15cd3145f30d466a67c6d31d7ba522b86b4baae1d6779bafeecb9bba86b
|
data/.rubocop.yml
CHANGED
@@ -22,6 +22,9 @@ Layout/HashAlignment:
|
|
22
22
|
Layout/LineLength:
|
23
23
|
Max: 150
|
24
24
|
|
25
|
+
Metrics/AbcSize:
|
26
|
+
Max: 20
|
27
|
+
|
25
28
|
Metrics/BlockLength:
|
26
29
|
Max: 50
|
27
30
|
|
@@ -31,5 +34,11 @@ Metrics/MethodLength:
|
|
31
34
|
Metrics/ModuleLength:
|
32
35
|
Enabled: false
|
33
36
|
|
37
|
+
Style/Documentation:
|
38
|
+
Enabled: false
|
39
|
+
|
40
|
+
Style/FrozenStringLiteralComment:
|
41
|
+
Enabled: false
|
42
|
+
|
34
43
|
Style/StringLiterals:
|
35
44
|
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
|
+
## 0.2.0 / 2023-02-16
|
2
|
+
* Updated to `jekyll_plugin_support` v0.5.0.
|
3
|
+
|
4
|
+
## 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.
|
10
|
+
|
1
11
|
## 0.1.3 / 2022-04-15
|
2
12
|
* Renamed `lib/jekyll_tag_plugins.rb` to `lib/jekyll_block_tag_plugin.rb`
|
3
13
|
* Added `lib/jekyll_tag_plugin.rb`
|
14
|
+
|
4
15
|
## 0.1.2 / 2022-04-05
|
5
16
|
* Initial version published
|
6
17
|
* `bin/run_this_first` is unfinished but plugins work
|
data/Rakefile
CHANGED
@@ -1,46 +1,42 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative "lib/jekyll_plugin_template/version"
|
1
|
+
require_relative 'lib/jekyll_plugin_template/version'
|
4
2
|
|
5
3
|
Gem::Specification.new do |spec|
|
6
|
-
github =
|
4
|
+
github = 'https://github.com/mslinn/jekyll_plugin_template'
|
7
5
|
|
8
|
-
spec.authors = [
|
9
|
-
spec.bindir =
|
6
|
+
spec.authors = ['Firstname Lastname']
|
7
|
+
spec.bindir = 'bin'
|
10
8
|
spec.description = <<~END_OF_DESC
|
11
9
|
Expand on what spec.summary says.
|
12
10
|
END_OF_DESC
|
13
|
-
spec.email = [
|
11
|
+
spec.email = ['email@email.com']
|
14
12
|
spec.executables = []
|
15
13
|
|
16
14
|
# Specify which files should be added to the gem when it is released.
|
17
|
-
spec.files = Dir[
|
15
|
+
spec.files = Dir['.rubocop.yml', 'LICENSE.*', 'Rakefile', '{lib,spec}/**/*', '*.gemspec', '*.md']
|
18
16
|
|
19
|
-
spec.homepage =
|
20
|
-
spec.license =
|
17
|
+
spec.homepage = 'https://www.mslinn.com/blog/2020/12/30/jekyll-plugin-template-collection.html'
|
18
|
+
spec.license = 'CC0-1.0'
|
21
19
|
spec.metadata = {
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
'allowed_push_host' => 'https://rubygems.org',
|
21
|
+
'bug_tracker_uri' => "#{github}/issues",
|
22
|
+
'changelog_uri' => "#{github}/CHANGELOG.md",
|
23
|
+
'homepage_uri' => spec.homepage,
|
24
|
+
'source_code_uri' => github,
|
27
25
|
}
|
28
|
-
spec.name =
|
29
|
-
spec.require_paths = [
|
30
|
-
spec.required_ruby_version =
|
31
|
-
spec.summary =
|
26
|
+
spec.name = 'jekyll_plugin_template'
|
27
|
+
spec.require_paths = ['lib']
|
28
|
+
spec.required_ruby_version = '>= 2.6.0'
|
29
|
+
spec.summary = 'Write a short summary; RubyGems requires one.'
|
32
30
|
spec.version = JekyllPluginTemplateVersion::VERSION
|
33
31
|
|
34
|
-
spec.add_dependency
|
35
|
-
spec.add_dependency
|
36
|
-
spec.add_dependency
|
37
|
-
spec.add_dependency
|
38
|
-
spec.add_dependency
|
39
|
-
spec.add_dependency
|
40
|
-
spec.add_dependency
|
41
|
-
spec.add_dependency "talk_like_a_pirate", ">= 0.2.2"
|
42
|
-
spec.add_dependency "tty-prompt"
|
32
|
+
spec.add_dependency 'jekyll', '>= 3.5.0'
|
33
|
+
spec.add_dependency 'jekyll_plugin_support', '~> 0.5.0'
|
34
|
+
spec.add_dependency 'git'
|
35
|
+
spec.add_dependency 'nokogiri'
|
36
|
+
spec.add_dependency 'os'
|
37
|
+
spec.add_dependency 'talk_like_a_pirate', '~> 0.2.2'
|
38
|
+
spec.add_dependency 'tty-prompt'
|
43
39
|
|
44
|
-
# spec.add_development_dependency
|
45
|
-
# spec.add_development_dependency
|
40
|
+
# spec.add_development_dependency 'debase'
|
41
|
+
# spec.add_development_dependency 'ruby-debug-ide'
|
46
42
|
end
|
data/lib/category_combiner.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
# Inspired by the badly broken example on https://jekyllrb.com/docs/plugins/generators/, and completely redone so it works.
|
4
2
|
module CategoryIndexGenerator
|
5
3
|
# Creates an index page for each catagory, plus a main index, all within a directory called _site/categories.
|
@@ -12,24 +10,24 @@ module CategoryIndexGenerator
|
|
12
10
|
# This plugin is disabled unless _config.yml contains an entry for category_generator_enable and the value is not false
|
13
11
|
return if site.config['category_generator_enable']
|
14
12
|
|
15
|
-
return if site.config['env']['JEKYLL_ENV'] ==
|
13
|
+
return if site.config['env']['JEKYLL_ENV'] == 'production'
|
16
14
|
|
17
|
-
index = Jekyll::PageWithoutAFile.new(site, site.source, 'categories',
|
18
|
-
index.data['layout'] =
|
19
|
-
index.data['title'] =
|
20
|
-
index.content =
|
15
|
+
index = Jekyll::PageWithoutAFile.new(site, site.source, 'categories', 'index.html')
|
16
|
+
index.data['layout'] = 'default'
|
17
|
+
index.data['title'] = 'Post Categories'
|
18
|
+
index.content = '<p>'
|
21
19
|
|
22
20
|
site.categories.each do |category, posts|
|
23
21
|
new_page = Jekyll::PageWithoutAFile.new(site, site.source, 'categories', "#{category}.html")
|
24
|
-
new_page.data['layout'] =
|
22
|
+
new_page.data['layout'] = 'default'
|
25
23
|
new_page.data['title'] = "Category #{category} Posts"
|
26
|
-
new_page.content =
|
24
|
+
new_page.content = '<p>' + posts.map do |post|
|
27
25
|
"<a href='#{post.url}'>#{post.data['title']}</a><br>"
|
28
26
|
end.join("\n") + "</p>\n"
|
29
27
|
site.pages << new_page
|
30
28
|
index.content += "<a href='#{category}.html'>#{category}</a><br>\n"
|
31
29
|
end
|
32
|
-
index.content +=
|
30
|
+
index.content += '</p>'
|
33
31
|
site.pages << index
|
34
32
|
end
|
35
33
|
# rubocop:enable Style/StringConcatenation, Metrics/AbcSize
|
data/lib/dumpers.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
# Methods to display Jekyll variable contents
|
4
2
|
module Dumpers
|
5
3
|
# See https://github.com/jekyll/jekyll/blob/master/lib/jekyll/collection.rb
|
@@ -8,7 +6,7 @@ module Dumpers
|
|
8
6
|
# Metadata is a hash with at least these keys: output[Boolean], permalink[String]
|
9
7
|
# selected methods: collection_dir, directory, entries, exists?, files, filtered_entries, relative_directory
|
10
8
|
def collection_as_string(collection, indent_spaces)
|
11
|
-
indent =
|
9
|
+
indent = ' ' * indent_spaces
|
12
10
|
result = <<~END_COLLECTION
|
13
11
|
'#{collection.label}' collection within '#{collection.relative_directory}' subdirectory
|
14
12
|
#{indent}Directory: #{collection.directory}
|
@@ -1,18 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "jekyll_plugin_logger"
|
4
|
-
require "key_value_parser"
|
5
|
-
require "shellwords"
|
1
|
+
require 'jekyll_plugin_support'
|
6
2
|
|
7
3
|
module JekyllPluginBlockTagTemplate
|
8
|
-
PLUGIN_NAME =
|
4
|
+
PLUGIN_NAME = 'block_tag_template'
|
9
5
|
end
|
10
6
|
|
11
7
|
# This is the module-level description.
|
12
8
|
#
|
13
9
|
# @example Heading for this example
|
14
10
|
# Describe what this example does
|
15
|
-
# {% block_tag_template
|
11
|
+
# {% block_tag_template 'parameter' %}
|
16
12
|
# Hello, world!
|
17
13
|
# {% endblock_tag_template %}
|
18
14
|
#
|
@@ -24,7 +20,9 @@ end
|
|
24
20
|
|
25
21
|
module JekyllBlockTagPlugin
|
26
22
|
# This class implements the Jekyll block tag functionality
|
27
|
-
class MyBlock <
|
23
|
+
class MyBlock < JekyllSupport::JekyllBlock
|
24
|
+
include JekyllPluginTemplateVersion
|
25
|
+
|
28
26
|
# See https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers#create-your-own-tags
|
29
27
|
# @param tag_name [String] the name of the tag, which we already know.
|
30
28
|
# @param argument_string [String] the arguments from the tag, as a single string.
|
@@ -70,12 +68,12 @@ module JekyllBlockTagPlugin
|
|
70
68
|
# Method prescribed by the Jekyll plugin lifecycle.
|
71
69
|
# @param liquid_context [Liquid::Context]
|
72
70
|
# @return [String]
|
73
|
-
def render(liquid_context) # rubocop:disable Metrics/AbcSize
|
71
|
+
def render(liquid_context) # rubocop:disable Metrics/AbcSize
|
74
72
|
content = super # This underdocumented assignment returns the text within the block.
|
75
73
|
|
76
74
|
@site = liquid_context.registers[:site]
|
77
75
|
@config = @site.config
|
78
|
-
@mode = @config.dig(
|
76
|
+
@mode = @config.dig('env', 'JEKYLL_ENV') || 'development'
|
79
77
|
|
80
78
|
# variables defined in pages are stored as hash values in liquid_context
|
81
79
|
_assigned_page_variable = liquid_context['assigned_page_variable']
|
@@ -101,13 +99,12 @@ module JekyllBlockTagPlugin
|
|
101
99
|
|
102
100
|
# Compute the return value of this Jekyll tag
|
103
101
|
<<~HEREDOC
|
104
|
-
<p style=
|
102
|
+
<p style='color: green; background-color: yellow; padding: 1em; border: solid thin grey;'>
|
105
103
|
#{content} #{@param1}
|
106
104
|
</p>
|
107
105
|
HEREDOC
|
108
106
|
end
|
107
|
+
|
108
|
+
JekyllPluginHelper.register(self, JekyllPluginBlockTagTemplate::PLUGIN_NAME)
|
109
109
|
end
|
110
110
|
end
|
111
|
-
|
112
|
-
PluginMetaLogger.instance.info { "Loaded #{JekyllPluginBlockTagTemplate::PLUGIN_NAME} v#{JekyllPluginTemplateVersion::VERSION} plugin." }
|
113
|
-
Liquid::Template.register_tag(JekyllPluginBlockTagTemplate::PLUGIN_NAME, JekyllBlockTagPlugin::MyBlock)
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "jekyll_plugin_logger"
|
1
|
+
require 'jekyll_plugin_logger'
|
4
2
|
|
5
3
|
# @author Copyright 2020 {https://www.mslinn.com Michael Slinn}
|
6
4
|
# Template for Jekyll filters.
|
@@ -14,12 +12,12 @@ module JekyllFilterTemplate
|
|
14
12
|
# @param input_string [String].
|
15
13
|
# @return [String] empty string if input_string has no contents except whitespace.
|
16
14
|
# @example Use.
|
17
|
-
# {{
|
15
|
+
# {{ 'joy' | my_filter_template }} => <a href='https://www.google.com/search?q=joy' target='_blank' rel='nofollow'>joy</a>
|
18
16
|
def my_filter_template(input_string)
|
19
17
|
# @context[Liquid::Context] is available here to look up variables defined in front matter, templates, page, etc.
|
20
18
|
|
21
19
|
JekyllFilterTemplate.logger.debug do
|
22
|
-
|
20
|
+
'Defined filters are: ' + self.class # rubocop:disable Style/StringConcatenation
|
23
21
|
.class_variable_get('@@global_strainer')
|
24
22
|
.filter_methods.instance_variable_get('@hash')
|
25
23
|
.map { |k, _v| k }
|
@@ -29,7 +27,7 @@ module JekyllFilterTemplate
|
|
29
27
|
input_string.strip!
|
30
28
|
JekyllFilterTemplate.logger.debug "input_string=#{input_string}"
|
31
29
|
if input_string.empty?
|
32
|
-
|
30
|
+
''
|
33
31
|
else
|
34
32
|
"<a href='https://www.google.com/search?q=#{input_string}' target='_blank' rel='nofollow'>#{input_string}</a>"
|
35
33
|
end
|
data/lib/jekyll_hook_examples.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "active_support"
|
4
|
-
require "active_support/inflector"
|
1
|
+
require 'active_support'
|
2
|
+
require 'active_support/inflector'
|
5
3
|
require 'confidential_info_redactor'
|
6
|
-
require
|
7
|
-
require
|
4
|
+
require 'nokogiri'
|
5
|
+
require 'talk_like_a_pirate'
|
8
6
|
|
9
7
|
# Sample Jekyll Hook plugins
|
10
8
|
module JekyllHookExamples
|
@@ -19,7 +17,7 @@ module JekyllHookExamples
|
|
19
17
|
next unless webpage.data['pirate_talk']
|
20
18
|
|
21
19
|
html = Nokogiri.HTML(webpage.output)
|
22
|
-
html.css(
|
20
|
+
html.css('p').each do |node|
|
23
21
|
node.content = TalkLikeAPirate.translate(node.content)
|
24
22
|
end
|
25
23
|
webpage.output = html
|
@@ -43,9 +41,9 @@ module JekyllHookExamples
|
|
43
41
|
def redact_all(content)
|
44
42
|
tokens = ConfidentialInfoRedactor::Extractor.new.extract(content)
|
45
43
|
ConfidentialInfoRedactor::Redactor.new(
|
46
|
-
number_text: wrap(
|
47
|
-
date_text: wrap(
|
48
|
-
token_text: wrap(
|
44
|
+
number_text: wrap(' number'), # This redactor is over-eager
|
45
|
+
date_text: wrap(' date'),
|
46
|
+
token_text: wrap(''),
|
49
47
|
tokens: tokens
|
50
48
|
).redact(content)
|
51
49
|
end
|
@@ -55,11 +53,11 @@ module JekyllHookExamples
|
|
55
53
|
# Uncomment the following lines, rebuild the plugin and view http://localhost:4444/
|
56
54
|
# to see these hooks in action:
|
57
55
|
#
|
58
|
-
# Convert
|
56
|
+
# Convert 'Jekyll' to 'Awesome Jekyll'
|
59
57
|
# Jekyll::Hooks.register(:documents, :post_render, &modify_output)
|
60
58
|
# Jekyll::Hooks.register(:pages, :post_render, &modify_output)
|
61
59
|
|
62
|
-
# Convert
|
60
|
+
# Convert 'English' to 'Pirate Talk'
|
63
61
|
Jekyll::Hooks.register(:documents, :post_render, &pirate_translator)
|
64
62
|
Jekyll::Hooks.register(:pages, :post_render, &pirate_translator)
|
65
63
|
|
data/lib/jekyll_hooks.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require_relative "jekyll_plugin_template/version"
|
5
|
-
require_relative "dumpers"
|
1
|
+
require 'jekyll_plugin_logger'
|
2
|
+
require_relative 'jekyll_plugin_template/version'
|
3
|
+
require_relative 'dumpers'
|
6
4
|
|
7
5
|
module JekyllPluginHooksName
|
8
|
-
PLUGIN_NAME =
|
6
|
+
PLUGIN_NAME = 'jekyll_plugin_hooks'
|
9
7
|
end
|
10
8
|
|
11
9
|
# The Jekyll processing steps are described in https://jekyllrb.com/tutorials/orderofinterpretation/
|
@@ -38,8 +36,8 @@ module JekyllPluginHooks
|
|
38
36
|
# However, this hook will not be called unless safe mode is OFF, so define loggers in the :site :after_init hook instead
|
39
37
|
Jekyll::Hooks.register(:site, :after_reset, priority: :normal) do |site|
|
40
38
|
@log_site ||= PluginMetaLogger.instance.new_logger(:SiteHooks, PluginMetaLogger.instance.config)
|
41
|
-
@log_site.info {
|
42
|
-
Dumpers.dump_site(@log_site,
|
39
|
+
@log_site.info { 'Jekyll::Hooks.register(:site, :after_reset) invoked.' }
|
40
|
+
Dumpers.dump_site(@log_site, 'Jekyll::Hooks.register(:site, :after_reset)', site)
|
43
41
|
end
|
44
42
|
|
45
43
|
# This hook is called just after the site initializes.
|
@@ -52,17 +50,17 @@ module JekyllPluginHooks
|
|
52
50
|
@log_posts = PluginMetaLogger.instance.new_logger(:PostHooks, PluginMetaLogger.instance.config)
|
53
51
|
@log_site ||= PluginMetaLogger.instance.new_logger(:SiteHooks, PluginMetaLogger.instance.config)
|
54
52
|
|
55
|
-
@log_site.info { "Loaded #{JekyllPluginHooksName::PLUGIN_NAME} v#{
|
56
|
-
@log_site.info {
|
57
|
-
Dumpers.dump_site(@log_site,
|
53
|
+
@log_site.info { "Loaded #{JekyllPluginHooksName::PLUGIN_NAME} v#{JekyllPluginTemplateVersion::VERSION} plugin." }
|
54
|
+
@log_site.info { 'Jekyll::Hooks.register(:site, :after_init) invoked.' }
|
55
|
+
Dumpers.dump_site(@log_site, 'Jekyll::Hooks.register(:site, :after_init)', site)
|
58
56
|
end
|
59
57
|
|
60
58
|
# Called after all source files have been read and loaded from disk.
|
61
59
|
# This is a good hook for enriching posts;
|
62
60
|
# for example, adding links to author pages or adding posts to author pages.
|
63
61
|
Jekyll::Hooks.register(:site, :post_read, priority: :normal) do |site|
|
64
|
-
@log_site.info {
|
65
|
-
Dumpers.dump_site(@log_site,
|
62
|
+
@log_site.info { 'Jekyll::Hooks.register(:site, :post_read) invoked.' }
|
63
|
+
Dumpers.dump_site(@log_site, 'Jekyll::Hooks.register(:site, :post_read)', site)
|
66
64
|
end
|
67
65
|
|
68
66
|
# Called before rendering the whole site
|
@@ -72,10 +70,10 @@ module JekyllPluginHooks
|
|
72
70
|
# @param payload [Hash] according to the docs, payload is a hash containing the variables available during rendering; the hash can be modified here.
|
73
71
|
# However, the debugger shows payload has type Jekyll::UnifiedPayloadDrop
|
74
72
|
Jekyll::Hooks.register(:site, :pre_render, priority: :normal) do |site, payload|
|
75
|
-
@log_site.info {
|
76
|
-
@log_site.debug { dump(
|
77
|
-
Dumpers.dump_site(@log_site,
|
78
|
-
Dumpers.dump_payload(@log_site,
|
73
|
+
@log_site.info { 'Jekyll::Hooks.register(:site, :pre_render) invoked.' }
|
74
|
+
@log_site.debug { dump(':site, :pre_render payload', payload) }
|
75
|
+
Dumpers.dump_site(@log_site, 'Jekyll::Hooks.register(:site, :pre_render)', site)
|
76
|
+
Dumpers.dump_payload(@log_site, 'Jekyll::Hooks.register(:site, :pre_render)', payload)
|
79
77
|
end
|
80
78
|
|
81
79
|
# Called after rendering the whole site, but before writing any files.
|
@@ -87,16 +85,16 @@ module JekyllPluginHooks
|
|
87
85
|
# :documents and :pages, whereas the :pages and :documents hooks are called once for each page and document.
|
88
86
|
# @param payload [Hash] contains final values of variables after rendering the entire site (useful for sitemaps, feeds, etc).
|
89
87
|
Jekyll::Hooks.register(:site, :post_render, priority: :normal) do |site, payload|
|
90
|
-
@log_site.info {
|
91
|
-
@log_site.debug { dump(
|
92
|
-
Dumpers.dump_site(@log_site,
|
93
|
-
Dumpers.dump_payload(@log_site,
|
88
|
+
@log_site.info { 'Jekyll::Hooks.register(:site, :post_render) invoked.' }
|
89
|
+
@log_site.debug { dump(':site, :post_render payload', payload) }
|
90
|
+
Dumpers.dump_site(@log_site, 'Jekyll::Hooks.register(:site, :post_render)', site)
|
91
|
+
Dumpers.dump_payload(@log_site, 'Jekyll::Hooks.register(:site, :post_render)', payload)
|
94
92
|
end
|
95
93
|
|
96
94
|
# Called after writing all of the rendered files to disk
|
97
95
|
Jekyll::Hooks.register(:site, :post_write, priority: :normal) do |site|
|
98
|
-
@log_site.info {
|
99
|
-
Dumpers.dump_site(@log_site,
|
96
|
+
@log_site.info { 'Jekyll::Hooks.register(:site, :post_write) invoked.' }
|
97
|
+
Dumpers.dump_site(@log_site, 'Jekyll::Hooks.register(:site, :post_write)', site)
|
100
98
|
end
|
101
99
|
|
102
100
|
########## :pages hooks
|
@@ -105,34 +103,34 @@ module JekyllPluginHooks
|
|
105
103
|
|
106
104
|
# Called whenever a page is initialized
|
107
105
|
Jekyll::Hooks.register(:pages, :post_init, priority: :normal) do |page|
|
108
|
-
@log_pages.info {
|
109
|
-
Dumpers.dump_page(@log_pages,
|
106
|
+
@log_pages.info { 'Jekyll::Hooks.register(:pages, :post_init) invoked.' }
|
107
|
+
Dumpers.dump_page(@log_pages, 'Jekyll::Hooks.register(:pages, :post_init)', page)
|
110
108
|
end
|
111
109
|
|
112
110
|
# Called just before rendering a page
|
113
111
|
Jekyll::Hooks.register(:pages, :pre_render, priority: :normal) do |page, payload|
|
114
|
-
@log_pages.info {
|
115
|
-
Dumpers.dump_page(@log_pages,
|
116
|
-
Dumpers.dump_payload(@log_pages,
|
112
|
+
@log_pages.info { 'Jekyll::Hooks.register(:pages, :pre_render) invoked.' }
|
113
|
+
Dumpers.dump_page(@log_pages, 'Jekyll::Hooks.register(:pages, :pre_render)', page)
|
114
|
+
Dumpers.dump_payload(@log_pages, ':pages, :pre_render payload', payload)
|
117
115
|
end
|
118
116
|
|
119
117
|
# Called after converting the page content, but before rendering the page layout
|
120
118
|
Jekyll::Hooks.register(:pages, :post_convert, priority: :normal) do |page|
|
121
|
-
@log_pages.info {
|
122
|
-
Dumpers.dump_page(@log_pages,
|
119
|
+
@log_pages.info { 'Jekyll::Hooks.register(:pages, :post_convert) invoked.' }
|
120
|
+
Dumpers.dump_page(@log_pages, 'Jekyll::Hooks.register(:pages, :post_convert)', page)
|
123
121
|
end
|
124
122
|
|
125
123
|
# Called after rendering a page, but before writing it to disk
|
126
124
|
Jekyll::Hooks.register(:pages, :post_render, priority: :normal) do |page|
|
127
125
|
page.site.safe = true
|
128
|
-
@log_pages.info {
|
129
|
-
Dumpers.dump_page(@log_pages,
|
126
|
+
@log_pages.info { 'Jekyll::Hooks.register(:pages, :post_render) invoked.' }
|
127
|
+
Dumpers.dump_page(@log_pages, 'Jekyll::Hooks.register(:pages, :post_render)', page)
|
130
128
|
end
|
131
129
|
|
132
130
|
# Called after writing a page to disk
|
133
131
|
Jekyll::Hooks.register(:pages, :post_write, priority: :normal) do |page|
|
134
|
-
@log_pages.info {
|
135
|
-
Dumpers.dump_page(@log_pages,
|
132
|
+
@log_pages.info { 'Jekyll::Hooks.register(:pages, :post_write) invoked.' }
|
133
|
+
Dumpers.dump_page(@log_pages, 'Jekyll::Hooks.register(:pages, :post_write)', page)
|
136
134
|
end
|
137
135
|
|
138
136
|
########## :documents hooks
|
@@ -149,9 +147,9 @@ module JekyllPluginHooks
|
|
149
147
|
# excerpt and ext (file extension).
|
150
148
|
# The collection attribute will be set properly for this hook.
|
151
149
|
Jekyll::Hooks.register(:documents, :post_init, priority: :normal) do |document|
|
152
|
-
@log_docs.info {
|
153
|
-
Dumpers.dump_document(@log_docs,
|
154
|
-
|
150
|
+
@log_docs.info { 'Jekyll::Hooks.register(:documents, :post_init) invoked.' }
|
151
|
+
Dumpers.dump_document(@log_docs, 'Jekyll::Hooks.register(:documents, :post_init)', document)
|
152
|
+
'stop'
|
155
153
|
end
|
156
154
|
|
157
155
|
# Called just before rendering a document.
|
@@ -160,30 +158,30 @@ module JekyllPluginHooks
|
|
160
158
|
# If the document contains markdown (or some other markup),
|
161
159
|
# it will not have been converted to HTML (or whatever the target format is) yet.
|
162
160
|
Jekyll::Hooks.register(:documents, :pre_render, priority: :normal) do |document, payload|
|
163
|
-
@log_docs.info {
|
164
|
-
Dumpers.dump_document(@log_docs,
|
165
|
-
Dumpers.dump_payload(@log_docs,
|
161
|
+
@log_docs.info { 'Jekyll::Hooks.register(:documents, :pre_render) invoked.' }
|
162
|
+
Dumpers.dump_document(@log_docs, 'Jekyll::Hooks.register(:documents, :pre_render)', document)
|
163
|
+
Dumpers.dump_payload(@log_docs, ':documents, :pre_render payload', payload)
|
166
164
|
end
|
167
165
|
|
168
166
|
# Called after converting the document content to HTML (or whatever),
|
169
167
|
# but before rendering the document using the layout.
|
170
168
|
Jekyll::Hooks.register(:documents, :post_convert, priority: :normal) do |document|
|
171
|
-
@log_docs.info {
|
172
|
-
Dumpers.dump_document(@log_docs,
|
169
|
+
@log_docs.info { 'Jekyll::Hooks.register(:documents, :post_convert) invoked.' }
|
170
|
+
Dumpers.dump_document(@log_docs, 'Jekyll::Hooks.register(:documents, :post_convert)', document)
|
173
171
|
end
|
174
172
|
|
175
173
|
# Called after rendering a document using the layout, but before writing it to disk.
|
176
174
|
# This is your last chance to modify the content.
|
177
175
|
Jekyll::Hooks.register(:documents, :post_render, priority: :normal) do |document|
|
178
|
-
@log_docs.info {
|
179
|
-
Dumpers.dump_document(@log_docs,
|
176
|
+
@log_docs.info { 'Jekyll::Hooks.register(:documents, :post_render) invoked.' }
|
177
|
+
Dumpers.dump_document(@log_docs, 'Jekyll::Hooks.register(:documents, :post_render)', document)
|
180
178
|
end
|
181
179
|
|
182
180
|
# Called after writing a document to disk.
|
183
181
|
# Useful for statistics regarding completed renderings.
|
184
182
|
Jekyll::Hooks.register(:documents, :post_write, priority: :normal) do |document|
|
185
|
-
@log_docs.info {
|
186
|
-
Dumpers.dump_document(@log_docs,
|
183
|
+
@log_docs.info { 'Jekyll::Hooks.register(:documents, :post_write) invoked.' }
|
184
|
+
Dumpers.dump_document(@log_docs, 'Jekyll::Hooks.register(:documents, :post_write)', document)
|
187
185
|
end
|
188
186
|
|
189
187
|
########## :posts hooks
|
@@ -192,16 +190,16 @@ module JekyllPluginHooks
|
|
192
190
|
|
193
191
|
# Called whenever any post is initialized
|
194
192
|
Jekyll::Hooks.register(:posts, :post_init, priority: :normal) do |post|
|
195
|
-
@log_posts.info {
|
196
|
-
Dumpers.dump_document(@log_posts,
|
193
|
+
@log_posts.info { 'Jekyll::Hooks.register(:posts, :post_init) invoked.' }
|
194
|
+
Dumpers.dump_document(@log_posts, 'Jekyll::Hooks.register(:posts, :post_init)', post)
|
197
195
|
end
|
198
196
|
|
199
197
|
# Called just before rendering a post
|
200
198
|
Jekyll::Hooks.register(:posts, :pre_render, priority: :normal) do |post, payload|
|
201
199
|
# post is a Jekyll::Document
|
202
|
-
@log_posts.info {
|
203
|
-
Dumpers.dump_document(@log_posts,
|
204
|
-
Dumpers.dump_payload(@log_posts,
|
200
|
+
@log_posts.info { 'Jekyll::Hooks.register(:posts, :pre_render) invoked.' }
|
201
|
+
Dumpers.dump_document(@log_posts, 'Jekyll::Hooks.register(:posts, :pre_render)', post)
|
202
|
+
Dumpers.dump_payload(@log_posts, ':posts, :pre_render payload', payload)
|
205
203
|
end
|
206
204
|
|
207
205
|
# Called after converting the post content, but before rendering the post layout.
|
@@ -213,21 +211,21 @@ module JekyllPluginHooks
|
|
213
211
|
# post.output.gsub!('programming PHP', 'banging rocks together')
|
214
212
|
# end
|
215
213
|
Jekyll::Hooks.register(:posts, :post_convert, priority: :normal) do |post|
|
216
|
-
@log_posts.info {
|
217
|
-
Dumpers.dump_document(@log_posts,
|
214
|
+
@log_posts.info { 'Jekyll::Hooks.register(:posts, :post_convert) invoked.' }
|
215
|
+
Dumpers.dump_document(@log_posts, 'Jekyll::Hooks.register(:posts, :post_convert)', post)
|
218
216
|
end
|
219
217
|
|
220
218
|
# Called after rendering a post, but before writing it to disk.
|
221
219
|
# Changing `post.conent` has no effect on visible output.
|
222
220
|
Jekyll::Hooks.register(:posts, :post_render, priority: :normal) do |post|
|
223
|
-
@log_posts.info {
|
224
|
-
Dumpers.dump_document(@log_posts,
|
221
|
+
@log_posts.info { 'Jekyll::Hooks.register(:posts, :post_render) invoked.' }
|
222
|
+
Dumpers.dump_document(@log_posts, 'Jekyll::Hooks.register(:posts, :post_render)', post)
|
225
223
|
end
|
226
224
|
|
227
225
|
# Called after writing a post to disk
|
228
226
|
Jekyll::Hooks.register(:posts, :post_write, priority: :normal) do |post|
|
229
|
-
@log_posts.info {
|
230
|
-
Dumpers.dump_document(@log_posts,
|
227
|
+
@log_posts.info { 'Jekyll::Hooks.register(:posts, :post_write) invoked.' }
|
228
|
+
Dumpers.dump_document(@log_posts, 'Jekyll::Hooks.register(:posts, :post_write)', post)
|
231
229
|
end
|
232
230
|
|
233
231
|
########## :clean hooks
|
@@ -1,15 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
11
|
-
require_relative "category_index_generator"
|
12
|
-
require_relative "category_combiner"
|
1
|
+
require 'jekyll'
|
2
|
+
require 'jekyll_plugin_logger'
|
3
|
+
require_relative 'jekyll_plugin_template/version'
|
4
|
+
require_relative 'jekyll_block_tag_plugin'
|
5
|
+
require_relative 'jekyll_filter_template'
|
6
|
+
require_relative 'jekyll_tag_plugin'
|
7
|
+
require_relative 'jekyll_hooks'
|
8
|
+
require_relative 'jekyll_hook_examples'
|
9
|
+
require_relative 'category_index_generator'
|
10
|
+
require_relative 'category_combiner'
|
13
11
|
|
14
12
|
module JekyllPluginTemplate
|
15
13
|
include JekyllBlockTagPlugin
|
data/lib/jekyll_tag_plugin.rb
CHANGED
@@ -1,11 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "jekyll_plugin_logger"
|
4
|
-
require "key_value_parser"
|
5
|
-
require "shellwords"
|
1
|
+
require 'jekyll_plugin_support'
|
6
2
|
|
7
3
|
module JekyllPluginTagTemplate
|
8
|
-
PLUGIN_NAME =
|
4
|
+
PLUGIN_NAME = 'tag_template'.freeze
|
9
5
|
end
|
10
6
|
|
11
7
|
# This Jekyll tag plugin creates an emoji of the desired size and alignment.
|
@@ -27,58 +23,46 @@ end
|
|
27
23
|
# MyTag: debug
|
28
24
|
module JekyllTagPlugin
|
29
25
|
# This class implements the Jekyll tag functionality
|
30
|
-
class MyTag <
|
26
|
+
class MyTag < JekyllSupport::JekyllTag
|
27
|
+
include JekyllPluginTemplateVersion
|
28
|
+
|
31
29
|
# Supported emojis (GitHub symbol, hex code) - see https://gist.github.com/rxaviers/7360908 and
|
32
30
|
# https://www.quackit.com/character_sets/emoji/emoji_v3.0/unicode_emoji_v3.0_characters_all.cfm
|
33
31
|
@@emojis = {
|
34
32
|
'angry' => '😠',
|
35
33
|
'boom' => '💥', # used when requested emoji is not recognized
|
34
|
+
'grin' => '😀',
|
35
|
+
'horns' => '😈',
|
36
36
|
'kiss' => '😙',
|
37
|
+
'open' => '😃',
|
38
|
+
'poop' => '💩',
|
39
|
+
'sad' => '😢',
|
37
40
|
'scream' => '😱',
|
38
41
|
'smiley' => '😁', # default emoji
|
39
42
|
'smirk' => '😏',
|
40
43
|
'two_hearts' => '💕',
|
41
|
-
}
|
44
|
+
}.sort_by { |k, v| [k] }.to_h
|
42
45
|
|
43
46
|
# @param tag_name [String] is the name of the tag, which we already know.
|
44
47
|
# @param argument_string [String] the arguments from the web page.
|
45
48
|
# @param tokens [Liquid::ParseContext] tokenized command line
|
46
49
|
# @return [void]
|
47
|
-
def
|
48
|
-
|
49
|
-
@
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
@emoji_name = params[:name] || "smiley"
|
55
|
-
@emoji_align = params[:align] || "inline" # Could be inline, right or left
|
56
|
-
@emoji_size = params[:size] || "3em"
|
57
|
-
@emoji_hex_code = @@emojis[@emoji_name] || @@emojis['boom']
|
58
|
-
end
|
59
|
-
|
60
|
-
# Method prescribed by the Jekyll plugin lifecycle.
|
61
|
-
# Several variables are created to illustrate how they are made.
|
62
|
-
# @param liquid_context [Liquid::Context]
|
63
|
-
# @return [String]
|
64
|
-
def render(liquid_context) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
65
|
-
@site = liquid_context.registers[:site]
|
66
|
-
@config = @site.config
|
67
|
-
@mode = @config["env"]["JEKYLL_ENV"] || "development"
|
50
|
+
def render_impl
|
51
|
+
@emoji_name = @helper.parameter_specified?('name') || 'smiley' # Ignored if `list` is specified
|
52
|
+
@emoji_align = @helper.parameter_specified?('align') || 'inline' # Allowable values are: inline, right or left
|
53
|
+
@emoji_size = @helper.parameter_specified?('size') || '3em'
|
54
|
+
@emoji_and_name = @helper.parameter_specified?('emoji_and_name')
|
55
|
+
@list = @helper.parameter_specified?('list')
|
56
|
+
@emoji_hex_code = @@emojis[@emoji_name] if @emoji_name || @@emojis['boom']
|
68
57
|
|
69
58
|
# variables defined in pages are stored as hash values in liquid_context
|
70
|
-
_assigned_page_variable = liquid_context['assigned_page_variable']
|
59
|
+
# _assigned_page_variable = @liquid_context['assigned_page_variable']
|
71
60
|
|
72
|
-
|
73
|
-
@page = liquid_context.registers[:page] # @page is a Jekyll::Drops::DocumentDrop
|
74
|
-
|
75
|
-
@envs = liquid_context.environments.first
|
76
|
-
@layout_hash = @envs['layout']
|
77
|
-
# @layout_hash = @page['layout']
|
61
|
+
@layout_hash = @page['layout']
|
78
62
|
|
79
63
|
@logger.debug do
|
80
64
|
<<~HEREDOC
|
81
|
-
liquid_context.scopes=#{liquid_context.scopes}
|
65
|
+
liquid_context.scopes=#{@liquid_context.scopes}
|
82
66
|
mode="#{@mode}"
|
83
67
|
page attributes:
|
84
68
|
#{@page.sort
|
@@ -88,26 +72,42 @@ module JekyllTagPlugin
|
|
88
72
|
HEREDOC
|
89
73
|
end
|
90
74
|
|
91
|
-
|
75
|
+
# Return the value of this Jekyll tag
|
76
|
+
if @list
|
77
|
+
list
|
78
|
+
else
|
79
|
+
assemble_emoji(@emoji_name, @emoji_hex_code)
|
80
|
+
end
|
92
81
|
end
|
93
82
|
|
94
|
-
|
83
|
+
private
|
84
|
+
|
85
|
+
def assemble_emoji(emoji_name, emoji_hex_code)
|
95
86
|
case @emoji_align
|
96
|
-
when
|
97
|
-
align =
|
98
|
-
when
|
99
|
-
align =
|
100
|
-
when
|
101
|
-
align =
|
87
|
+
when 'inline'
|
88
|
+
align = ''
|
89
|
+
when 'right'
|
90
|
+
align = ' float: right; margin-left: 5px;'
|
91
|
+
when 'left'
|
92
|
+
align = ' float: left; margin-right: 5px;'
|
102
93
|
else
|
103
94
|
@logger.error { "Invalid emoji alignment #{@emoji_align}" }
|
104
|
-
align =
|
95
|
+
align = ''
|
105
96
|
end
|
106
|
-
|
107
|
-
|
97
|
+
|
98
|
+
name = " <code>#{emoji_name}</code>" if @emoji_and_name
|
99
|
+
|
100
|
+
"<span style='font-size: #{@emoji_size};#{align}'>#{emoji_hex_code}</span>#{name}"
|
108
101
|
end
|
102
|
+
|
103
|
+
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"
|
109
|
+
end
|
110
|
+
|
111
|
+
JekyllPluginHelper.register(self, JekyllPluginTagTemplate::PLUGIN_NAME)
|
109
112
|
end
|
110
113
|
end
|
111
|
-
|
112
|
-
PluginMetaLogger.instance.info { "Loaded #{JekyllPluginTagTemplate::PLUGIN_NAME} v#{JekyllPluginTemplateVersion::VERSION} plugin." }
|
113
|
-
Liquid::Template.register_tag(JekyllPluginTagTemplate::PLUGIN_NAME, JekyllTagPlugin::MyTag)
|
@@ -1,26 +1,24 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
|
6
|
-
require "shellwords"
|
7
|
-
require_relative "../lib/jekyll_plugin_template"
|
1
|
+
require 'fileutils'
|
2
|
+
require 'jekyll'
|
3
|
+
require 'key_value_parser'
|
4
|
+
require 'shellwords'
|
5
|
+
require_relative '../lib/jekyll_plugin_template'
|
8
6
|
|
9
7
|
RSpec.describe(KeyValueParser) do
|
10
|
-
it
|
11
|
-
argv =
|
8
|
+
it 'parses arguments' do
|
9
|
+
argv = 'param0 param1=value1 param2=\'value2\' param3="value3\'s tricky" remainder of line'.shellsplit
|
12
10
|
parser = KeyValueParser.new
|
13
11
|
options = parser.parse(argv)
|
14
12
|
# puts options.map { |k, v| "#{k} = #{v}" }.join("\n")
|
15
13
|
|
16
14
|
expect(options[:param0]).to eq(true)
|
17
|
-
expect(options[:param1]).to eq(
|
18
|
-
expect(options[:param2]).to eq(
|
15
|
+
expect(options[:param1]).to eq('value1')
|
16
|
+
expect(options[:param2]).to eq('value2')
|
19
17
|
expect(options[:param3]).to eq("value3's tricky")
|
20
18
|
expect(options[:unknown]).to be_nil
|
21
19
|
|
22
|
-
[
|
23
|
-
remainder_of_line = options.keys.join(
|
24
|
-
expect(remainder_of_line).to eq(
|
20
|
+
%i[param0 param1 param2 param3].each { |key| options.delete key }
|
21
|
+
remainder_of_line = options.keys.join(' ')
|
22
|
+
expect(remainder_of_line).to eq('remainder of line')
|
25
23
|
end
|
26
24
|
end
|
data/spec/nokogiri_test.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "nokogiri"
|
1
|
+
require 'nokogiri'
|
4
2
|
|
5
3
|
class NokoTest
|
6
4
|
webpage = <<~END_PAGE
|
@@ -16,9 +14,9 @@ class NokoTest
|
|
16
14
|
END_PAGE
|
17
15
|
|
18
16
|
html = Nokogiri.HTML(webpage)
|
19
|
-
html.css(
|
17
|
+
html.css('p').each do |node|
|
20
18
|
# This strips any HTML tags from node.content:
|
21
|
-
node.content = node.content.gsub(
|
19
|
+
node.content = node.content.gsub('angry', 'happy')
|
22
20
|
end
|
23
21
|
puts "\n\nHTML:\n#{html}"
|
24
22
|
end
|
@@ -1,9 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative "lib/old_name/version"
|
1
|
+
require_relative 'lib/old_name/version'
|
4
2
|
|
5
3
|
Gem::Specification.new do |spec|
|
6
|
-
github =
|
7
|
-
spec.name =
|
4
|
+
github = 'https://github.com/mslinn/old_name'
|
5
|
+
spec.name = 'old_name'
|
8
6
|
spec.version = OldName::VERSION
|
9
7
|
end
|
@@ -1,21 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
load "bin/run_this_first"
|
1
|
+
load 'bin/run_this_first'
|
4
2
|
|
5
3
|
RSpec.configure do |config|
|
6
4
|
config.add_setting :work_dir
|
7
|
-
config.work_dir =
|
5
|
+
config.work_dir = '/tmp/jekyll_plugin_template'
|
8
6
|
|
9
7
|
config.after(:suite) do
|
10
8
|
FileUtils.rm_rf(config.work_dir)
|
11
9
|
end
|
12
10
|
config.before(:suite) do
|
13
|
-
FileUtils.cp_r
|
11
|
+
FileUtils.cp_r 'spec/run_this_first_data', config.work_dir, :verbose => true
|
14
12
|
end
|
15
13
|
config.filter_run :focus
|
16
|
-
config.order =
|
14
|
+
config.order = 'random'
|
17
15
|
config.run_all_when_everything_filtered = true
|
18
16
|
|
19
17
|
# See https://relishapp.com/rspec/rspec-core/docs/command-line/only-failures
|
20
|
-
config.example_status_persistence_file_path =
|
18
|
+
config.example_status_persistence_file_path = 'spec/first_status_persistence.txt'
|
21
19
|
end
|
data/spec/run_this_first_spec.rb
CHANGED
@@ -1,40 +1,38 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require_relative "run_this_first_helper"
|
5
|
-
load "bin/run_this_first"
|
1
|
+
require 'fileutils'
|
2
|
+
require_relative 'run_this_first_helper'
|
3
|
+
load 'bin/run_this_first'
|
6
4
|
|
7
5
|
RSpec.describe(JekyllPluginTemplateModule) do
|
8
|
-
it
|
6
|
+
it 'rename_identifiers' do
|
9
7
|
run_this_first = JekyllPluginTemplateModule::RunThisFirst.new(RSpec.configuration.work_dir)
|
10
|
-
run_this_first.rename_identifiers(
|
8
|
+
run_this_first.rename_identifiers('old_variable_name', 'new_variable_name')
|
11
9
|
|
12
|
-
gemspec = File.read(
|
10
|
+
gemspec = File.read('old_name.gemspec')
|
13
11
|
expect(gemspec).to include <<~END_GEMSPEC
|
14
|
-
require_relative
|
12
|
+
require_relative 'lib/new_name/version'
|
15
13
|
|
16
14
|
Gem::Specification.new do |spec|
|
17
|
-
github =
|
18
|
-
spec.name =
|
15
|
+
github = 'https://github.com/mslinn/new_name'
|
16
|
+
spec.name = 'new_name'
|
19
17
|
spec.version = NewNameVersion::VERSION
|
20
18
|
end
|
21
19
|
END_GEMSPEC
|
22
20
|
|
23
|
-
version_rb = File.read(
|
24
|
-
expect(version_rb).to include(
|
21
|
+
version_rb = File.read('old_name/old_name/version.rb')
|
22
|
+
expect(version_rb).to include('class NewName')
|
25
23
|
|
26
|
-
old_name_rb = File.read(
|
27
|
-
expect(old_name_rb).to include(
|
24
|
+
old_name_rb = File.read('old_name/old_name/old_name.rb')
|
25
|
+
expect(old_name_rb).to include('new_name')
|
28
26
|
end
|
29
27
|
|
30
|
-
it
|
28
|
+
it 'rename_files' do
|
31
29
|
run_this_first = JekyllPluginTemplateModule::RunThisFirst.new(RSpec.configuration.work_dir)
|
32
|
-
run_this_first.rename_files(
|
33
|
-
expect(Dir[
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
30
|
+
run_this_first.rename_files('old_name', 'new_name')
|
31
|
+
expect(Dir['.']).to match_array[
|
32
|
+
'new_name.gemspec',
|
33
|
+
'lib/new_name.rb',
|
34
|
+
'lib/new_name/new_name.rb',
|
35
|
+
'lib/new_name/version.rb'
|
38
36
|
]
|
39
37
|
end
|
40
38
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,19 +1,17 @@
|
|
1
|
-
|
1
|
+
require 'jekyll'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'key_value_parser'
|
4
|
+
require 'shellwords'
|
2
5
|
|
3
|
-
|
4
|
-
require "fileutils"
|
5
|
-
require "key_value_parser"
|
6
|
-
require "shellwords"
|
7
|
-
|
8
|
-
require_relative "../lib/jekyll_plugin_template"
|
6
|
+
require_relative '../lib/jekyll_plugin_template'
|
9
7
|
|
10
8
|
Jekyll.logger.log_level = :info
|
11
9
|
|
12
10
|
RSpec.configure do |config|
|
13
11
|
config.filter_run :focus
|
14
|
-
config.order =
|
12
|
+
config.order = 'random'
|
15
13
|
config.run_all_when_everything_filtered = true
|
16
14
|
|
17
15
|
# See https://relishapp.com/rspec/rspec-core/docs/command-line/only-failures
|
18
|
-
config.example_status_persistence_file_path =
|
16
|
+
config.example_status_persistence_file_path = 'spec/status_persistence.txt'
|
19
17
|
end
|
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.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Firstname Lastname
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -25,33 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.5.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: jekyll_plugin_support
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
31
|
+
- - "~>"
|
39
32
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: key-value-parser
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
33
|
+
version: 0.5.0
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - "
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
40
|
+
version: 0.5.0
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: git
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,32 +80,18 @@ dependencies:
|
|
94
80
|
- - ">="
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: shellwords
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
83
|
- !ruby/object:Gem::Dependency
|
112
84
|
name: talk_like_a_pirate
|
113
85
|
requirement: !ruby/object:Gem::Requirement
|
114
86
|
requirements:
|
115
|
-
- - "
|
87
|
+
- - "~>"
|
116
88
|
- !ruby/object:Gem::Version
|
117
89
|
version: 0.2.2
|
118
90
|
type: :runtime
|
119
91
|
prerelease: false
|
120
92
|
version_requirements: !ruby/object:Gem::Requirement
|
121
93
|
requirements:
|
122
|
-
- - "
|
94
|
+
- - "~>"
|
123
95
|
- !ruby/object:Gem::Version
|
124
96
|
version: 0.2.2
|
125
97
|
- !ruby/object:Gem::Dependency
|
@@ -171,7 +143,6 @@ files:
|
|
171
143
|
- spec/run_this_first_helper.rb
|
172
144
|
- spec/run_this_first_spec.rb
|
173
145
|
- spec/spec_helper.rb
|
174
|
-
- spec/status_persistence.txt
|
175
146
|
homepage: https://www.mslinn.com/blog/2020/12/30/jekyll-plugin-template-collection.html
|
176
147
|
licenses:
|
177
148
|
- CC0-1.0
|
data/spec/status_persistence.txt
DELETED
@@ -1,5 +0,0 @@
|
|
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 |
|