jekyll-thumbnail-img 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/jekyll-thumbnail-img.rb +50 -0
  3. metadata +71 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c6f1558133356d35708570fe3adc2002f8527a3bbd0b6f0339f8df5f5861356e
4
+ data.tar.gz: df2e246e6bfcdca889563df614e2b89b028ec3b9688c83ffd5b9e77b8bf49b51
5
+ SHA512:
6
+ metadata.gz: 1edcdfceae5b2f2c75d00d57d9cef8a9eab64bcf737aef60d3e5dae93aca814b49c664e59c3286bf4bfdfef61c1213fed3d225ed5391149194a75fd60cf49d4e
7
+ data.tar.gz: 816be152f8b6283a5db5ab1b83842313586bc073245f6a74554bd67e739afc8acbf9e2a89d40624c12772c08bc54761a7708bc776f3925ef6c56f6b2dacd2775
@@ -0,0 +1,50 @@
1
+ require "jekyll"
2
+ require "mini_magick"
3
+
4
+ class JekyllThumbnailImg < Liquid::Tag
5
+ def initialize(tag_name, markup, tokens)
6
+ super
7
+ @markup = markup
8
+ end
9
+
10
+ def render(context)
11
+ source, width = @markup.split(" ").map(&:strip)
12
+
13
+ # Check if the source is a Liquid variable and attempt to resolve it
14
+ if context[source]
15
+ source = context[source]
16
+ end
17
+ unless source && width
18
+ raise "Usage: {% thumbnail_img /path/to/local/image.png 500 %}"
19
+ end
20
+
21
+ source_path = File.join(context.registers[:site].source, source)
22
+
23
+ # Check if the source file exists
24
+ unless File.exist?(source_path)
25
+ raise "File #{source} could not be found"
26
+ end
27
+
28
+ # Calculate the relative path to the 'thumbnails' directory
29
+ relative_dest_dir = File.join(File.dirname(source), "thumbnails")
30
+
31
+ # Create the 'thumbnails' directory within the source directory
32
+ dest_dir = File.join(context.registers[:site].source, relative_dest_dir)
33
+ Dir.mkdir(dest_dir) unless Dir.exist?(dest_dir)
34
+
35
+ ext = File.extname(source)
36
+ dest = File.join(relative_dest_dir, File.basename(source, ext) + "_#{width}w#{ext}")
37
+
38
+ # Generate the thumbnail if it doesn't exist or if the source file was modified more recently than the thumbnail
39
+ full_dest_path = File.join(context.registers[:site].source, dest)
40
+ if !File.exist?(full_dest_path) || File.mtime(full_dest_path) <= File.mtime(source_path)
41
+ image = MiniMagick::Image.open(source_path)
42
+ image.resize("#{width}x")
43
+ image.write(File.join(context.registers[:site].source, dest))
44
+ end
45
+
46
+ dest
47
+ end
48
+ end
49
+
50
+ Liquid::Template.register_tag("thumbnail_img", JekyllThumbnailImg)
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-thumbnail-img
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Abhishek Paudel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-11-02 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: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mini_magick
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description:
42
+ email:
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/jekyll-thumbnail-img.rb
48
+ homepage: https://github.com/abpaudel/jekyll-thumbnail-img
49
+ licenses:
50
+ - MIT
51
+ metadata: {}
52
+ post_install_message:
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubygems_version: 3.3.26
68
+ signing_key:
69
+ specification_version: 4
70
+ summary: A Jekyll plugin to generate image thumbnails with specified width.
71
+ test_files: []