style_train 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/style_train/sheet.rb +67 -39
- data/spec/sheet_spec.rb +47 -6
- data/style_train.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/lib/style_train/sheet.rb
CHANGED
@@ -112,11 +112,15 @@ CSS
|
|
112
112
|
|
113
113
|
def background( opts )
|
114
114
|
str = ""
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
115
|
+
if opts.is_a?(Hash)
|
116
|
+
str << property('background-color', Color.new(opts[:color])) if opts[:color]
|
117
|
+
str << property('background-image', "url('#{opts[:image]}')") if opts[:image]
|
118
|
+
str << property('background-position', opts[:position]) if opts[:position]
|
119
|
+
str << property('background-attachment', opts[:attachment]) if opts[:attachment]
|
120
|
+
str << property('background-repeat', background_repeat_value(opts[:repeat])) if opts[:repeat]
|
121
|
+
else
|
122
|
+
str << property('background', opts )
|
123
|
+
end
|
120
124
|
str
|
121
125
|
end
|
122
126
|
|
@@ -131,32 +135,51 @@ CSS
|
|
131
135
|
end
|
132
136
|
end
|
133
137
|
|
134
|
-
def border(
|
138
|
+
def border(*args)
|
139
|
+
str = ""
|
140
|
+
if args.size == 1
|
141
|
+
opts = args.first
|
142
|
+
else
|
143
|
+
opts = args.last || {}
|
144
|
+
none = true
|
145
|
+
end
|
146
|
+
|
147
|
+
|
135
148
|
if opts.is_a?(Hash)
|
136
149
|
value = border_value(opts)
|
137
150
|
if only = opts[:only]
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
str << property( "border-#{type}", value )
|
142
|
-
end
|
143
|
-
str
|
144
|
-
else
|
145
|
-
property "border-#{only}", value
|
151
|
+
Array(only).flatten.each do |side|
|
152
|
+
value = :none if none
|
153
|
+
str << property("border-#{side}", value)
|
146
154
|
end
|
147
|
-
else
|
148
|
-
property "border", value
|
155
|
+
else
|
156
|
+
str << property( "border", value )
|
149
157
|
end
|
150
158
|
else
|
151
|
-
property "border", opts
|
159
|
+
str << property( "border", opts )
|
152
160
|
end
|
161
|
+
|
162
|
+
str
|
163
|
+
end
|
164
|
+
|
165
|
+
['left', 'right', 'top', 'bottom'].each do |side|
|
166
|
+
class_eval <<-RUBY
|
167
|
+
def border_#{side}(opts={})
|
168
|
+
property('border-#{side}', border_value(opts))
|
169
|
+
end
|
170
|
+
RUBY
|
153
171
|
end
|
154
172
|
|
173
|
+
|
155
174
|
def border_value(opts)
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
175
|
+
if opts.is_a?(Hash)
|
176
|
+
color = opts[:color] || 'black'
|
177
|
+
style = opts[:style] || 'solid'
|
178
|
+
width = opts[:width] || opts[:size] || '1px'
|
179
|
+
"#{width} #{style} #{color}"
|
180
|
+
else
|
181
|
+
opts.to_s
|
182
|
+
end
|
160
183
|
end
|
161
184
|
|
162
185
|
def outline(opts={})
|
@@ -201,33 +224,29 @@ CSS
|
|
201
224
|
|
202
225
|
def margin(*opts)
|
203
226
|
opts = opts.size == 1 ? opts.first : opts
|
204
|
-
if opts.is_a?(
|
205
|
-
|
206
|
-
|
207
|
-
|
227
|
+
if opts.is_a?(Hash)
|
228
|
+
str = ""
|
229
|
+
str << property('margin-left', opts[:left]) if opts[:left]
|
230
|
+
str << property('margin-top', opts[:top]) if opts[:top]
|
231
|
+
str << property('margin-bottom', opts[:bottom]) if opts[:bottom]
|
232
|
+
str << property('margin-right', opts[:right]) if opts[:right]
|
233
|
+
str
|
208
234
|
else
|
209
|
-
|
210
|
-
str << property('margin-left', opts[:left]) if opts[:left]
|
211
|
-
str << property('margin-top', opts[:top]) if opts[:top]
|
212
|
-
str << property('margin-bottom', opts[:bottom]) if opts[:bottom]
|
213
|
-
str << property('margin-right', opts[:right]) if opts[:right]
|
214
|
-
str
|
235
|
+
property('margin', opts)
|
215
236
|
end
|
216
237
|
end
|
217
238
|
|
218
239
|
def padding(*opts)
|
219
240
|
opts = opts.size == 1 ? opts.first : opts
|
220
|
-
if opts.is_a?(
|
221
|
-
property('padding', opts)
|
222
|
-
elsif opts.is_a?(String)
|
223
|
-
property('padding', opts)
|
224
|
-
else
|
241
|
+
if opts.is_a?(Hash)
|
225
242
|
str = ""
|
226
243
|
str << property('padding-left', opts[:left]) if opts[:left]
|
227
244
|
str << property('padding-top', opts[:top]) if opts[:top]
|
228
245
|
str << property('padding-bottom', opts[:bottom]) if opts[:bottom]
|
229
246
|
str << property('padding-right', opts[:right]) if opts[:right]
|
230
247
|
str
|
248
|
+
else
|
249
|
+
property('padding', opts)
|
231
250
|
end
|
232
251
|
end
|
233
252
|
|
@@ -275,9 +294,18 @@ CSS
|
|
275
294
|
end
|
276
295
|
end
|
277
296
|
|
297
|
+
def opacity(value)
|
298
|
+
value = value.to_f
|
299
|
+
str = ""
|
300
|
+
str << property( 'opacity', value )
|
301
|
+
str << property( 'filter', "alpha(opacity=#{(value*100).to_i})")
|
302
|
+
str
|
303
|
+
end
|
304
|
+
|
278
305
|
[
|
279
|
-
'color', 'display', 'float', 'clear', 'visibility', 'cursor',
|
280
|
-
'height', 'width', 'max_height', 'max_width', 'min_height', 'min_width'
|
306
|
+
'color', 'display', 'float', 'clear', 'visibility', 'cursor',
|
307
|
+
'height', 'width', 'max_height', 'max_width', 'min_height', 'min_width',
|
308
|
+
"overflow_x", 'overflow_y', 'z_index'
|
281
309
|
].each do |meth|
|
282
310
|
class_eval <<-RUBY
|
283
311
|
def #{meth}(value)
|
@@ -402,7 +430,7 @@ CSS
|
|
402
430
|
|
403
431
|
def export opts={}
|
404
432
|
name = file_name(opts[:file_name])
|
405
|
-
str = render
|
433
|
+
str = render(opts[:render_method] || :content), opts
|
406
434
|
File.open("#{StyleTrain.dir}/#{file_name}.css", 'w'){ |f| f.write(str) }
|
407
435
|
end
|
408
436
|
|
data/spec/sheet_spec.rb
CHANGED
@@ -217,8 +217,9 @@ CSS
|
|
217
217
|
@sheet.background(:repeat => :none).should include 'background-repeat: no-repeat'
|
218
218
|
end
|
219
219
|
|
220
|
-
it 'will create a background
|
221
|
-
|
220
|
+
it 'will create a background property if it receives a single non options argument' do
|
221
|
+
@sheet.background(:blue).should include 'background: blue'
|
222
|
+
end
|
222
223
|
end
|
223
224
|
|
224
225
|
describe 'border' do
|
@@ -227,7 +228,11 @@ CSS
|
|
227
228
|
end
|
228
229
|
|
229
230
|
it 'takes the width it is passed in' do
|
230
|
-
@sheet.border(:width => 3.px).should include 'border: 3px solid black
|
231
|
+
@sheet.border(:width => 3.px).should include 'border: 3px solid black'
|
232
|
+
end
|
233
|
+
|
234
|
+
it 'takes in the width as size too' do
|
235
|
+
@sheet.border(:size => 5.px).should include 'border: 5px solid black'
|
231
236
|
end
|
232
237
|
|
233
238
|
it 'takes in the color when it is passed in' do
|
@@ -251,6 +256,21 @@ CSS
|
|
251
256
|
it 'should do :none' do
|
252
257
|
@sheet.border(:none).should include 'border: none'
|
253
258
|
end
|
259
|
+
|
260
|
+
it 'should work with :only and :none' do
|
261
|
+
@sheet.border(:none, :only => [:bottom, :left]).should include(
|
262
|
+
'border-bottom: none', 'border-left: none'
|
263
|
+
)
|
264
|
+
end
|
265
|
+
|
266
|
+
describe 'specific borders' do
|
267
|
+
it 'has a method for each side' do
|
268
|
+
@sheet.border_left.should include 'border-left: 1px solid black'
|
269
|
+
@sheet.border_right.should include 'border-right: 1px solid black'
|
270
|
+
@sheet.border_top.should include 'border-top: 1px solid black'
|
271
|
+
@sheet.border_bottom.should include 'border-bottom: 1px solid black'
|
272
|
+
end
|
273
|
+
end
|
254
274
|
end
|
255
275
|
|
256
276
|
describe 'outline' do
|
@@ -286,7 +306,7 @@ CSS
|
|
286
306
|
end
|
287
307
|
end
|
288
308
|
|
289
|
-
describe '#
|
309
|
+
describe '#width' do
|
290
310
|
it 'makes a height declaration' do
|
291
311
|
@sheet.width(320.px).should include 'width: 320px;'
|
292
312
|
end
|
@@ -299,6 +319,13 @@ CSS
|
|
299
319
|
@sheet.min_width(200.px).should include 'min-width: 200px'
|
300
320
|
end
|
301
321
|
end
|
322
|
+
|
323
|
+
describe '#dimensions' do
|
324
|
+
it 'takes an array'
|
325
|
+
it 'takes two arguments'
|
326
|
+
it 'takes an array and options with min and max'
|
327
|
+
it 'takes two dimension arguments and options with min and max'
|
328
|
+
end
|
302
329
|
end
|
303
330
|
|
304
331
|
describe 'position' do
|
@@ -560,12 +587,24 @@ CSS
|
|
560
587
|
@sheet.color(StyleTrain::Color.new('#456')).should include 'color: #456'
|
561
588
|
end
|
562
589
|
|
563
|
-
it '
|
590
|
+
it 'overflow' do
|
564
591
|
@sheet.overflow(:hidden).should include 'overflow: hidden'
|
565
592
|
@sheet.overflow(:x => :scroll).should include 'overflow-x: scroll'
|
566
593
|
@sheet.overflow(:y => :auto).should include 'overflow-y: auto'
|
567
594
|
end
|
568
595
|
|
596
|
+
it 'overflow_x' do
|
597
|
+
@sheet.overflow_x(:auto).should include 'overflow-x: auto'
|
598
|
+
end
|
599
|
+
|
600
|
+
it 'overflow_y' do
|
601
|
+
@sheet.overflow_y(:scroll).should include 'overflow-y: scroll'
|
602
|
+
end
|
603
|
+
|
604
|
+
it 'z_index' do
|
605
|
+
@sheet.z_index(3).should include 'z-index: 3'
|
606
|
+
end
|
607
|
+
|
569
608
|
it 'display' do
|
570
609
|
@sheet.display(:block).should include 'display: block'
|
571
610
|
end
|
@@ -583,7 +622,9 @@ CSS
|
|
583
622
|
end
|
584
623
|
|
585
624
|
it 'opacity' do
|
586
|
-
@sheet.opacity(0.5)
|
625
|
+
str = @sheet.opacity(0.5)
|
626
|
+
str.should include 'opacity: 0.5'
|
627
|
+
str.should include 'filter: alpha(opacity=50)'
|
587
628
|
end
|
588
629
|
end
|
589
630
|
end
|
data/style_train.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{style_train}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kane Baccigalupi"]
|
12
|
-
s.date = %q{2011-03-
|
12
|
+
s.date = %q{2011-03-03}
|
13
13
|
s.description = %q{style_train builds CSS using pure Ruby, not a DSL interpreted via Ruby. This allows inheritance, modules, instance level calculations and all the goodness Ruby can offer.}
|
14
14
|
s.email = %q{baccigalupi@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: style_train
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 2
|
10
|
+
version: 0.3.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kane Baccigalupi
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-03-
|
18
|
+
date: 2011-03-03 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|