jekyll_pre 1.3.1 → 1.4.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 16aa76dad7fdc41eac063227ee8463e9bcb77dd1c9893840e05f22a67c08aef0
4
- data.tar.gz: 9e550133932e9b422a30bdccb813dd0c603870bac9bbb08489256a92be9d27ce
3
+ metadata.gz: f765cdcaf2d5447e9e05c49f02aa47b59feba53ba9dab4133a05eaa35f415555
4
+ data.tar.gz: 2b742223bfd91ce5dc8349a8dd5a09e8c678890dbb338a347ac2c463d3db9f1d
5
5
  SHA512:
6
- metadata.gz: 8f87a17e7dff740d917a248323822a491559ac3bc3223ca4af7a62c261ca213be8f82f61577b7278112534b0ed5af597f01242fba0ba9adb9158a27425893ffa
7
- data.tar.gz: 1227a44360aae2c913a005223c28e0ef1f3a788e43e7acb0973f960fbc618846d587754e9944f15884f184f73b9ed2bd913eeedc1273ee186e694deef31e5fc5
6
+ metadata.gz: f4c15e15ee8390c7c429ce94f5913063d16804a2a61be225d66d1186406995eeed6a326e16fe438efac8dcf266f2e649888aec4c3d581fc10217098d1cbea3b9
7
+ data.tar.gz: 7ae60210e08f23519765d3c1064761838f448e4e04f4dd03f8965361b5243d0cbfa543665370b918bbc4e188c97a3ec96b400d884b7c543d39b1b722afffead5
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 1.4.1
2
+ * Fixed problem that caused exec tag to no produce output.
3
+
4
+ ## 1.4.0
5
+ * Added `dedent` option and config setting.
6
+ * No longer dies when exec is passed an empty string, or a string with just whitespace.
7
+
8
+ ## 1.3.2
9
+ * No longer strips leading spaces from exec result lines.
10
+
1
11
  ## 1.3.1
2
12
  * Generates outer `div` with `jekyll_pre` class, like this:
3
13
  ```html
data/README.md CHANGED
@@ -15,6 +15,7 @@ This Jekyll plugin provides 3 new Liquid tags that work together:
15
15
  - `clear` – Line break after floating HTML elements
16
16
  - `copyButton` – Generate a copy button
17
17
  - `dark` – Dark mode
18
+ - `dedent` &ndash; Remove leading spaces common to all lines, like Ruby's <<~ squiggly heredoc (default is false)
18
19
  - `label='This is a label'` &ndash; Apply text above `pre` tag.
19
20
  The `label` parameter value can also be specified in free text.
20
21
  For example, the following produce the same results:
@@ -58,14 +59,105 @@ This Jekyll plugin provides 3 new Liquid tags that work together:
58
59
  - `wrapper_class` class applied to outer `div`.
59
60
  - `wrapper_style` style applied to outer `div`.
60
61
 
62
+ ## Keyword Options
63
+ For all keyword options, including keyword options for the `pre` and `exec` tags:
64
+
65
+ - Option values specified in the document *may* be provided.
66
+ If a value is not provided, the value `true` is assumed.
67
+ Otherwise, if a value is provided, it *must* be wrapped in single or double quotes.
68
+
69
+ - Option values specified in `_config.yml` *must* be provided, and the value `true` cannot be implied.
70
+ Values that do not contain special characters *may* be wrapped in single or double quotes.
71
+
72
+ ### Examples
73
+ #### Specifying Tag Option Values
74
+ The following sets `die_if_error` `true`:
75
+ ```
76
+ {% pre die_if_error %} ... {% endpre %}
77
+ ```
78
+
79
+ The above is the same as writing:
80
+ ```
81
+ {% pre die_if_error='true' %} ... {% endpre %}
82
+ ```
83
+
84
+ Or writing:
85
+ ```
86
+ {% pre die_if_error="true" %} ... {% endpre %}
87
+ ```
88
+
89
+ Neglecting to provide surrounding quotes around the provided value causes the parser to not recognize the option.
90
+ Instead, what you had intended to be the keyword/value pair will be parsed as part of the command.
91
+ For the `pre` tag, this means the erroneous string becomes part of the `label` value, unless `label` is explicitly specified.
92
+ For the `exec` tag, this means the erroneous string becomes part of the command to execute.
93
+ The following demonstrates the error.
94
+
95
+ ```
96
+ {% pre die_if_error=false %} ... {% endpre %}
97
+ ```
98
+ The above causes the label to be `die_if_error=false`.
99
+
100
+ ```
101
+ {% exec die_if_error=false ls %} ... {% endpre %}
102
+ ```
103
+ The above causes the command to be executed to be `die_if_error=false ls` instead of `ls`.
104
+
61
105
 
62
106
  ## CSS
63
107
  See [`demo/assets/css/style.css`](demo/assets/css/style.css) for the CSS declarations,
64
108
  between `/* Start of pre tag css */` and `/* End of pre tag css */`.
65
109
 
66
110
 
111
+ ## Configuration
112
+ Default options can be set for the `pre` tag by entries in `_config.yml`.
113
+ The following demonstrates setting a default value for every possible option:
114
+
115
+ ```yml
116
+ pre:
117
+ class: bg_yellow
118
+ clear: true
119
+ dark: true
120
+ dedent: true
121
+ highlight: 'Error:.*'
122
+ label: Shell
123
+ copyButton: true
124
+ number: true
125
+ style: 'font-face: courier'
126
+ wrapper_class: rounded shadow
127
+ wrapper_style: 'padding: 2em; border: thin green dashed;'
128
+ ```
129
+
130
+ The default values used on [`mslinn.com`](https://www.mslinn.com) are:
131
+
132
+ ```yml
133
+ pre:
134
+ dedent: true
135
+ label: Shell
136
+ copyButton: true
137
+ ```
138
+
139
+
140
+ #### Specifying Default Option Values
141
+ Specifying a default value for `die_if_error` in `_config.yml` could be done as follows:
142
+ ```yaml
143
+ pre:
144
+ die_if_error: true
145
+ ```
146
+
147
+ ```yaml
148
+ pre:
149
+ die_if_error: "true"
150
+ ```
151
+
152
+ ```yaml
153
+ pre:
154
+ die_if_error: 'true'
155
+ ```
156
+
157
+
67
158
  ## Additional Information
68
- More information is available on [my website](https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#jekyll_pre).
159
+ More information is available on
160
+ [Mike Slinn&rsquo;s website](https://www.mslinn.com/jekyll_plugins/jekyll_pre.html).
69
161
 
70
162
 
71
163
  ## Installation
@@ -80,11 +172,24 @@ end
80
172
 
81
173
  And then execute:
82
174
 
83
- $ bundle install
175
+ $ bundle
84
176
 
85
177
 
86
178
  ## Usage
87
- The following examples are rendered on [my website](https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#jekyll_pre).
179
+ The following examples are rendered on
180
+ [Mike Slinn&rsquo;s website](https://www.mslinn.com/jekyll_plugins/jekyll_pre.html).
181
+
182
+ ### Example 0
183
+ <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id110c50d624b4">{% pre dedent %}
184
+ This line was indented 4 spaces
185
+ This line was indented 6 spaces
186
+ This line was indented 4 spaces
187
+ {% endpre %}</pre>
188
+ Which renders as:
189
+
190
+ <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id377433c30186">This line was indented 4 spaces
191
+ This line was indented 6 spaces
192
+ This line was indented 4 spaces</pre>
88
193
 
89
194
  ### Example 1
90
195
  This example does not generate a copy button and does not demonstrate `noselect`.
@@ -218,7 +323,7 @@ The following executes `ls -alF /` and displays the output.
218
323
 
219
324
  ```
220
325
  {% pre clear copyButton label='Exec without error' %}
221
- {% noselect %}{% exec die_if_nonzero=false ls -alF / %}
326
+ {% noselect %}{% exec die_if_nonzero='false' ls -alF / %}
222
327
  {% endpre %}
223
328
  ```
224
329
 
@@ -227,7 +332,7 @@ The following changes to the home directory (`$HOME`), then executes `pwd` and d
227
332
 
228
333
  ```
229
334
  {% pre clear copyButton label='Exec without error' %}
230
- {% noselect %}{% exec cd="$HOME" die_if_nonzero=false pwd %}
335
+ {% noselect %}{% exec cd="$HOME" die_if_nonzero='false' pwd %}
231
336
  {% endpre %}
232
337
  ```
233
338
 
@@ -236,7 +341,7 @@ The following executes `echo $USER` and displays the output.
236
341
 
237
342
  ```
238
343
  {% pre clear copyButton label='Exec display &dollar;USER' %}
239
- {% noselect %}{% exec die_if_nonzero=false echo $USER %}
344
+ {% noselect %}{% exec die_if_nonzero='false' echo $USER %}
240
345
  {% endpre %}
241
346
  ```
242
347
 
data/jekyll_pre.gemspec CHANGED
@@ -1,3 +1,4 @@
1
+ require 'jekyll'
1
2
  require_relative 'lib/jekyll_pre/version'
2
3
 
3
4
  Gem::Specification.new do |spec|
@@ -10,7 +11,7 @@ Gem::Specification.new do |spec|
10
11
  END_OF_DESC
11
12
  spec.email = ['mslinn@mslinn.com']
12
13
  spec.files = Dir['.rubocop.yml', 'LICENSE.*', 'Rakefile', '{lib,spec}/**/*', '*.gemspec', '*.md']
13
- spec.homepage = 'https://www.mslinn.com/jekyll/3000-jekyll-plugins.html#jekyll_pre'
14
+ spec.homepage = 'https://www.mslinn.com/jekyll_plugins/jekyll_pre.html'
14
15
  spec.license = 'MIT'
15
16
  spec.metadata = {
16
17
  'allowed_push_host' => 'https://rubygems.org',
@@ -32,5 +33,6 @@ Gem::Specification.new do |spec|
32
33
  spec.version = JekyllPreVersion::VERSION
33
34
 
34
35
  spec.add_dependency 'jekyll', '>= 3.5.0'
35
- spec.add_dependency 'jekyll_plugin_support', '~> 0.6.0'
36
+ spec.add_dependency 'jekyll_plugin_support', '>= 0.7.0'
37
+ spec.add_dependency 'rack'
36
38
  end
data/lib/exec_tag.rb CHANGED
@@ -1,7 +1,16 @@
1
1
  require 'jekyll_plugin_support'
2
+ require 'rack/utils'
2
3
  require_relative 'jekyll_pre/version'
3
4
 
4
- module ExecTag
5
+ module JekyllPreModule
6
+ def self.compress(response, no_strip)
7
+ result = response.chomp
8
+ result = result.strip unless no_strip
9
+ result = result.gsub('\n\n', '<br>\n')
10
+ result = Rack::Utils.escape_html(result) unless @no_escape
11
+ result
12
+ end
13
+
5
14
  class ExecTag < JekyllSupport::JekyllTag
6
15
  include JekyllPreVersion
7
16
 
@@ -13,11 +22,18 @@ module ExecTag
13
22
  parse_args
14
23
  @original_command = @helper.remaining_markup_original
15
24
  command = JekyllPluginHelper.expand_env @original_command
16
- raise PreError, "Command is empty on on line #{@line_number} (after front matter) of #{@page['path']}", [] if command.strip.empty?
25
+ if command.strip.empty?
26
+ msg = "Command is empty on on line #{@line_number} (after front matter) of #{@page['path']}"
27
+ unless @die_if_error
28
+ @logger.warn { msg }
29
+ return ''
30
+ end
31
+ raise PreError, msg, []
32
+ end
17
33
 
18
34
  response = run_command(command)
19
35
  response = if @child_status.success?
20
- compress(response)
36
+ JekyllPreModule.compress(response, @no_strip)
21
37
  else
22
38
  handle_error(command)
23
39
  end
@@ -36,14 +52,6 @@ module ExecTag
36
52
 
37
53
  private
38
54
 
39
- def compress(response)
40
- result = response.chomp
41
- result = result.strip unless @no_strip
42
- result = result.gsub('\n\n', '<br>\n')
43
- result = Rack::Utils.escape_html(result) unless @no_escape
44
- result
45
- end
46
-
47
55
  def die(msg)
48
56
  msg_no_html = self.class.remove_html_tags(msg)
49
57
  @logger.error("#{@page['path']} - #{msg_no_html}")
@@ -1,3 +1,3 @@
1
1
  module JekyllPreVersion
2
- VERSION = '1.3.1'.freeze
2
+ VERSION = '1.4.1'.freeze
3
3
  end
data/lib/jekyll_pre.rb CHANGED
@@ -8,10 +8,14 @@ require_relative './pre_tag_block'
8
8
 
9
9
  PreError = Class.new(Liquid::Error)
10
10
 
11
- module JekyllPreModule
12
- include NoSelectTag
13
- include PreTagBlock
14
- include ExecTag
11
+ class String
12
+ # Works like <<~ from Ruby 2.3.0
13
+ def dedent
14
+ # Find the margin whitespace on the first line
15
+ margin = self[/\A\s*/]
16
+ # Remove margin-sized whitespace from each line
17
+ gsub(/^\s{#{margin.size}}/, '')
18
+ end
15
19
  end
16
20
 
17
21
  PluginMetaLogger.instance.info { "Loaded #{JekyllPluginPreName::PLUGIN_NAME} v#{JekyllPreVersion::VERSION} plugin." }
data/lib/noselect_tag.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'jekyll_plugin_support'
2
2
  require_relative 'jekyll_pre/version'
3
3
 
4
- module NoSelectTag
4
+ module JekyllPreModule
5
5
  # """\\{% noselect %} or \\{% noselect this all gets copied.
6
6
  # Also, space before the closing percent is signficant %}"""
7
7
  class NoSelectTag < JekyllSupport::JekyllTagNoArgParsing
data/lib/pre_tag_block.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'jekyll_plugin_support'
2
2
  require_relative 'jekyll_pre/version'
3
3
 
4
- module PreTagBlock
4
+ module JekyllPreModule
5
5
  class PreTagBlock < JekyllSupport::JekyllBlock
6
6
  include JekyllPreVersion
7
7
 
@@ -31,20 +31,36 @@ module PreTagBlock
31
31
  result
32
32
  end
33
33
 
34
+ # remove leading blank lines and trailing whitespace
35
+ def self.remove_surrounding(text)
36
+ text.gsub(/\A(\s?\n)*/, '').rstrip
37
+ end
38
+
39
+ def option(name)
40
+ value = @helper.parameter_specified? name
41
+ return value unless value.nil?
42
+
43
+ @pre_config[name] if @pre_config
44
+ end
45
+
34
46
  def render_impl(text)
35
- text.strip!
47
+ text = PreTagBlock.remove_surrounding text
48
+
36
49
  @helper.gem_file __FILE__ # Enables plugin attribution
37
50
 
38
- @class = @helper.parameter_specified? 'class'
39
- @clear = @helper.parameter_specified? 'clear'
40
- @dark = ' dark' if @helper.parameter_specified? 'dark'
41
- @highlight = @helper.parameter_specified? 'highlight'
42
- @label = @helper.parameter_specified? 'label'
43
- @make_copy_button = @helper.parameter_specified? 'copyButton'
44
- @number_lines = @helper.parameter_specified? 'number'
45
- @style = @helper.parameter_specified? 'style'
46
- @wrapper_class = @helper.parameter_specified? 'wrapper_class'
47
- @wrapper_style = @helper.parameter_specified? 'wrapper_style'
51
+ @pre_config = @config['pre']
52
+
53
+ @class = option 'class'
54
+ @clear = option 'clear'
55
+ @dark = ' dark' if option 'dark'
56
+ @dedent = option 'dedent'
57
+ @highlight = option 'highlight'
58
+ @label = option 'label'
59
+ @make_copy_button = option 'copyButton'
60
+ @number_lines = option 'number'
61
+ @style = option 'style'
62
+ @wrapper_class = option 'wrapper_class'
63
+ @wrapper_style = option 'wrapper_style'
48
64
 
49
65
  @class = @class ? " #{@class}" : ''
50
66
  @style = @style ? " style='#{@style}'" : ''
@@ -55,6 +71,8 @@ module PreTagBlock
55
71
  @label ||= @helper.argv.join(' ')
56
72
 
57
73
  @logger.debug { "@make_copy_button = '#{@make_copy_button}'; @label = '#{@label}'" }
74
+
75
+ text = text.dedent if @dedent
58
76
  make_pre(text)
59
77
  end
60
78
 
data/spec/exec_spec.rb ADDED
@@ -0,0 +1,34 @@
1
+ require_relative '../lib/jekyll_pre'
2
+
3
+ module ExecTagSpec
4
+ RSpec.describe(JekyllPreModule) do
5
+ it 'strips properly' do
6
+ content = <<~END_CONTENT
7
+ Line 1
8
+ Line 2
9
+ Line 3
10
+ Line 4
11
+ Line 5
12
+ Line 6
13
+ Line 7
14
+ Line 8
15
+ Line 9
16
+ Line 10
17
+ END_CONTENT
18
+ actual = described_class.compress content, false
19
+ expected = <<~END_CONTENT
20
+ Line 1
21
+ Line 2
22
+ Line 3
23
+ Line 4
24
+ Line 5
25
+ Line 6
26
+ Line 7
27
+ Line 8
28
+ Line 9
29
+ Line 10
30
+ END_CONTENT
31
+ expect(expected.strip).to eq(actual)
32
+ end
33
+ end
34
+ end
data/spec/pre_spec.rb CHANGED
@@ -4,7 +4,71 @@ require 'key_value_parser'
4
4
  require 'shellwords'
5
5
  require_relative '../lib/jekyll_pre'
6
6
 
7
- RSpec.describe(PreTagBlock) do
7
+ RSpec.describe(JekyllPreModule::PreTagBlock) do
8
+ it 'dedents content lines' do
9
+ content = <<-END_CONTENT
10
+ Line 1
11
+ Line 2
12
+ Line 3
13
+ Line 4
14
+ Line 5
15
+ Line 6
16
+ Line 7
17
+ Line 8
18
+ Line 9
19
+ Line 10
20
+ END_CONTENT
21
+ expected = <<~END_CONTENT
22
+ Line 1
23
+ Line 2
24
+ Line 3
25
+ Line 4
26
+ Line 5
27
+ Line 6
28
+ Line 7
29
+ Line 8
30
+ Line 9
31
+ Line 10
32
+ END_CONTENT
33
+ actual = content.dedent
34
+ expect(actual).to eq(expected)
35
+ end
36
+
37
+ it 'removes surrounding whitespace' do
38
+ text = <<-END_CONTENT
39
+
40
+
41
+ Line 1
42
+ Line 2
43
+ Line 3
44
+ Line 4
45
+ Line 5
46
+ Line 6
47
+ Line 7
48
+ Line 8
49
+ Line 9
50
+ Line 10
51
+
52
+
53
+ END_CONTENT
54
+ actual = described_class.remove_surrounding(text)
55
+
56
+ expected = <<-END_CONTENT
57
+ Line 1
58
+ Line 2
59
+ Line 3
60
+ Line 4
61
+ Line 5
62
+ Line 6
63
+ Line 7
64
+ Line 8
65
+ Line 9
66
+ Line 10
67
+ END_CONTENT
68
+
69
+ expect(actual).to eq(expected.rstrip)
70
+ end
71
+
8
72
  it 'parses arguments' do
9
73
  argv = Shellwords.split 'number copyButton shell'
10
74
  options = KeyValueParser.new.parse(argv)
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'jekyll'
2
2
  require 'fileutils'
3
3
  require 'key_value_parser'
4
+ require 'jekyll_plugin_support'
5
+ require 'rack/utils'
4
6
  require 'shellwords'
5
7
 
6
8
  require_relative '../lib/jekyll_pre'
@@ -1,5 +1,13 @@
1
- example_id | status | run_time |
2
- ----------------------- | ------ | --------------- |
3
- ./spec/pre_spec.rb[1:1] | passed | 0.00075 seconds |
4
- ./spec/pre_spec.rb[1:2] | passed | 0.00044 seconds |
5
- ./spec/pre_spec.rb[1:3] | passed | 0.00018 seconds |
1
+ example_id | status | run_time |
2
+ --------------------------------------------------------------- | ------ | --------------- |
3
+ ./spec/exec_spec.rb[1:1] | passed | 0.00377 seconds |
4
+ ./spec/pre_spec.rb[1:1] | passed | 0.00014 seconds |
5
+ ./spec/pre_spec.rb[1:2] | passed | 0.00351 seconds |
6
+ ./spec/pre_spec.rb[1:3] | passed | 0.00016 seconds |
7
+ ./spec/pre_spec.rb[1:4] | passed | 0.00011 seconds |
8
+ /mnt/_/work/jekyll/my_plugins/jekyll_pre/spec/exec_spec.rb[1:1] | passed | 0.00457 seconds |
9
+ /mnt/_/work/jekyll/my_plugins/jekyll_pre/spec/pre_spec.rb[1:1] | passed | 0.00326 seconds |
10
+ /mnt/_/work/jekyll/my_plugins/jekyll_pre/spec/pre_spec.rb[1:2] | passed | 0.00067 seconds |
11
+ /mnt/_/work/jekyll/my_plugins/jekyll_pre/spec/pre_spec.rb[1:3] | passed | 0.00362 seconds |
12
+ /mnt/_/work/jekyll/my_plugins/jekyll_pre/spec/pre_spec.rb[1:4] | passed | 0.00033 seconds |
13
+ /mnt/_/work/jekyll/my_plugins/jekyll_pre/spec/pre_spec.rb[1:5] | passed | 0.00083 seconds |
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll_pre
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Slinn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-13 00:00:00.000000000 Z
11
+ date: 2023-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -28,16 +28,30 @@ 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.6.0
33
+ version: 0.7.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.7.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rack
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: 0.6.0
54
+ version: '0'
41
55
  description: 'Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable
42
56
  text. Can number lines.
43
57
 
@@ -59,17 +73,18 @@ files:
59
73
  - lib/jekyll_pre/version.rb
60
74
  - lib/noselect_tag.rb
61
75
  - lib/pre_tag_block.rb
76
+ - spec/exec_spec.rb
62
77
  - spec/pre_spec.rb
63
78
  - spec/spec_helper.rb
64
79
  - spec/status_persistence.txt
65
- homepage: https://www.mslinn.com/jekyll/3000-jekyll-plugins.html#jekyll_pre
80
+ homepage: https://www.mslinn.com/jekyll_plugins/jekyll_pre.html
66
81
  licenses:
67
82
  - MIT
68
83
  metadata:
69
84
  allowed_push_host: https://rubygems.org
70
85
  bug_tracker_uri: https://github.com/mslinn/jekyll_pre/issues
71
86
  changelog_uri: https://github.com/mslinn/jekyll_pre/CHANGELOG.md
72
- homepage_uri: https://www.mslinn.com/jekyll/3000-jekyll-plugins.html#jekyll_pre
87
+ homepage_uri: https://www.mslinn.com/jekyll_plugins/jekyll_pre.html
73
88
  source_code_uri: https://github.com/mslinn/jekyll_pre
74
89
  post_install_message: |2+
75
90
 
@@ -95,6 +110,7 @@ specification_version: 4
95
110
  summary: Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable
96
111
  text. Can number lines.
97
112
  test_files:
113
+ - spec/exec_spec.rb
98
114
  - spec/pre_spec.rb
99
115
  - spec/spec_helper.rb
100
116
  - spec/status_persistence.txt