r2 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d5ab6e294013e8786fc50aae34d70baa7a62f10b
4
- data.tar.gz: a8b49f9b4b9407050145114607f23c7d391c3a6a
3
+ metadata.gz: f8550ffae3d9358c1257e8163f6a5d03d945d09f
4
+ data.tar.gz: 3a0e2808776280f8c3a87de5d1cf7baa5a18af8d
5
5
  SHA512:
6
- metadata.gz: f3950af1429c22b800a0c94a297ee427b95c125dbc806f516c946f3f3c1855d3ff8a08f6adc01c7515f02e66f32e793243efe48ed558fb718ffaf65140efe086
7
- data.tar.gz: b36f3c6a247163831b299922ba4114067b5052eaef920cd03f51c008fa9c94f6f76e7c60d3c9217573f1134a12c68463e1ba2d45390fb1b8b985c1dcf720585c
6
+ metadata.gz: d1de570c1fc501a5e278d2757bba45aacce956ef3d39660e9e3f661de8bbf7812391729407363882d9a98bb386bbff37ec8de588f85e9b49592679d3175aac1c
7
+ data.tar.gz: 6c80710ffed22c49310fec1766d478e4df07c10af0a9bed75ec3a1ea1c02c18f3da29d311517355fcff44c374fab99c183ca9fc39c034a18300c922938f83f96
data/README.md CHANGED
@@ -23,6 +23,7 @@ Report bugs in the github project at http://github.com/mzsanford/r2rb
23
23
 
24
24
  ## Change Log
25
25
 
26
+ * v0.2.6 - Handle multi-row selectors (fix from [@n0nick](https://github.com/n0nick))
26
27
  * v0.2.5 - Handle `background:` shorthand
27
28
  * v0.2.4 - Handle `url()` properties better
28
29
  * [BUG] - Handle `url()` without embedded semi-colons and with trailing parameters
data/lib/r2.rb CHANGED
@@ -110,7 +110,7 @@ module R2
110
110
  return '' unless css
111
111
 
112
112
  css.gsub(/\/\*[\s\S]+?\*\//, ''). # comments
113
- gsub(/[\n\r]/, ''). # line breaks and carriage returns
113
+ gsub(/[\n\r]+/, ' '). # line breaks and carriage returns
114
114
  gsub(/\s*([:;,\{\}])\s*/, '\1'). # space between selectors, declarations, properties and values
115
115
  gsub(/\s+/, ' '). # replace multiple spaces with single spaces
116
116
  gsub(/(\A\s+|\s+\z)/, '') # leading or trailing spaces
@@ -1,3 +1,3 @@
1
1
  module R2
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
data/r2.gemspec CHANGED
@@ -14,8 +14,9 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.rubyforge_project = "r2"
16
16
 
17
- s.add_development_dependency 'rake'
18
- s.add_development_dependency 'rspec', '~> 2.13.0'
17
+ s.add_development_dependency 'rake', '~> 0'
18
+ s.add_development_dependency 'rspec', '~> 3.4', '>= 3.4.0'
19
+ s.add_development_dependency 'rspec-mocks', '~> 3.4.0', '>= 3.4.0'
19
20
 
20
21
  s.files = `git ls-files`.split("\n")
21
22
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -8,8 +8,8 @@ describe R2 do
8
8
  let(:css) { "body { direction: rtl; }" }
9
9
 
10
10
  it "provides a shortcut to .new#r2" do
11
- R2::Swapper.should_receive(:new).and_return(r2)
12
- r2.should_receive(:r2).with(css)
11
+ allow(R2::Swapper).to receive(:new).and_return(r2)
12
+ expect(r2).to receive(:r2).with(css)
13
13
  R2.r2(css)
14
14
  end
15
15
  end
@@ -21,7 +21,7 @@ describe R2::Swapper do
21
21
 
22
22
  describe "#r2" do
23
23
  it "processes CSS" do
24
- r2.r2("/* comment */\nbody { direction: rtl; }\nimg { padding: 4px;}").should == "body{direction:ltr;}img{padding:4px;}"
24
+ expect(r2.r2("/* comment */\nbody { direction: rtl; }\nimg { padding: 4px;}")).to eq("body{direction:ltr;}img{padding:4px;}")
25
25
  end
26
26
 
27
27
  it "handles media queries" do
@@ -37,7 +37,7 @@ describe R2::Swapper do
37
37
 
38
38
  flipped_css = r2.r2(css)
39
39
 
40
- flipped_css.should == expected_result
40
+ expect(flipped_css).to eq(expected_result)
41
41
  end
42
42
 
43
43
  it "handles background-image declarations" do
@@ -52,7 +52,7 @@ describe R2::Swapper do
52
52
 
53
53
  flipped_css = r2.r2(css)
54
54
 
55
- flipped_css.should == expected_result
55
+ expect(flipped_css).to eq(expected_result)
56
56
  end
57
57
 
58
58
  # background: #000 url("spree/frontend/cart.png") no-repeat left center;
@@ -71,7 +71,7 @@ describe R2::Swapper do
71
71
 
72
72
  flipped_css = r2.r2(css)
73
73
 
74
- flipped_css.should == expected_result
74
+ expect(flipped_css).to eq(expected_result)
75
75
  end
76
76
 
77
77
 
@@ -90,146 +90,165 @@ describe R2::Swapper do
90
90
 
91
91
  flipped_css = r2.r2(css)
92
92
 
93
- flipped_css.should == expected_result
93
+ expect(flipped_css).to eq(expected_result)
94
+ end
95
+
96
+ it "handles newline correctly" do
97
+ css =
98
+ "fieldset[disabled]\n" +
99
+ "input[type=\"checkbox\"], fieldset[disabled]\n" +
100
+ ".radio {\n" +
101
+ " cursor: not-allowed; }"
102
+
103
+ expected =
104
+ 'fieldset[disabled] input[type="checkbox"],' +
105
+ 'fieldset[disabled] .radio' +
106
+ '{cursor:not-allowed;}'
107
+
108
+ expect(r2.r2(css)).to eq(expected)
94
109
  end
95
110
  end
96
111
 
97
112
  describe "#declaration_swap" do
98
113
  it "should handle nil" do
99
- r2.declaration_swap(nil).should == ''
114
+ expect(r2.declaration_swap(nil)).to eq('')
100
115
  end
101
116
 
102
117
  it "should handle invalid declarations" do
103
- r2.declaration_swap("not a decl").should == ''
118
+ expect(r2.declaration_swap("not a decl")).to eq('')
104
119
  end
105
120
 
106
121
  it "should swap a swappable parameter" do
107
- r2.declaration_swap("padding-right:4px").should == 'padding-left:4px;'
122
+ expect(r2.declaration_swap("padding-right:4px")).to eq('padding-left:4px;')
108
123
  end
109
124
 
110
125
  it "should swap a swappable quad parameter" do
111
- r2.declaration_swap("padding:1px 2px 3px 4px").should == 'padding:1px 4px 3px 2px;'
126
+ expect(r2.declaration_swap("padding:1px 2px 3px 4px")).to eq('padding:1px 4px 3px 2px;')
112
127
  end
113
128
 
114
129
  it "should ignore other parameters" do
115
- r2.declaration_swap("foo:bar").should == 'foo:bar;'
130
+ expect(r2.declaration_swap("foo:bar")).to eq('foo:bar;')
116
131
  end
117
132
  end
118
133
 
119
134
  describe "#minimize" do
120
135
  it "should handle nil" do
121
- r2.minimize(nil).should == ""
136
+ expect(r2.minimize(nil)).to eq("")
122
137
  end
123
138
 
124
139
  it "should strip comments" do
125
- r2.minimize("/* comment */foo").should == "foo"
140
+ expect(r2.minimize("/* comment */foo")).to eq("foo")
141
+ end
142
+
143
+ it "should convert newlines to spaces" do
144
+ expect(r2.minimize("foo\nbar")).to eq("foo bar")
126
145
  end
127
146
 
128
- it "should remove newlines" do
129
- r2.minimize("foo\nbar").should == "foobar"
147
+ it "should convert multiple newlines to a space" do
148
+ expect(r2.minimize("foo\n\n\nbar")).to eq("foo bar")
130
149
  end
131
150
 
132
- it "should remove carriage returns" do
133
- r2.minimize("foo\rbar").should == "foobar"
151
+ it "should convert carriage returns to spaces" do
152
+ expect(r2.minimize("foo\rbar")).to eq("foo bar")
134
153
  end
135
154
 
136
155
  it "should collapse multiple spaces into one" do
137
- r2.minimize("foo bar").should == "foo bar"
156
+ expect(r2.minimize("foo bar")).to eq("foo bar")
138
157
  end
139
158
  end
140
159
 
141
160
  describe "#direction_swap" do
142
161
  it "should swap 'rtl' to 'ltr'" do
143
- r2.direction_swap('rtl').should == 'ltr'
162
+ expect(r2.direction_swap('rtl')).to eq('ltr')
144
163
  end
145
164
 
146
165
  it "should swap 'ltr' to 'rtl'" do
147
- r2.direction_swap('ltr').should == 'rtl'
166
+ expect(r2.direction_swap('ltr')).to eq('rtl')
148
167
  end
149
168
 
150
169
  it "should ignore values other than 'ltr' and 'rtl'" do
151
170
  [nil, '', 'foo'].each do |val|
152
- r2.direction_swap(val).should == val
171
+ expect(r2.direction_swap(val)).to eq(val)
153
172
  end
154
173
  end
155
174
  end
156
175
 
157
176
  describe "#side_swap" do
158
177
  it "should swap 'right' to 'left'" do
159
- r2.side_swap('right').should == 'left'
178
+ expect(r2.side_swap('right')).to eq('left')
160
179
  end
161
180
 
162
181
  it "should swap 'left' to 'right'" do
163
- r2.side_swap('left').should == 'right'
182
+ expect(r2.side_swap('left')).to eq('right')
164
183
  end
165
184
 
166
185
  it "should ignore values other than 'left' and 'right'" do
167
186
  [nil, '', 'foo'].each do |val|
168
- r2.side_swap(val).should == val
187
+ expect(r2.side_swap(val)).to eq(val)
169
188
  end
170
189
  end
171
190
  end
172
191
 
173
192
  describe "#quad_swap" do
174
193
  it "should swap a valid quad value" do
175
- r2.quad_swap("1px 2px 3px 4px").should == "1px 4px 3px 2px"
194
+ expect(r2.quad_swap("1px 2px 3px 4px")).to eq("1px 4px 3px 2px")
176
195
  end
177
196
 
178
197
  it "should skip a pair value" do
179
- r2.quad_swap("1px 2px").should == "1px 2px"
198
+ expect(r2.quad_swap("1px 2px")).to eq("1px 2px")
180
199
  end
181
200
  end
182
201
 
183
202
  describe "#shadow_swap" do
184
203
  it "should swap a 2 arg value" do
185
- r2.shadow_swap("1px 2px").should == "-1px 2px"
204
+ expect(r2.shadow_swap("1px 2px")).to eq("-1px 2px")
186
205
  end
187
206
 
188
207
  it "should swap a 2 arg value from rtl to ltr" do
189
- r2.shadow_swap("-1px 2px").should == "1px 2px"
208
+ expect(r2.shadow_swap("-1px 2px")).to eq("1px 2px")
190
209
  end
191
210
 
192
211
  it "should swap a 3 arg value" do
193
- r2.shadow_swap("1px 2px #000").should == "-1px 2px #000"
212
+ expect(r2.shadow_swap("1px 2px #000")).to eq("-1px 2px #000")
194
213
  end
195
214
 
196
215
  it "should swap a 4 arg value" do
197
- r2.shadow_swap("1px 2px 3px 4px").should == "-1px 2px 3px 4px"
216
+ expect(r2.shadow_swap("1px 2px 3px 4px")).to eq("-1px 2px 3px 4px")
198
217
  end
199
218
 
200
219
  it "should swap a 5 arg value" do
201
- r2.shadow_swap("1px 2px 3px 4px #000").should == "-1px 2px 3px 4px #000"
220
+ expect(r2.shadow_swap("1px 2px 3px 4px #000")).to eq("-1px 2px 3px 4px #000")
202
221
  end
203
222
 
204
223
  it "should swap a 6 arg value" do
205
- r2.shadow_swap("1px 2px 3px 4px #000 inset").should == "-1px 2px 3px 4px #000 inset"
224
+ expect(r2.shadow_swap("1px 2px 3px 4px #000 inset")).to eq("-1px 2px 3px 4px #000 inset")
206
225
  end
207
226
 
208
227
  it "should swap value starting with inset" do
209
- r2.shadow_swap("inset 1px 2px").should == "-1px 2px inset"
228
+ expect(r2.shadow_swap("inset 1px 2px")).to eq("-1px 2px inset")
210
229
  end
211
230
 
212
231
  it "should swap multiple values" do
213
- r2.shadow_swap("inset 1px 2px, 1px 2px #000").should == "-1px 2px inset, -1px 2px #000"
232
+ expect(r2.shadow_swap("inset 1px 2px, 1px 2px #000")).to eq("-1px 2px inset, -1px 2px #000")
214
233
  end
215
234
 
216
235
  it "should swap multiple values (with rgba)" do
217
- r2.shadow_swap("inset 1px 2px rgba(0,0,0,0.2), 1px 2px #000").should == "-1px 2px rgba(0,0,0,0.2) inset, -1px 2px #000"
236
+ expect(r2.shadow_swap("inset 1px 2px rgba(0,0,0,0.2), 1px 2px #000")).to eq("-1px 2px rgba(0,0,0,0.2) inset, -1px 2px #000")
218
237
  end
219
238
 
220
239
  end
221
240
 
222
241
  describe "#border_radius_swap" do
223
242
  it "should swap a valid quad value" do
224
- r2.border_radius_swap("1px 2px 3px 4px").should == "2px 1px 4px 3px"
243
+ expect(r2.border_radius_swap("1px 2px 3px 4px")).to eq("2px 1px 4px 3px")
225
244
  end
226
245
 
227
246
  it "should skip a triple value" do
228
- r2.border_radius_swap("1px 2px 3px").should == "2px 1px 2px 3px"
247
+ expect(r2.border_radius_swap("1px 2px 3px")).to eq("2px 1px 2px 3px")
229
248
  end
230
249
 
231
250
  it "should skip a pair value" do
232
- r2.border_radius_swap("1px 2px").should == "2px 1px"
251
+ expect(r2.border_radius_swap("1px 2px")).to eq("2px 1px")
233
252
  end
234
253
  end
235
254
 
@@ -237,23 +256,23 @@ describe R2::Swapper do
237
256
 
238
257
  context "with a single value" do
239
258
  it "should ignore a named-vertical" do
240
- r2.background_position_swap('top').should == 'top'
259
+ expect(r2.background_position_swap('top')).to eq('top')
241
260
  end
242
261
 
243
262
  it "should swap a named-horizontal 'left'" do
244
- r2.background_position_swap('left').should == 'right'
263
+ expect(r2.background_position_swap('left')).to eq('right')
245
264
  end
246
265
 
247
266
  it "should swap a named-horizontal 'right'" do
248
- r2.background_position_swap('right').should == 'left'
267
+ expect(r2.background_position_swap('right')).to eq('left')
249
268
  end
250
269
 
251
270
  it "should invert a percentage" do
252
- r2.background_position_swap('25%').should == '75%'
271
+ expect(r2.background_position_swap('25%')).to eq('75%')
253
272
  end
254
273
 
255
274
  it "should convert a unit value" do
256
- r2.background_position_swap('25px').should == 'right 25px center'
275
+ expect(r2.background_position_swap('25px')).to eq('right 25px center')
257
276
  end
258
277
  end
259
278
 
@@ -264,35 +283,35 @@ describe R2::Swapper do
264
283
  # See: http://dev.w3.org/csswg/css3-background/#background-position
265
284
 
266
285
  it "should swap named-horizontal and ignore named-vertical" do
267
- r2.background_position_swap('right bottom').should == 'left bottom'
286
+ expect(r2.background_position_swap('right bottom')).to eq('left bottom')
268
287
  end
269
288
 
270
289
  it "should swap named-horizontal and ignore unit-vertical" do
271
- r2.background_position_swap('left 100px').should == 'right 100px'
290
+ expect(r2.background_position_swap('left 100px')).to eq('right 100px')
272
291
  end
273
292
 
274
293
  it "should convert unit-horizontal" do
275
- r2.background_position_swap('100px center').should == 'right 100px center'
294
+ expect(r2.background_position_swap('100px center')).to eq('right 100px center')
276
295
  end
277
296
 
278
297
  it "should swap named-horizontal and ignore percentage-vertical" do
279
- r2.background_position_swap('left 0%').should == 'right 0%'
298
+ expect(r2.background_position_swap('left 0%')).to eq('right 0%')
280
299
  end
281
300
 
282
301
  it "should invert first percentage-horizontal value in a pair" do
283
- r2.background_position_swap('25% 100%').should == '75% 100%'
302
+ expect(r2.background_position_swap('25% 100%')).to eq('75% 100%')
284
303
  end
285
304
  end
286
305
 
287
306
  context "with a triplet of values" do
288
307
  it "should swap named-horizontal" do
289
- r2.background_position_swap('left 20px center').should == 'right 20px center'
308
+ expect(r2.background_position_swap('left 20px center')).to eq('right 20px center')
290
309
  end
291
310
  end
292
311
 
293
312
  context "with a quad of values" do
294
313
  it "should swap named-horizontal value" do
295
- r2.background_position_swap('bottom 10px left 20px').should == 'bottom 10px right 20px'
314
+ expect(r2.background_position_swap('bottom 10px left 20px')).to eq('bottom 10px right 20px')
296
315
  end
297
316
  end
298
317
  end
metadata CHANGED
@@ -1,43 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Sanford
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-28 00:00:00.000000000 Z
11
+ date: 2015-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
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: :development
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
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.13.0
33
+ version: '3.4'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 3.4.0
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - ~>
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '3.4'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 3.4.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec-mocks
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 3.4.0
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 3.4.0
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: 3.4.0
64
+ - - ">="
39
65
  - !ruby/object:Gem::Version
40
- version: 2.13.0
66
+ version: 3.4.0
41
67
  description: CSS flipper for right-to-left processing. A Ruby port of https://github.com/ded/r2
42
68
  email:
43
69
  - matt@twitter.com
@@ -46,8 +72,8 @@ executables:
46
72
  extensions: []
47
73
  extra_rdoc_files: []
48
74
  files:
49
- - .gitignore
50
- - .travis.yml
75
+ - ".gitignore"
76
+ - ".travis.yml"
51
77
  - Gemfile
52
78
  - Guardfile
53
79
  - LICENSE
@@ -68,17 +94,17 @@ require_paths:
68
94
  - lib
69
95
  required_ruby_version: !ruby/object:Gem::Requirement
70
96
  requirements:
71
- - - '>='
97
+ - - ">="
72
98
  - !ruby/object:Gem::Version
73
99
  version: '0'
74
100
  required_rubygems_version: !ruby/object:Gem::Requirement
75
101
  requirements:
76
- - - '>='
102
+ - - ">="
77
103
  - !ruby/object:Gem::Version
78
104
  version: '0'
79
105
  requirements: []
80
106
  rubyforge_project: r2
81
- rubygems_version: 2.0.3
107
+ rubygems_version: 2.2.2
82
108
  signing_key:
83
109
  specification_version: 4
84
110
  summary: CSS flipper for right-to-left processing