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.
@@ -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
@@ -0,0 +1,19 @@
1
+ *.iml
2
+ .idea/
3
+ *.gem
4
+ *.rbc
5
+ .bundle
6
+ .config
7
+ .yardoc
8
+ Gemfile.lock
9
+ InstalledFiles
10
+ _yardoc
11
+ coverage
12
+ doc/
13
+ lib/bundler/man
14
+ pkg
15
+ rdoc
16
+ spec/reports
17
+ test/tmp
18
+ test/version_tmp
19
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in jekyll-image_resizer.gemspec
4
+ gemspec
@@ -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
+
@@ -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)
@@ -0,0 +1,5 @@
1
+ module Jekyll
2
+ module ImageResizer
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
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: []