jekyll_picture_tag 1.13.0 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.envrc +4 -0
- data/.github/workflows/code-checks.yml +33 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +29 -76
- data/.ruby-version +1 -1
- data/docs/.envrc +2 -0
- data/docs/devs/contributing/code.md +14 -4
- data/docs/devs/contributing/docs.md +24 -6
- data/docs/devs/contributing/setup.md +21 -1
- data/docs/devs/contributing/testing.md +19 -37
- data/docs/devs/releases.md +45 -4
- data/docs/index.md +43 -18
- data/docs/logo.png +0 -0
- data/docs/logo.svg +880 -0
- data/docs/users/configuration/disable.md +1 -1
- data/docs/users/configuration/ignore_missing.md +1 -1
- data/docs/users/configuration/kramdown_fix.md +1 -1
- data/docs/users/configuration/suppress_warnings.md +1 -1
- data/docs/users/configuration/urls.md +69 -0
- data/docs/users/deployment.md +49 -0
- data/docs/users/getting_started.md +55 -0
- data/docs/users/installation.md +18 -38
- data/docs/users/liquid_tag/argument_reference/crop.md +21 -36
- data/docs/users/liquid_tag/examples.md +13 -25
- data/docs/users/liquid_tag/index.md +1 -1
- data/docs/users/notes/{migration.md → migration_1.md} +1 -1
- data/docs/users/notes/migration_2.md +99 -0
- data/docs/users/presets/cropping.md +21 -22
- data/docs/users/presets/default.md +11 -2
- data/docs/users/presets/examples.md +77 -45
- data/docs/users/presets/fallback_image.md +1 -1
- data/docs/users/presets/html_attributes.md +1 -1
- data/docs/users/presets/image_formats.md +3 -3
- data/docs/users/presets/image_quality.md +71 -56
- data/docs/users/presets/index.md +19 -45
- data/docs/users/presets/link_source.md +1 -1
- data/docs/users/presets/media_queries.md +1 -1
- data/docs/users/presets/nomarkdown_override.md +1 -1
- data/docs/users/presets/pixel_ratio_srcsets.md +1 -1
- data/docs/users/presets/width_height_attributes.md +1 -1
- data/docs/users/presets/width_srcsets.md +61 -23
- data/docs/users/presets/writing_presets.md +65 -0
- data/docs/users/tutorial.md +97 -0
- data/jekyll_picture_tag.gemspec +38 -23
- data/lib/jekyll_picture_tag.rb +8 -5
- data/lib/jekyll_picture_tag/cache.rb +64 -3
- data/lib/jekyll_picture_tag/defaults/global.rb +18 -0
- data/lib/jekyll_picture_tag/defaults/presets.rb +57 -0
- data/lib/jekyll_picture_tag/images.rb +1 -0
- data/lib/jekyll_picture_tag/images/generated_image.rb +25 -60
- data/lib/jekyll_picture_tag/images/image_file.rb +105 -0
- data/lib/jekyll_picture_tag/images/img_uri.rb +3 -10
- data/lib/jekyll_picture_tag/images/source_image.rb +44 -9
- data/lib/jekyll_picture_tag/instructions.rb +70 -6
- data/lib/jekyll_picture_tag/instructions/children/config.rb +128 -0
- data/lib/jekyll_picture_tag/instructions/children/context.rb +24 -0
- data/lib/jekyll_picture_tag/instructions/children/params.rb +90 -0
- data/lib/jekyll_picture_tag/instructions/children/parsers.rb +48 -0
- data/lib/jekyll_picture_tag/instructions/children/preset.rb +182 -0
- data/lib/jekyll_picture_tag/instructions/parents/conditional_instruction.rb +69 -0
- data/lib/jekyll_picture_tag/instructions/parents/env_instruction.rb +29 -0
- data/lib/jekyll_picture_tag/output_formats/basic.rb +5 -17
- data/lib/jekyll_picture_tag/parsers.rb +6 -0
- data/lib/jekyll_picture_tag/{instructions → parsers}/arg_splitter.rb +1 -1
- data/lib/jekyll_picture_tag/parsers/configuration.rb +28 -0
- data/lib/jekyll_picture_tag/{instructions → parsers}/html_attributes.rb +1 -1
- data/lib/jekyll_picture_tag/parsers/image_backend.rb +33 -0
- data/lib/jekyll_picture_tag/parsers/preset.rb +43 -0
- data/lib/jekyll_picture_tag/{instructions → parsers}/tag_parser.rb +15 -12
- data/lib/jekyll_picture_tag/router.rb +35 -93
- data/lib/jekyll_picture_tag/srcsets/basic.rb +4 -10
- data/lib/jekyll_picture_tag/utils.rb +10 -20
- data/lib/jekyll_picture_tag/version.rb +1 -1
- data/readme.md +48 -9
- metadata +161 -80
- data/.travis.yml +0 -8
- data/Dockerfile +0 -9
- data/docs/users/configuration/cdn.md +0 -35
- data/docs/users/configuration/relative_urls.md +0 -15
- data/docs/users/notes/input_checking.md +0 -6
- data/jekyll-picture-tag.gemspec +0 -52
- data/lib/jekyll-picture-tag.rb +0 -25
- data/lib/jekyll_picture_tag/cache/base.rb +0 -59
- data/lib/jekyll_picture_tag/cache/generated.rb +0 -20
- data/lib/jekyll_picture_tag/cache/source.rb +0 -19
- data/lib/jekyll_picture_tag/defaults/global.yml +0 -11
- data/lib/jekyll_picture_tag/defaults/presets.yml +0 -11
- data/lib/jekyll_picture_tag/instructions/configuration.rb +0 -121
- data/lib/jekyll_picture_tag/instructions/preset.rb +0 -122
- data/lib/jekyll_picture_tag/instructions/set.rb +0 -75
@@ -1,5 +1,5 @@
|
|
1
1
|
module PictureTag
|
2
|
-
module
|
2
|
+
module Parsers
|
3
3
|
# Tag Parsing Responsibilities:
|
4
4
|
#
|
5
5
|
# {% picture mypreset a.jpg 3:2 mobile: b.jpg --alt "Alt" --link "/" %}
|
@@ -9,17 +9,16 @@ module PictureTag
|
|
9
9
|
# string), hands them to ArgSplitter (which breaks them up into an array of
|
10
10
|
# words), extracts the preset name (if present), source image name(s),
|
11
11
|
# associated media queries (if present), and image-related arguments such as
|
12
|
-
# crop and
|
12
|
+
# crop and keep. HTML attributes are handed off to its respective class
|
13
13
|
# (as 'leftovers')
|
14
14
|
#
|
15
15
|
# Media presets and source names are stored as arrays in their correct
|
16
|
-
# orders.
|
16
|
+
# orders. Crop settings are stored in a hash, keyed by their
|
17
17
|
# relevant media presets. Note that the base image will have a media preset
|
18
18
|
# of nil, which is a perfectly fine hash key.
|
19
|
-
#
|
20
19
|
class TagParser
|
21
|
-
attr_reader :preset_name, :source_names, :media_presets, :
|
22
|
-
:
|
20
|
+
attr_reader :preset_name, :source_names, :media_presets, :keep,
|
21
|
+
:crop, :leftovers
|
23
22
|
|
24
23
|
def initialize(raw_params)
|
25
24
|
@raw_params = raw_params
|
@@ -27,8 +26,8 @@ module PictureTag
|
|
27
26
|
|
28
27
|
@media_presets = []
|
29
28
|
@source_names = []
|
30
|
-
@
|
31
|
-
@
|
29
|
+
@keep = {}
|
30
|
+
@crop = {}
|
32
31
|
|
33
32
|
parse_params
|
34
33
|
end
|
@@ -51,14 +50,18 @@ module PictureTag
|
|
51
50
|
end
|
52
51
|
|
53
52
|
def parse_param(param)
|
53
|
+
# Media query, i.e. 'mobile:'
|
54
54
|
if param.match?(/[\w\-]+:$/)
|
55
55
|
add_media_source
|
56
56
|
|
57
|
-
|
58
|
-
|
57
|
+
# Smartcrop interestingness setting. We label it 'keep', since it
|
58
|
+
# determines what to keep when cropping.
|
59
|
+
elsif %w[none centre center entropy attention].include?(param.downcase)
|
60
|
+
@keep[@media_presets.last] = @params.shift
|
59
61
|
|
60
|
-
|
61
|
-
|
62
|
+
# Aspect ratio, i.e. '16:9'
|
63
|
+
elsif param.match?(/\A\d+:\d+\z/)
|
64
|
+
@crop[@media_presets.last] = @params.shift
|
62
65
|
|
63
66
|
else
|
64
67
|
raise_error(param)
|
@@ -1,115 +1,57 @@
|
|
1
1
|
module PictureTag
|
2
2
|
# The rest of the application doesn't care where the instruction logic
|
3
|
-
# resides.
|
4
|
-
#
|
5
|
-
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
3
|
+
# resides. This module 'routes' method calls to the right place, so
|
4
|
+
# information consumers can just call 'PictureTag.(some method)'
|
5
|
+
#
|
6
|
+
# This is accomplished with a bit of metaprogramming, which is hopefully not
|
7
|
+
# unnecessarily clever or complicated. Missing methods are converted to class
|
8
|
+
# names, which are looked up under the Instructions module namespace.
|
9
|
+
#
|
10
|
+
# Instantiated Instructions are stored in a hash, keyed by method name.
|
10
11
|
module Router
|
11
|
-
|
12
|
-
|
13
|
-
# Context forwarding
|
14
|
-
|
15
|
-
# Global site data
|
16
|
-
def site
|
17
|
-
@context.registers[:site]
|
18
|
-
end
|
19
|
-
|
20
|
-
# Page which tag is called from
|
21
|
-
def page
|
22
|
-
@context.registers[:page]
|
23
|
-
end
|
24
|
-
|
25
|
-
# Instructions forwarding
|
26
|
-
|
27
|
-
def config
|
28
|
-
@instructions.config
|
29
|
-
end
|
30
|
-
|
31
|
-
def preset
|
32
|
-
@instructions.preset
|
33
|
-
end
|
34
|
-
|
35
|
-
def media_presets
|
36
|
-
@instructions.media_presets
|
37
|
-
end
|
38
|
-
|
39
|
-
def html_attributes
|
40
|
-
@instructions.html_attributes
|
41
|
-
end
|
42
|
-
|
43
|
-
def output_class
|
44
|
-
@instructions.output_class
|
45
|
-
end
|
12
|
+
# These two attributes encompass everything passed in by Jekyll.
|
13
|
+
attr_accessor :raw_params, :context
|
46
14
|
|
47
|
-
def
|
48
|
-
|
15
|
+
def method_missing(method_name, *args)
|
16
|
+
if instruction_exists?(method_name)
|
17
|
+
instruction(method_name).value(*args)
|
18
|
+
else
|
19
|
+
super
|
20
|
+
end
|
49
21
|
end
|
50
22
|
|
51
|
-
def
|
52
|
-
|
23
|
+
def respond_to_missing?(method_name, *args)
|
24
|
+
instruction_exists?(method_name) || super
|
53
25
|
end
|
54
26
|
|
55
|
-
|
56
|
-
|
27
|
+
# Required at least for testing; instructions are persisted between tags
|
28
|
+
# otherwise.
|
29
|
+
def clear_instructions
|
30
|
+
instructions.clear
|
57
31
|
end
|
58
32
|
|
59
|
-
|
60
|
-
|
61
|
-
def source_dir
|
62
|
-
config.source_dir
|
63
|
-
end
|
64
|
-
|
65
|
-
def dest_dir
|
66
|
-
config.dest_dir
|
67
|
-
end
|
68
|
-
|
69
|
-
def continue_on_missing?
|
70
|
-
config.continue_on_missing?
|
71
|
-
end
|
72
|
-
|
73
|
-
def cdn?
|
74
|
-
config.cdn?
|
75
|
-
end
|
76
|
-
|
77
|
-
def pconfig
|
78
|
-
config.pconfig
|
79
|
-
end
|
80
|
-
|
81
|
-
def disabled?
|
82
|
-
config.disabled?
|
83
|
-
end
|
84
|
-
|
85
|
-
def fast_build?
|
86
|
-
config.fast_build?
|
87
|
-
end
|
88
|
-
|
89
|
-
# Preset forwarding
|
90
|
-
|
91
|
-
def widths(media)
|
92
|
-
preset.widths(media)
|
93
|
-
end
|
33
|
+
private
|
94
34
|
|
95
|
-
def
|
96
|
-
|
35
|
+
def instruction(method_name)
|
36
|
+
instructions[method_name] ||= instruction_class(method_name).new
|
97
37
|
end
|
98
38
|
|
99
|
-
def
|
100
|
-
|
39
|
+
def instructions
|
40
|
+
@instructions ||= {}
|
101
41
|
end
|
102
42
|
|
103
|
-
def
|
104
|
-
|
43
|
+
def instruction_exists?(method_name)
|
44
|
+
Object.const_defined? instruction_class_name(method_name.to_sym)
|
105
45
|
end
|
106
46
|
|
107
|
-
|
108
|
-
|
47
|
+
# Class names can't contain question marks, so we strip them.
|
48
|
+
def instruction_class(method_name)
|
49
|
+
Object.const_get instruction_class_name(method_name)
|
109
50
|
end
|
110
51
|
|
111
|
-
def
|
112
|
-
|
52
|
+
def instruction_class_name(method_name)
|
53
|
+
'PictureTag::Instructions::' +
|
54
|
+
Utils.titleize(method_name.to_s.delete_suffix('?'))
|
113
55
|
end
|
114
56
|
end
|
115
57
|
end
|
@@ -53,11 +53,11 @@ module PictureTag
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def width_attribute
|
56
|
-
|
56
|
+
source_image.width.to_s
|
57
57
|
end
|
58
58
|
|
59
59
|
def height_attribute
|
60
|
-
|
60
|
+
source_image.height.to_s
|
61
61
|
end
|
62
62
|
|
63
63
|
private
|
@@ -86,11 +86,7 @@ module PictureTag
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def source_width
|
89
|
-
|
90
|
-
target_files.first.source_width
|
91
|
-
else
|
92
|
-
@source_image.width
|
93
|
-
end
|
89
|
+
source_image.width
|
94
90
|
end
|
95
91
|
|
96
92
|
def target_files
|
@@ -112,9 +108,7 @@ module PictureTag
|
|
112
108
|
GeneratedImage.new(
|
113
109
|
source_file: @source_image,
|
114
110
|
width: width,
|
115
|
-
format: @input_format
|
116
|
-
crop: PictureTag.crop(@media),
|
117
|
-
gravity: PictureTag.gravity(@media)
|
111
|
+
format: @input_format
|
118
112
|
)
|
119
113
|
end
|
120
114
|
end
|
@@ -2,28 +2,10 @@ module PictureTag
|
|
2
2
|
# This is a little module to hold logic that doesn't fit other places. If it
|
3
3
|
# starts getting big, refactor.
|
4
4
|
module Utils
|
5
|
-
# These are valid ImageMagick gravity arguments (relevant to our use
|
6
|
-
# case):
|
7
|
-
GRAVITIES =
|
8
|
-
%w[center
|
9
|
-
north
|
10
|
-
northeast
|
11
|
-
east
|
12
|
-
southeast
|
13
|
-
south
|
14
|
-
southwest
|
15
|
-
west
|
16
|
-
northwest].freeze
|
17
|
-
|
18
|
-
# This is an attempt to recognize valid imagemagick geometry arguments
|
19
|
-
# with regex. It only tries to match values which don't preserve aspect
|
20
|
-
# ratio, as they're the ones people might actually need here.
|
21
|
-
GEOMETRY_REGEX = /\A\d*%?[x:]?\d*[%!]?([+-]\d+){,2}\Z/i.freeze
|
22
|
-
|
23
5
|
class << self
|
24
6
|
# Configure Jekyll to keep our generated files
|
25
7
|
def keep_files
|
26
|
-
dest_dir = PictureTag.
|
8
|
+
dest_dir = PictureTag.pconfig['output']
|
27
9
|
|
28
10
|
# Chop a slash off the end, if it's there. Doesn't work otherwise.
|
29
11
|
dest_dir = dest_dir[0..-2] if dest_dir =~ %r{/\z}
|
@@ -35,7 +17,7 @@ module PictureTag
|
|
35
17
|
|
36
18
|
# Print a warning to the console
|
37
19
|
def warning(message)
|
38
|
-
return if PictureTag.
|
20
|
+
return if PictureTag.pconfig['suppress_warnings']
|
39
21
|
|
40
22
|
warn 'Jekyll Picture Tag Warning: '.yellow + message
|
41
23
|
end
|
@@ -64,6 +46,10 @@ module PictureTag
|
|
64
46
|
input.split('_').map(&:capitalize).join
|
65
47
|
end
|
66
48
|
|
49
|
+
def snakeize(input)
|
50
|
+
input.scan(/[A-Z][a-z]+/).map(&:downcase).join('_')
|
51
|
+
end
|
52
|
+
|
67
53
|
# Linear interpolator. Pass it 2 values in the x array, 2 values
|
68
54
|
# in the y array, and an x value, returns a y value.
|
69
55
|
def interpolate(xvals, yvals, xval)
|
@@ -77,6 +63,10 @@ module PictureTag
|
|
77
63
|
# y = mx + b
|
78
64
|
(m * xval) + b
|
79
65
|
end
|
66
|
+
|
67
|
+
def aspect_float(width, height)
|
68
|
+
width.to_f / height
|
69
|
+
end
|
80
70
|
end
|
81
71
|
end
|
82
72
|
end
|
data/readme.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
+
![Logo](docs/logo.svg)
|
2
|
+
|
1
3
|
# Jekyll Picture Tag
|
2
4
|
|
5
|
+
![Tests & Formatting](https://github.com/rbuchberger/jekyll_picture_tag/workflows/Tests%20&%20Formatting/badge.svg)
|
6
|
+
|
3
7
|
**Responsive Images done correctly.**
|
4
8
|
|
5
9
|
It's simple to throw a photo on a page and call it a day, but doing justice to users on all
|
@@ -24,7 +28,7 @@ different image entirely.
|
|
24
28
|
|
25
29
|
**Developer Sanity:** If you want to serve multiple images in multiple formats and resolutions, you
|
26
30
|
have a litany of markup to write and a big pile of images to generate and organize. Jekyll Picture
|
27
|
-
Tag is your responsive images minion - give it simple instructions and it'll handle the rest.
|
31
|
+
Tag is your responsive images minion - give it simple instructions and it'll handle the rest.
|
28
32
|
|
29
33
|
## Features
|
30
34
|
|
@@ -41,14 +45,49 @@ https://rbuchberger.github.io/jekyll_picture_tag/
|
|
41
45
|
|
42
46
|
https://rbuchberger.github.io/jekyll_picture_tag/devs/releases
|
43
47
|
|
44
|
-
|
45
|
-
|
46
|
-
*
|
47
|
-
*
|
48
|
-
|
49
|
-
|
50
|
-
*
|
51
|
-
|
48
|
+
Recent releases:
|
49
|
+
|
50
|
+
* 2.0.2 March 31, 2021
|
51
|
+
* Do not pass a quality argument when generating PNG files.
|
52
|
+
* It only works on newer versions of vips, breaking builds when using older
|
53
|
+
versions (such as when deploying to netlify.)
|
54
|
+
* It's not remarkably useful in the first place.
|
55
|
+
* 2.0.1 March 31, 2021
|
56
|
+
* Select imagemagick deliberately when appropriate, rather than simply rescuing all vips errors
|
57
|
+
and trying again. This will stop JPT from suppressing useful vips errors.
|
58
|
+
* **2.0** March 25, 2021 - [Migration guide](https://rbuchberger.github.io/jekyll_picture_tag/users/notes/migration_2)
|
59
|
+
* Switch from ImageMagick to libvips.
|
60
|
+
* 🚀🔥🔥**MUCH MORE FASTER**🔥🔥🚀
|
61
|
+
* Will still attempt to use imagemagick if libvips cannot handle a
|
62
|
+
particular image format.
|
63
|
+
* Eliminate the ImageMagick v7 on Ubuntu pain we've been dealing with for so
|
64
|
+
long.
|
65
|
+
* Require Ruby >= 2.6, support Ruby 3.0
|
66
|
+
* Require Jekyll >= 4.0
|
67
|
+
* Cropping is changing.
|
68
|
+
* We now use the libvips
|
69
|
+
[smartcrop function](https://www.rubydoc.info/gems/ruby-vips/Vips/Image#smartcrop-instance_method),
|
70
|
+
which does some magic to keep the most useful part of the image.
|
71
|
+
* Geometry is renamed to 'crop', and reduced to simple aspect ratios only. (`width:height`)
|
72
|
+
* Gravity is gone, replaced by 'keep' which is translated to a libvips
|
73
|
+
[interestingness](https://www.rubydoc.info/gems/ruby-vips/Vips/Interesting) setting.
|
74
|
+
* Add stock presets and media queries, under the `jpt-` prefix.
|
75
|
+
* Add `format_quality` default settings for webp, avif, and jp2.
|
76
|
+
* Add image-format-specific write options.
|
77
|
+
* Overhaul user input handling; we can now validate inputs and give error
|
78
|
+
messages which are less useless. Stronger validation and nicer errors will be added in future
|
79
|
+
releases.
|
80
|
+
* Drop support for `markup_presets` and `media_presets`. They are now
|
81
|
+
officially and only `presets` and `media_queries`.
|
82
|
+
* Improve docs with an introductory tutorial and 'how-to' flow.
|
83
|
+
|
84
|
+
* 1.14.0 January 10, 2021
|
85
|
+
* Gracefully handle empty tag arguments.
|
86
|
+
* Re-add metadata stripping. I removed it inadvertently when refactoring; now
|
87
|
+
there's a test and a setting to turn it off.
|
88
|
+
* Respect Jekyll's `--disable-disk-cache` argument.
|
89
|
+
* Add baseurl configuration, allowing increased plugin support (such as I18n via `jekyll-multiple-languages-plugin`)
|
90
|
+
* Tooling & test suite maintenance and improvements.
|
52
91
|
|
53
92
|
## Help Wanted
|
54
93
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll_picture_tag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Wierzbowski
|
@@ -10,66 +10,122 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-03-31 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: addressable
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
19
|
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '2.
|
22
|
-
type: :
|
21
|
+
version: '2.6'
|
22
|
+
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '2.
|
28
|
+
version: '2.6'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
30
|
+
name: jekyll
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
36
|
-
type: :
|
35
|
+
version: '4.0'
|
36
|
+
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '4.0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
44
|
+
name: mime-types
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
49
|
+
version: '3.0'
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '3.0'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: objective_elements
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '1.1'
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '1.1'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rainbow
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3.0'
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '3.0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: ruby-vips
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: 2.0.17
|
92
|
+
type: :runtime
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - "~>"
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 2.0.17
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: bundler
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '2.0'
|
50
106
|
type: :development
|
51
107
|
prerelease: false
|
52
108
|
version_requirements: !ruby/object:Gem::Requirement
|
53
109
|
requirements:
|
54
110
|
- - "~>"
|
55
111
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
112
|
+
version: '2.0'
|
57
113
|
- !ruby/object:Gem::Dependency
|
58
|
-
name:
|
114
|
+
name: minitest
|
59
115
|
requirement: !ruby/object:Gem::Requirement
|
60
116
|
requirements:
|
61
117
|
- - "~>"
|
62
118
|
- !ruby/object:Gem::Version
|
63
|
-
version: '
|
119
|
+
version: '5.14'
|
64
120
|
type: :development
|
65
121
|
prerelease: false
|
66
122
|
version_requirements: !ruby/object:Gem::Requirement
|
67
123
|
requirements:
|
68
124
|
- - "~>"
|
69
125
|
- !ruby/object:Gem::Version
|
70
|
-
version: '
|
126
|
+
version: '5.14'
|
71
127
|
- !ruby/object:Gem::Dependency
|
72
|
-
name:
|
128
|
+
name: minitest-rg
|
73
129
|
requirement: !ruby/object:Gem::Requirement
|
74
130
|
requirements:
|
75
131
|
- - ">="
|
@@ -83,35 +139,35 @@ dependencies:
|
|
83
139
|
- !ruby/object:Gem::Version
|
84
140
|
version: '0'
|
85
141
|
- !ruby/object:Gem::Dependency
|
86
|
-
name:
|
142
|
+
name: mocha
|
87
143
|
requirement: !ruby/object:Gem::Requirement
|
88
144
|
requirements:
|
89
145
|
- - "~>"
|
90
146
|
- !ruby/object:Gem::Version
|
91
|
-
version: '
|
147
|
+
version: '1.9'
|
92
148
|
type: :development
|
93
149
|
prerelease: false
|
94
150
|
version_requirements: !ruby/object:Gem::Requirement
|
95
151
|
requirements:
|
96
152
|
- - "~>"
|
97
153
|
- !ruby/object:Gem::Version
|
98
|
-
version: '
|
154
|
+
version: '1.9'
|
99
155
|
- !ruby/object:Gem::Dependency
|
100
|
-
name:
|
156
|
+
name: nokogiri
|
101
157
|
requirement: !ruby/object:Gem::Requirement
|
102
158
|
requirements:
|
103
159
|
- - "~>"
|
104
160
|
- !ruby/object:Gem::Version
|
105
|
-
version: '
|
161
|
+
version: '1.1'
|
106
162
|
type: :development
|
107
163
|
prerelease: false
|
108
164
|
version_requirements: !ruby/object:Gem::Requirement
|
109
165
|
requirements:
|
110
166
|
- - "~>"
|
111
167
|
- !ruby/object:Gem::Version
|
112
|
-
version: '
|
168
|
+
version: '1.1'
|
113
169
|
- !ruby/object:Gem::Dependency
|
114
|
-
name:
|
170
|
+
name: pry
|
115
171
|
requirement: !ruby/object:Gem::Requirement
|
116
172
|
requirements:
|
117
173
|
- - ">="
|
@@ -125,110 +181,124 @@ dependencies:
|
|
125
181
|
- !ruby/object:Gem::Version
|
126
182
|
version: '0'
|
127
183
|
- !ruby/object:Gem::Dependency
|
128
|
-
name:
|
184
|
+
name: rake
|
129
185
|
requirement: !ruby/object:Gem::Requirement
|
130
186
|
requirements:
|
131
|
-
- - "
|
187
|
+
- - "~>"
|
132
188
|
- !ruby/object:Gem::Version
|
133
|
-
version: '
|
189
|
+
version: '12.3'
|
134
190
|
type: :development
|
135
191
|
prerelease: false
|
136
192
|
version_requirements: !ruby/object:Gem::Requirement
|
137
193
|
requirements:
|
138
|
-
- - "
|
194
|
+
- - "~>"
|
139
195
|
- !ruby/object:Gem::Version
|
140
|
-
version: '
|
196
|
+
version: '12.3'
|
141
197
|
- !ruby/object:Gem::Dependency
|
142
|
-
name:
|
198
|
+
name: rubocop
|
143
199
|
requirement: !ruby/object:Gem::Requirement
|
144
200
|
requirements:
|
145
201
|
- - "~>"
|
146
202
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
148
|
-
type: :
|
203
|
+
version: 1.7.0
|
204
|
+
type: :development
|
149
205
|
prerelease: false
|
150
206
|
version_requirements: !ruby/object:Gem::Requirement
|
151
207
|
requirements:
|
152
208
|
- - "~>"
|
153
209
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
210
|
+
version: 1.7.0
|
155
211
|
- !ruby/object:Gem::Dependency
|
156
|
-
name:
|
212
|
+
name: rubocop-minitest
|
157
213
|
requirement: !ruby/object:Gem::Requirement
|
158
214
|
requirements:
|
159
215
|
- - "~>"
|
160
216
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
162
|
-
type: :
|
217
|
+
version: 0.10.0
|
218
|
+
type: :development
|
163
219
|
prerelease: false
|
164
220
|
version_requirements: !ruby/object:Gem::Requirement
|
165
221
|
requirements:
|
166
222
|
- - "~>"
|
167
223
|
- !ruby/object:Gem::Version
|
168
|
-
version:
|
224
|
+
version: 0.10.0
|
169
225
|
- !ruby/object:Gem::Dependency
|
170
|
-
name:
|
226
|
+
name: rubocop-performance
|
171
227
|
requirement: !ruby/object:Gem::Requirement
|
172
228
|
requirements:
|
173
229
|
- - "~>"
|
174
230
|
- !ruby/object:Gem::Version
|
175
|
-
version:
|
176
|
-
type: :
|
231
|
+
version: 1.9.0
|
232
|
+
type: :development
|
177
233
|
prerelease: false
|
178
234
|
version_requirements: !ruby/object:Gem::Requirement
|
179
235
|
requirements:
|
180
236
|
- - "~>"
|
181
237
|
- !ruby/object:Gem::Version
|
182
|
-
version:
|
238
|
+
version: 1.9.0
|
183
239
|
- !ruby/object:Gem::Dependency
|
184
|
-
name:
|
240
|
+
name: rubocop-rake
|
185
241
|
requirement: !ruby/object:Gem::Requirement
|
186
242
|
requirements:
|
187
243
|
- - "~>"
|
188
244
|
- !ruby/object:Gem::Version
|
189
|
-
version:
|
190
|
-
type: :
|
245
|
+
version: 0.5.0
|
246
|
+
type: :development
|
191
247
|
prerelease: false
|
192
248
|
version_requirements: !ruby/object:Gem::Requirement
|
193
249
|
requirements:
|
194
250
|
- - "~>"
|
195
251
|
- !ruby/object:Gem::Version
|
196
|
-
version:
|
252
|
+
version: 0.5.0
|
197
253
|
- !ruby/object:Gem::Dependency
|
198
|
-
name:
|
254
|
+
name: simplecov
|
255
|
+
requirement: !ruby/object:Gem::Requirement
|
256
|
+
requirements:
|
257
|
+
- - "~>"
|
258
|
+
- !ruby/object:Gem::Version
|
259
|
+
version: 0.20.0
|
260
|
+
type: :development
|
261
|
+
prerelease: false
|
262
|
+
version_requirements: !ruby/object:Gem::Requirement
|
263
|
+
requirements:
|
264
|
+
- - "~>"
|
265
|
+
- !ruby/object:Gem::Version
|
266
|
+
version: 0.20.0
|
267
|
+
- !ruby/object:Gem::Dependency
|
268
|
+
name: solargraph
|
199
269
|
requirement: !ruby/object:Gem::Requirement
|
200
270
|
requirements:
|
201
|
-
- - "
|
271
|
+
- - ">="
|
202
272
|
- !ruby/object:Gem::Version
|
203
|
-
version: '
|
204
|
-
type: :
|
273
|
+
version: '0'
|
274
|
+
type: :development
|
205
275
|
prerelease: false
|
206
276
|
version_requirements: !ruby/object:Gem::Requirement
|
207
277
|
requirements:
|
208
|
-
- - "
|
278
|
+
- - ">="
|
209
279
|
- !ruby/object:Gem::Version
|
210
|
-
version: '
|
280
|
+
version: '0'
|
211
281
|
description: |2
|
212
|
-
Jekyll Picture Tag
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
simple template tag.
|
282
|
+
Jekyll Picture Tag adds responsive images to your Jekyll static site. It
|
283
|
+
automatically creates resized source images, is fully configurable, and
|
284
|
+
covers all use cases, including art direction and resolution switching, with
|
285
|
+
a little YAML configuration and a simple template tag.
|
217
286
|
email:
|
218
287
|
- robert@buchberger.cc
|
219
288
|
executables: []
|
220
289
|
extensions: []
|
221
290
|
extra_rdoc_files: []
|
222
291
|
files:
|
292
|
+
- ".envrc"
|
293
|
+
- ".github/workflows/code-checks.yml"
|
223
294
|
- ".gitignore"
|
224
295
|
- ".rubocop.yml"
|
225
296
|
- ".ruby-version"
|
226
297
|
- ".solargraph.yml"
|
227
|
-
- ".travis.yml"
|
228
|
-
- Dockerfile
|
229
298
|
- Gemfile
|
230
299
|
- LICENSE.txt
|
231
300
|
- Rakefile
|
301
|
+
- docs/.envrc
|
232
302
|
- docs/Gemfile
|
233
303
|
- docs/Gemfile.lock
|
234
304
|
- docs/_config.yml
|
@@ -240,15 +310,18 @@ files:
|
|
240
310
|
- docs/devs/index.md
|
241
311
|
- docs/devs/releases.md
|
242
312
|
- docs/index.md
|
243
|
-
- docs/
|
313
|
+
- docs/logo.png
|
314
|
+
- docs/logo.svg
|
244
315
|
- docs/users/configuration/directories.md
|
245
316
|
- docs/users/configuration/disable.md
|
246
317
|
- docs/users/configuration/fast_build.md
|
247
318
|
- docs/users/configuration/ignore_missing.md
|
248
319
|
- docs/users/configuration/index.md
|
249
320
|
- docs/users/configuration/kramdown_fix.md
|
250
|
-
- docs/users/configuration/relative_urls.md
|
251
321
|
- docs/users/configuration/suppress_warnings.md
|
322
|
+
- docs/users/configuration/urls.md
|
323
|
+
- docs/users/deployment.md
|
324
|
+
- docs/users/getting_started.md
|
252
325
|
- docs/users/index.md
|
253
326
|
- docs/users/installation.md
|
254
327
|
- docs/users/liquid_tag/argument_reference/alternate_images.md
|
@@ -264,10 +337,10 @@ files:
|
|
264
337
|
- docs/users/notes/github_pages.md
|
265
338
|
- docs/users/notes/html_attributes.md
|
266
339
|
- docs/users/notes/index.md
|
267
|
-
- docs/users/notes/input_checking.md
|
268
340
|
- docs/users/notes/kramdown_bug.md
|
269
341
|
- docs/users/notes/managing_images.md
|
270
|
-
- docs/users/notes/
|
342
|
+
- docs/users/notes/migration_1.md
|
343
|
+
- docs/users/notes/migration_2.md
|
271
344
|
- docs/users/presets/cropping.md
|
272
345
|
- docs/users/presets/default.md
|
273
346
|
- docs/users/presets/examples.md
|
@@ -287,27 +360,26 @@ files:
|
|
287
360
|
- docs/users/presets/quality_width_graph.png
|
288
361
|
- docs/users/presets/width_height_attributes.md
|
289
362
|
- docs/users/presets/width_srcsets.md
|
290
|
-
-
|
363
|
+
- docs/users/presets/writing_presets.md
|
364
|
+
- docs/users/tutorial.md
|
291
365
|
- jekyll_picture_tag.gemspec
|
292
|
-
- lib/jekyll-picture-tag.rb
|
293
366
|
- lib/jekyll_picture_tag.rb
|
294
367
|
- lib/jekyll_picture_tag/cache.rb
|
295
|
-
- lib/jekyll_picture_tag/
|
296
|
-
- lib/jekyll_picture_tag/
|
297
|
-
- lib/jekyll_picture_tag/cache/source.rb
|
298
|
-
- lib/jekyll_picture_tag/defaults/global.yml
|
299
|
-
- lib/jekyll_picture_tag/defaults/presets.yml
|
368
|
+
- lib/jekyll_picture_tag/defaults/global.rb
|
369
|
+
- lib/jekyll_picture_tag/defaults/presets.rb
|
300
370
|
- lib/jekyll_picture_tag/images.rb
|
301
371
|
- lib/jekyll_picture_tag/images/generated_image.rb
|
372
|
+
- lib/jekyll_picture_tag/images/image_file.rb
|
302
373
|
- lib/jekyll_picture_tag/images/img_uri.rb
|
303
374
|
- lib/jekyll_picture_tag/images/source_image.rb
|
304
375
|
- lib/jekyll_picture_tag/instructions.rb
|
305
|
-
- lib/jekyll_picture_tag/instructions/
|
306
|
-
- lib/jekyll_picture_tag/instructions/
|
307
|
-
- lib/jekyll_picture_tag/instructions/
|
308
|
-
- lib/jekyll_picture_tag/instructions/
|
309
|
-
- lib/jekyll_picture_tag/instructions/
|
310
|
-
- lib/jekyll_picture_tag/instructions/
|
376
|
+
- lib/jekyll_picture_tag/instructions/children/config.rb
|
377
|
+
- lib/jekyll_picture_tag/instructions/children/context.rb
|
378
|
+
- lib/jekyll_picture_tag/instructions/children/params.rb
|
379
|
+
- lib/jekyll_picture_tag/instructions/children/parsers.rb
|
380
|
+
- lib/jekyll_picture_tag/instructions/children/preset.rb
|
381
|
+
- lib/jekyll_picture_tag/instructions/parents/conditional_instruction.rb
|
382
|
+
- lib/jekyll_picture_tag/instructions/parents/env_instruction.rb
|
311
383
|
- lib/jekyll_picture_tag/output_formats.rb
|
312
384
|
- lib/jekyll_picture_tag/output_formats/auto.rb
|
313
385
|
- lib/jekyll_picture_tag/output_formats/basic.rb
|
@@ -320,6 +392,13 @@ files:
|
|
320
392
|
- lib/jekyll_picture_tag/output_formats/naked_srcset.rb
|
321
393
|
- lib/jekyll_picture_tag/output_formats/picture.rb
|
322
394
|
- lib/jekyll_picture_tag/output_formats/readme.md
|
395
|
+
- lib/jekyll_picture_tag/parsers.rb
|
396
|
+
- lib/jekyll_picture_tag/parsers/arg_splitter.rb
|
397
|
+
- lib/jekyll_picture_tag/parsers/configuration.rb
|
398
|
+
- lib/jekyll_picture_tag/parsers/html_attributes.rb
|
399
|
+
- lib/jekyll_picture_tag/parsers/image_backend.rb
|
400
|
+
- lib/jekyll_picture_tag/parsers/preset.rb
|
401
|
+
- lib/jekyll_picture_tag/parsers/tag_parser.rb
|
323
402
|
- lib/jekyll_picture_tag/router.rb
|
324
403
|
- lib/jekyll_picture_tag/srcsets.rb
|
325
404
|
- lib/jekyll_picture_tag/srcsets/basic.rb
|
@@ -331,7 +410,8 @@ files:
|
|
331
410
|
homepage: https://github.com/rbuchberger/jekyll_picture_tag
|
332
411
|
licenses:
|
333
412
|
- BSD-3-Clause
|
334
|
-
metadata:
|
413
|
+
metadata:
|
414
|
+
documentation_uri: https://rbuchberger.github.io/jekyll_picture_tag/
|
335
415
|
post_install_message:
|
336
416
|
rdoc_options: []
|
337
417
|
require_paths:
|
@@ -340,17 +420,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
340
420
|
requirements:
|
341
421
|
- - ">="
|
342
422
|
- !ruby/object:Gem::Version
|
343
|
-
version: '2.
|
423
|
+
version: '2.6'
|
344
424
|
- - "<"
|
345
425
|
- !ruby/object:Gem::Version
|
346
|
-
version: '
|
426
|
+
version: '4.0'
|
347
427
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
348
428
|
requirements:
|
349
429
|
- - ">="
|
350
430
|
- !ruby/object:Gem::Version
|
351
431
|
version: '0'
|
352
|
-
requirements:
|
353
|
-
|
432
|
+
requirements:
|
433
|
+
- libvips
|
434
|
+
rubygems_version: 3.2.3
|
354
435
|
signing_key:
|
355
436
|
specification_version: 4
|
356
437
|
summary: Easy responsive images for Jekyll.
|