jekyll_pre 1.2.4 → 1.3.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: 2a78213a8f26a3d6743a9b706501a5c0f87279eeb243e492956fdd557b0a1e6d
4
- data.tar.gz: 64c8640dee1fe914ac54f9813df8bb3f365518d41d13aecd62bda8c752d0488e
3
+ metadata.gz: 16aa76dad7fdc41eac063227ee8463e9bcb77dd1c9893840e05f22a67c08aef0
4
+ data.tar.gz: 9e550133932e9b422a30bdccb813dd0c603870bac9bbb08489256a92be9d27ce
5
5
  SHA512:
6
- metadata.gz: e89f23e343045045c93f7fe7843a43611608f8702e934f4ce0f3c50b52bed7d71b856c79af679d4af9fbdd25921bbcf6977acbd709033a171bbfffc136ff358d
7
- data.tar.gz: bba7c4caf281ab09415560e63a525c632bd98019bb475d53e526fade9c43ed4f77a9de7ef8395085c82308cf4fe31c4e4bbc52c58870f942cd7f6db1181e23ae
6
+ metadata.gz: 8f87a17e7dff740d917a248323822a491559ac3bc3223ca4af7a62c261ca213be8f82f61577b7278112534b0ed5af597f01242fba0ba9adb9158a27425893ffa
7
+ data.tar.gz: 1227a44360aae2c913a005223c28e0ef1f3a788e43e7acb0973f960fbc618846d587754e9944f15884f184f73b9ed2bd913eeedc1273ee186e694deef31e5fc5
data/.rubocop.yml CHANGED
@@ -20,13 +20,14 @@ Gemspec/RequireMFA:
20
20
  Enabled: false
21
21
 
22
22
  Layout/HashAlignment:
23
- Enabled: false
23
+ EnforcedColonStyle: table
24
+ EnforcedHashRocketStyle: table
24
25
 
25
26
  Layout/LineLength:
26
27
  Max: 150
27
28
 
28
29
  Metrics/AbcSize:
29
- Max: 25
30
+ Max: 35
30
31
 
31
32
  Metrics/BlockLength:
32
33
  Exclude:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## 1.3.1
2
+ * Generates outer `div` with `jekyll_pre` class, like this:
3
+ ```html
4
+ <div class="jekyll_pre">
5
+ ... HTML generated by previous versions of `pre` tag here
6
+ </div>
7
+ ```
8
+ * Added `wrapper_class` and `wrapper_style` name/value options.
9
+
10
+ ## 1.3.0
11
+ * Updated to `jekyll_plugin_support` v0.6.0 for attribution support.
12
+
13
+ ## 1.2.5
14
+ * Empty exec commands are detected and reported.
15
+
1
16
  ## 1.2.4
2
17
  * The `exec` tag now evaluates environment variables in the command before execution.
3
18
 
data/README.md CHANGED
@@ -47,14 +47,16 @@ This Jekyll plugin provides 3 new Liquid tags that work together:
47
47
 
48
48
  - `cd="relative/or/absolute/directory"` - Change to specified directory before executing shell command.
49
49
  Environment variables in the directory path will be expanded.
50
- - `no_escape` – Do not HTML escape the result of running the shell command.
51
- - `no_strip` – Do not remove leading and trailing whitespace from the result.
52
50
  - `die_if_nonzero` – Set `false` to treat non-zero return codes as non-fatal.
53
51
  Instead of terminating Jekyll with an error message,
54
52
  the message will be displayed as an error by the Jekyll logger,
55
53
  and a red message will appear in place of the result on the web page.
56
54
  - `die_if_error` – Set `false` to treat exceptions generated by this plugin as non-fatal.
57
55
  Instead of terminating Jekyll with an error message, the message will be displayed as an error by the Jekyll logger.
56
+ - `no_escape` – Do not HTML escape the result of running the shell command.
57
+ - `no_strip` – Do not remove leading and trailing whitespace from the result.
58
+ - `wrapper_class` class applied to outer `div`.
59
+ - `wrapper_style` style applied to outer `div`.
58
60
 
59
61
 
60
62
  ## CSS
data/jekyll_pre.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  END_OF_DESC
11
11
  spec.email = ['mslinn@mslinn.com']
12
12
  spec.files = Dir['.rubocop.yml', 'LICENSE.*', 'Rakefile', '{lib,spec}/**/*', '*.gemspec', '*.md']
13
- spec.homepage = 'https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#pre'
13
+ spec.homepage = 'https://www.mslinn.com/jekyll/3000-jekyll-plugins.html#jekyll_pre'
14
14
  spec.license = 'MIT'
15
15
  spec.metadata = {
16
16
  'allowed_push_host' => 'https://rubygems.org',
@@ -32,5 +32,5 @@ Gem::Specification.new do |spec|
32
32
  spec.version = JekyllPreVersion::VERSION
33
33
 
34
34
  spec.add_dependency 'jekyll', '>= 3.5.0'
35
- spec.add_dependency 'jekyll_plugin_support', '~> 0.5.0', '>= 0.5.3'
35
+ spec.add_dependency 'jekyll_plugin_support', '~> 0.6.0'
36
36
  end
data/lib/exec_tag.rb CHANGED
@@ -12,7 +12,9 @@ module ExecTag
12
12
  def render_impl
13
13
  parse_args
14
14
  @original_command = @helper.remaining_markup_original
15
- command = JekyllPluginHelper.expand_env(@original_command)
15
+ 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?
17
+
16
18
  response = run_command(command)
17
19
  response = if @child_status.success?
18
20
  compress(response)
@@ -27,7 +29,8 @@ module ExecTag
27
29
  rescue PreError => e
28
30
  raise PreError, e.message, []
29
31
  rescue StandardError => e
30
- msg = self.class.remove_html_tags(e.message) + " from executing '#{@original_command}' on line #{@line_number} (after front matter) of #{@page['path']}"
32
+ msg = self.class.remove_html_tags(e.message) +
33
+ " from executing '#{@original_command}' on line #{@line_number} (after front matter) of #{@page['path']}"
31
34
  raise PreError, msg.red, [] if @die_if_error
32
35
  end
33
36
 
@@ -85,7 +88,8 @@ module ExecTag
85
88
  @child_status = $CHILD_STATUS
86
89
  result
87
90
  rescue StandardError => e
88
- msg = self.class.remove_html_tags(e.message) + " from executing '#{@original_command}' on line #{@line_number} (after front matter) of #{@page['path']}"
91
+ msg = self.class.remove_html_tags(e.message) +
92
+ " from executing '#{@original_command}' on line #{@line_number} (after front matter) of #{@page['path']}"
89
93
  raise PreError, msg.red, [] if @die_if_error
90
94
  ensure
91
95
  @child_status = $CHILD_STATUS
@@ -1,3 +1,3 @@
1
1
  module JekyllPreVersion
2
- VERSION = '1.2.4'.freeze
2
+ VERSION = '1.3.1'.freeze
3
3
  end
data/lib/pre_tag_block.rb CHANGED
@@ -17,35 +17,6 @@ module PreTagBlock
17
17
  "#{@@prefix}'##{pre_id}'#{@@suffix}"
18
18
  end
19
19
 
20
- def self.make_pre(make_copy_button, number_lines, label, dark, highlight_pattern, css_class, style, clear, content) # rubocop:disable Metrics/ParameterLists
21
- pre_clear = label_clear = ''
22
- if clear
23
- if label.to_s.empty?
24
- pre_clear = ' clear'
25
- else
26
- label_clear = ' clear'
27
- end
28
- end
29
- css_class = css_class ? " #{css_class}" : ''
30
- style = style ? " style='#{style}'" : ''
31
- dark_label = ' darkLabel' if dark
32
- label = if label.to_s.empty?
33
- ''
34
- elsif label.to_s.downcase.strip == 'shell'
35
- "<div class='codeLabel unselectable#{dark_label}#{label_clear}' data-lt-active='false'>Shell</div>"
36
- else
37
- "<div class='codeLabel unselectable#{dark_label}#{label_clear}' data-lt-active='false'>#{label}</div>"
38
- end
39
- pre_id = "id#{SecureRandom.hex(6)}"
40
- copy_button = make_copy_button ? PreTagBlock.make_copy_button(pre_id) : ''
41
- content = PreTagBlock.highlight(content, highlight_pattern) if highlight_pattern
42
- content = PreTagBlock.number_content(content) if number_lines
43
-
44
- classes = "maxOneScreenHigh copyContainer#{dark}#{pre_clear}#{css_class}"
45
- pre_content = "#{copy_button}#{content.strip}"
46
- "#{label}<pre data-lt-active='false' class='#{classes}'#{style} id='#{pre_id}'>#{pre_content}</pre>"
47
- end
48
-
49
20
  def self.number_content(content)
50
21
  lines = content.split("\n")
51
22
  digits = lines.length.to_s.length
@@ -62,21 +33,65 @@ module PreTagBlock
62
33
 
63
34
  def render_impl(text)
64
35
  text.strip!
36
+ @helper.gem_file __FILE__ # Enables plugin attribution
65
37
 
66
- @clear = @helper.parameter_specified? 'clear'
67
38
  @class = @helper.parameter_specified? 'class'
39
+ @clear = @helper.parameter_specified? 'clear'
40
+ @dark = ' dark' if @helper.parameter_specified? 'dark'
68
41
  @highlight = @helper.parameter_specified? 'highlight'
42
+ @label = @helper.parameter_specified? 'label'
69
43
  @make_copy_button = @helper.parameter_specified? 'copyButton'
70
44
  @number_lines = @helper.parameter_specified? 'number'
71
- @dark = ' dark' if @helper.parameter_specified? 'dark'
72
45
  @style = @helper.parameter_specified? 'style'
73
- @label = @helper.parameter_specified? 'label'
46
+ @wrapper_class = @helper.parameter_specified? 'wrapper_class'
47
+ @wrapper_style = @helper.parameter_specified? 'wrapper_style'
48
+
49
+ @class = @class ? " #{@class}" : ''
50
+ @style = @style ? " style='#{@style}'" : ''
51
+ @wrapper_class = @wrapper_class ? " #{@wrapper_class}" : ''
52
+ @wrapper_style = @wrapper_style ? " style='#{@wrapper_style}'" : ''
74
53
 
75
54
  # If a label was specified, use it, otherwise concatenate any dangling parameters and use that as the label
76
55
  @label ||= @helper.argv.join(' ')
77
56
 
78
57
  @logger.debug { "@make_copy_button = '#{@make_copy_button}'; @label = '#{@label}'" }
79
- self.class.make_pre(@make_copy_button, @number_lines, @label, @dark, @highlight, @class, @style, @clear, text)
58
+ make_pre(text)
59
+ end
60
+
61
+ private
62
+
63
+ def make_pre(content)
64
+ pre_clear = label_clear = ''
65
+ if @clear
66
+ if @label.to_s.empty?
67
+ pre_clear = ' clear'
68
+ else
69
+ label_clear = ' clear'
70
+ end
71
+ end
72
+ dark_label = ' darkLabel' if @dark
73
+ @label = if @label.to_s.empty?
74
+ ''
75
+ elsif @label.to_s.casecmp('shell').zero?
76
+ "<div class='codeLabel unselectable#{dark_label}#{label_clear}' data-lt-active='false'>Shell</div>"
77
+ else
78
+ "<div class='codeLabel unselectable#{dark_label}#{label_clear}' data-lt-active='false'>#{@label}</div>"
79
+ end
80
+ pre_id = "id#{SecureRandom.hex(6)}"
81
+ copy_button = @make_copy_button ? PreTagBlock.make_copy_button(pre_id) : ''
82
+ content = PreTagBlock.highlight(content, @highlight) if @highlight
83
+ content = PreTagBlock.number_content(content) if @number_lines
84
+
85
+ classes = "maxOneScreenHigh copyContainer#{@dark}#{pre_clear}#{@class}"
86
+ pre_content = "#{copy_button}#{content}"
87
+ attribution = @helper.attribute if @helper.attribution
88
+ <<~END_OUTPUT
89
+ <div class="jekyll_pre#{@wrapper_class}" #{@wrapper_style}>
90
+ #{@label}
91
+ <pre data-lt-active='false' class='#{classes}'#{@style} id='#{pre_id}'>#{pre_content}</pre>
92
+ #{attribution}
93
+ </div>
94
+ END_OUTPUT
80
95
  end
81
96
 
82
97
  JekyllPluginHelper.register(self, 'pre')
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.2.4
4
+ version: 1.3.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-03-19 00:00:00.000000000 Z
11
+ date: 2023-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -30,20 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.5.0
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 0.5.3
33
+ version: 0.6.0
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: 0.5.0
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.5.3
40
+ version: 0.6.0
47
41
  description: 'Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable
48
42
  text. Can number lines.
49
43
 
@@ -68,14 +62,14 @@ files:
68
62
  - spec/pre_spec.rb
69
63
  - spec/spec_helper.rb
70
64
  - spec/status_persistence.txt
71
- homepage: https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#pre
65
+ homepage: https://www.mslinn.com/jekyll/3000-jekyll-plugins.html#jekyll_pre
72
66
  licenses:
73
67
  - MIT
74
68
  metadata:
75
69
  allowed_push_host: https://rubygems.org
76
70
  bug_tracker_uri: https://github.com/mslinn/jekyll_pre/issues
77
71
  changelog_uri: https://github.com/mslinn/jekyll_pre/CHANGELOG.md
78
- homepage_uri: https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#pre
72
+ homepage_uri: https://www.mslinn.com/jekyll/3000-jekyll-plugins.html#jekyll_pre
79
73
  source_code_uri: https://github.com/mslinn/jekyll_pre
80
74
  post_install_message: |2+
81
75