kamifusen 0.9.3 → 1.0

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: 39fcc15893a5fea23ae7100f394582cb123e3dbe1b1d24351cd1b6a1b51dea12
4
- data.tar.gz: 628dac26bf2eb4790073755477679a56bc3c8dbc4a67b02201d3aded41f64767
3
+ metadata.gz: 3f238efa9930dad4bbd2b9986e601120870e7a0f96e2628c2a8d7b217c284e87
4
+ data.tar.gz: 3bc265f3e7deee21f942bb8391c77426bcc335fff4bd7d4bb05adc7f178febe5
5
5
  SHA512:
6
- metadata.gz: 818bb709d661c9908104cddbe90496950eafbb487d035f22efdd02cda3524b88e77e6cb60cca147bd19617cdca8c8691c13dc8a3e5416b9c73ac2c3d8c72c049
7
- data.tar.gz: ff9fef8645419e0330affbbfd98d187256803d66001e35aac5038fd3570728ecaa599afd6ce764ef57033637c4c858ebeecc1f6eb75d151e807dafe3f07f2391
6
+ metadata.gz: f35d8b955ca59cf265cbae61e229f68a0663d8e091a8216e8fbcacc785d3a6b0e4344cfc9a12f6c5f89ede49cab4835deded944f50764370909b74f773971033
7
+ data.tar.gz: 8ef30b63560714cc9b3f35cf1367554aec03f11ce4da37eac904346860d380b2367494e1dd1b79ccf1730c33f334473e3fa8ab5d326bc66ce06975f407517772
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kamifusen (0.9.3)
4
+ kamifusen (1.0)
5
5
  image_processing
6
6
  rails
7
7
 
@@ -94,7 +94,7 @@ GEM
94
94
  mini_mime (1.0.3)
95
95
  minitest (5.14.4)
96
96
  nio4r (2.5.7)
97
- nokogiri (1.11.6-x86_64-darwin)
97
+ nokogiri (1.11.7-x86_64-darwin)
98
98
  racc (~> 1.4)
99
99
  parallel (1.20.1)
100
100
  parser (3.0.1.1)
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,13 +17,28 @@ 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 %>">
39
+ <% if Kamifusen.with_webp %>
40
+ <source srcset="<%= srcset_webp %>">
41
+ <% end %>
27
42
  <img src="<%= default %>" srcset="<%= srcset_default %>"<%= raw parameters %>>
28
43
  </picture>
29
44
  <% else %>
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.3"
4
+ VERSION = "1.0"
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.3
4
+ version: '1.0'
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-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails