retina_rails 1.0.0 → 1.0.1

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