jekyll_img 0.1.6 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -4
- data/CHANGELOG.md +17 -1
- data/README.md +29 -11
- data/jekyll_img.gemspec +1 -1
- data/lib/img_props.rb +9 -7
- data/lib/jekyll_img/version.rb +1 -1
- data/lib/jekyll_img.rb +15 -12
- data/spec/spec_helper.rb +1 -2
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f1c3ada28bfae9fa70ff421baa912391a64af4c156055e0f40438d6219c986b
|
4
|
+
data.tar.gz: 6915f59b67c6c0de7d91821553b4ecb7f246596f295d128ba6a850b6ddfb35af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c8281613ba38488ce8b32ac074abca3ce3ed7310d0fd70a0f6d78c87039b66a40b25775172ff88e910dcdb09cd9b78549bf4a1773a982e5a8c23f2109679f0d
|
7
|
+
data.tar.gz: 8ada70004b3b1328372f2675ed7b80edf1c6b9a1b2fdd44154a2ad40af1d9d1a64bbda2d53034394c860b79fd9489b74de4dd4542f9daf6db6be534df13e7c85
|
data/.rubocop.yml
CHANGED
@@ -11,15 +11,17 @@ require:
|
|
11
11
|
AllCops:
|
12
12
|
Exclude:
|
13
13
|
- vendor/**/*
|
14
|
-
-
|
14
|
+
- binstub/**/*
|
15
15
|
- Gemfile*
|
16
16
|
- Rakefile
|
17
17
|
NewCops: enable
|
18
|
-
TargetRubyVersion: 2.6
|
19
18
|
|
20
19
|
Gemspec/DeprecatedAttributeAssignment:
|
21
20
|
Enabled: false
|
22
21
|
|
22
|
+
Gemspec/RequiredRubyVersion:
|
23
|
+
Enabled: false
|
24
|
+
|
23
25
|
Gemspec/RequireMFA:
|
24
26
|
Enabled: false
|
25
27
|
|
@@ -42,7 +44,7 @@ Lint/RedundantCopDisableDirective:
|
|
42
44
|
- jekyll_img.gemspec
|
43
45
|
|
44
46
|
Metrics/AbcSize:
|
45
|
-
Max:
|
47
|
+
Max: 60
|
46
48
|
|
47
49
|
Metrics/BlockLength:
|
48
50
|
Max: 30
|
@@ -54,7 +56,7 @@ Metrics/CyclomaticComplexity:
|
|
54
56
|
Max: 10
|
55
57
|
|
56
58
|
Metrics/MethodLength:
|
57
|
-
Max:
|
59
|
+
Max: 40
|
58
60
|
|
59
61
|
Metrics/PerceivedComplexity:
|
60
62
|
Max: 10
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,21 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.2.0 / 2023-11-20
|
4
|
+
|
5
|
+
* The [demo/](demo/) webapp has been upgraded to the latest features.
|
6
|
+
* Improved error messages.
|
7
|
+
* Renamed the `img` section of `_config.yml` to `jekyll_img`.
|
8
|
+
* Renamed `continue_on_error` to `die_on_img_error` and reversed the meaning.
|
9
|
+
* Now dependant on `jekyll_plugin_support` v0.8.0 or later, which had several breaking changes.
|
10
|
+
* CSS for this plugin is now defined in `demo/assets/css/jekyll_img.css`.
|
11
|
+
* Added a `pry_on_img_error` setting, which causes the `pry` debugger to be invoked when an `ImgError` is raised.
|
12
|
+
`pry` is now opened when an `ImgError` is raised if `_config.yml` contains:
|
13
|
+
|
14
|
+
```yaml
|
15
|
+
jekyll_img:
|
16
|
+
pry_on_img_error: true
|
17
|
+
```
|
18
|
+
|
3
19
|
## 0.1.6 / 2023-08-10
|
4
20
|
|
5
21
|
* `.webp` file type is assumed and no longer needs to be specified.
|
@@ -34,7 +50,7 @@
|
|
34
50
|
|
35
51
|
## 0.1.2 / 2023-02-14
|
36
52
|
|
37
|
-
* Fixed `img_props.rb:91:in
|
53
|
+
* Fixed `img_props.rb:91:in size_unit_specified?: undefined method end_with? for false:FalseClass (NoMethodError)`
|
38
54
|
|
39
55
|
|
40
56
|
## 0.1.1 / 2023-02-12
|
data/README.md
CHANGED
@@ -33,7 +33,7 @@ For example, these two invocations yield the same result:
|
|
33
33
|
{% img src="blah.webp" %}
|
34
34
|
```
|
35
35
|
|
36
|
-
|
36
|
+
The above generates the following
|
37
37
|
(to support the other options, the generated HTML can be a lot more complex):
|
38
38
|
|
39
39
|
```html
|
@@ -86,23 +86,26 @@ $ demo/_bin/debug -r
|
|
86
86
|
- `wrapper_class='class1 class2 classN'` Extra CSS classes for wrapper <div>; no default value
|
87
87
|
- `wrapper_style='background-color: black;'` CSS style for wrapper <div>; no default value
|
88
88
|
|
89
|
-
[`unit`](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units#numbers_lengths_and_percentages)
|
89
|
+
[`unit`](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units#numbers_lengths_and_percentages)
|
90
|
+
is one of: `Q`, `ch`, `cm`, `em`, `dvh`, `dvw`, `ex`, `in`, `lh`,
|
90
91
|
`lvh`, `lvw`, `mm`, `pc`, `px`, `pt`, `rem`, `rlh`, `svh`, `svw`, `vb`,
|
91
92
|
`vh`, `vi`, `vmax`, `vmin`, or `vw`.
|
92
93
|
|
93
|
-
CSS classes referenced by the `jekyll_img` plugin are
|
94
|
-
[`demo/assets/css/
|
94
|
+
CSS classes referenced by the `jekyll_img` plugin are in
|
95
|
+
[`demo/assets/css/jekyll_img.css`](demo/assets/css/jekyll_img.css) and
|
96
|
+
[`demo/assets/css/jekyll_plugin_support.css`](demo/assets/css/jekyll_plugin_support.css).
|
95
97
|
CSS marker classes are included, so CSS selectors can be used for additional styling.
|
96
98
|
|
97
99
|
|
98
100
|
## Configuration
|
99
101
|
|
100
|
-
By default,
|
101
|
-
You can allow Jekyll to
|
102
|
+
By default, errors cause Jekyll to abort.
|
103
|
+
You can allow Jekyll to halt by setting the following in `_config.yml`:
|
102
104
|
|
103
105
|
```yaml
|
104
|
-
|
105
|
-
|
106
|
+
jekyll_img:
|
107
|
+
die_on_img_error: true
|
108
|
+
pry_on_img_error: true
|
106
109
|
```
|
107
110
|
|
108
111
|
|
@@ -119,7 +122,8 @@ CSS behavior differs for `<figure />` and `<img />`.
|
|
119
122
|
For example, centering, floating right and left.
|
120
123
|
That means the CSS and where it would need to be applied are completely different for
|
121
124
|
naked `<img />` and `<figure />` tags.
|
122
|
-
Handling all possible situations of these two scenarios would significantly raise the complexity of the plugin code.
|
125
|
+
Handling all possible situations of these two scenarios would significantly raise the complexity of the plugin code.
|
126
|
+
I know, because I went down that rabbit hole.
|
123
127
|
|
124
128
|
|
125
129
|
### Wrapper <div />
|
@@ -133,9 +137,12 @@ Within the wrapper `<div />`, the embedded `<img />` is displayed with `width=10
|
|
133
137
|
If a caption is required, the generated `<figure />` only makes the space taken by the generated HTML longer;
|
134
138
|
the image’s width and height are not affected.
|
135
139
|
|
136
|
-
The wrapper will not exceed the width of the tag that encloses it if the `size` parameter has values
|
140
|
+
The wrapper will not exceed the width of the tag that encloses it if the `size` parameter has values
|
141
|
+
`eighthsize`, `fullsize`, `halfsize`, `initial` or `quartersize`.
|
137
142
|
|
138
|
-
The wrapper's width can be defined independently of its enclosing tag by using
|
143
|
+
The wrapper's width can be defined independently of its enclosing tag by using
|
144
|
+
[CSS units](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units#numbers_lengths_and_percentages)
|
145
|
+
for the `size` parameter:
|
139
146
|
`Q`, `ch`, `cm`, `em`, `dvh`, `dvw`, `ex`, `in`, `lh`,
|
140
147
|
`lvh`, `lvw`, `mm`, `pc`, `px`, `pt`, `rem`, `rlh`, `svh`, `svw`, `vb`,
|
141
148
|
`vh`, `vi`, `vmax`, `vmin`, or `vw`.
|
@@ -197,6 +204,17 @@ jekyll_img (0.1.0)
|
|
197
204
|
Generates Jekyll logger with colored output.
|
198
205
|
```
|
199
206
|
|
207
|
+
|
208
|
+
### Debugging
|
209
|
+
|
210
|
+
You can cause `pry` to open when an `ImgError` is raised by setting the following in `_config.yml`:
|
211
|
+
|
212
|
+
```yaml
|
213
|
+
jekyll_img:
|
214
|
+
pry_on_img_error: true
|
215
|
+
```
|
216
|
+
|
217
|
+
|
200
218
|
### Testing
|
201
219
|
|
202
220
|
Examine the output by running:
|
data/jekyll_img.gemspec
CHANGED
data/lib/img_props.rb
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
-
class ImgError < StandardError; end
|
2
|
-
|
3
1
|
# Properties from user
|
4
2
|
# All methods are idempotent.
|
5
3
|
# attr_ methods can be called after compute_dependant_properties
|
6
4
|
# All methods except compute_dependant_properties can be called in any order
|
7
5
|
class ImgProperties
|
8
|
-
attr_accessor :align, :alt, :attr_wrapper_align_class, :attribute, :attribution, :caption, :classes, :
|
9
|
-
:id, :img_display, :nofollow, :src, :size, :style, :target, :title,
|
6
|
+
attr_accessor :align, :alt, :attr_wrapper_align_class, :attribute, :attribution, :caption, :classes, :die_on_img_error,
|
7
|
+
:id, :img_display, :local_src, :nofollow, :src, :size, :style, :target, :title,
|
10
8
|
:url, :wrapper_class, :wrapper_style
|
11
9
|
|
12
10
|
SIZES = %w[eighthsize fullsize halfsize initial quartersize].freeze
|
@@ -33,7 +31,7 @@ class ImgProperties
|
|
33
31
|
|
34
32
|
unless SIZES.include?(@size)
|
35
33
|
msg = "'#{@size}' is not a recognized size; must be one of #{SIZES.join(', ')}, or an explicit unit."
|
36
|
-
raise ImgError, msg
|
34
|
+
raise Jekyll::ImgError, msg
|
37
35
|
end
|
38
36
|
@size
|
39
37
|
end
|
@@ -69,7 +67,7 @@ class ImgProperties
|
|
69
67
|
end
|
70
68
|
|
71
69
|
def src_png
|
72
|
-
raise ImgError, "The 'src' parameter was not specified" if @src.to_s.empty?
|
70
|
+
raise Jekyll::ImgError, "The 'src' parameter was not specified" if @src.to_s.empty?
|
73
71
|
|
74
72
|
@src.gsub('.webp', '.png')
|
75
73
|
end
|
@@ -83,12 +81,16 @@ class ImgProperties
|
|
83
81
|
|
84
82
|
def setup_src
|
85
83
|
@src = @src.to_s.strip
|
86
|
-
raise ImgError, "The 'src' parameter was not specified"
|
84
|
+
raise Jekyll::ImgError, "The 'src' parameter was not specified" if @src.empty?
|
87
85
|
|
88
86
|
filetype = File.extname(URI(@src).path)
|
89
87
|
@src += '.webp' if filetype.empty?
|
90
88
|
|
91
89
|
@src = "/assets/images/#{@src}" unless ImgProperties.local_path?(@src) || url?(@src)
|
90
|
+
return unless ImgProperties.local_path?(@src)
|
91
|
+
|
92
|
+
src = @src.start_with?('/') ? ".#{@src}" : @src
|
93
|
+
raise Jekyll::ImgError, "#{@src} does not exist" unless File.exist?(src)
|
92
94
|
end
|
93
95
|
|
94
96
|
UNITS = %w[Q ch cm em dvh dvw ex in lh lvh lvw mm pc px pt rem rlh svh svw vb vh vi vmax vmin vw %].freeze
|
data/lib/jekyll_img/version.rb
CHANGED
data/lib/jekyll_img.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'jekyll_plugin_support'
|
2
2
|
require 'jekyll_plugin_helper'
|
3
|
+
require 'pry'
|
3
4
|
require_relative 'img_builder'
|
4
5
|
require_relative 'img_props'
|
5
6
|
require_relative 'jekyll_img/version'
|
@@ -12,15 +13,17 @@ module ImgModule
|
|
12
13
|
end
|
13
14
|
|
14
15
|
module Jekyll
|
16
|
+
ImgError = JekyllSupport.define_error
|
17
|
+
|
15
18
|
# Plugin implementation
|
16
19
|
class Img < JekyllSupport::JekyllTag
|
17
20
|
include JekyllImgVersion
|
18
21
|
|
19
|
-
def render_impl
|
22
|
+
def render_impl
|
20
23
|
@helper.gem_file __FILE__ # This enables plugin attribution
|
21
24
|
|
22
|
-
|
23
|
-
@
|
25
|
+
@die_on_img_error = @tag_config['die_on_img_error'] == true if @tag_config
|
26
|
+
@pry_on_img_error = @tag_config['pry_on_img_error'] == true if @tag_config
|
24
27
|
|
25
28
|
props = ImgProperties.new
|
26
29
|
props.attribute = @helper.attribute
|
@@ -29,7 +32,7 @@ module Jekyll
|
|
29
32
|
props.alt = @helper.parameter_specified? 'alt'
|
30
33
|
props.caption = @helper.parameter_specified? 'caption'
|
31
34
|
props.classes = @helper.parameter_specified? 'class'
|
32
|
-
props.
|
35
|
+
props.die_on_img_error = @die_on_img_error
|
33
36
|
props.id = @helper.parameter_specified? 'id'
|
34
37
|
props.nofollow = @helper.parameter_specified? 'nofollow'
|
35
38
|
props.size = @helper.parameter_specified?('size') || @helper.parameter_specified?('_size')
|
@@ -43,14 +46,14 @@ module Jekyll
|
|
43
46
|
|
44
47
|
@builder = ImgBuilder.new(props)
|
45
48
|
@builder.to_s
|
46
|
-
rescue ImgError => e
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
raise
|
52
|
-
|
53
|
-
|
49
|
+
rescue ImgError => e # jekyll_plugin_support handles StandardError
|
50
|
+
e.shorten_backtrace
|
51
|
+
msg = format_error_message e.message
|
52
|
+
@logger.error { "#{e.class} raised #{msg}" }
|
53
|
+
binding.pry if @pry_on_img_error # rubocop:disable Lint/Debugger
|
54
|
+
raise e if @die_on_img_error
|
55
|
+
|
56
|
+
"<div class='jekyll_img_error'>#{e.class} raised in #{@tag_name} tag\n#{msg}</div>"
|
54
57
|
end
|
55
58
|
|
56
59
|
JekyllPluginHelper.register(self, ImgModule::PLUGIN_NAME)
|
data/spec/spec_helper.rb
CHANGED
@@ -2,9 +2,8 @@ require 'jekyll'
|
|
2
2
|
require_relative '../lib/jekyll_img'
|
3
3
|
|
4
4
|
RSpec.configure do |config|
|
5
|
-
config.
|
5
|
+
config.filter_run_when_matching focus: true
|
6
6
|
config.order = 'random'
|
7
|
-
config.run_all_when_everything_filtered = true
|
8
7
|
|
9
8
|
# See https://relishapp.com/rspec/rspec-core/docs/command-line/only-failures
|
10
9
|
config.example_status_persistence_file_path = 'spec/status_persistence.txt'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll_img
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
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-
|
11
|
+
date: 2023-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.8.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.8.0
|
41
41
|
description:
|
42
42
|
email:
|
43
43
|
- mslinn@mslinn.com
|
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
86
86
|
- !ruby/object:Gem::Version
|
87
87
|
version: '0'
|
88
88
|
requirements: []
|
89
|
-
rubygems_version: 3.3.
|
89
|
+
rubygems_version: 3.3.7
|
90
90
|
signing_key:
|
91
91
|
specification_version: 4
|
92
92
|
summary: Provides a Jekyll tag that generates images.
|