jekyll-auto-thumbnails 0.2.0
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 +7 -0
- data/CHANGELOG.md +14 -0
- data/LICENSE +661 -0
- data/README.md +123 -0
- data/lib/jekyll-auto-thumbnails/configuration.rb +51 -0
- data/lib/jekyll-auto-thumbnails/digest_calculator.rb +19 -0
- data/lib/jekyll-auto-thumbnails/generator.rb +132 -0
- data/lib/jekyll-auto-thumbnails/hooks.rb +145 -0
- data/lib/jekyll-auto-thumbnails/registry.rb +56 -0
- data/lib/jekyll-auto-thumbnails/scanner.rb +152 -0
- data/lib/jekyll-auto-thumbnails/url_resolver.rb +48 -0
- data/lib/jekyll-auto-thumbnails/version.rb +5 -0
- data/lib/jekyll-auto-thumbnails.rb +17 -0
- metadata +179 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JekyllAutoThumbnails
|
|
4
|
+
# URL resolution and path handling
|
|
5
|
+
#
|
|
6
|
+
# Handles conversion between URLs (as seen in HTML) and filesystem paths,
|
|
7
|
+
# distinguishes between external URLs and local paths, and resolves relative paths.
|
|
8
|
+
module UrlResolver
|
|
9
|
+
# Check if URL is external (http/https/protocol-relative)
|
|
10
|
+
#
|
|
11
|
+
# @param url [String] URL to check
|
|
12
|
+
# @return [Boolean] true if external URL
|
|
13
|
+
def self.external?(url)
|
|
14
|
+
url.start_with?("http://", "https://", "//")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Resolve relative path to absolute site-relative path
|
|
18
|
+
#
|
|
19
|
+
# @param url [String] URL or path
|
|
20
|
+
# @param base_dir [String] Base directory for relative resolution
|
|
21
|
+
# @return [String, nil] resolved path or nil if external
|
|
22
|
+
def self.resolve_path(url, base_dir)
|
|
23
|
+
return nil if external?(url)
|
|
24
|
+
return url if url.start_with?("/")
|
|
25
|
+
|
|
26
|
+
# Relative path - resolve against base_dir
|
|
27
|
+
# Remove ./ prefix if present
|
|
28
|
+
cleaned_url = url.sub(%r{^\./}, "")
|
|
29
|
+
|
|
30
|
+
# Join with base_dir and normalize
|
|
31
|
+
require "pathname"
|
|
32
|
+
Pathname.new(File.join(base_dir, cleaned_url)).cleanpath.to_s
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Convert site-relative URL to filesystem path
|
|
36
|
+
#
|
|
37
|
+
# @param url [String] Site-relative URL (e.g., /assets/image.jpg)
|
|
38
|
+
# @param site_source [String] Jekyll site source directory
|
|
39
|
+
# @return [String, nil] filesystem path or nil if external
|
|
40
|
+
def self.to_filesystem_path(url, site_source)
|
|
41
|
+
return nil if external?(url)
|
|
42
|
+
|
|
43
|
+
# Strip leading slash and join with site source
|
|
44
|
+
cleaned_url = url.sub(%r{^/}, "")
|
|
45
|
+
File.join(site_source, cleaned_url)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "jekyll"
|
|
4
|
+
require "nokogiri"
|
|
5
|
+
|
|
6
|
+
require_relative "jekyll-auto-thumbnails/version"
|
|
7
|
+
require_relative "jekyll-auto-thumbnails/configuration"
|
|
8
|
+
require_relative "jekyll-auto-thumbnails/url_resolver"
|
|
9
|
+
require_relative "jekyll-auto-thumbnails/digest_calculator"
|
|
10
|
+
require_relative "jekyll-auto-thumbnails/registry"
|
|
11
|
+
require_relative "jekyll-auto-thumbnails/generator"
|
|
12
|
+
require_relative "jekyll-auto-thumbnails/scanner"
|
|
13
|
+
require_relative "jekyll-auto-thumbnails/hooks"
|
|
14
|
+
|
|
15
|
+
module JekyllAutoThumbnails
|
|
16
|
+
# Main plugin module
|
|
17
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: jekyll-auto-thumbnails
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.2.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Texarkanine
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2025-12-11 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: jekyll
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '4.0'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '5.0'
|
|
23
|
+
type: :runtime
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '4.0'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '5.0'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: nokogiri
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.15'
|
|
40
|
+
type: :runtime
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '1.15'
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
48
|
+
name: rake
|
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '13.3'
|
|
54
|
+
type: :development
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '13.3'
|
|
61
|
+
- !ruby/object:Gem::Dependency
|
|
62
|
+
name: rspec
|
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '3.13'
|
|
68
|
+
type: :development
|
|
69
|
+
prerelease: false
|
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '3.13'
|
|
75
|
+
- !ruby/object:Gem::Dependency
|
|
76
|
+
name: rubocop
|
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '1.81'
|
|
82
|
+
type: :development
|
|
83
|
+
prerelease: false
|
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - "~>"
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '1.81'
|
|
89
|
+
- !ruby/object:Gem::Dependency
|
|
90
|
+
name: rubocop-rake
|
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - "~>"
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0.7'
|
|
96
|
+
type: :development
|
|
97
|
+
prerelease: false
|
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - "~>"
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '0.7'
|
|
103
|
+
- !ruby/object:Gem::Dependency
|
|
104
|
+
name: rubocop-rspec
|
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - "~>"
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '3.8'
|
|
110
|
+
type: :development
|
|
111
|
+
prerelease: false
|
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
113
|
+
requirements:
|
|
114
|
+
- - "~>"
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: '3.8'
|
|
117
|
+
- !ruby/object:Gem::Dependency
|
|
118
|
+
name: simplecov
|
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
|
120
|
+
requirements:
|
|
121
|
+
- - "~>"
|
|
122
|
+
- !ruby/object:Gem::Version
|
|
123
|
+
version: '0.22'
|
|
124
|
+
type: :development
|
|
125
|
+
prerelease: false
|
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
127
|
+
requirements:
|
|
128
|
+
- - "~>"
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: '0.22'
|
|
131
|
+
description: Jekyll plugin that automatically generates and serves optimized image
|
|
132
|
+
thumbnails for faster page loads. Scans rendered HTML, generates thumbnails with
|
|
133
|
+
intelligent caching, and seamlessly replaces img src attributes.
|
|
134
|
+
email:
|
|
135
|
+
- texarkanine@protonmail.com
|
|
136
|
+
executables: []
|
|
137
|
+
extensions: []
|
|
138
|
+
extra_rdoc_files: []
|
|
139
|
+
files:
|
|
140
|
+
- CHANGELOG.md
|
|
141
|
+
- LICENSE
|
|
142
|
+
- README.md
|
|
143
|
+
- lib/jekyll-auto-thumbnails.rb
|
|
144
|
+
- lib/jekyll-auto-thumbnails/configuration.rb
|
|
145
|
+
- lib/jekyll-auto-thumbnails/digest_calculator.rb
|
|
146
|
+
- lib/jekyll-auto-thumbnails/generator.rb
|
|
147
|
+
- lib/jekyll-auto-thumbnails/hooks.rb
|
|
148
|
+
- lib/jekyll-auto-thumbnails/registry.rb
|
|
149
|
+
- lib/jekyll-auto-thumbnails/scanner.rb
|
|
150
|
+
- lib/jekyll-auto-thumbnails/url_resolver.rb
|
|
151
|
+
- lib/jekyll-auto-thumbnails/version.rb
|
|
152
|
+
homepage: https://github.com/Texarkanine/jekyll-auto-thumbnails
|
|
153
|
+
licenses:
|
|
154
|
+
- AGPL-3.0-or-later
|
|
155
|
+
metadata:
|
|
156
|
+
homepage_uri: https://github.com/Texarkanine/jekyll-auto-thumbnails
|
|
157
|
+
source_code_uri: https://github.com/Texarkanine/jekyll-auto-thumbnails
|
|
158
|
+
changelog_uri: https://github.com/Texarkanine/jekyll-auto-thumbnails/blob/main/CHANGELOG.md
|
|
159
|
+
rubygems_mfa_required: 'true'
|
|
160
|
+
post_install_message:
|
|
161
|
+
rdoc_options: []
|
|
162
|
+
require_paths:
|
|
163
|
+
- lib
|
|
164
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
165
|
+
requirements:
|
|
166
|
+
- - ">="
|
|
167
|
+
- !ruby/object:Gem::Version
|
|
168
|
+
version: 2.7.0
|
|
169
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - ">="
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
174
|
+
requirements: []
|
|
175
|
+
rubygems_version: 3.3.27
|
|
176
|
+
signing_key:
|
|
177
|
+
specification_version: 4
|
|
178
|
+
summary: Automatic image optimization for Jekyll sites
|
|
179
|
+
test_files: []
|