middleman-simple-thumbnailer 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9ec4bedb4c08553c47c88ce504690630e6aa1202
4
- data.tar.gz: 8c61b11687af86d0a2eb4d5d083b64a1df93b349
3
+ metadata.gz: a029a01dea0919da0ca8df40c240028c7e4ba594
4
+ data.tar.gz: ed75c2c1c1c6b4cf71ccc05ee73efc5945829aac
5
5
  SHA512:
6
- metadata.gz: ba9db6dbba35d96f1513aab959ce94e9c1a49d5a3afd07856d0aa5114bd5f5c2669b5f5d2522831e67480e5227c1f8a2fbcb6e5968fa54a28b6d212b4bd670fd
7
- data.tar.gz: 5085784e7445f2cee358981929b4f1a6eea2e3f3287df2b6fcc807f84bca9b113163b6f6dc8f583e74a347e5be4a4558022655f2e738f1efddf7942f470bc38e
6
+ metadata.gz: 3151a7706156e5352e11911f8a7618ff4b4028506d0cbe3054452d228fe7515d19afa921b0fbca1528bf1c7e1c2fe6f7357e1b625dc7d272baf027a086b28320
7
+ data.tar.gz: 031831ec30df21887ca84d915da7dfcd58e5f43c4b1f445beda70616c4fe9678b26d7110c07511b4143cc111c589cb95ec4ac829f40cc8e6ae138ddb398bcd97
data/README.md CHANGED
@@ -20,9 +20,9 @@ Usage
20
20
  Build/Development modes
21
21
  -----
22
22
  During development thumbnails will be created on fly and presented as a base64 strings.
23
- During build thumbnails will be created as normal files and stored in same dir as thair originals.
23
+ During build thumbnails will be created as normal files and stored in same dir as their originals.
24
24
 
25
25
  TODO
26
26
  -----
27
27
  - add caching mechanizm in development mode
28
- - add tests
28
+ - add tests
@@ -1,4 +1,5 @@
1
- require 'RMagick'
1
+ require 'mini_magick'
2
2
  require "middleman-core"
3
3
  require "middleman-simple-thumbnailer/version"
4
+ require "middleman-simple-thumbnailer/image"
4
5
  require "middleman-simple-thumbnailer/extension"
@@ -3,45 +3,36 @@
3
3
  #
4
4
  #
5
5
  # Usage:
6
- # = image_tag item.image, resize_to: '50x30', class: 'center'
6
+ # = image_tag item.image, resize_to: '50x30', class: 'thumbnail'
7
7
  #
8
8
  module MiddlemanSimpleThumbnailer
9
9
  class Extension < Middleman::Extension
10
- def initialize(app, options_hash={}, &block)
11
- app.helpers do
12
-
13
-
14
- def image_tag(path, options={})
15
- resize_to = options.delete(:resize_to)
16
- return super(path, options) unless resize_to
17
10
 
18
- # config variables
19
- middleman_settings = self.config
20
- images_dir = middleman_settings[:images_dir]
21
- build_dir = middleman_settings[:build_dir]
11
+ def initialize(app, options_hash={}, &block)
12
+ super
13
+ app.after_build do |builder|
14
+ MiddlemanSimpleThumbnailer::Image.all_objects.each do |image|
15
+ builder.say_status :create, "#{image.resized_img_path}"
16
+ image.save!
17
+ end
18
+ end
19
+ end
22
20
 
23
- # image paths variables
24
- image_basename = File.basename(path)
25
- new_image_basename = image_basename.split('.').tap { |a| a.insert(-2, resize_to) }.join('.')
26
- new_image_path = path.gsub(image_basename, new_image_basename)
21
+ helpers do
27
22
 
28
- # resize
29
- image = Magick::Image.read("./source/#{images_dir}/#{path}").first
30
- image.change_geometry!(resize_to) { |cols, rows, img| img.resize!(cols, rows) }
23
+ def image_tag(path, options={})
24
+ resize_to = options.delete(:resize_to)
25
+ return super(path, options) unless resize_to
31
26
 
32
- # rendering
33
- if middleman_settings.environment == :development
34
- data = Base64.encode64(image.to_blob)
35
- super("data:#{image.mime_type};base64,#{data}", options)
36
- else
37
- image.write("./#{build_dir}/#{images_dir}/#{new_image_path}")
38
- super(new_image_path, options)
39
- end
27
+ image = MiddlemanSimpleThumbnailer::Image.new(path, self.config)
28
+ image.resize!(resize_to)
29
+ if environment == :development
30
+ super("data:#{image.mime_type};base64,#{image.base64_data}", options)
31
+ else
32
+ super(image.resized_img_path, options)
40
33
  end
41
-
42
-
43
34
  end
44
- super
35
+
45
36
  end
46
37
  end
47
38
  end
@@ -0,0 +1,78 @@
1
+ module MiddlemanSimpleThumbnailer
2
+ class Image
3
+ @@all_objects = []
4
+ attr_accessor :img_path, :middleman_config, :resize_to
5
+
6
+ def initialize(img_path, middleman_config)
7
+ @@all_objects << self
8
+
9
+ @img_path = img_path
10
+ @middleman_config = middleman_config
11
+ end
12
+
13
+ def mime_type
14
+ image.mime_type
15
+ end
16
+
17
+ def resized_img_path
18
+ img_path.gsub(image_name, resized_image_name)
19
+ end
20
+
21
+ def base64_data
22
+ Base64.encode64(image.to_blob)
23
+ end
24
+
25
+ def resize!(resize_to)
26
+ self.resize_to = resize_to
27
+ image.resize(resize_to)
28
+ end
29
+
30
+ def save!
31
+ image.write(resized_img_abs_path)
32
+ end
33
+
34
+ def self.all_objects
35
+ @@all_objects
36
+ end
37
+
38
+
39
+ private
40
+
41
+ def image
42
+ @image ||= MiniMagick::Image.open(abs_path)
43
+ end
44
+
45
+ def image_name
46
+ File.basename(abs_path)
47
+ end
48
+
49
+ def resized_image_name
50
+ image_name.split('.').tap { |a| a.insert(-2, resize_to) }.join('.')
51
+ end
52
+
53
+ def abs_path
54
+ File.join(source_dir, middleman_abs_path)
55
+ end
56
+
57
+ def middleman_abs_path
58
+ img_path.start_with?('/') ? img_path : File.join(images_dir, img_path)
59
+ end
60
+
61
+ def resized_img_abs_path
62
+ File.join(build_dir, middleman_abs_path).gsub(image_name, resized_image_name)
63
+ end
64
+
65
+ def source_dir
66
+ middleman_config[:source]
67
+ end
68
+
69
+ def images_dir
70
+ middleman_config[:images_dir]
71
+ end
72
+
73
+ def build_dir
74
+ middleman_config[:build_dir]
75
+ end
76
+
77
+ end
78
+ end
@@ -1,3 +1,3 @@
1
1
  module MiddlemanSimpleThumbnailer
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.7'
3
3
  end
@@ -1,20 +1,21 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "middleman-simple-thumbnailer/version"
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'middleman-simple-thumbnailer/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = "middleman-simple-thumbnailer"
6
+ s.name = 'middleman-simple-thumbnailer'
7
7
  s.version = MiddlemanSimpleThumbnailer::VERSION
8
- s.authors = ["kubenstein"]
9
- s.email = ["kubenstein@gmail.com"]
10
- s.homepage = "https://github.com/kubenstein/middleman-simple-thumbnailer"
8
+ s.authors = ['kubenstein']
9
+ s.email = ['kubenstein@gmail.com']
10
+ s.homepage = 'https://github.com/kubenstein/middleman-simple-thumbnailer'
11
+ s.license = 'MIT'
11
12
  s.summary = %q{Middleman extension that allows you to create image thumbnails by providing resize_to option to image_tag helper}
12
13
  s.description = %q{Middleman extension that allows you to create image thumbnails by providing resize_to option to image_tag helper}
13
14
 
14
15
  s.files = `git ls-files`.split("\n")
15
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
- s.require_paths = ["lib"]
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split('\n')
17
+ s.require_paths = ['lib']
17
18
 
18
- s.add_runtime_dependency("middleman", [">= 3.0.0"])
19
- s.add_runtime_dependency("rmagick")
19
+ s.add_runtime_dependency 'middleman', '~> 3'
20
+ s.add_runtime_dependency 'mini_magick', '~> 4'
20
21
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-simple-thumbnailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - kubenstein
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-17 00:00:00.000000000 Z
11
+ date: 2014-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.0
19
+ version: '3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 3.0.0
26
+ version: '3'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rmagick
28
+ name: mini_magick
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '4'
41
41
  description: Middleman extension that allows you to create image thumbnails by providing
42
42
  resize_to option to image_tag helper
43
43
  email:
@@ -52,10 +52,12 @@ files:
52
52
  - Rakefile
53
53
  - lib/middleman-simple-thumbnailer.rb
54
54
  - lib/middleman-simple-thumbnailer/extension.rb
55
+ - lib/middleman-simple-thumbnailer/image.rb
55
56
  - lib/middleman-simple-thumbnailer/version.rb
56
57
  - middleman-simple-thumbnailer.gemspec
57
58
  homepage: https://github.com/kubenstein/middleman-simple-thumbnailer
58
- licenses: []
59
+ licenses:
60
+ - MIT
59
61
  metadata: {}
60
62
  post_install_message:
61
63
  rdoc_options: []
@@ -73,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
75
  version: '0'
74
76
  requirements: []
75
77
  rubyforge_project:
76
- rubygems_version: 2.1.11
78
+ rubygems_version: 2.4.5
77
79
  signing_key:
78
80
  specification_version: 4
79
81
  summary: Middleman extension that allows you to create image thumbnails by providing