jekyll_plugin_template 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 |
|