jekyll-image_resizer 0.0.1
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/.gitignore +19 -0
- data/Gemfile +4 -0
- data/README.md +18 -0
- data/Rakefile +1 -0
- data/jekyll-image_resizer.gemspec +24 -0
- data/lib/jekyll-image_resizer.rb +1 -0
- data/lib/jekyll/image_resizer.rb +121 -0
- data/lib/jekyll/image_resizer/version.rb +5 -0
- metadata +93 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ada9246de77852031e8208491e937b769f4fce94
|
4
|
+
data.tar.gz: e0a63aca17f87e0d27df6c51326ffd1960557eb5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b7434e4f0a47e255eb70440bd40f3165f81b256c9890a3df6fde030e5a6ca9dfa306cac6e609bd8e628c8390ac8b01254cbac531800b11fa8221b4bc7a27d4b0
|
7
|
+
data.tar.gz: 50c3884af672ca0306bc02cf3985b71a12d115ccc86e8df98b504bc591f4fd02a5cafc7aa9eed33525230cb831141e546cab796d40b176de7dc8af54feb51a03
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Jekyll::ImageResizer
|
2
|
+
|
3
|
+
Jekyll filter
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'jekyll-imageresizer'
|
10
|
+
|
11
|
+
And install it:
|
12
|
+
|
13
|
+
$ bundle install
|
14
|
+
|
15
|
+
To tell Jekyll to load the plugin, add the following line to your ```_config.yml```:
|
16
|
+
|
17
|
+
gems: ['jekyll-imageresizer']
|
18
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'jekyll/image_resizer/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "jekyll-image_resizer"
|
8
|
+
spec.version = Jekyll::ImageResizer::VERSION
|
9
|
+
spec.authors = ["Sebastian Stöhr"]
|
10
|
+
spec.email = ["sebastian@sebastianstoehr.de"]
|
11
|
+
spec.description = %q{Jekyll filter to resize images.}
|
12
|
+
spec.summary = %q{Jekyll filter to resize images.}
|
13
|
+
spec.homepage = "http://www.sebastianstoehr.de/"
|
14
|
+
|
15
|
+
spec.files = `git ls-files`.split($/)
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_runtime_dependency "mini_magick"
|
21
|
+
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
23
|
+
spec.add_development_dependency "rake"
|
24
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'jekyll/image_resizer'
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require "jekyll/image_resizer/version"
|
2
|
+
require 'mini_magick'
|
3
|
+
require 'digest/md5'
|
4
|
+
|
5
|
+
module Jekyll
|
6
|
+
module ImageResizer
|
7
|
+
|
8
|
+
module Filter
|
9
|
+
|
10
|
+
def resize(input, width, height)
|
11
|
+
|
12
|
+
# Make sure both width and height are set correctly
|
13
|
+
if width.nil? then return input end
|
14
|
+
if height.nil? then return input end
|
15
|
+
if width == "auto" and height == "auto" then return input end
|
16
|
+
|
17
|
+
size = "#{width}x#{height}"
|
18
|
+
if width == "auto" then
|
19
|
+
size = "x#{height}"
|
20
|
+
elsif height == "auto" then
|
21
|
+
size = width
|
22
|
+
end
|
23
|
+
|
24
|
+
site = @context.registers[:site]
|
25
|
+
|
26
|
+
# open source image
|
27
|
+
source = File.join(site.source, input)
|
28
|
+
image = ::MiniMagick::Image.open(source)
|
29
|
+
|
30
|
+
# build target image path
|
31
|
+
digest = Digest::MD5.hexdigest(image.to_blob).slice!(0..5)
|
32
|
+
targetName = output_name(input, width, height, digest)
|
33
|
+
target = File.join(site.dest, targetName)
|
34
|
+
|
35
|
+
# File already exists?
|
36
|
+
if File.exists?(target) then
|
37
|
+
return targetName
|
38
|
+
end
|
39
|
+
|
40
|
+
puts "Generating #{input}: #{width}x#{height}"
|
41
|
+
|
42
|
+
keep_generated(input)
|
43
|
+
generate_output_dir(target)
|
44
|
+
image.resize size
|
45
|
+
image.write target
|
46
|
+
|
47
|
+
targetName
|
48
|
+
end
|
49
|
+
|
50
|
+
def img(input, additional = nil)
|
51
|
+
|
52
|
+
site = @context.registers[:site]
|
53
|
+
source = File.join(site.dest, input)
|
54
|
+
unless File.exists?(source)
|
55
|
+
source = File.join(site.source, input)
|
56
|
+
end
|
57
|
+
|
58
|
+
width = nil
|
59
|
+
height = nil
|
60
|
+
|
61
|
+
if File.exists?(source)
|
62
|
+
image = ::MiniMagick::Image.open(source)
|
63
|
+
dimensions = image["dimensions"]
|
64
|
+
width = dimensions[0]
|
65
|
+
height = dimensions[1]
|
66
|
+
end
|
67
|
+
|
68
|
+
output = "<img src=\"#{input}\""
|
69
|
+
|
70
|
+
unless width.nil?
|
71
|
+
output += " width=\"#{width}\""
|
72
|
+
end
|
73
|
+
|
74
|
+
unless height.nil?
|
75
|
+
output += " height=\"#{height}\""
|
76
|
+
end
|
77
|
+
|
78
|
+
unless additional.nil?
|
79
|
+
output += " #{additional}"
|
80
|
+
end
|
81
|
+
|
82
|
+
output += "/>"
|
83
|
+
|
84
|
+
return output
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
def output_name(input, width, height, digest)
|
89
|
+
dir = File.dirname(input)
|
90
|
+
extension = File.extname(input)
|
91
|
+
basename= File.basename(input, extension)
|
92
|
+
|
93
|
+
File.join(dir, "#{basename}-#{width}x#{height}-#{digest}#{extension}")
|
94
|
+
end
|
95
|
+
|
96
|
+
private
|
97
|
+
def generate_output_dir(target)
|
98
|
+
targetDir = File.dirname(target)
|
99
|
+
FileUtils.mkdir_p(targetDir)
|
100
|
+
end
|
101
|
+
|
102
|
+
private
|
103
|
+
def keep_generated(input)
|
104
|
+
site = @context.registers[:site]
|
105
|
+
dir = input
|
106
|
+
|
107
|
+
while dir = File.dirname(dir)
|
108
|
+
if dir == "/"
|
109
|
+
break
|
110
|
+
end
|
111
|
+
|
112
|
+
site.config['keep_files'] << dir[1..-1] unless site.config['keep_files'].include?(dir[1..-1])
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
Liquid::Template.register_filter(Jekyll::ImageResizer::Filter)
|
metadata
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-image_resizer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sebastian Stöhr
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: mini_magick
|
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: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Jekyll filter to resize images.
|
56
|
+
email:
|
57
|
+
- sebastian@sebastianstoehr.de
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- .gitignore
|
63
|
+
- Gemfile
|
64
|
+
- README.md
|
65
|
+
- Rakefile
|
66
|
+
- jekyll-image_resizer.gemspec
|
67
|
+
- lib/jekyll-image_resizer.rb
|
68
|
+
- lib/jekyll/image_resizer.rb
|
69
|
+
- lib/jekyll/image_resizer/version.rb
|
70
|
+
homepage: http://www.sebastianstoehr.de/
|
71
|
+
licenses: []
|
72
|
+
metadata: {}
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
requirements: []
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 2.1.11
|
90
|
+
signing_key:
|
91
|
+
specification_version: 4
|
92
|
+
summary: Jekyll filter to resize images.
|
93
|
+
test_files: []
|