apropos 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 108512a68128ab79c042acc053dfdbaa25acbd0a
4
- data.tar.gz: 992deab384d11673b20ae55c10e783f78c8d03d6
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZDRiY2QyOWQwNzJiODdlNTE1OTdkZDFlOWM3NDhhOTM3MGIzMjZlNg==
5
+ data.tar.gz: !binary |-
6
+ YzFkYmUzZWM0YTgwZDM5MjdhZDgyYTVmYjZkOTY2YmYzODUwZDJjMw==
5
7
  SHA512:
6
- metadata.gz: 87339533a21983bf2ef19b408f18864fe3ef345cf3319f39e0097b232b7c703b728e260eef746e3de5e23767812af5523f45f204aa21c7b1cf3c43e80e8ae253
7
- data.tar.gz: 7d6f80d6f12b3d425c307582750e928df2e932534b6cfcfb8ad6dc7efadae6e0737387016393d159c5d1a8e1e31efacbb914aeffa3f726df927f38c7dd137a8b
8
+ metadata.gz: !binary |-
9
+ NDk0ZTA2MmVmNmRlYzFiN2Y1ZGE0YzQ3YjVjMTNhOWI0ZmQyMDIzZWRmZmE3
10
+ ZWM3NjEyNjNmY2JmNzUwYjk0MjViYjViODVhZTg2NjE1YzEzMTk5OGQwNmUx
11
+ ZmIzNGVmMmRiNzRiMmFhZDc0YjAwNDJiMWRkZmQ1MWJlNGM0OGU=
12
+ data.tar.gz: !binary |-
13
+ ZjUwYjM3ZWQ2ZjI0ZWViZTllZDVhZDdhMTMzOTIwY2QxZmUzNTI0ZTkyMjA4
14
+ YWFjZGY3ZDI0M2ZiOGYxMjU3YWZjYjM1ZGVmZDA0ZjU2NDExNzljNDFhMjU0
15
+ YWJjYjhhY2ZhNmViY2RlYjhmNjY4ZWI5YmEwN2QxYzcwNzc3YTE=
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --order rand
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ - jruby-19mode
6
+ - rbx-19mode
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.1 (2013-11-18)
4
+
5
+ Minor fix release for full Compass compatibility.
6
+
3
7
  ## 0.1.0 (2013-08-21)
4
8
 
5
9
  Initial release.
data/README.md CHANGED
@@ -2,8 +2,12 @@
2
2
 
3
3
  Apropos helps your site serve up the appropriate image for every visitor. Serving multiple versions of an image in responsive and/or localized web sites can be a chore, but Apropos simplifies and automates this task. Instead of manually writing a lot of CSS rules to swap different images, Apropos generates CSS for you based on a simple file naming convention.
4
4
 
5
+ [![Build Status](https://travis-ci.org/square/apropos.png)](https://travis-ci.org/square/apropos)
6
+
5
7
  ## Installation
6
8
 
9
+ Apropos requires Ruby 1.9 or greater.
10
+
7
11
  Add this line to your application's Gemfile:
8
12
 
9
13
  gem 'apropos'
@@ -51,7 +51,7 @@ module Apropos
51
51
 
52
52
  def images_dir
53
53
  config = Compass.configuration
54
- Pathname.new(config.project_path).join(config.images_dir || '')
54
+ Pathname.new(config.images_path || config.project_path)
55
55
  end
56
56
 
57
57
  def convert_to_sass_value(val)
@@ -19,7 +19,7 @@ module Apropos
19
19
 
20
20
  def variant_paths
21
21
  paths = {}
22
- Dir.glob(@basedir.join(variant_path_glob)).each do |path|
22
+ self.class.glob(@basedir.join(variant_path_glob)).each do |path|
23
23
  key = code_fragment(path)
24
24
  paths[key] = remove_basedir(path)
25
25
  end
@@ -54,5 +54,10 @@ module Apropos
54
54
  def extname
55
55
  @extname ||= File.extname(@path)
56
56
  end
57
+
58
+ # Wrapper for Dir.glob to make test stubbing cleaner
59
+ def self.glob(path)
60
+ Dir.glob(path)
61
+ end
57
62
  end
58
63
  end
@@ -1,3 +1,3 @@
1
1
  module Apropos
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -2,20 +2,20 @@ require_relative "../spec_helper.rb"
2
2
 
3
3
  describe Apropos do
4
4
  def stub_files(*files)
5
- Dir.stub(:glob).with(Pathname.new("/project/images/foo.*.jpg")).and_return(files)
5
+ Apropos::Set.stub(:glob).with(Pathname.new("#{images_dir}/foo.*.jpg")).and_return(files)
6
6
  end
7
7
 
8
+ let(:images_dir) { '/project/images' }
9
+ let(:project_dir) { nil }
8
10
  let(:rules) { Apropos.image_variant_rules("foo.jpg") }
9
11
 
10
- before :each do
11
- Compass.configuration.stub(:project_path).and_return('/project')
12
- Compass.configuration.stub(:images_dir).and_return('images')
12
+ before do
13
+ Compass.configuration.stub(:images_path).and_return(images_dir) if images_dir
14
+ Compass.configuration.stub(:project_path).and_return(project_dir) if project_dir
13
15
  end
14
16
 
15
17
  describe ".add_class_image_variant" do
16
- after :each do
17
- Apropos.clear_image_variants
18
- end
18
+ after { Apropos.clear_image_variants }
19
19
 
20
20
  it "adds a simple class variant" do
21
21
  Apropos.add_class_image_variant('alt', 'alternate')
@@ -182,4 +182,17 @@ describe Apropos do
182
182
  }.to raise_exception
183
183
  end
184
184
  end
185
+
186
+ describe ".images_dir" do
187
+ context "with images_path defined" do
188
+ let(:images_dir) { '/path/to/images' }
189
+ it { Apropos.images_dir.to_s.should == images_dir }
190
+ end
191
+
192
+ context "with images_path undefined" do
193
+ let(:images_dir) { nil }
194
+ let(:project_dir) { '/path/to/project' }
195
+ it { Apropos.images_dir.to_s.should == project_dir }
196
+ end
197
+ end
185
198
  end
@@ -1,18 +1,31 @@
1
1
  require 'spec_helper'
2
+ require 'fileutils'
3
+ require 'tmpdir'
2
4
 
3
5
  describe 'stylesheets' do
4
- let(:import_options) {
5
- {style: :compact, load_paths: [Apropos::STYLESHEETS_DIR], syntax: :scss}
6
- }
7
- let(:css_file) {
8
- Sass::Engine.new(@scss_file, import_options).render
6
+ let(:import_options) { {style: :compact, load_paths: [Apropos::STYLESHEETS_DIR], syntax: :scss} }
7
+ let(:css_file) { Sass::Engine.new(@scss_file, import_options).render }
8
+ let(:images_dir) {
9
+ Dir.mktmpdir('apropos').tap do |dir|
10
+ at_exit { FileUtils.remove_entry_secure(dir) }
11
+ end
9
12
  }
10
13
 
11
- def stub_files(*files)
12
- Dir.stub(:glob).with(Pathname.new("hero.*.jpg")).and_return(files)
14
+ before do
15
+ Compass.configuration.stub(:images_path).and_return(images_dir)
16
+ Compass.configuration.stub(:asset_cache_buster).and_return( lambda { |path| nil } )
17
+ end
18
+
19
+ after { Apropos.clear_image_variants }
20
+
21
+ def stub_files(files)
22
+ FileUtils.cd(images_dir) do
23
+ FileUtils.touch(files)
24
+ end
13
25
  end
14
26
 
15
27
  it "can be imported" do
28
+ stub_files(%w[hero.jpg])
16
29
  @scss_file = %Q{
17
30
  @import "apropos";
18
31
  .foo {
@@ -24,7 +37,7 @@ describe 'stylesheets' do
24
37
 
25
38
  describe "hidpi stylesheet" do
26
39
  it "generates default hidpi rules" do
27
- stub_files("./hero.2x.jpg")
40
+ stub_files(%w[hero.jpg hero.2x.jpg])
28
41
  @scss_file = %Q{
29
42
  @import "apropos";
30
43
  .foo {
@@ -36,7 +49,7 @@ describe 'stylesheets' do
36
49
  end
37
50
 
38
51
  it "allows customizing hidpi extension and query" do
39
- stub_files("./hero.hidpi.jpg")
52
+ stub_files(%w[hero.jpg hero.hidpi.jpg])
40
53
  @scss_file = %Q{
41
54
  $apropos-hidpi-extension: 'hidpi';
42
55
  $apropos-hidpi-query: '(min-resolution: 300dpi)';
@@ -53,7 +66,7 @@ describe 'stylesheets' do
53
66
 
54
67
  describe "breakpoints stylesheet" do
55
68
  before :each do
56
- stub_files("./hero.medium.jpg", "./hero.large.jpg")
69
+ stub_files(%w[hero.jpg hero.medium.jpg hero.large.jpg])
57
70
  end
58
71
 
59
72
  it "doesn't generate any defaults" do
@@ -68,7 +81,7 @@ describe 'stylesheets' do
68
81
  end
69
82
 
70
83
  it "allows setting breakpoints" do
71
- stub_files("./hero.medium.jpg", "./hero.large.jpg")
84
+ stub_files(%w[hero.jpg hero.medium.jpg hero.large.jpg])
72
85
  @scss_file = %Q{
73
86
  $apropos-breakpoints: (medium, 768px), (large, 1024px);
74
87
  @import "apropos";
@@ -83,7 +96,7 @@ describe 'stylesheets' do
83
96
 
84
97
  describe "breakpoints and hidpi" do
85
98
  it "can be combined" do
86
- stub_files("./hero.large.2x.jpg", "./hero.medium.2x.jpg")
99
+ stub_files(%w[hero.jpg hero.large.2x.jpg hero.medium.2x.jpg])
87
100
  @scss_file = %Q{
88
101
  $apropos-breakpoints: (medium, 768px), (large, 1024px);
89
102
  @import "apropos";
@@ -97,8 +110,8 @@ describe 'stylesheets' do
97
110
 
98
111
  it "sorts breakpoints vs. retina correctly" do
99
112
  # filesystem sort order
100
- files = %w[2x large.2x large medium.2x medium].map {|f| "./hero.#{f}.jpg" }
101
- stub_files(*files)
113
+ files = %w[2x large.2x large medium.2x medium].map {|f| "hero.#{f}.jpg" } + %w[hero.jpg]
114
+ stub_files(files)
102
115
  @scss_file = %Q{
103
116
  $apropos-breakpoints: (medium, 768px), (large, 1024px);
104
117
  @import "apropos";
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apropos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Gilder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-21 00:00:00.000000000 Z
11
+ date: 2013-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: compass
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
@@ -42,14 +42,14 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
@@ -70,28 +70,28 @@ dependencies:
70
70
  name: cane
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ! '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ! '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ! '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: Apropos helps your site serve up the appropriate image for every visitor.
@@ -106,6 +106,8 @@ extensions: []
106
106
  extra_rdoc_files: []
107
107
  files:
108
108
  - .gitignore
109
+ - .rspec
110
+ - .travis.yml
109
111
  - CHANGELOG.md
110
112
  - Gemfile
111
113
  - LICENSE.txt
@@ -144,17 +146,17 @@ require_paths:
144
146
  - lib
145
147
  required_ruby_version: !ruby/object:Gem::Requirement
146
148
  requirements:
147
- - - '>='
149
+ - - ! '>='
148
150
  - !ruby/object:Gem::Version
149
151
  version: '0'
150
152
  required_rubygems_version: !ruby/object:Gem::Requirement
151
153
  requirements:
152
- - - '>='
154
+ - - ! '>='
153
155
  - !ruby/object:Gem::Version
154
156
  version: '0'
155
157
  requirements: []
156
158
  rubyforge_project:
157
- rubygems_version: 2.0.2
159
+ rubygems_version: 2.1.3
158
160
  signing_key:
159
161
  specification_version: 4
160
162
  summary: Apropos helps your site serve up the appropriate image for every visitor.