jekyll_img 0.1.4 → 0.1.6
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 +4 -4
- data/CHANGELOG.md +34 -5
- data/README.md +100 -38
- data/jekyll_img.gemspec +2 -2
- data/lib/img_props.rb +3 -0
- data/lib/jekyll_img/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 893b2811f139eeae284d17d29a4b9c6b8348aebaf7b5fd54015bda14316bea17
|
4
|
+
data.tar.gz: 58f626e32417dfa0790115903453b575cacbab46d312144f741dbec6b05eb458
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d43b8d2c08e13776f29fa59d56750369243909ad74cb4ff66add5050576d49e83cf53a997932f3bf12797fa0fc67ec2e65f9fa782c8a201323a92c0f6c004435
|
7
|
+
data.tar.gz: 0ee7e15f89ef2a4f9755b418bd26893edcd77b3cdaa7c3015b6923509d0a0b077b1700161be9aeef227bd8f7b9fd39067e57e527d5ade7787bab577912a77019
|
data/CHANGELOG.md
CHANGED
@@ -1,13 +1,42 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
## 0.1.6 / 2023-08-10
|
4
|
+
|
5
|
+
* `.webp` file type is assumed and no longer needs to be specified.
|
6
|
+
For example, instead of writing this:
|
7
|
+
|
8
|
+
```html
|
9
|
+
{% img src="blah.webp" %}
|
10
|
+
```
|
11
|
+
|
12
|
+
You can now write:
|
13
|
+
|
14
|
+
```html
|
15
|
+
{% img src="blah" %}
|
16
|
+
```
|
17
|
+
|
18
|
+
|
19
|
+
## 0.1.5 / 2023-05-30
|
20
|
+
|
21
|
+
* Updated dependencies
|
22
|
+
|
23
|
+
|
1
24
|
## 0.1.4 / 2023-04-02
|
2
|
-
|
3
|
-
|
25
|
+
|
26
|
+
* Added [`attribution` support](https://github.com/mslinn/jekyll_plugin_support#subclass-attribution).
|
27
|
+
* Fixed `style=' false'` that appeared when the `style` and `wrapper_style` attributes were not provided.
|
28
|
+
|
4
29
|
|
5
30
|
## 0.1.3 / 2023-02-22
|
6
|
-
|
31
|
+
|
32
|
+
* Added `img/continue_on_error` configuration parameter.
|
33
|
+
|
7
34
|
|
8
35
|
## 0.1.2 / 2023-02-14
|
9
|
-
|
36
|
+
|
37
|
+
* Fixed `img_props.rb:91:in `size_unit_specified?': undefined method `end_with?' for false:FalseClass (NoMethodError)`
|
10
38
|
|
11
39
|
|
12
40
|
## 0.1.1 / 2023-02-12
|
13
|
-
|
41
|
+
|
42
|
+
* Initial release
|
data/README.md
CHANGED
@@ -1,51 +1,102 @@
|
|
1
|
-
`jekyll_img`
|
2
|
-
[](https://badge.fury.io/rb/jekyll_img)
|
3
|
-
===========
|
1
|
+
# `jekyll_img` [](https://badge.fury.io/rb/jekyll_img)
|
4
2
|
|
5
|
-
|
6
|
-
|
3
|
+
|
4
|
+
`Jekyll_img` is a Jekyll plugin that embeds images in HTML documents, with alignment options,
|
5
|
+
flexible resizing, default styling, overridable styling, an optional caption, and an optional URL.
|
6
|
+
|
7
|
+
If you are not using `webp` images in your Jekyll website, this plugin is not for you.
|
8
|
+
Please read the next section for details.
|
9
|
+
If you have a use case that would benefit from expanding the supported file types,
|
10
|
+
please describe your use case on the [issue tracker](https://github.com/mslinn/jekyll_img/issues/5).
|
7
11
|
|
8
12
|
See [demo/index.html](demo/index.html) for examples.
|
9
13
|
|
14
|
+
|
15
|
+
## Image Fallback
|
16
|
+
|
17
|
+
This plugin provides support for the
|
18
|
+
[`webp`](https://developers.google.com/speed/webp) image format,
|
19
|
+
with a fallback to `png` format by using the HTML
|
20
|
+
[`picture`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture) element.
|
21
|
+
|
22
|
+
This means that 2 versions of every image are required: a `webp` version, and a `png` version.
|
23
|
+
|
24
|
+
You specify the desired image with a `webp` filetype (or no filetype),
|
25
|
+
and the plugin generates a `picture` element that contains a primary
|
26
|
+
`source` sub-element that specifies the given image URL,
|
27
|
+
and a secondary `img` sub-element with a [`png`](https://en.wikipedia.org/wiki/PNG) filetype.
|
28
|
+
|
29
|
+
For example, these two invocations yield the same result:
|
30
|
+
|
31
|
+
```html
|
32
|
+
{% img src="blah" %}
|
33
|
+
{% img src="blah.webp" %}
|
34
|
+
```
|
35
|
+
|
36
|
+
Would conceptually generate the following
|
37
|
+
(to support the other options, the generated HTML can be a lot more complex):
|
38
|
+
|
39
|
+
```html
|
40
|
+
<picture>
|
41
|
+
<source srcset="blah.webp" type="image/webp" />
|
42
|
+
<source srcset="blah.png" type="image/png" />
|
43
|
+
<img src="blah.png" />
|
44
|
+
</picture>
|
45
|
+
```
|
46
|
+
|
47
|
+
The above would fetch and display `blah.webp` if the web browser supported `webp` format,
|
48
|
+
otherwise it would fetch and display `blah.png`.
|
49
|
+
|
50
|
+
|
51
|
+
## Demo
|
52
|
+
|
10
53
|
Run the demo website by typing:
|
54
|
+
|
11
55
|
```shell
|
12
56
|
$ demo/_bin/debug -r
|
13
57
|
```
|
58
|
+
|
14
59
|
... and point your web browser to http://localhost:4444
|
15
60
|
|
16
61
|
|
17
62
|
## Usage
|
18
|
-
|
63
|
+
|
64
|
+
```html
|
65
|
+
{% img [Options] src='path' %}
|
66
|
+
```
|
19
67
|
|
20
68
|
`Options` are:
|
21
69
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
70
|
+
- `attribution` See [`jekyll_plugin_support`](https://github.com/mslinn/jekyll_plugin_support#subclass-attribution).
|
71
|
+
- `align="left|inline|right|center"` Default value is `inline`
|
72
|
+
- `alt="Alt text"` Default value is the `caption` text, if provided
|
73
|
+
- `caption="A caption"` No default value
|
74
|
+
- `classes="class1 class2 classN"` Extra <img> classes; default is `rounded shadow`
|
75
|
+
- `id="someId"` No default value
|
76
|
+
- `nofollow` Generates `rel='nofollow'`; only applicable when `url` is specified
|
77
|
+
- `size='eighthsize|fullsize|halfsize|initial|quartersize|XXXYY|XXX%'`
|
30
78
|
Defines width of image.
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
79
|
+
- `initial` is the default behavior.
|
80
|
+
- `eighthsize`, `fullsize`, `halfsize`, and `quartersize` are relative to the enclosing tag's width.
|
81
|
+
- CSS units can also be used, for those cases `XXX` is a float and `YY` is `unit` (see below)
|
82
|
+
- `style='css goes here'` CSS style for <img>; no default
|
83
|
+
- `target='none|whatever'` Only applicable when `url` is specified; default value is `_blank`
|
84
|
+
- `title="A title"` Default value is `caption` text, if provided
|
85
|
+
- `url='https://domain.com'` No default value
|
86
|
+
- `wrapper_class='class1 class2 classN'` Extra CSS classes for wrapper <div>; no default value
|
87
|
+
- `wrapper_style='background-color: black;'` CSS style for wrapper <div>; no default value
|
40
88
|
|
41
89
|
[`unit`](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units#numbers_lengths_and_percentages) is one of: `Q`, `ch`, `cm`, `em`, `dvh`, `dvw`, `ex`, `in`, `lh`,
|
42
90
|
`lvh`, `lvw`, `mm`, `pc`, `px`, `pt`, `rem`, `rlh`, `svh`, `svw`, `vb`,
|
43
91
|
`vh`, `vi`, `vmax`, `vmin`, or `vw`.
|
44
92
|
|
45
|
-
CSS classes referenced by the `jekyll_img` plugin are at the bottom of
|
93
|
+
CSS classes referenced by the `jekyll_img` plugin are at the bottom of
|
94
|
+
[`demo/assets/css/style.css`](demo/assets/css/style.css).
|
95
|
+
CSS marker classes are included, so CSS selectors can be used for additional styling.
|
46
96
|
|
47
97
|
|
48
98
|
## Configuration
|
99
|
+
|
49
100
|
By default, any errors cause Jekyll to abort.
|
50
101
|
You can allow Jekyll to continue by setting the following in `_config.yml`:
|
51
102
|
|
@@ -56,6 +107,7 @@ img:
|
|
56
107
|
|
57
108
|
|
58
109
|
## Design
|
110
|
+
|
59
111
|
The most significant design issue was the decision that image size and formatting should not change
|
60
112
|
whether it had a caption.
|
61
113
|
HTML captions exist within a `<figure />` element, which also surrounds the image.
|
@@ -71,6 +123,7 @@ Handling all possible situations of these two scenarios would significantly rais
|
|
71
123
|
|
72
124
|
|
73
125
|
### Wrapper <div />
|
126
|
+
|
74
127
|
To make the plugin code more manageable,
|
75
128
|
the plugin always encloses the generated HTML & CSS within a wrapper `<div />`.
|
76
129
|
The wrapper allows for a simple, consistent approach regardless of whether a caption is generated or not.
|
@@ -78,7 +131,7 @@ The wrapper allows for a simple, consistent approach regardless of whether a cap
|
|
78
131
|
The wrapper width is identical to the displayed image width.
|
79
132
|
Within the wrapper `<div />`, the embedded `<img />` is displayed with `width=100%`.
|
80
133
|
If a caption is required, the generated `<figure />` only makes the space taken by the generated HTML longer;
|
81
|
-
the image width and height
|
134
|
+
the image’s width and height are not affected.
|
82
135
|
|
83
136
|
The wrapper will not exceed the width of the tag that encloses it if the `size` parameter has values `eighthsize`, `fullsize`, `halfsize`, `initial` or `quartersize`.
|
84
137
|
|
@@ -99,29 +152,28 @@ group :jekyll_plugins do
|
|
99
152
|
end
|
100
153
|
```
|
101
154
|
|
102
|
-
Also add it to `_config.yml`:
|
103
|
-
```yaml
|
104
|
-
plugins:
|
105
|
-
- jekyll_img
|
106
|
-
```
|
107
|
-
|
108
155
|
And then execute:
|
109
156
|
|
110
|
-
|
157
|
+
```shell
|
158
|
+
$ bundle
|
159
|
+
```
|
111
160
|
|
112
161
|
|
113
162
|
## Additional Information
|
163
|
+
|
114
164
|
More information is available on
|
115
165
|
[Mike Slinn’s website](https://www.mslinn.com/blog/2020/10/03/jekyll-plugins.html).
|
116
166
|
|
117
167
|
|
118
168
|
## Development
|
169
|
+
|
119
170
|
After checking out the repo, run `bin/setup` to install dependencies.
|
120
171
|
|
121
172
|
You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
122
173
|
|
123
174
|
|
124
175
|
To build and install this gem onto your local machine, run:
|
176
|
+
|
125
177
|
```shell
|
126
178
|
$ bundle exec rake install
|
127
179
|
jekyll_img 0.1.0 built to pkg/jekyll_img-0.1.0.gem.
|
@@ -129,6 +181,7 @@ jekyll_img (0.1.0) installed.
|
|
129
181
|
```
|
130
182
|
|
131
183
|
Examine the newly built gem:
|
184
|
+
|
132
185
|
```shell
|
133
186
|
$ gem info jekyll_img
|
134
187
|
|
@@ -145,28 +198,37 @@ jekyll_img (0.1.0)
|
|
145
198
|
```
|
146
199
|
|
147
200
|
### Testing
|
201
|
+
|
148
202
|
Examine the output by running:
|
203
|
+
|
149
204
|
```shell
|
150
205
|
$ demo/_bin/debug -r
|
151
206
|
```
|
207
|
+
|
152
208
|
... and pointing your web browser to http://localhost:4444/
|
153
209
|
|
154
210
|
### Unit Tests
|
211
|
+
|
155
212
|
Either run `rspec` from Visual Studio Code's *Run and Debug* environment
|
156
213
|
(<kbd>Ctrl</kbd>-<kbd>shift</kbd>-<kbd>D</kbd>) and view the *Debug Console* output,
|
157
214
|
or run it from the command line:
|
215
|
+
|
158
216
|
```shell
|
159
217
|
$ rspec
|
160
218
|
```
|
161
219
|
|
162
220
|
### Build and Push to RubyGems
|
221
|
+
|
163
222
|
To release a new version,
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
223
|
+
|
224
|
+
1. Update the version number in `version.rb`.
|
225
|
+
2. Commit all changes to git; if you don't the next step might fail with an unexplainable error message.
|
226
|
+
3. Run the following:
|
227
|
+
|
228
|
+
```shell
|
229
|
+
$ bundle exec rake release
|
230
|
+
```
|
231
|
+
|
170
232
|
The above creates a git tag for the version, commits the created tag,
|
171
233
|
and pushes the new `.gem` file to [RubyGems.org](https://rubygems.org).
|
172
234
|
|
data/jekyll_img.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.authors = ['Mike Slinn']
|
8
8
|
spec.email = ['mslinn@mslinn.com']
|
9
9
|
spec.files = Dir['.rubocop.yml', 'LICENSE.*', 'Rakefile', '{lib,spec}/**/*', '*.gemspec', '*.md']
|
10
|
-
spec.homepage = 'https://mslinn.com/
|
10
|
+
spec.homepage = 'https://www.mslinn.com/jekyll_plugins/jekyll_img.html'
|
11
11
|
spec.license = 'MIT'
|
12
12
|
spec.metadata = {
|
13
13
|
'allowed_push_host' => 'https://rubygems.org',
|
@@ -29,5 +29,5 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.version = JekyllImgVersion::VERSION
|
30
30
|
|
31
31
|
spec.add_dependency 'jekyll', '>= 3.5.0'
|
32
|
-
spec.add_dependency 'jekyll_plugin_support', '
|
32
|
+
spec.add_dependency 'jekyll_plugin_support', '>= 0.7.0'
|
33
33
|
end
|
data/lib/img_props.rb
CHANGED
@@ -85,6 +85,9 @@ class ImgProperties
|
|
85
85
|
@src = @src.to_s.strip
|
86
86
|
raise ImgError, "The 'src' parameter was not specified", [] if @src.empty?
|
87
87
|
|
88
|
+
filetype = File.extname(URI(@src).path)
|
89
|
+
@src += '.webp' if filetype.empty?
|
90
|
+
|
88
91
|
@src = "/assets/images/#{@src}" unless ImgProperties.local_path?(@src) || url?(@src)
|
89
92
|
end
|
90
93
|
|
data/lib/jekyll_img/version.rb
CHANGED
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.1.
|
4
|
+
version: 0.1.6
|
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-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -28,16 +28,16 @@ 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.
|
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
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.7.0
|
41
41
|
description:
|
42
42
|
email:
|
43
43
|
- mslinn@mslinn.com
|
@@ -59,14 +59,14 @@ files:
|
|
59
59
|
- spec/img_props_spec.rb
|
60
60
|
- spec/jekyll_img_spec.rb
|
61
61
|
- spec/spec_helper.rb
|
62
|
-
homepage: https://mslinn.com/
|
62
|
+
homepage: https://www.mslinn.com/jekyll_plugins/jekyll_img.html
|
63
63
|
licenses:
|
64
64
|
- MIT
|
65
65
|
metadata:
|
66
66
|
allowed_push_host: https://rubygems.org
|
67
67
|
bug_tracker_uri: https://github.com/mslinn/jekyll_img/issues
|
68
68
|
changelog_uri: https://github.com/mslinn/jekyll_img/CHANGELOG.md
|
69
|
-
homepage_uri: https://mslinn.com/
|
69
|
+
homepage_uri: https://www.mslinn.com/jekyll_plugins/jekyll_img.html
|
70
70
|
source_code_uri: https://github.com/mslinn/jekyll_img
|
71
71
|
post_install_message: |2+
|
72
72
|
|