retina_rails 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/README.md +8 -1
- data/lib/retina_rails.rb +2 -2
- data/lib/retina_rails/helpers.rb +22 -0
- data/lib/retina_rails/version.rb +1 -1
- data/retina_rails.gemspec +1 -0
- data/spec/fixtures/manifest.yml +10 -0
- data/spec/helpers_spec.rb +25 -0
- data/spec/spec_helper.rb +16 -2
- data/spec/support/rails.rb +21 -0
- data/vendor/assets/javascripts/retina.js +12 -6
- metadata +25 -2
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -7,7 +7,7 @@ How it works
|
|
7
7
|
|
8
8
|
Retina Rails automatically generates retina versions of your uploaded images (CarrierWave or Paperclip). It detects if a visitor has a retina display and if so it displays the @2x version.
|
9
9
|
|
10
|
-
Note: It also works for images that live in assets/images
|
10
|
+
Note: It also works for images that live in assets/images.
|
11
11
|
|
12
12
|
Installation
|
13
13
|
------------
|
@@ -52,6 +52,13 @@ class ExampleUploader < ActiveRecord::Base
|
|
52
52
|
end
|
53
53
|
```
|
54
54
|
|
55
|
+
For retina images use
|
56
|
+
------------
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
= image_tag('/assets/image.png', :retina => true)
|
60
|
+
```
|
61
|
+
|
55
62
|
Voila! Now you're using Retina Rails.
|
56
63
|
|
57
64
|
Credits
|
data/lib/retina_rails.rb
CHANGED
@@ -2,12 +2,12 @@ require "retina_rails/version"
|
|
2
2
|
require 'retina_rails/extensions'
|
3
3
|
require "retina_rails/paperclip"
|
4
4
|
require "retina_rails/carrierwave"
|
5
|
+
require "retina_rails/helpers"
|
5
6
|
|
6
7
|
module RetinaRails
|
7
8
|
|
8
9
|
if defined?(Rails)
|
9
|
-
class Engine < Rails::Engine
|
10
|
-
end
|
10
|
+
class Engine < Rails::Engine; end
|
11
11
|
end
|
12
12
|
|
13
13
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ActionView
|
2
|
+
module Helpers
|
3
|
+
module AssetTagHelper
|
4
|
+
|
5
|
+
def image_tag_with_retina(source, options={})
|
6
|
+
retina = options.delete(:retina)
|
7
|
+
|
8
|
+
if retina
|
9
|
+
retina_source = source.split('.')
|
10
|
+
filename = retina_source.slice!(-2)
|
11
|
+
retina_source = retina_source.insert(-2, "#{filename}@2x").join('.')
|
12
|
+
|
13
|
+
options.merge!(:data => { :at2x => path_to_image(retina_source) })
|
14
|
+
end
|
15
|
+
|
16
|
+
image_tag_without_retina(source, options)
|
17
|
+
end
|
18
|
+
alias_method_chain :image_tag, :retina
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/retina_rails/version.rb
CHANGED
data/retina_rails.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.add_development_dependency "bundler", ">= 1.0.0"
|
21
21
|
gem.add_development_dependency "rake"
|
22
22
|
gem.add_development_dependency "rspec", ">= 2.3"
|
23
|
+
gem.add_development_dependency "rspec-rails", "~> 2.0"
|
23
24
|
gem.add_development_dependency 'carrierwave'
|
24
25
|
gem.add_development_dependency 'paperclip'
|
25
26
|
gem.add_development_dependency "sqlite3"
|
@@ -0,0 +1,10 @@
|
|
1
|
+
---
|
2
|
+
image.png: image-e8de7f87c2b9d08490575267a4c9eddc.png
|
3
|
+
image/index.png: image-e8de7f87c2b9d08490575267a4c9eddc.png
|
4
|
+
image@2x.png: image@2x-0842b16379ded9ddcc299912621f76bc.png
|
5
|
+
image@2x/index.png: image@2x-0842b16379ded9ddcc299912621f76bc.png
|
6
|
+
|
7
|
+
image.some.png: image.some-e8de7f87c2b9d08490575267a4c9eddc.png
|
8
|
+
image.some/index.png: image.some-e8de7f87c2b9d08490575267a4c9eddc.png
|
9
|
+
image.some@2x.png: image.some@2x-0842b16379ded9ddcc299912621f76bc.png
|
10
|
+
image.some@2x/index.png: image.some@2x-0842b16379ded9ddcc299912621f76bc.png
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActionView::Helpers::AssetTagHelper, :type => :helper do
|
4
|
+
|
5
|
+
subject { helper }
|
6
|
+
|
7
|
+
describe :image_tag do
|
8
|
+
|
9
|
+
context 'with retina option' do
|
10
|
+
|
11
|
+
it { subject.image_tag('image.png', :retina => true).should == '<img alt="Image" data-at2x="/assets/image@2x-0842b16379ded9ddcc299912621f76bc.png" src="/assets/image-e8de7f87c2b9d08490575267a4c9eddc.png" />' }
|
12
|
+
|
13
|
+
it { subject.image_tag('image.some.png', :retina => true).should == '<img alt="Image.some" data-at2x="/assets/image.some@2x-0842b16379ded9ddcc299912621f76bc.png" src="/assets/image.some-e8de7f87c2b9d08490575267a4c9eddc.png" />' }
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'without retina' do
|
18
|
+
|
19
|
+
it { subject.image_tag('image.png').should == '<img alt="Image" src="/assets/image-e8de7f87c2b9d08490575267a4c9eddc.png" />' }
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,18 +1,32 @@
|
|
1
|
+
require 'rubygems'
|
1
2
|
require 'active_support'
|
2
3
|
require 'active_record'
|
3
4
|
|
5
|
+
## Carrierwave
|
6
|
+
|
4
7
|
require 'carrierwave'
|
5
8
|
|
9
|
+
## Paperclip
|
6
10
|
|
7
11
|
require 'paperclip'
|
8
12
|
require "paperclip/railtie"
|
9
13
|
Paperclip::Railtie.insert
|
10
14
|
|
11
|
-
|
15
|
+
## Setup fixture database for activerecord
|
12
16
|
|
13
17
|
ActiveRecord::Base.establish_connection(
|
14
18
|
:adapter => "sqlite3",
|
15
19
|
:database => File.dirname(__FILE__) + "/fixtures/db/retina_rails.sqlite3"
|
16
20
|
)
|
17
21
|
|
18
|
-
|
22
|
+
## Load support files
|
23
|
+
|
24
|
+
Dir["spec/support/**/*.rb"].each { |f| load f }
|
25
|
+
|
26
|
+
## Load rspec rails after initializing rails app
|
27
|
+
|
28
|
+
require 'rspec/rails'
|
29
|
+
|
30
|
+
## Load retina_rails
|
31
|
+
|
32
|
+
require 'retina_rails'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
ENV['RAILS_ENV'] = 'test'
|
2
|
+
|
3
|
+
require "sprockets/railtie"
|
4
|
+
|
5
|
+
module RetinaRailsTest
|
6
|
+
class Application < Rails::Application
|
7
|
+
config.active_support.deprecation = :log
|
8
|
+
|
9
|
+
config.assets.manifest = Rails.public_path.gsub('public', 'spec/fixtures')
|
10
|
+
|
11
|
+
## Asset config
|
12
|
+
|
13
|
+
config.assets.version = '1.0'
|
14
|
+
config.serve_static_assets = false
|
15
|
+
config.assets.enabled = true
|
16
|
+
config.assets.compress = true
|
17
|
+
config.assets.compile = false
|
18
|
+
config.assets.digest = true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
RetinaRailsTest::Application.initialize!
|
@@ -28,9 +28,7 @@
|
|
28
28
|
var images = document.getElementsByTagName("img"), retinaImages = [], i, image;
|
29
29
|
for (i = 0; i < images.length; i++) {
|
30
30
|
image = images[i];
|
31
|
-
|
32
|
-
retinaImages.push(new RetinaImage(image));
|
33
|
-
}
|
31
|
+
retinaImages.push(new RetinaImage(image));
|
34
32
|
}
|
35
33
|
existing_onload();
|
36
34
|
}
|
@@ -54,9 +52,15 @@
|
|
54
52
|
|
55
53
|
root.RetinaImagePath = RetinaImagePath;
|
56
54
|
|
57
|
-
function RetinaImagePath(path) {
|
55
|
+
function RetinaImagePath(path, at_2x_path) {
|
58
56
|
this.path = path;
|
59
|
-
|
57
|
+
if (typeof at_2x_path !== "undefined" && at_2x_path !== null) {
|
58
|
+
this.at_2x_path = at_2x_path;
|
59
|
+
this.perform_check = false;
|
60
|
+
} else {
|
61
|
+
this.at_2x_path = path.replace(/\.\w+$/, function(match) { return "@2x" + match; });
|
62
|
+
this.perform_check = true;
|
63
|
+
}
|
60
64
|
}
|
61
65
|
|
62
66
|
RetinaImagePath.confirmed_paths = [];
|
@@ -69,6 +73,8 @@
|
|
69
73
|
var http, that = this;
|
70
74
|
if (this.is_external()) {
|
71
75
|
return callback(false);
|
76
|
+
} else if (!this.perform_check && typeof this.at_2x_path !== "undefined" && this.at_2x_path !== null) {
|
77
|
+
return callback(true);
|
72
78
|
} else if (this.at_2x_path in RetinaImagePath.confirmed_paths) {
|
73
79
|
return callback(true);
|
74
80
|
} else {
|
@@ -101,7 +107,7 @@
|
|
101
107
|
|
102
108
|
function RetinaImage(el) {
|
103
109
|
this.el = el;
|
104
|
-
this.path = new RetinaImagePath(this.el.getAttribute('src'));
|
110
|
+
this.path = new RetinaImagePath(this.el.getAttribute('src'), this.el.getAttribute('data-at2x'));
|
105
111
|
var that = this;
|
106
112
|
this.path.check_2x_variant(function(hasVariant) {
|
107
113
|
if (hasVariant) that.swap();
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: retina_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -59,6 +59,22 @@ dependencies:
|
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '2.3'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec-rails
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '2.0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '2.0'
|
62
78
|
- !ruby/object:Gem::Dependency
|
63
79
|
name: carrierwave
|
64
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,6 +173,7 @@ files:
|
|
157
173
|
- lib/retina_rails.rb
|
158
174
|
- lib/retina_rails/carrierwave.rb
|
159
175
|
- lib/retina_rails/extensions.rb
|
176
|
+
- lib/retina_rails/helpers.rb
|
160
177
|
- lib/retina_rails/paperclip.rb
|
161
178
|
- lib/retina_rails/version.rb
|
162
179
|
- retina_rails.gemspec
|
@@ -164,8 +181,11 @@ files:
|
|
164
181
|
- spec/extensions_spec.rb
|
165
182
|
- spec/fixtures/db/retina_rails.sqlite3
|
166
183
|
- spec/fixtures/images/avatar.jpeg
|
184
|
+
- spec/fixtures/manifest.yml
|
185
|
+
- spec/helpers_spec.rb
|
167
186
|
- spec/paperclip_spec.rb
|
168
187
|
- spec/spec_helper.rb
|
188
|
+
- spec/support/rails.rb
|
169
189
|
- spec/support/schema.rb
|
170
190
|
- vendor/assets/javascripts/retina.js
|
171
191
|
homepage: https://github.com/jhnvz/retina_rails.git
|
@@ -197,6 +217,9 @@ test_files:
|
|
197
217
|
- spec/extensions_spec.rb
|
198
218
|
- spec/fixtures/db/retina_rails.sqlite3
|
199
219
|
- spec/fixtures/images/avatar.jpeg
|
220
|
+
- spec/fixtures/manifest.yml
|
221
|
+
- spec/helpers_spec.rb
|
200
222
|
- spec/paperclip_spec.rb
|
201
223
|
- spec/spec_helper.rb
|
224
|
+
- spec/support/rails.rb
|
202
225
|
- spec/support/schema.rb
|