retina_rails 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,7 +6,8 @@ module ActionView
6
6
  retina = options.delete(:retina)
7
7
 
8
8
  if retina
9
- retina_source = source.split('.')
9
+ retina_source = source.to_s
10
+ retina_source = retina_source.split('.')
10
11
  filename = retina_source.slice!(-2)
11
12
  retina_source = retina_source.insert(-2, "#{filename}@2x").join('.')
12
13
 
@@ -59,14 +59,15 @@ module RetinaRails
59
59
  ## Iterate over styles and set optimzed dimensions
60
60
  styles.each_pair do |key, value|
61
61
 
62
- dimensions = value[0]
62
+ dimensions = value.kind_of?(Array) ? value[0] : value
63
63
 
64
64
  width = dimensions.scan(/\d+/)[0].to_i * 2
65
65
  height = dimensions.scan(/\d+/)[1].to_i * 2
66
66
 
67
67
  processor = dimensions.scan(/#|</).first
68
68
 
69
- retina_styles["#{key}_retina".to_sym] = ["#{width}x#{height}#{processor}", value[1]]
69
+ new_dimensions = "#{width}x#{height}#{processor}"
70
+ retina_styles["#{key}_retina".to_sym] = value.kind_of?(Array) ? [new_dimensions, value[1]] : new_dimensions
70
71
 
71
72
  ## Set quality convert option
72
73
  convert_option = convert_options[key] if convert_options
@@ -1,3 +1,3 @@
1
1
  module RetinaRails
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -2,6 +2,12 @@ require 'spec_helper'
2
2
 
3
3
  describe ActionView::Helpers::AssetTagHelper, :type => :helper do
4
4
 
5
+ class SomeWrapperClassForUrl
6
+ def to_s
7
+ 'image.png'
8
+ end
9
+ end
10
+
5
11
  subject { helper }
6
12
 
7
13
  describe :image_tag do
@@ -12,6 +18,12 @@ describe ActionView::Helpers::AssetTagHelper, :type => :helper do
12
18
 
13
19
  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
20
 
21
+ context 'with class' do
22
+
23
+ it { subject.image_tag(SomeWrapperClassForUrl.new, :retina => true).should == '<img alt="Image" data-at2x="/assets/image@2x-0842b16379ded9ddcc299912621f76bc.png" src="/assets/image-e8de7f87c2b9d08490575267a4c9eddc.png" />' }
24
+
25
+ end
26
+
15
27
  end
16
28
 
17
29
  context 'without retina' do
@@ -24,6 +24,14 @@ class PaperclipUpload < ActiveRecord::Base
24
24
  :path => "#{ROOT}/:class/:id/:basename_:style.:extension",
25
25
  :url => "#{ROOT}/:class/:id/:basename_:style.:extension"
26
26
 
27
+ has_attached_file :avatar_string_styles,
28
+ :styles => {
29
+ :original => "800x800",
30
+ :big => "125x125#"
31
+ },
32
+ :retina => true,
33
+ :path => "#{ROOT}/:class/:id/:basename_:style.:extension",
34
+ :url => "#{ROOT}/:class/:id/:basename_:style.:extension"
27
35
  end
28
36
 
29
37
  describe RetinaRails::Strategies::Paperclip do
@@ -44,14 +52,26 @@ describe RetinaRails::Strategies::Paperclip do
44
52
 
45
53
  subject { PaperclipUpload.create(:avatar => File.open("#{fixture_path}/images/avatar.jpeg")) }
46
54
 
47
- it { subject.avatar.url(:big).should == "#{ROOT}/paperclip_uploads/1/avatar_big.jpg" }
48
- it { subject.avatar.url(:big_retina).should == "#{ROOT}/paperclip_uploads/2/avatar_big@2x.jpg" }
55
+ it { subject.avatar.url(:big).should == "#{ROOT}/paperclip_uploads/#{subject.id}/avatar_big.jpg" }
56
+ it { subject.avatar.url(:big_retina).should == "#{ROOT}/paperclip_uploads/#{subject.id}/avatar_big@2x.jpg" }
49
57
 
50
58
  it { Paperclip::Geometry.from_file(subject.avatar.url(:big)).to_s.should == '125x125' }
51
59
  it { Paperclip::Geometry.from_file(subject.avatar.url(:big_retina)).to_s.should == '250x250' }
52
60
 
53
61
  end
54
62
 
63
+ context 'uploads with string styles' do
64
+
65
+ subject { PaperclipUpload.create(:avatar_string_styles => File.open("#{fixture_path}/images/avatar.jpeg")) }
66
+
67
+ it { subject.avatar_string_styles.url(:big).should == "#{ROOT}/paperclip_uploads/#{subject.id}/avatar_big.jpeg" }
68
+ it { subject.avatar_string_styles.url(:big_retina).should == "#{ROOT}/paperclip_uploads/#{subject.id}/avatar_big@2x.jpeg" }
69
+
70
+ it { Paperclip::Geometry.from_file(subject.avatar_string_styles.url(:big)).to_s.should == '125x125' }
71
+ it { Paperclip::Geometry.from_file(subject.avatar_string_styles.url(:big_retina)).to_s.should == '250x250' }
72
+
73
+ end
74
+
55
75
  context 'with retina quality' do
56
76
 
57
77
  subject { PaperclipUpload.create(:avatar => File.open("#{fixture_path}/images/avatar.jpeg")) }
@@ -4,6 +4,7 @@ ActiveRecord::Schema.define do
4
4
  create_table :paperclip_uploads, :force => true do |t|
5
5
  t.string :avatar_file_name
6
6
  t.string :avatar_without_quality_file_name
7
+ t.string :avatar_string_styles_file_name
7
8
  t.timestamps
8
9
  end
9
10
 
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: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-05-21 00:00:00.000000000 Z
13
+ date: 2013-06-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -231,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
231
  version: '0'
232
232
  requirements: []
233
233
  rubyforge_project:
234
- rubygems_version: 1.8.25
234
+ rubygems_version: 1.8.24
235
235
  signing_key:
236
236
  specification_version: 3
237
237
  summary: Makes your live easier optimizing for retina displays