jekyll_pre 1.3.1 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 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