kamifusen 0.9.4 → 1.1

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
  SHA256:
3
- metadata.gz: d41dd3944d46e1a212cf3a6e14da73f4bd8dfb056f3fccf0f8026d21b0eca0fd
4
- data.tar.gz: 3876941a440dd4008facad81570cd36099f9d71b2ec26b306cf790086e8fede8
3
+ metadata.gz: 87b7ea289164bd1a3be5022b75ac1f9c9b8a0151b08219579d44a83403ad03cf
4
+ data.tar.gz: ed491636014069469b311b19c7d80175ed2cd6d757b87ce938a1170129ea9f88
5
5
  SHA512:
6
- metadata.gz: 383d1ce548824cb02a1131e307457fe06a33bca1a0b661d39f79aca8e7de92eba8258bd7a13a3aaea17ca6bd54448a3f175e274b4feec9de38515dd1e2a70a13
7
- data.tar.gz: 0d610001c0da70a6433722f2bbc38e27fdd505d17e60b37d9d485f36994b9052a52a8c60bc336e2ef69fcfaf8bbd632e744abf719fca2165cdd2453cbebb861a
6
+ metadata.gz: 418792aa2edb5b1534a5450a893fa74338a43bd92d773715b303eb8e675bfc0359abb3925aec6cb70cc7e2e0bf1286f16e1d2bb0d3aea6e62cc16e402dffbee4
7
+ data.tar.gz: d00ba390039160dee9ae0e4f5c7354f2f0300becf19c794aa10665688403361ea0625673a3253eb66b9c8ca3cb26ad7512f688f5587daca93bdb9ae990b63036
data/Gemfile CHANGED
@@ -8,3 +8,5 @@ gemspec
8
8
  gem "rake", "~> 13.0"
9
9
 
10
10
  gem "rubocop", "~> 1.7"
11
+
12
+ gem "byebug"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kamifusen (0.9.4)
4
+ kamifusen (1.1)
5
5
  image_processing
6
6
  rails
7
7
 
@@ -69,10 +69,11 @@ GEM
69
69
  zeitwerk (~> 2.3)
70
70
  ast (2.4.2)
71
71
  builder (3.2.4)
72
- concurrent-ruby (1.1.8)
72
+ byebug (11.1.3)
73
+ concurrent-ruby (1.1.9)
73
74
  crass (1.0.6)
74
75
  erubi (1.10.0)
75
- ffi (1.15.0)
76
+ ffi (1.15.1)
76
77
  globalid (0.4.2)
77
78
  activesupport (>= 4.2.0)
78
79
  i18n (1.8.10)
@@ -83,7 +84,7 @@ GEM
83
84
  listen (3.5.1)
84
85
  rb-fsevent (~> 0.10, >= 0.10.3)
85
86
  rb-inotify (~> 0.9, >= 0.9.10)
86
- loofah (2.9.1)
87
+ loofah (2.10.0)
87
88
  crass (~> 1.0.2)
88
89
  nokogiri (>= 1.5.9)
89
90
  mail (2.7.1)
@@ -94,7 +95,7 @@ GEM
94
95
  mini_mime (1.0.3)
95
96
  minitest (5.14.4)
96
97
  nio4r (2.5.7)
97
- nokogiri (1.11.6-x86_64-darwin)
98
+ nokogiri (1.11.7-x86_64-darwin)
98
99
  racc (~> 1.4)
99
100
  parallel (1.20.1)
100
101
  parser (3.0.1.1)
@@ -136,16 +137,16 @@ GEM
136
137
  ffi (~> 1.0)
137
138
  regexp_parser (2.1.1)
138
139
  rexml (3.2.5)
139
- rubocop (1.15.0)
140
+ rubocop (1.16.1)
140
141
  parallel (~> 1.10)
141
142
  parser (>= 3.0.0.0)
142
143
  rainbow (>= 2.2.2, < 4.0)
143
144
  regexp_parser (>= 1.8, < 3.0)
144
145
  rexml
145
- rubocop-ast (>= 1.5.0, < 2.0)
146
+ rubocop-ast (>= 1.7.0, < 2.0)
146
147
  ruby-progressbar (~> 1.7)
147
148
  unicode-display_width (>= 1.4.0, < 3.0)
148
- rubocop-ast (1.5.0)
149
+ rubocop-ast (1.7.0)
149
150
  parser (>= 3.0.1.1)
150
151
  ruby-progressbar (1.11.0)
151
152
  ruby-vips (2.1.2)
@@ -171,6 +172,7 @@ PLATFORMS
171
172
  x86_64-darwin-20
172
173
 
173
174
  DEPENDENCIES
175
+ byebug
174
176
  kamifusen!
175
177
  listen
176
178
  rake (~> 13.0)
data/README.md CHANGED
@@ -2,6 +2,34 @@
2
2
 
3
3
  ![Kamifūsen in Yamagata](https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/%E4%B8%AD%E6%B4%A5%E5%B7%9D%E9%9B%AA%E3%81%BE%E3%81%A4%E3%82%8A.jpg/1024px-%E4%B8%AD%E6%B4%A5%E5%B7%9D%E9%9B%AA%E3%81%BE%E3%81%A4%E3%82%8A.jpg)
4
4
 
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'kamifusen'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install kamifusen
20
+
21
+ In the views, use (where object is an active record model, and image is an active storage attachment):
22
+
23
+ ```erb
24
+ <%= kamifusen_tag object.image, alt: 'A nice image' %>
25
+ ```
26
+
27
+ If you want to disable webp, in config/initializers/kamifusen.rb:
28
+
29
+ ```ruby
30
+ Kamifusen.with_webp = false
31
+ ```
32
+
5
33
  ## Usage
6
34
 
7
35
  Simply use `kamifusen_tag` instead of `image_tag` in your rails views.## What's the problem?
@@ -76,11 +104,13 @@ Webp and AVIF are more efficient formats than jpg and png. They allow better com
76
104
  https://sebousan.github.io/kamifusen/
77
105
 
78
106
  The new helper is:
107
+
79
108
  ```erb
80
109
  <%= kamifusen_tag object.image, alt: 'A nice image' %>
81
110
  ```
82
111
 
83
112
  It generates a code like:
113
+
84
114
  ```html
85
115
  <picture>
86
116
  <source srcset="image-800w.avif, image-1600w.avif 2x" type="image/avif" media="(min-width: 800px)">
@@ -93,22 +123,6 @@ It generates a code like:
93
123
  </picture>
94
124
  ```
95
125
 
96
- ## Installation
97
-
98
- Add this line to your application's Gemfile:
99
-
100
- ```ruby
101
- gem 'kamifusen'
102
- ```
103
-
104
- And then execute:
105
-
106
- $ bundle install
107
-
108
- Or install it yourself as:
109
-
110
- $ gem install kamifusen
111
-
112
126
  ## References
113
127
 
114
128
  - https://developer.mozilla.org/fr/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images
@@ -17,17 +17,32 @@ parameters += " class=\"#{ options[:class] }\"" if klass
17
17
  sizes = [320, 576, 640, 768, 992, 1152, 1200, 1400, 1536, 1984, 2400]
18
18
  quality = 80
19
19
  # Computing
20
- sizes.reject! { |size| size > width * 2 } if width
21
- srcset_webp = sizes.map { |size| "#{ url_for source.variant(resize: "#{size}>", format: :webp, quality: quality) } #{ size }vw" }.join(', ')
22
- srcset_default = sizes.map { |size| "#{ url_for source.variant(resize: "#{size}>", quality: quality) } #{ size }vw" }.join(', ')
23
- default = url_for source.variant(resize: "#{sizes.max}>", quality: quality)
20
+ if width
21
+ width_retina = width * 2
22
+ sizes.reject! { |size| size > width_retina }
23
+ sizes << width_retina
24
+ sizes.uniq!
25
+ end
26
+ default_width = sizes.max
27
+ default_width = width_retina if width_retina && width_retina > default_width
28
+ if Kamifusen.with_webp
29
+ srcset_webp = sizes.map { |size|
30
+ "#{ url_for source.variant(resize: "#{size}>", format: :webp, quality: quality) } #{ size }w"
31
+ }.join(', ')
32
+ end
33
+ srcset_default = sizes.map { |size|
34
+ "#{ url_for source.variant(resize: "#{size}>", quality: quality) } #{ size }w"
35
+ }.join(', ')
36
+ default = url_for source.variant(resize: "#{default_width}>", quality: quality)
24
37
  %>
25
38
  <picture>
26
- <source srcset="<%= srcset_webp %>">
27
- <img src="<%= default %>" srcset="<%= srcset_default %>"<%= raw parameters %>>
39
+ <% if Kamifusen.with_webp %>
40
+ <source srcset="<%= srcset_webp %>" type="image/webp">
41
+ <% end %>
42
+ <img src="<%= default %>" srcset="<%= srcset_default %>" type="<%= source.content_type %>"<%= raw parameters %>>
28
43
  </picture>
29
44
  <% else %>
30
45
  <picture>
31
- <img src="<%= url_for source %>"<%= raw parameters %>>
46
+ <img src="<%= url_for source %>" type="<%= source.content_type %>"<%= raw parameters %>>
32
47
  </picture>
33
48
  <% end %>
data/lib/kamifusen.rb CHANGED
@@ -5,8 +5,13 @@ require "kamifusen/railtie"
5
5
  require "kamifusen/view_helper"
6
6
 
7
7
  module Kamifusen
8
+
9
+ mattr_accessor :with_webp
10
+ @@with_webp = true
11
+
8
12
  class Engine < ::Rails::Engine
9
13
  end
14
+
10
15
  class Error < StandardError
11
16
  end
12
17
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kamifusen
4
- VERSION = "0.9.4"
4
+ VERSION = "1.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kamifusen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sébastien Moulène
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-05-31 00:00:00.000000000 Z
12
+ date: 2021-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails