jekyll_pre 1.1.4 → 1.1.5

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: be2fcd1765446ab64973e355acb073057dea3c98ed1be553362b5b755e5453fb
4
- data.tar.gz: 33b14de234b5764673af3c9380d6ae32fa5a429294f7ee5f53d094aa63bf1f87
3
+ metadata.gz: a3eced8ae5430c67a303f08c90a38caf16c46efbad4e11232aa95ed9580c2f98
4
+ data.tar.gz: 9370b4fab76dc5ba5487c0d0876907ed9366d0f1e777e63ca8250121a9a32533
5
5
  SHA512:
6
- metadata.gz: 46fcc4e0dcab10f27bfc9f8fa408e84e5d5c3c19f926d1de51167b39754740a2a4a3af2a17ca4c4f8dc2bf25011283205137c7afa9d144abb67ee6c2479276a5
7
- data.tar.gz: c39c5e30e3386d1eeb3029d7cf31ab159fcb8b32fb3b72fa5f03d5af8269daa30b7cf308e0bdbf1905180a468f88b2e7b00ab1e440daf75ba5ee96987bc1a727
6
+ metadata.gz: 7fc327f37d0c5dc7f54ba78837984a05603ae24bbdee5e888eebdb01bc8d377ecd08bbc4b18a68c97a9bd3f1272f359cb8da53ee7a2143938793d5dca298fb31
7
+ data.tar.gz: 656acb136598d957e9b129a2ebd71cfb905f63191c6c0c09eb0565c9070c71d5790b1319289b6ac70d71f15b8710a1af5e693240102f10f5c4ecce0068784252
data/.rubocop.yml CHANGED
@@ -1,6 +1,6 @@
1
- require: rubocop-jekyll
2
- inherit_gem:
3
- rubocop-jekyll: .rubocop.yml
1
+ # require: rubocop-jekyll
2
+ # inherit_gem:
3
+ # rubocop-jekyll: .rubocop.yml
4
4
 
5
5
  AllCops:
6
6
  Exclude:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 1.1.5
2
+ * Added `class` and `style` options to allow for specifying additional CSS classes and inline CSS
3
+ * Added `clear` option to ensure no images overlap the pre output
4
+
1
5
  ## 1.1.4
2
6
  * Added `highlight` regex option
3
7
  * Now using `lib/jekyll_tag_helper.rb` to parse markup
data/jekyll_pre.gemspec CHANGED
@@ -39,10 +39,10 @@ Gem::Specification.new do |spec|
39
39
  spec.add_dependency "key-value-parser"
40
40
  spec.add_dependency "shellwords"
41
41
 
42
- spec.add_development_dependency "debase"
42
+ # spec.add_development_dependency "debase"
43
43
  # spec.add_development_dependency "rubocop-jekyll"
44
44
  # spec.add_development_dependency "rubocop-rake"
45
45
  # spec.add_development_dependency "rubocop-rspec"
46
- spec.add_development_dependency "ruby-debug-ide"
46
+ # spec.add_development_dependency "ruby-debug-ide"
47
47
  end
48
48
  # rubocop:enable Metrics/BlockLength
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllPreVersion
4
- VERSION = "1.1.4"
4
+ VERSION = "1.1.5"
5
5
  end
data/lib/jekyll_pre.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "liquid"
4
- require "jekyll_plugin_logger"
3
+ require 'liquid'
4
+ require 'jekyll_plugin_logger'
5
5
  require 'key_value_parser'
6
- require "shellwords"
7
- require_relative "jekyll_pre/version"
8
- require_relative "jekyll_tag_helper"
6
+ require 'shellwords'
7
+ require_relative 'jekyll_pre/version'
8
+ require_relative 'jekyll_tag_helper'
9
9
 
10
10
  module JekyllPluginPreName
11
- PLUGIN_NAME = "jekyll_pre"
11
+ PLUGIN_NAME = 'jekyll_pre'
12
12
  end
13
13
 
14
14
  # """
@@ -37,36 +37,46 @@ class PreTagBlock < Liquid::Block
37
37
  "alt='Copy to clipboard' style='width: 13px'></button>"
38
38
 
39
39
  def self.highlight(content, pattern)
40
- content.gsub(Regexp::new(pattern), "<span class='bg_yellow'>\\0</span>")
40
+ content.gsub(Regexp.new(pattern), "<span class='bg_yellow'>\\0</span>")
41
41
  end
42
42
 
43
43
  def self.make_copy_button(pre_id)
44
44
  "#{@@prefix}'##{pre_id}'#{@@suffix}"
45
45
  end
46
46
 
47
- def self.make_pre(make_copy_button, number_lines, label, dark, highlight_pattern, content) # rubocop:disable Metrics/ParameterLists
48
- dark_label = " darkLabel" if dark
47
+ def self.make_pre(make_copy_button, number_lines, label, dark, highlight_pattern, css_class, style, clear, content) # rubocop:disable Metrics/ParameterLists, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
48
+ pre_clear = label_clear = ''
49
+ if clear
50
+ if label.to_s.empty?
51
+ pre_clear = ' clear'
52
+ else
53
+ label_clear = ' clear'
54
+ end
55
+ end
56
+ css_class = css_class ? " #{css_class}" : ''
57
+ style = style ? " style='#{style}'" : ''
58
+ dark_label = ' darkLabel' if dark
49
59
  label = if label.to_s.empty?
50
- ""
51
- elsif label.to_s.downcase.strip == "shell"
52
- "<div class='codeLabel unselectable#{dark_label}' data-lt-active='false'>Shell</div>"
60
+ ''
61
+ elsif label.to_s.downcase.strip == 'shell'
62
+ "<div class='codeLabel unselectable#{dark_label}#{label_clear}' data-lt-active='false'>Shell</div>"
53
63
  else
54
- "<div class='codeLabel unselectable#{dark_label}' data-lt-active='false'>#{label}</div>"
64
+ "<div class='codeLabel unselectable#{dark_label}#{label_clear}' data-lt-active='false'>#{label}</div>"
55
65
  end
56
66
  pre_id = "id#{SecureRandom.hex(6)}"
57
- copy_button = make_copy_button ? PreTagBlock.make_copy_button(pre_id) : ""
67
+ copy_button = make_copy_button ? PreTagBlock.make_copy_button(pre_id) : ''
58
68
  content = PreTagBlock.highlight(content, highlight_pattern) if highlight_pattern
59
69
  content = PreTagBlock.number_content(content) if number_lines
60
- "#{label}<pre data-lt-active='false' class='maxOneScreenHigh copyContainer#{dark}' id='#{pre_id}'>#{copy_button}#{content.strip}</pre>"
70
+ "#{label}<pre data-lt-active='false' class='maxOneScreenHigh copyContainer#{dark}#{pre_clear}#{css_class}'#{style} id='#{pre_id}'>#{copy_button}#{content.strip}</pre>"
61
71
  end
62
72
 
63
- def self.number_content(content)
73
+ def self.number_content(content) # rubocop:disable Metrics/MethodLength
64
74
  lines = content.split("\n")
65
75
  digits = lines.length.to_s.length
66
76
  i = 0
67
77
  numbered_content = lines.map do |line|
68
78
  i += 1
69
- number = i.to_s.rjust(digits, " ")
79
+ number = i.to_s.rjust(digits, ' ')
70
80
  "<span class='unselectable numbered_line'> #{number}: </span>#{line}"
71
81
  end
72
82
  result = numbered_content.join("\n")
@@ -84,7 +94,7 @@ class PreTagBlock < Liquid::Block
84
94
  # @return [void]
85
95
  def initialize(_tag_name, markup, _tokens)
86
96
  super
87
- markup = "" if markup.nil?
97
+ markup = '' if markup.nil?
88
98
  markup.strip!
89
99
 
90
100
  @logger = PluginMetaLogger.instance.new_logger(self, PluginMetaLogger.instance.config)
@@ -94,21 +104,24 @@ class PreTagBlock < Liquid::Block
94
104
  # Method prescribed by the Jekyll plugin lifecycle.
95
105
  # @param liquid_context [Liquid::Context]
96
106
  # @return [String]
97
- def render(liquid_context)
107
+ def render(liquid_context) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
98
108
  content = super
99
109
  @helper.liquid_context = liquid_context
100
110
 
101
- @highlight = @helper.parameter_specified? "highlight"
102
- @make_copy_button = @helper.parameter_specified? "copyButton"
103
- @number_lines = @helper.parameter_specified? "number"
104
- @dark = " dark" if @helper.parameter_specified? "dark"
105
- @label = @helper.parameter_specified? "label"
111
+ @clear = @helper.parameter_specified?('clear')
112
+ @class = @helper.parameter_specified?('class')
113
+ @highlight = @helper.parameter_specified? 'highlight'
114
+ @make_copy_button = @helper.parameter_specified? 'copyButton'
115
+ @number_lines = @helper.parameter_specified? 'number'
116
+ @dark = ' dark' if @helper.parameter_specified? 'dark'
117
+ @label = @helper.parameter_specified? 'label'
118
+ @style = @helper.parameter_specified?('style')
106
119
 
107
120
  # If a label was specified, use it, otherwise concatenate any dangling parameters and use that as the label
108
- @label ||= @helper.params.join(" ")
121
+ @label ||= @helper.params.join(' ')
109
122
 
110
123
  @logger.debug { "@make_copy_button = '#{@make_copy_button}'; @label = '#{@label}'" }
111
- PreTagBlock.make_pre(@make_copy_button, @number_lines, @label, @dark, @highlight, content)
124
+ PreTagBlock.make_pre(@make_copy_button, @number_lines, @label, @dark, @highlight, @class, @style, @clear, content)
112
125
  end
113
126
  end
114
127
 
@@ -124,7 +137,7 @@ class UnselectableTag < Liquid::Tag
124
137
  @logger = PluginMetaLogger.instance.new_logger(self)
125
138
 
126
139
  @markup = markup
127
- @markup = "$ " if @markup.nil? || @markup.empty?
140
+ @markup = '$ ' if @markup.nil? || @markup.empty?
128
141
  @logger.debug { "UnselectableTag: markup= '#{@markup}'" }
129
142
  end
130
143
 
@@ -134,5 +147,5 @@ class UnselectableTag < Liquid::Tag
134
147
  end
135
148
 
136
149
  PluginMetaLogger.instance.info { "Loaded #{JekyllPluginPreName::PLUGIN_NAME} v#{JekyllPreVersion::VERSION} plugin." }
137
- Liquid::Template.register_tag("pre", PreTagBlock)
138
- Liquid::Template.register_tag("noselect", UnselectableTag)
150
+ Liquid::Template.register_tag('pre', PreTagBlock)
151
+ Liquid::Template.register_tag('noselect', UnselectableTag)
@@ -1,23 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "shellwords"
3
+ require 'shellwords'
4
4
  require 'key_value_parser'
5
5
 
6
+ # Parses arguments and options
6
7
  class JekyllTagHelper
7
8
  attr_reader :argv, :liquid_context, :logger, :params, :tag_name
8
9
 
9
10
  def self.escape_html(string)
10
- string.gsub("&", "&amp;")
11
- .gsub("{", "&#123;")
12
- .gsub("}", "&#125;")
13
- .gsub("<", "&lt;")
11
+ string.gsub('&', '&amp;')
12
+ .gsub('{', '&#123;')
13
+ .gsub('}', '&#125;')
14
+ .gsub('<', '&lt;')
14
15
  end
15
16
 
16
17
  # Expand a environment variable reference
17
- def self.expand_env(str, die_if_undefined=false)
18
+ def self.expand_env(str, die_if_undefined: false)
18
19
  str.gsub(/\$([a-zA-Z_][a-zA-Z0-9_]*)|\${\g<1>}|%\g<1>%/) do
19
20
  envar = Regexp.last_match(1)
20
21
  raise FlexibleError, "flexible_include error: #{envar} is undefined".red, [] if !ENV.key?(envar) && die_if_undefined # Suppress stack trace
22
+
21
23
  ENV[envar]
22
24
  end
23
25
  end
@@ -67,7 +69,7 @@ class JekyllTagHelper
67
69
  value = @liquid_context[name] # Finds variables named like 'include.my_variable', found in @liquid_context.scopes.first
68
70
  value ||= @page[name] if @page # Finds variables named like 'page.my_variable'
69
71
  value ||= dereference_include_variable(name)
70
- value ||= ""
72
+ value ||= ''
71
73
  value
72
74
  end
73
75
 
@@ -79,9 +81,9 @@ class JekyllTagHelper
79
81
 
80
82
  def lookup_variable(symbol)
81
83
  string = symbol.to_s
82
- return string unless string.start_with?("{{") && string.end_with?("}}")
84
+ return string unless string.start_with?('{{') && string.end_with?('}}')
83
85
 
84
- dereference_variable(string.delete_prefix("{{").delete_suffix("}}"))
86
+ dereference_variable(string.delete_prefix('{{').delete_suffix('}}'))
85
87
  end
86
88
 
87
89
  def page
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.1.4
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Slinn
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-24 00:00:00.000000000 Z
11
+ date: 2022-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -66,38 +66,10 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: debase
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: ruby-debug-ide
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
69
  description: 'Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable
98
70
  text. Can number lines.
99
71
 
100
- '
72
+ '
101
73
  email:
102
74
  - mslinn@mslinn.com
103
75
  executables: []
@@ -143,8 +115,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
115
  - !ruby/object:Gem::Version
144
116
  version: '0'
145
117
  requirements: []
146
- rubygems_version: 3.1.4
147
- signing_key:
118
+ rubygems_version: 3.3.3
119
+ signing_key:
148
120
  specification_version: 4
149
121
  summary: Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable
150
122
  text. Can number lines.
@@ -152,3 +124,4 @@ test_files:
152
124
  - spec/pre_spec.rb
153
125
  - spec/spec_helper.rb
154
126
  - spec/status_persistence.txt
127
+ ...