jekyll_pre 1.0.0 → 1.1.2

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: ffe453b56e03d1e78bce68257b601f3361c5e9f39e81842bd2bc3b40f64aaddf
4
- data.tar.gz: be4f574ee5a94854d6c28ea225d0a08f44319639b48d569e48d65e627c966c45
3
+ metadata.gz: '02751991aafe0decd461b0596ea3b8e06cd537bfe036ed5d2d5851aebf7c1295'
4
+ data.tar.gz: b2f326314d48b1752ad40b9c50c4df9c7f39dfb93d80662dddc9bab2ebe7291d
5
5
  SHA512:
6
- metadata.gz: ea9a405d3fac946a19a6c306e188c1bec3b670398f6099d5de0ec35d40b7258ad559e300571c3291b965f17d647fb6eec045715acb3d23bd5e3bbfa6f35711c0
7
- data.tar.gz: c77014a0cb77dcff1fcd63018d043b1b2dc4497028a03d8112b49d712bb1bd1c91cb542f297924bc05adf1cc23c0a9669ff41c99cbbbbef0cbf934cc10c63e0c
6
+ metadata.gz: 8f62ab9616720b33cd9598c431501e1ac4de30ed8c0fd9a8afaba076f8f4dde15b8885381f4d2716f48c32b68a0dbda6fd021e1f3d0806a46a28322c4ab34671
7
+ data.tar.gz: d28408a99c9a4e465caedb7a71296c6ecdeb5a4e13719e2360039fc8eeb84d378034cd996162dbbc3fae57840b1da5afc4972fc892787161d291ff9dbc06f835
data/.rubocop.yml CHANGED
@@ -11,21 +11,3 @@ AllCops:
11
11
 
12
12
  Layout/LineLength:
13
13
  Max: 150
14
-
15
- Layout/MultilineMethodCallIndentation:
16
- Enabled: false
17
-
18
- Metrics/BlockLength:
19
- Enabled: false
20
-
21
- Style/PercentLiteralDelimiters:
22
- Enabled: false
23
-
24
- Style/RegexpLiteral:
25
- Enabled: false
26
-
27
- Style/StringLiterals:
28
- Enabled: false
29
-
30
- Style/StringLiteralsInInterpolation:
31
- Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## 1.1.2 / 2022-04-05
2
+ * Updated to `jekyll_plugin_logger` v2.1.0
3
+
4
+ ## 1.1.1 / 2022-03-31
5
+ * Added `numbered_line` CSS class for unselectable line numbers
6
+
7
+ ## 1.1.0 / 2022-03-31
8
+ * Added `number` option, which generates unselectable line numbers for contents
9
+
1
10
  ## 1.0.0 / 2022-03-13
2
11
  * Made into a Ruby gem and published on RubyGems.org as [jekyll_pre](https://rubygems.org/gems/jekyll_pre).
3
12
  * `bin/attach` script added for debugging
data/README.md CHANGED
@@ -2,10 +2,44 @@ Jekyll_pre
2
2
  [![Gem Version](https://badge.fury.io/rb/jekyll_pre.svg)](https://badge.fury.io/rb/jekyll_pre)
3
3
  ===========
4
4
 
5
- This is a Jekyll plugin that provides two Liquid tags: `pre` and `noselect` that frequently work together:
5
+ This Jekyll plugin provides 2 new Liquid tags that work together:
6
+
7
+ * A `pre` block tag that can optionally display a copy button.
8
+ ```
9
+ {% pre [copyButton] [shell] [headline words] %}
10
+ Contents of pre tag
11
+ {% endpre %}
12
+ ```
13
+ * A `noselect` tag that can renders HTML content passed to it unselectable.
14
+ ```
15
+ {% pre [copyButton] %}
16
+ {% noselect [text string, defaults to $]%}Contents of pre tag
17
+ {% endpre %}
18
+ ```
19
+
20
+ ## CSS
21
+ Below are the CSS declarations that I defined pertaining to the pre and noselect tags that produced the above images:
22
+ ```css
23
+ .maxOneScreenHigh {
24
+ max-height: 500px;
25
+ }
26
+
27
+ .numbered_line,
28
+ .unselectable.numbered_line,
29
+ .numbered_line.unselectable {
30
+ color: #5fb25f;
31
+ }
32
+
33
+ .unselectable {
34
+ color: #7922f9;
35
+ -moz-user-select: none;
36
+ -khtml-user-select: none;
37
+ user-select: none;
38
+ }
39
+ ```
6
40
 
7
- * A `pre` block tag that can optionally display a copy button.
8
- * A `noselect` tag that can renders HTML content passed to it unselectable.
41
+ ## Additional Information
42
+ More information is available on my web site about [my Jekyll plugins](https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html).
9
43
 
10
44
 
11
45
  ## Installation
@@ -29,19 +63,7 @@ Or install it yourself as:
29
63
 
30
64
  ## Usage
31
65
 
32
- Unfortunately markdown does not support CSS styles, so the HTML rendering of the examples is compromised.
33
-
34
- ### Syntax
35
-
36
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id7478d3e758a5"><button class="copyBtn" data-clipboard-target="#id7478d3e758a5" title="Copy to clipboard"><img src="images/clippy.svg" alt="Copy to clipboard" style="width: 13px"></button>{% pre [copyButton] [shell] [headline words] %}
37
- Contents of pre tag
38
- {% endpre %}</pre>
39
-
40
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="idbb1564f70e84">{% pre [copyButton] %}
41
- {% noselect [text string]%}Contents of pre tag
42
- {% endpre %}</pre>
43
-
44
- ### Usage Example 1
66
+ ### Example 1
45
67
  This example does not generate a copy button and does not demonstrate `noselect`.
46
68
  <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id110c50d624b4">{% pre %}
47
69
  Contents of pre tag
@@ -54,54 +76,68 @@ Which renders as:
54
76
 
55
77
  <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id377433c30186">Contents of pre tag</pre>
56
78
 
57
- ### Usage Example 2
79
+
80
+ ### Example 2
58
81
  This example generates a copy button and does not demonstrate `noselect`.
59
82
 
60
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="idb92b40eba687">{% pre copyButton %}Contents of pre tag
61
- {% endpre %}</pre>
83
+ {% pre copyButton %}
84
+ Contents of pre tag
85
+ {% endpre %}
62
86
 
63
87
  Generates:
64
88
  <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id08a5d26db177">&lt;pre data-lt-active='false' class='maxOneScreenHigh copyContainer' id='id6a831a3e8992'&gt;&lt;button class='copyBtn' data-clipboard-target='#id6a831a3e8992' title='Copy to clipboard'&gt;&lt;img src='images/clippy.svg' alt='Copy to clipboard' style='width: 13px'&gt;&lt;/button&gt;Contents of pre tag&lt;/pre&gt;</pre>
65
89
 
66
- Which renders as:
67
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id6a831a3e8992"><button class="copyBtn" data-clipboard-target="#id6a831a3e8992" title="Copy to clipboard"><img src="images/clippy.svg" alt="Copy to clipboard" style="width: 13px"></button>Contents of pre tag</pre>
90
+ Which renders as (note the clipboard icon at the far right):
91
+ ![example 2](images/usage2example.png)
92
+
68
93
 
69
- ### Usage Example 3
94
+ ### Example 3
70
95
  This example generates a copy button and does demonstrates the default usage of `noselect`, which renders an unselectable dollar sign followed by a space.
71
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id59feb02aa3b9">{% pre copyButton %}
96
+ ```
97
+ {% pre copyButton %}
72
98
  {% noselect %}Contents of pre tag
73
- {% endpre %}</pre>
99
+ {% endpre %}
100
+ ```
74
101
 
75
102
  Generates:
76
103
 
77
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id7935a9ec84be">&lt;pre data-lt-active='false' class='maxOneScreenHigh copyContainer' id='id8103adbe3dc2'&gt;&lt;button class='copyBtn' data-clipboard-target='#id8103adbe3dc2' title='Copy to clipboard'&gt;&lt;img src='images/clippy.svg' alt='Copy to clipboard' style='width: 13px'&gt;&lt;/button&gt;&lt;span class='unselectable'&gt;$ &lt;/span&gt;Contents of pre tag&lt;/pre&gt;</pre>
104
+ ```
105
+ <pre data-lt-active='false' class='maxOneScreenHigh copyContainer' id='id1e4a8fe53480'><button class='copyBtn' data-clipboard-target='#id1e4a8fe53480' title='Copy to clipboard'><img src='/assets/images/clippy.svg' alt='Copy to clipboard' style='width: 13px'></button><span class='unselectable'>$ </span>Contents of pre tag</pre>
106
+ ```
78
107
 
79
108
  Which renders as:
80
109
 
81
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id8103adbe3dc2"><button class="copyBtn" data-clipboard-target="#id8103adbe3dc2" title="Copy to clipboard"><img src="images/clippy.svg" alt="Copy to clipboard" style="width: 13px"></button><span class="unselectable">$ </span>Contents of pre tag</pre>
110
+ ![example 3](images/usage3example.png)
111
+
82
112
 
83
- ### Usage Example 4
113
+ ### Example 4
84
114
  This example generates a copy button and does demonstrates the `noselect` being used twice:
85
115
  the first time to render an unselectable custom prompt,
86
116
  and the second time to render unselectable output.
87
117
 
88
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id0f0a8de5ecc5">{% pre copyButton %}{% noselect &gt;&gt;&gt; %}Contents of pre tag
118
+ ```
119
+ {% pre copyButton %}
120
+ {% noselect &gt;&gt;&gt; %}Contents of pre tag
89
121
  {% noselect How now brown cow%}
90
- {% endpre %}</pre>
122
+ {% endpre %}
123
+ ```
91
124
 
92
125
  Generates:
93
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id3095048e2ec2">&lt;pre data-lt-active='false' class='maxOneScreenHigh copyContainer' id='idcb8035dc3766'&gt;&lt;button class='copyBtn' data-clipboard-target='#idcb8035dc3766' title='Copy to clipboard'&gt;&lt;img src='images/clippy.svg' alt='Copy to clipboard' style='width: 13px'&gt;&lt;/button&gt;&lt;span class='unselectable'&gt;&gt;&gt;&gt; &lt;/span&gt;contents of pre tag
94
- &lt;span class='unselectable'&gt;How now brown cow&lt;/span&gt;&lt;/pre&gt;</pre>
126
+ ```
127
+ <pre data-lt-active='false' class='maxOneScreenHigh copyContainer' id='idb58a6cf1761c'><button class='copyBtn' data-clipboard-target='#idb58a6cf1761c' title='Copy to clipboard'><img src='/assets/images/clippy.svg' alt='Copy to clipboard' style='width: 13px'></button><span class='unselectable'>>>> </span>contents of pre tag
128
+ <span class='unselectable'>How now brown cow</span></pre>
129
+ ```
95
130
 
96
131
  Which renders as:
97
132
 
98
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="idcb8035dc3766"><button class="copyBtn" data-clipboard-target="#idcb8035dc3766" title="Copy to clipboard"><img src="images/clippy.svg" alt="Copy to clipboard" style="width: 13px"></button><span class="unselectable">&gt;&gt;&gt; </span>contents of pre tag
99
- <span class="unselectable">How now brown cow</span></pre>
133
+ ![example 4](images/usage4example.png)
134
+
100
135
 
101
136
  ### CSS
102
- Here are the CSS declarations that I defined pertaining to the `pre` and `noselect` tags:
137
+ Here are the CSS declarations that I defined pertaining to the `pre` and `noselect` tags that produced the above images:
103
138
 
104
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id68ec1ab4d04c"><button class="copyBtn" data-clipboard-target="#id68ec1ab4d04c" title="Copy to clipboard"><img src="images/clippy.svg" alt="Copy to clipboard" style="width: 13px"></button>.maxOneScreenHigh {
139
+ ```css
140
+ .maxOneScreenHigh {
105
141
  max-height: 500px;
106
142
  }
107
143
 
@@ -110,13 +146,15 @@ Here are the CSS declarations that I defined pertaining to the `pre` and `nosele
110
146
  -moz-user-select: none;
111
147
  -khtml-user-select: none;
112
148
  user-select: none;
113
- }</pre>
149
+ }
150
+ ```
151
+
114
152
 
115
153
  ### Comprehensive Example
116
154
  The code I wrote to generate the above CSS was a good example of how the plugins work together with
117
- the `from` and `to` tags from my `from_to_until` plugin:
155
+ the `from` and `to` tags from my [`from_to_until`](https://github.com/mslinn/jekyll_from_to_until) plugin:
118
156
 
119
- <pre data-lt-active="false" class="maxOneScreenHigh copyContainer" id="id1ad3df5c4a2f">
157
+ ```
120
158
  {% capture css %}{% flexible_include '_sass/mystyle.scss' %}{% endcapture %}
121
159
  {% pre copyButton %}{{ css | from: '.copyBtn' | to: '^$' | strip }}
122
160
 
@@ -125,19 +163,62 @@ the `from` and `to` tags from my `from_to_until` plugin:
125
163
  {{ css | from: '.maxOneScreenHigh' | to: '^$' | strip }}
126
164
 
127
165
  {{ css | from: '.unselectable' | to: '^$' | strip }}
128
- {% endpre %}</pre>
166
+ {% endpre %}
167
+ ```
129
168
 
130
169
 
131
170
  ## Development
132
171
 
133
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
172
+ After checking out the repo, run `bin/setup` to install dependencies.
134
173
 
135
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
174
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment.
136
175
 
137
176
 
138
- ## Contributing
177
+ ### Build and Install Locally
178
+ To build and install this gem onto your local machine, run:
179
+ ```shell
180
+ $ rake install:local
181
+ ```
182
+
183
+ The following also does the same thing:
184
+ ```shell
185
+ $ bundle exec rake install
186
+ ```
187
+
188
+ Examine the newly built gem:
189
+ ```shell
190
+ $ gem info jekyll_pre
191
+
192
+ *** LOCAL GEMS ***
193
+
194
+ jekyll_pre (1.0.0)
195
+ Author: Mike Slinn
196
+ Homepage:
197
+ https://github.com/mslinn/jekyll_pre
198
+ License: MIT
199
+ Installed at: /home/mslinn/.gems
139
200
 
140
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/jekyll_pre.
201
+ Generates Jekyll logger with colored output.
202
+ ```
203
+
204
+
205
+ ### Build and Push to RubyGems
206
+ To release a new version,
207
+ 1. Update the version number in `version.rb`.
208
+ 2. Commit all changes to git; if you don't the next step might fail with an unexplainable error message.
209
+ 3. Run the following:
210
+ ```shell
211
+ $ bundle exec rake release
212
+ ```
213
+ The above creates a git tag for the version, commits the created tag,
214
+ and pushes the new `.gem` file to [RubyGems.org](https://rubygems.org).
215
+
216
+
217
+ ## Contributing
218
+ 1. Fork the project
219
+ 2. Create a descriptively named feature branch
220
+ 3. Add your feature
221
+ 4. Submit a pull request
141
222
 
142
223
 
143
224
  ## License
data/Rakefile CHANGED
@@ -1,4 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "bundler/gem_tasks"
4
- task default: %i[]
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+ task :default => :spec
data/jekyll_pre.gemspec CHANGED
@@ -2,45 +2,47 @@
2
2
 
3
3
  require_relative "lib/jekyll_pre/version"
4
4
 
5
+ # rubocop:disable Metrics/BlockLength
5
6
  Gem::Specification.new do |spec|
6
- spec.name = "jekyll_pre"
7
- spec.version = JekyllPre::VERSION
7
+ github = "https://github.com/mslinn/jekyll_pre"
8
+
8
9
  spec.authors = ["Mike Slinn"]
10
+ spec.bindir = "exe"
11
+ spec.description = <<~END_OF_DESC
12
+ Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable text. Can number lines.
13
+ END_OF_DESC
9
14
  spec.email = ["mslinn@mslinn.com"]
10
-
11
- spec.summary = "Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable text."
12
- spec.description = "Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable text."
13
- spec.homepage = "https://github.com/mslinn/jekyll_pre"
15
+ spec.files = Dir[".rubocop.yml", "LICENSE.*", "Rakefile", "{lib,spec}/**/*", "*.gemspec", "*.md"]
16
+ spec.homepage = "https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#pre"
14
17
  spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.6.0"
16
-
17
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
18
+ spec.metadata = {
19
+ "allowed_push_host" => "https://rubygems.org",
20
+ "bug_tracker_uri" => "#{github}/issues",
21
+ "changelog_uri" => "#{github}/CHANGELOG.md",
22
+ "homepage_uri" => spec.homepage,
23
+ "source_code_uri" => github,
24
+ }
25
+ spec.name = "jekyll_pre"
26
+ spec.post_install_message = <<~END_MESSAGE
18
27
 
19
- spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = "https://github.com/mslinn/jekyll_pre"
21
- spec.metadata["changelog_uri"] = "https://github.com/mslinn/jekyll_pre/CHANGELOG.md"
28
+ Thanks for installing #{spec.name}!
22
29
 
23
- # Specify which files should be added to the gem when it is released.
24
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
- `git ls-files -z`.split("\x0").reject do |f|
27
- (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
28
- end
29
- end
30
- spec.bindir = "exe"
31
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
+ END_MESSAGE
32
31
  spec.require_paths = ["lib"]
33
-
34
- spec.add_dependency 'jekyll'
35
-
36
- spec.add_development_dependency 'bundler'
37
- spec.add_development_dependency 'debase'
38
- spec.add_development_dependency 'jekyll'
39
- spec.add_development_dependency 'pry'
40
- spec.add_development_dependency 'rake'
41
- spec.add_development_dependency 'rspec'
42
- spec.add_development_dependency 'rubocop'
43
- spec.add_development_dependency 'rubocop-jekyll'
44
- spec.add_development_dependency 'rubocop-rake'
45
- spec.add_development_dependency 'ruby-debug-ide'
32
+ spec.required_ruby_version = ">= 2.6.0"
33
+ spec.summary = "Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable text. Can number lines."
34
+ spec.test_files = spec.files.grep(%r!^(test|spec|features)/!)
35
+ spec.version = JekyllPreVersion::VERSION
36
+
37
+ spec.add_dependency "jekyll", ">= 3.5.0"
38
+ spec.add_dependency "jekyll_plugin_logger"
39
+ spec.add_dependency "key-value-parser"
40
+ spec.add_dependency "shellwords"
41
+
42
+ spec.add_development_dependency "debase"
43
+ # spec.add_development_dependency "rubocop-jekyll"
44
+ # spec.add_development_dependency "rubocop-rake"
45
+ # spec.add_development_dependency "rubocop-rspec"
46
+ spec.add_development_dependency "ruby-debug-ide"
46
47
  end
48
+ # rubocop:enable Metrics/BlockLength
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module JekyllPre
4
- VERSION = "1.0.0"
3
+ module JekyllPreVersion
4
+ VERSION = "1.1.2"
5
5
  end
data/lib/jekyll_pre.rb CHANGED
@@ -1,91 +1,122 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "liquid"
4
+ require "jekyll_plugin_logger"
3
5
  require_relative "jekyll_pre/version"
4
6
 
5
- module JekyllPre
6
- class Error < StandardError; end
7
-
8
- # """
9
- # \\{% pre %}
10
- # Content here
11
- # \\{% endpre %}
12
- #
13
- # \\{% pre copyButton %}
14
- # Content here
15
- # \\{% endpre %}"""
16
- #
17
- # \\{% pre shell %}
18
- # Content here
19
- # \\{% endpre %}
20
- #
21
- # \\{% pre copyButton shell %}
22
- # Content here
23
- # \\{% endpre %}
24
- #
25
- # \\{% pre copyButton label %}
26
- # Content here
27
- # \\{% endpre %}"""
28
- class PreTagBlock < Liquid::Block
29
- @@prefix = "<button class='copyBtn' data-clipboard-target="
30
- @@suffix = " title='Copy to clipboard'><img src='/assets/images/clippy.svg' " \
31
- "alt='Copy to clipboard' style='width: 13px'></button>"
32
-
33
- def self.make_copy_button(pre_id)
34
- "#{@@prefix}'##{pre_id}'#{@@suffix}"
35
- end
7
+ module JekyllPluginPreName
8
+ PLUGIN_NAME = "jekyll_pre"
9
+ end
36
10
 
37
- def self.make_pre(make_copy_button, label, content)
38
- label = if label.to_s.empty?
39
- ''
40
- elsif label.to_s.downcase.strip == 'shell'
41
- "<div class='codeLabel unselectable' data-lt-active='false'>Shell</div>"
42
- else
43
- "<div class='codeLabel unselectable' data-lt-active='false'>#{label}</div>"
44
- end
45
- pre_id = "id#{SecureRandom.hex(6)}"
46
- copy_button = make_copy_button ? PreTagBlock.make_copy_button(pre_id) : ''
47
- "#{label}<pre data-lt-active='false' class='maxOneScreenHigh copyContainer' id='#{pre_id}'>#{copy_button}#{content.strip}</pre>"
48
- end
11
+ # """
12
+ # \\{% pre %}
13
+ # Content here
14
+ # \\{% endpre %}
15
+ #
16
+ # \\{% pre copyButton %}
17
+ # Content here
18
+ # \\{% endpre %}"""
19
+ #
20
+ # \\{% pre shell %}
21
+ # Content here
22
+ # \\{% endpre %}
23
+ #
24
+ # \\{% pre copyButton shell %}
25
+ # Content here
26
+ # \\{% endpre %}
27
+ #
28
+ # \\{% pre copyButton label %}
29
+ # Content here
30
+ # \\{% endpre %}"""
31
+ class PreTagBlock < Liquid::Block
32
+ @@prefix = "<button class='copyBtn' data-clipboard-target="
33
+ @@suffix = " title='Copy to clipboard'><img src='/assets/images/clippy.svg' " \
34
+ "alt='Copy to clipboard' style='width: 13px'></button>"
49
35
 
50
- # @param tag_name [String] is the name of the tag, which we already know.
51
- # @param text [Hash, String, Liquid::Tag::Parser] the arguments from the web page.
52
- # @param tokens [Liquid::ParseContext] tokenized command line
53
- # @return [void]
54
- def initialize(tag_name, text, tokens)
55
- super(tag_name, text, tokens)
56
- text = '' if text.nil?
57
- text.strip!
58
- @make_copy_button = text.include? 'copyButton'
59
- remaining_text = text.sub('copyButton', '').strip
60
- #puts "@make_copy_button = '#{@make_copy_button}'; text = '#{text}'; remaining_text = '#{remaining_text}'"
61
- @label = remaining_text
62
- end
36
+ def self.make_copy_button(pre_id)
37
+ "#{@@prefix}'##{pre_id}'#{@@suffix}"
38
+ end
63
39
 
64
- # Method prescribed by the Jekyll plugin lifecycle.
65
- # @return [String]
66
- def render(context)
67
- content = super
68
- # puts "@make_copy_button = '#{@make_copy_button}'; @label = '#{@label}'"
69
- PreTagBlock.make_pre(@make_copy_button, @label, content)
70
- end
40
+ def self.make_pre(make_copy_button, number_lines, label, content)
41
+ label = if label.to_s.empty?
42
+ ""
43
+ elsif label.to_s.downcase.strip == "shell"
44
+ "<div class='codeLabel unselectable' data-lt-active='false'>Shell</div>"
45
+ else
46
+ "<div class='codeLabel unselectable' data-lt-active='false'>#{label}</div>"
47
+ end
48
+ pre_id = "id#{SecureRandom.hex(6)}"
49
+ copy_button = make_copy_button ? PreTagBlock.make_copy_button(pre_id) : ""
50
+ content = PreTagBlock.number_content(content) if number_lines
51
+ "#{label}<pre data-lt-active='false' class='maxOneScreenHigh copyContainer' id='#{pre_id}'>#{copy_button}#{content.strip}</pre>"
71
52
  end
72
53
 
73
- # """\\{% noselect %} or \\{% noselect this all gets copied.
74
- # Also, space before the closing percent is signficant %}"""
75
- class UnselectableTag < Liquid::Tag
76
- def initialize(tag_name, text, tokens)
77
- super(tag_name, text, tokens)
78
- @content = text
79
- # puts "UnselectableTag: content1= '#{@content}'"
80
- @content = '$ ' if @content.nil? || @content.empty?
81
- # puts "UnselectableTag: content2= '#{@content}'"
54
+ def self.number_content(content)
55
+ lines = content.split("\n")
56
+ digits = lines.length.to_s.length
57
+ i = 0
58
+ numbered_content = lines.map do |line|
59
+ i += 1
60
+ number = i.to_s.rjust(digits, " ")
61
+ "<span class='unselectable numbered_line'> #{number}: </span>#{line}"
82
62
  end
63
+ result = numbered_content.join("\n")
64
+ result += "\n" unless result.end_with?("\n")
65
+ result
66
+ end
83
67
 
84
- def render(_)
85
- "<span class='unselectable'>#{@content}</span>"
86
- end
68
+ # @param _tag_name [String] is the name of the tag, which we already know.
69
+ # @param argument_string [String] the arguments from the web page.
70
+ # @param _tokens [Liquid::ParseContext] tokenized command line
71
+ # @return [void]
72
+ def initialize(_tag_name, argument_string, _tokens)
73
+ super
74
+ argument_string = "" if argument_string.nil?
75
+ argument_string.strip!
76
+
77
+ @logger = PluginMetaLogger.instance.new_logger(self, PluginMetaLogger.instance.config)
78
+
79
+ @make_copy_button = argument_string.include? "copyButton"
80
+ remaining_text = argument_string.sub("copyButton", "").strip
81
+
82
+ @number_lines = remaining_text.include? "number"
83
+ remaining_text = remaining_text.sub("number", "").strip
84
+
85
+ @label = remaining_text
86
+
87
+ @logger.debug { "@make_copy_button = '#{@make_copy_button}'; argument_string = '#{argument_string}'; remaining_text = '#{remaining_text}'" }
88
+ end
89
+
90
+ # Method prescribed by the Jekyll plugin lifecycle.
91
+ # @return [String]
92
+ def render(context)
93
+ content = super
94
+ @logger.debug { "@make_copy_button = '#{@make_copy_button}'; @label = '#{@label}'" }
95
+ PreTagBlock.make_pre(@make_copy_button, @number_lines, @label, content)
96
+ end
97
+ end
98
+
99
+ # """\\{% noselect %} or \\{% noselect this all gets copied.
100
+ # Also, space before the closing percent is signficant %}"""
101
+ class UnselectableTag < Liquid::Tag
102
+ # @param _tag_name [String] is the name of the tag, which we already know.
103
+ # @param argument_string [String] the arguments from the web page.
104
+ # @param _tokens [Liquid::ParseContext] tokenized command line
105
+ # @return [void]
106
+ def initialize(_tag_name, argument_string, _tokens)
107
+ super
108
+ @logger = PluginMetaLogger.instance.new_logger(self)
109
+
110
+ @argument_string = argument_string
111
+ @argument_string = "$ " if @argument_string.nil? || @argument_string.empty?
112
+ @logger.debug { "UnselectableTag: argument_string= '#{@argument_string}'" }
113
+ end
114
+
115
+ def render(_)
116
+ "<span class='unselectable'>#{@argument_string}</span>"
87
117
  end
88
118
  end
89
119
 
90
- Liquid::Template.register_tag('pre', JekyllPre::PreTagBlock)
91
- Liquid::Template.register_tag('noselect', JekyllPre::UnselectableTag)
120
+ PluginMetaLogger.instance.info { "Loaded #{JekyllPluginPreName::PLUGIN_NAME} v#{JekyllPreVersion::VERSION} plugin." }
121
+ Liquid::Template.register_tag("pre", PreTagBlock)
122
+ Liquid::Template.register_tag("noselect", UnselectableTag)
data/spec/pre_spec.rb ADDED
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "fileutils"
4
+ require "jekyll"
5
+ require "key_value_parser"
6
+ require "shellwords"
7
+ require_relative "../lib/jekyll_pre"
8
+
9
+ RSpec.describe(PreTagBlock) do
10
+ it "parses arguments" do
11
+ argv = Shellwords.split "number copyButton shell"
12
+ options = KeyValueParser.new.parse(argv)
13
+ # puts options.map { |k, v| "#{k} = #{v}" }.join("\n")
14
+
15
+ expect(options[:copyButton]).to be true
16
+ expect(options[:number]).to be true
17
+ expect(options[:shell]).to be true
18
+ end
19
+
20
+ it "numbers content lines" do
21
+ content = <<~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
+ numbered_content = PreTagBlock.number_content(content)
34
+ expected_content = <<~END_CONTENT
35
+ <span class='unselectable numbered_line'> 1: </span>Line 1
36
+ <span class='unselectable numbered_line'> 2: </span> Line 2
37
+ <span class='unselectable numbered_line'> 3: </span> Line 3
38
+ <span class='unselectable numbered_line'> 4: </span> Line 4
39
+ <span class='unselectable numbered_line'> 5: </span> Line 5
40
+ <span class='unselectable numbered_line'> 6: </span>Line 6
41
+ <span class='unselectable numbered_line'> 7: </span>Line 7
42
+ <span class='unselectable numbered_line'> 8: </span> Line 8
43
+ <span class='unselectable numbered_line'> 9: </span> Line 9
44
+ <span class='unselectable numbered_line'> 10: </span>Line 10
45
+ END_CONTENT
46
+ expect(numbered_content).to eq(expected_content)
47
+ end
48
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "jekyll"
4
+ require "fileutils"
5
+ require "key_value_parser"
6
+ require "shellwords"
7
+
8
+ require_relative "../lib/jekyll_pre"
9
+
10
+ Jekyll.logger.log_level = :info
11
+
12
+ RSpec.configure do |config|
13
+ config.filter_run :focus
14
+ config.order = "random"
15
+ config.run_all_when_everything_filtered = true
16
+
17
+ # See https://relishapp.com/rspec/rspec-core/docs/command-line/only-failures
18
+ config.example_status_persistence_file_path = "spec/status_persistence.txt"
19
+ end
@@ -0,0 +1,4 @@
1
+ example_id | status | run_time |
2
+ ----------------------- | ------ | --------------- |
3
+ ./spec/pre_spec.rb[1:1] | passed | 0.00366 seconds |
4
+ ./spec/pre_spec.rb[1:2] | passed | 0.00288 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.0.0
4
+ version: 1.1.2
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-03-13 00:00:00.000000000 Z
11
+ date: 2022-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -16,92 +16,22 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 3.5.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: debase
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: jekyll
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: pry
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'
26
+ version: 3.5.0
83
27
  - !ruby/object:Gem::Dependency
84
- name: rake
28
+ name: jekyll_plugin_logger
85
29
  requirement: !ruby/object:Gem::Requirement
86
30
  requirements:
87
31
  - - ">="
88
32
  - !ruby/object:Gem::Version
89
33
  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
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
34
+ type: :runtime
105
35
  prerelease: false
106
36
  version_requirements: !ruby/object:Gem::Requirement
107
37
  requirements:
@@ -109,13 +39,13 @@ dependencies:
109
39
  - !ruby/object:Gem::Version
110
40
  version: '0'
111
41
  - !ruby/object:Gem::Dependency
112
- name: rubocop
42
+ name: key-value-parser
113
43
  requirement: !ruby/object:Gem::Requirement
114
44
  requirements:
115
45
  - - ">="
116
46
  - !ruby/object:Gem::Version
117
47
  version: '0'
118
- type: :development
48
+ type: :runtime
119
49
  prerelease: false
120
50
  version_requirements: !ruby/object:Gem::Requirement
121
51
  requirements:
@@ -123,13 +53,13 @@ dependencies:
123
53
  - !ruby/object:Gem::Version
124
54
  version: '0'
125
55
  - !ruby/object:Gem::Dependency
126
- name: rubocop-jekyll
56
+ name: shellwords
127
57
  requirement: !ruby/object:Gem::Requirement
128
58
  requirements:
129
59
  - - ">="
130
60
  - !ruby/object:Gem::Version
131
61
  version: '0'
132
- type: :development
62
+ type: :runtime
133
63
  prerelease: false
134
64
  version_requirements: !ruby/object:Gem::Requirement
135
65
  requirements:
@@ -137,7 +67,7 @@ dependencies:
137
67
  - !ruby/object:Gem::Version
138
68
  version: '0'
139
69
  - !ruby/object:Gem::Dependency
140
- name: rubocop-rake
70
+ name: debase
141
71
  requirement: !ruby/object:Gem::Requirement
142
72
  requirements:
143
73
  - - ">="
@@ -164,40 +94,40 @@ dependencies:
164
94
  - - ">="
165
95
  - !ruby/object:Gem::Version
166
96
  version: '0'
167
- description: Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable
168
- text.
97
+ description: 'Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable
98
+ text. Can number lines.
99
+
100
+ '
169
101
  email:
170
102
  - mslinn@mslinn.com
171
103
  executables: []
172
104
  extensions: []
173
105
  extra_rdoc_files: []
174
106
  files:
175
- - ".rspec"
176
107
  - ".rubocop.yml"
177
- - ".ruby-version"
178
- - ".vscode/launch.json"
179
- - ".vscode/settings.json"
180
108
  - CHANGELOG.md
181
- - Gemfile
182
- - Gemfile.lock
183
109
  - LICENSE.txt
184
110
  - README.md
185
111
  - Rakefile
186
- - images/clippy.svg
187
- - images/clippy.svg:Zone.Identifier
188
112
  - jekyll_pre.gemspec
189
113
  - lib/jekyll_pre.rb
190
114
  - lib/jekyll_pre/version.rb
191
- - sig/jekyll_pre.rbs
192
- homepage: https://github.com/mslinn/jekyll_pre
115
+ - spec/pre_spec.rb
116
+ - spec/spec_helper.rb
117
+ - spec/status_persistence.txt
118
+ homepage: https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#pre
193
119
  licenses:
194
120
  - MIT
195
121
  metadata:
196
122
  allowed_push_host: https://rubygems.org
197
- homepage_uri: https://github.com/mslinn/jekyll_pre
198
- source_code_uri: https://github.com/mslinn/jekyll_pre
123
+ bug_tracker_uri: https://github.com/mslinn/jekyll_pre/issues
199
124
  changelog_uri: https://github.com/mslinn/jekyll_pre/CHANGELOG.md
200
- post_install_message:
125
+ homepage_uri: https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html#pre
126
+ source_code_uri: https://github.com/mslinn/jekyll_pre
127
+ post_install_message: |2+
128
+
129
+ Thanks for installing jekyll_pre!
130
+
201
131
  rdoc_options: []
202
132
  require_paths:
203
133
  - lib
@@ -212,9 +142,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
142
  - !ruby/object:Gem::Version
213
143
  version: '0'
214
144
  requirements: []
215
- rubygems_version: 3.2.3
216
- signing_key:
145
+ rubygems_version: 3.1.4
146
+ signing_key:
217
147
  specification_version: 4
218
148
  summary: Jekyll tags pre and noselect, for HTML <pre/> tag, prompts and unselectable
219
- text.
220
- test_files: []
149
+ text. Can number lines.
150
+ test_files:
151
+ - spec/pre_spec.rb
152
+ - spec/spec_helper.rb
153
+ - spec/status_persistence.txt
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --format progress
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.0.0
data/.vscode/launch.json DELETED
@@ -1,47 +0,0 @@
1
- {
2
- // Use IntelliSense to learn about possible attributes.
3
- // Hover to view descriptions of existing attributes.
4
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
- "version": "0.2.0",
6
- "configurations": [
7
- {
8
- "cwd": "${workspaceRoot}",
9
- "name": "Attach rdebug-ide",
10
- "request": "attach",
11
- "remoteHost": "localhost",
12
- "remotePort": "1234",
13
- "remoteWorkspaceRoot": "/",
14
- "restart": true,
15
- "showDebuggerOutput": true,
16
- "stopOnEntry": true,
17
- "type": "Ruby",
18
- },
19
- {
20
- "args": [
21
- "-I",
22
- "${workspaceRoot}",
23
- "${file}"
24
- ],
25
- "cwd": "${workspaceRoot}",
26
- "name": "RSpec - active spec file only",
27
- "program": "${env:HOME}/.rbenv/shims/rspec",
28
- "showDebuggerOutput": false,
29
- "request": "launch",
30
- "type": "Ruby",
31
- "useBundler": true,
32
- },
33
- {
34
- "args": [
35
- "-I",
36
- "${workspaceRoot}"
37
- ],
38
- "cwd": "${workspaceRoot}",
39
- "name": "RSpec - all",
40
- "program": "${env:HOME}/.rbenv/shims/rspec",
41
- "request": "launch",
42
- "showDebuggerOutput": false,
43
- "type": "Ruby",
44
- "useBundler": true,
45
- }
46
- ]
47
- }
@@ -1,3 +0,0 @@
1
- {
2
- "ruby.rubocop.configFilePath": ".rubocop.yml"
3
- }
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- # Specify your gem's dependencies in jekyll_pre.gemspec
6
- gemspec
7
-
8
- gem "rake", "~> 13.0"
data/Gemfile.lock DELETED
@@ -1,134 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- jekyll_pre (1.0.0)
5
- jekyll
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- addressable (2.8.0)
11
- public_suffix (>= 2.0.2, < 5.0)
12
- ast (2.4.2)
13
- coderay (1.1.3)
14
- colorator (1.1.0)
15
- concurrent-ruby (1.1.9)
16
- debase (0.2.4.1)
17
- debase-ruby_core_source (>= 0.10.2)
18
- debase-ruby_core_source (0.10.14)
19
- diff-lcs (1.5.0)
20
- em-websocket (0.5.3)
21
- eventmachine (>= 0.12.9)
22
- http_parser.rb (~> 0)
23
- eventmachine (1.2.7)
24
- ffi (1.15.5)
25
- forwardable-extended (2.6.0)
26
- http_parser.rb (0.8.0)
27
- i18n (1.10.0)
28
- concurrent-ruby (~> 1.0)
29
- jekyll (4.2.2)
30
- addressable (~> 2.4)
31
- colorator (~> 1.0)
32
- em-websocket (~> 0.5)
33
- i18n (~> 1.0)
34
- jekyll-sass-converter (~> 2.0)
35
- jekyll-watch (~> 2.0)
36
- kramdown (~> 2.3)
37
- kramdown-parser-gfm (~> 1.0)
38
- liquid (~> 4.0)
39
- mercenary (~> 0.4.0)
40
- pathutil (~> 0.9)
41
- rouge (~> 3.0)
42
- safe_yaml (~> 1.0)
43
- terminal-table (~> 2.0)
44
- jekyll-sass-converter (2.2.0)
45
- sassc (> 2.0.1, < 3.0)
46
- jekyll-watch (2.2.1)
47
- listen (~> 3.0)
48
- kramdown (2.3.1)
49
- rexml
50
- kramdown-parser-gfm (1.1.0)
51
- kramdown (~> 2.0)
52
- liquid (4.0.3)
53
- listen (3.7.1)
54
- rb-fsevent (~> 0.10, >= 0.10.3)
55
- rb-inotify (~> 0.9, >= 0.9.10)
56
- mercenary (0.4.0)
57
- method_source (1.0.0)
58
- parallel (1.21.0)
59
- parser (3.1.1.0)
60
- ast (~> 2.4.1)
61
- pathutil (0.16.2)
62
- forwardable-extended (~> 2.6)
63
- pry (0.14.1)
64
- coderay (~> 1.1)
65
- method_source (~> 1.0)
66
- public_suffix (4.0.6)
67
- rainbow (3.1.1)
68
- rake (13.0.6)
69
- rb-fsevent (0.11.1)
70
- rb-inotify (0.10.1)
71
- ffi (~> 1.0)
72
- regexp_parser (2.2.1)
73
- rexml (3.2.5)
74
- rouge (3.28.0)
75
- rspec (3.11.0)
76
- rspec-core (~> 3.11.0)
77
- rspec-expectations (~> 3.11.0)
78
- rspec-mocks (~> 3.11.0)
79
- rspec-core (3.11.0)
80
- rspec-support (~> 3.11.0)
81
- rspec-expectations (3.11.0)
82
- diff-lcs (>= 1.2.0, < 2.0)
83
- rspec-support (~> 3.11.0)
84
- rspec-mocks (3.11.0)
85
- diff-lcs (>= 1.2.0, < 2.0)
86
- rspec-support (~> 3.11.0)
87
- rspec-support (3.11.0)
88
- rubocop (1.18.4)
89
- parallel (~> 1.10)
90
- parser (>= 3.0.0.0)
91
- rainbow (>= 2.2.2, < 4.0)
92
- regexp_parser (>= 1.8, < 3.0)
93
- rexml
94
- rubocop-ast (>= 1.8.0, < 2.0)
95
- ruby-progressbar (~> 1.7)
96
- unicode-display_width (>= 1.4.0, < 3.0)
97
- rubocop-ast (1.16.0)
98
- parser (>= 3.1.1.0)
99
- rubocop-jekyll (0.12.0)
100
- rubocop (~> 1.18.0)
101
- rubocop-performance (~> 1.2)
102
- rubocop-performance (1.13.3)
103
- rubocop (>= 1.7.0, < 2.0)
104
- rubocop-ast (>= 0.4.0)
105
- rubocop-rake (0.6.0)
106
- rubocop (~> 1.0)
107
- ruby-debug-ide (0.7.3)
108
- rake (>= 0.8.1)
109
- ruby-progressbar (1.11.0)
110
- safe_yaml (1.0.5)
111
- sassc (2.4.0)
112
- ffi (~> 1.9)
113
- terminal-table (2.0.0)
114
- unicode-display_width (~> 1.1, >= 1.1.1)
115
- unicode-display_width (1.8.0)
116
-
117
- PLATFORMS
118
- x86_64-linux
119
-
120
- DEPENDENCIES
121
- bundler
122
- debase
123
- jekyll
124
- jekyll_pre!
125
- pry
126
- rake (~> 13.0)
127
- rspec
128
- rubocop
129
- rubocop-jekyll
130
- rubocop-rake
131
- ruby-debug-ide
132
-
133
- BUNDLED WITH
134
- 2.3.8
data/images/clippy.svg DELETED
@@ -1,3 +0,0 @@
1
- <svg height="1024" width="896" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M128 768h256v64H128v-64z m320-384H128v64h320v-64z m128 192V448L384 640l192 192V704h320V576H576z m-288-64H128v64h160v-64zM128 704h160v-64H128v64z m576 64h64v128c-1 18-7 33-19 45s-27 18-45 19H64c-35 0-64-29-64-64V192c0-35 29-64 64-64h192C256 57 313 0 384 0s128 57 128 128h192c35 0 64 29 64 64v320h-64V320H64v576h640V768zM128 256h512c0-35-29-64-64-64h-64c-35 0-64-29-64-64s-29-64-64-64-64 29-64 64-29 64-64 64h-64c-35 0-64 29-64 64z" />
3
- </svg>
File without changes
data/sig/jekyll_pre.rbs DELETED
@@ -1,4 +0,0 @@
1
- module JekyllPre
2
- VERSION: String
3
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
- end