picture_tag-rails 0.0.5 → 0.0.6

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a5f03793d175d320b870bd6b3e89662056c14665
4
+ data.tar.gz: 68b1d6b25e2fbc38312a2f15fd285ace513942e3
5
+ SHA512:
6
+ metadata.gz: 756535f2cfd4e4569e4cda5db5e3324b6d4bb7fef8cc6ad0ed719a77e6bcf340541b2abc3be637ed79924eda103bd9e7c522c9eec9128dc0bbafec28db9003b8
7
+ data.tar.gz: d1378e2855858938f68959a52103c57a490603ab2906ddd6688c94ce158f118651a1711a5fa639e8704e51fd780d603cc80ddf78d55de5a26ab425fff9f58222
data/Gemfile CHANGED
@@ -8,5 +8,5 @@ gem 'tzinfo'
8
8
  group :test, :development do
9
9
  gem 'guard-rspec'
10
10
  gem 'rb-fsevent', '~> 0.9.1'
11
- gem 'rspec-rails'
12
- end
11
+ gem 'rspec-rails', '<3.0.0'
12
+ end
data/README.md CHANGED
@@ -4,18 +4,18 @@
4
4
 
5
5
  A Rails view helper extension to generate HTML5 `<picture>` tag markup
6
6
  from the W3C HTML Responsive Images Extension Proposal.
7
-
7
+
8
8
  [w3.org/community/respimg](http://www.w3.org/community/respimg)
9
9
 
10
10
 
11
11
  ## Current Version
12
12
 
13
- 0.0.5
13
+ 0.0.6
14
14
 
15
15
 
16
16
  ## Requirements
17
17
 
18
- * [Ruby on Rails](http://rubyonrails.org) > 3.0
18
+ * [Ruby on Rails](http://rubyonrails.org) > 3.0 and < 4.0
19
19
 
20
20
 
21
21
 
@@ -107,25 +107,34 @@ Paperclip options for default media queries and sizes.
107
107
 
108
108
  ```ruby
109
109
  has_attached_file :image, {
110
- styles: {
111
- tiny: "320x",
112
- small: "480x",
113
- medium: "768x",
114
- large: "1000x",
110
+ styles: {
111
+ tiny: "320x",
112
+ small: "480x",
113
+ medium: "768x",
114
+ large: "1000x",
115
115
  huge: "1600x",
116
- %s(tiny@2x) => "640x",
117
- %s(small@2x) => "960x",
118
- %s(medium@2x) => "1536x",
119
- %s(large@2x) => "2000x",
116
+ %s(tiny@2x) => "640x",
117
+ %s(small@2x) => "960x",
118
+ %s(medium@2x) => "1536x",
119
+ %s(large@2x) => "2000x",
120
120
  %s(large@2x) => "3200x"
121
121
  }
122
122
  ```
123
123
 
124
+ ## Configuration
125
+ - Retina support can be disabled by adding a configure block to your config
126
+ ```ruby
127
+ PictureTag.configure do |config|
128
+ config.display_high_def = false
129
+ end
130
+ ```
131
+
124
132
 
125
133
  ## TODO
126
134
 
127
135
  - Add optional paperclip integration functionality
128
- - Implement Retina support
136
+ - Intergrate with Travis.ci
137
+ - Implement Rails 4 support
129
138
 
130
139
 
131
140
  ## Authors
@@ -134,6 +143,7 @@ has_attached_file :image, {
134
143
  * Chad Crissman / [@crissmancd](https://github.com/crissmancd)
135
144
  * John Lucia / [@johnlucia](https://github.com/johnlucia)
136
145
  * Levi Brown / [@levibrown](https://github.com/levibrown)
146
+ * Colton Fent / [@colto](https://github.com/colto)
137
147
 
138
148
 
139
149
  ## Contributions
@@ -1,2 +1,21 @@
1
1
  require "picture_tag-rails/version"
2
2
  require 'picture_tag-rails/railtie'
3
+
4
+ require_relative "./picture_tag-rails/configuration"
5
+
6
+ module PictureTag
7
+
8
+ class << self
9
+ attr_accessor :configuration
10
+
11
+ def configuration
12
+ @configuration ||= Configuration.new
13
+ end
14
+
15
+ # Pattern inspired by http://robots.thoughtbot.com/mygem-configure-block/
16
+ def configure
17
+ #self.configuration ||= Configuration.new
18
+ yield(configuration)
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ module PictureTag
2
+ class Configuration
3
+
4
+ attr_accessor :display_high_def
5
+
6
+ def initialize
7
+ @display_high_def = true
8
+ end
9
+
10
+ end
11
+
12
+ end
@@ -1,3 +1,3 @@
1
1
  module PictureTag
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -1,6 +1,11 @@
1
1
  module PictureTag
2
+
2
3
  module ViewHelpers
3
4
 
5
+ def display_high_def
6
+ PictureTag.configuration.display_high_def
7
+ end
8
+
4
9
  def picture_tag(image_path, options={})
5
10
  sizes = determine_sizes(options)
6
11
 
@@ -11,7 +16,7 @@ module PictureTag
11
16
  html << add_default_source_and_image(image_path, sizes.last.first, options)
12
17
  html << "</picture>"
13
18
 
14
- html
19
+ raw html
15
20
  end
16
21
 
17
22
  def build_file_path(image_path, size, prefix_size=false, options={})
@@ -30,13 +35,14 @@ module PictureTag
30
35
 
31
36
  def build_source_tag(image_path, size, media_query=nil, options={})
32
37
  file = build_file_path(image_path, size, options[:prefix_size])
33
- file2x = build_file_path(image_path, "#{size}@2x", options[:prefix_size])
34
- srcset = image_path(file) + " 1x, "
35
- srcset << image_path(file2x) + " 2x"
38
+ file2x = build_file_path(image_path, "#{size}@2x", options[:prefix_size]) if display_high_def
39
+ srcset = image_path(file) + " 1x"
40
+ srcset = image_path(file) + " 1x, " if display_high_def
41
+ srcset << image_path(file2x) + " 2x" if display_high_def
36
42
  srcset = options[:default_image] if options[:default_image].eql?(image_path)
37
43
  "<source #{"media='#{media_query}' " if media_query}srcset='#{srcset}' />"
38
44
  end
39
-
45
+
40
46
  def add_default_source_and_image(image_path, size, options)
41
47
  prefix_size = options[:prefix_size]
42
48
  if options[:default_image]
@@ -47,7 +53,7 @@ module PictureTag
47
53
  options[:prefix_size] = false
48
54
  size = options[:default_size]
49
55
  end
50
-
56
+
51
57
  img_src = build_file_path(image_path, size, prefix_size, options)
52
58
  html = build_source_tag(image_path, size, nil, options)
53
59
  html << image_tag(img_src, normalize_options(options, image_path))
@@ -92,4 +98,4 @@ module PictureTag
92
98
  end
93
99
 
94
100
  end
95
- end
101
+ end
@@ -16,6 +16,6 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
-
20
- gem.add_dependency 'rails', '>= 3.0'
19
+
20
+ gem.add_dependency 'rails', '>= 3.0', '<4.0.0'
21
21
  end
@@ -1,75 +1,102 @@
1
1
  require 'spec_helper'
2
2
  describe PictureTag::ViewHelpers, :type => :helper do
3
-
3
+
4
+ describe "display_high_def" do
5
+ it "defaults to true" do
6
+ PictureTag.configuration.display_high_def.should be_true
7
+ end
8
+ end
9
+
4
10
  describe "split image path" do
5
11
  let(:split_image_path) { helper.split_image_path_from_extension("/path/something.s-original.jpg") }
6
12
  it "removes the -original" do
7
13
  split_image_path.first.should eq "/path/something.s"
8
14
  end
9
-
15
+
10
16
  it "splits jpg" do
11
17
  split_image_path.last.should eq "jpg"
12
18
  end
13
-
19
+
14
20
  end
15
-
21
+
16
22
  describe "building the source tag" do
17
-
23
+
18
24
  it "builds using a media query" do
19
25
  helper.build_source_tag('test.jpg', 'small', "(min-width: 100px)").
20
26
  should eq "<source media='(min-width: 100px)' srcset='/images/test-small.jpg 1x, /images/test-small@2x.jpg 2x' />"
21
27
  end
22
-
28
+
23
29
  it "builds without a media query" do
24
30
  helper.build_source_tag('/path/test.png', 'small').
25
31
  should eq "<source srcset='/path/test-small.png 1x, /path/test-small@2x.png 2x' />"
26
32
  end
27
-
33
+
34
+ context "when display_high_def is set to false" do
35
+
36
+ before do
37
+ PictureTag.configure do |config|
38
+ config.display_high_def = false
39
+ end
40
+ end
41
+
42
+ after do
43
+ PictureTag.configure do |config|
44
+ config.display_high_def = true
45
+ end
46
+ end
47
+
48
+
49
+ it "builds the source tag" do
50
+ helper.build_source_tag('/path/test.png', 'small').
51
+ should eq "<source srcset='/path/test-small.png 1x' />"
52
+ end
53
+ end
54
+
28
55
  it "builds without an external path" do
29
56
  helper.build_source_tag('http://www.image/path/test.png', 'small',"(min-width: 100px)").
30
57
  should eq "<source media='(min-width: 100px)' srcset='http://www.image/path/test-small.png 1x, http://www.image/path/test-small@2x.png 2x' />"
31
58
  end
32
-
59
+
33
60
  it "builds given a default image" do
34
61
  helper.build_source_tag('/images/test.png', 'small', nil, {:default_image => '/images/test.png'}).
35
62
  should eq "<source srcset='/images/test.png' />"
36
63
  end
37
-
64
+
38
65
  end
39
-
66
+
40
67
  describe "default source and image" do
41
68
  it "builds source and img" do
42
69
  helper.add_default_source_and_image('test.jpg', 'small', {}).
43
70
  should eq "<source srcset='/images/test-small.jpg 1x, /images/test-small@2x.jpg 2x' /><img alt=\"Test\" src=\"/images/test-small.jpg\" />"
44
71
  end
45
-
72
+
46
73
  it "lets you specify a default image size" do
47
74
  helper.add_default_source_and_image('test.jpg', 'any_size', {:default_size => :large}).
48
75
  should eq "<source srcset='/images/test-large.jpg 1x, /images/test-large@2x.jpg 2x' /><img alt=\"Test\" src=\"/images/test-large.jpg\" />"
49
76
  end
50
-
77
+
51
78
  it "lets you specify a default image path" do
52
79
  helper.add_default_source_and_image('test.jpg', 'large', {:default_image => '/images/test.png'}).
53
80
  should eq "<source srcset='/images/test.png' /><img alt=\"Test\" src=\"/images/test.png\" />"
54
81
  end
55
-
82
+
56
83
  it "adds a class to the img tag" do
57
84
  helper.add_default_source_and_image('test.jpg', 'small', {:class => "span2"}).
58
85
  should eq "<source srcset='/images/test-small.jpg 1x, /images/test-small@2x.jpg 2x' /><img alt=\"Test\" class=\"span2\" src=\"/images/test-small.jpg\" />"
59
86
  end
60
-
87
+
61
88
  end
62
-
89
+
63
90
  describe "determine sizes" do
64
91
  let(:sizes) { {:huge => "(min-width: 1600px)", :small => "(min-width: 500px)"} }
65
92
  it "puts the hash into a sorted array" do
66
93
  helper.determine_sizes(:sizes => sizes).should eq [[:huge, "(min-width: 1600px)"], [:small, "(min-width: 500px)"]]
67
94
  end
68
-
95
+
69
96
  it "excludes sizes larger than tha max_width" do
70
97
  helper.determine_sizes(:sizes => sizes, :max_width => "501px" ).should eq [[:small, "(min-width: 500px)"]]
71
98
  end
72
-
99
+
73
100
  it "keeps with an equal max width" do
74
101
  helper.determine_sizes(:sizes => sizes, :max_width => "500px" ).should eq [[:small, "(min-width: 500px)"]]
75
102
  end
@@ -77,9 +104,9 @@ describe PictureTag::ViewHelpers, :type => :helper do
77
104
  it "removes with a lesser max width" do
78
105
  helper.determine_sizes(:sizes => sizes, :max_width => "499px" ).should eq []
79
106
  end
80
-
107
+
81
108
  end
82
-
109
+
83
110
  describe "options" do
84
111
  def html
85
112
  "<picture>" +
@@ -95,11 +122,11 @@ describe PictureTag::ViewHelpers, :type => :helper do
95
122
 
96
123
 
97
124
  it "matches the complete html" do
98
- helper.picture_tag('/images/cat.jpg').should eq html
125
+ helper.picture_tag('/images/cat.jpg').should eq html
99
126
  end
100
127
 
101
128
  it "matches the complete html with an alt tag" do
102
- helper.picture_tag('/images/cat.jpg', :alt => "Kitty!").should eq html.gsub("Cat", "Kitty!")
129
+ helper.picture_tag('/images/cat.jpg', :alt => "Kitty!").should eq html.gsub("Cat", "Kitty!")
103
130
  end
104
131
 
105
132
  it "prefixes the size to the filename" do
@@ -117,11 +144,11 @@ describe PictureTag::ViewHelpers, :type => :helper do
117
144
  helper.picture_tag('/images/cat.jpg', :sizes => {:hidden => "(min-width: 1px)"}).
118
145
  should eq h
119
146
  end
120
-
147
+
121
148
  it "excludes source tags with a media query above the given amount" do
122
149
  helper.picture_tag("cat.jpg", :max_width => "500").split('source').should have(4).things
123
150
  end
124
-
151
+
125
152
  describe "prefixes the size to the filename" do
126
153
  it "without x" do
127
154
  helper.build_file_path('/path/test.png', 'small', true).
@@ -137,13 +164,13 @@ describe PictureTag::ViewHelpers, :type => :helper do
137
164
  helper.build_file_path('path/test.png', 'small@2x', true).
138
165
  should eq "path/small@2x-test.png"
139
166
  end
140
-
167
+
141
168
  it "without a path" do
142
169
  helper.build_file_path('test.png', 'small@2x', true).
143
170
  should eq "small@2x-test.png"
144
171
  end
145
-
172
+
146
173
  end
147
174
  end
148
-
149
- end
175
+
176
+ end
metadata CHANGED
@@ -1,32 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: picture_tag-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
5
- prerelease:
4
+ version: 0.0.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Bookis Smuin
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-01 00:00:00.000000000 Z
11
+ date: 2015-01-21 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.0'
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: 4.0.0
22
23
  type: :runtime
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3.0'
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: 4.0.0
30
33
  description: Rails View Helper picture_tag extension
31
34
  email:
32
35
  - vegan.bookis@gmail.com
@@ -42,6 +45,7 @@ files:
42
45
  - README.md
43
46
  - Rakefile
44
47
  - lib/picture_tag-rails.rb
48
+ - lib/picture_tag-rails/configuration.rb
45
49
  - lib/picture_tag-rails/railtie.rb
46
50
  - lib/picture_tag-rails/version.rb
47
51
  - lib/picture_tag-rails/view_helpers.rb
@@ -50,33 +54,26 @@ files:
50
54
  - spec/spec_helper.rb
51
55
  homepage: ''
52
56
  licenses: []
57
+ metadata: {}
53
58
  post_install_message:
54
59
  rdoc_options: []
55
60
  require_paths:
56
61
  - lib
57
62
  required_ruby_version: !ruby/object:Gem::Requirement
58
- none: false
59
63
  requirements:
60
- - - ! '>='
64
+ - - '>='
61
65
  - !ruby/object:Gem::Version
62
66
  version: '0'
63
- segments:
64
- - 0
65
- hash: -2348883054798486407
66
67
  required_rubygems_version: !ruby/object:Gem::Requirement
67
- none: false
68
68
  requirements:
69
- - - ! '>='
69
+ - - '>='
70
70
  - !ruby/object:Gem::Version
71
71
  version: '0'
72
- segments:
73
- - 0
74
- hash: -2348883054798486407
75
72
  requirements: []
76
73
  rubyforge_project:
77
- rubygems_version: 1.8.24
74
+ rubygems_version: 2.4.3
78
75
  signing_key:
79
- specification_version: 3
76
+ specification_version: 4
80
77
  summary: A Rails view helper extension to generate the proposed HTML5 picture tag
81
78
  markup.
82
79
  test_files: