middleman-simple-thumbnailer 0.0.5 → 0.0.7

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 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