cloudhead-less 1.0.6 → 1.0.8

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.6
1
+ 1.0.9
data/less.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{less}
5
- s.version = "1.0.6"
5
+ s.version = "1.0.8"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["cloudhead"]
9
- s.date = %q{2009-07-14}
9
+ s.date = %q{2009-07-15}
10
10
  s.default_executable = %q{lessc}
11
11
  s.description = %q{LESS is leaner CSS}
12
12
  s.email = %q{self@cloudhead.net}
@@ -129,6 +129,7 @@ Gem::Specification.new do |s|
129
129
  "spec/command_spec.rb",
130
130
  "spec/css/accessors-1.0.css",
131
131
  "spec/css/big-1.0.css",
132
+ "spec/css/colors-1.0.css",
132
133
  "spec/css/comments-1.0.css",
133
134
  "spec/css/css-1.0.css",
134
135
  "spec/css/functions-1.0.css",
@@ -113,7 +113,7 @@ grammar Less
113
113
  # An operation or compound value
114
114
  #
115
115
  rule expression
116
- entity (operator / S) expression <Builder> / entity
116
+ entity (operator / S / WS) expression <Builder> / entity
117
117
  end
118
118
 
119
119
  #
@@ -165,7 +165,7 @@ grammar Less
165
165
  # div / .class / #id / input[type="text"] / lang(fr)
166
166
  #
167
167
  rule element
168
- (class_id / tag / ident) attribute* ('(' ident ')')? / '@media' / '@font-face'
168
+ (class_id / tag / ident) attribute* ('(' ident? attribute* ')')? / attribute+ / '@media' / '@font-face'
169
169
  end
170
170
 
171
171
  rule class_id
@@ -176,7 +176,7 @@ grammar Less
176
176
  # [type="text"]
177
177
  #
178
178
  rule attribute
179
- '[' tag ([|~]? '=') (tag / string) ']' / '[' (tag / string) ']'
179
+ '[' tag ([|~*]? '=') (tag / string) ']' / '[' (tag / string) ']'
180
180
  end
181
181
 
182
182
  rule class
@@ -290,9 +290,9 @@ grammar Less
290
290
  # Color
291
291
  #
292
292
  rule color
293
- '#' hex {
293
+ '#' rgb {
294
294
  def build env
295
- env.identifiers.last << Node::Color.new(hex.text_value)
295
+ env.identifiers.last << Node::Color.new(*rgb.build)
296
296
  end
297
297
  } / fn:(('hsl'/'rgb') 'a'?) '(' arguments ')' {
298
298
  def build env
@@ -302,10 +302,25 @@ grammar Less
302
302
  }
303
303
  end
304
304
 
305
- rule hex
306
- [a-fA-F0-9] [a-fA-F0-9] [a-fA-F0-9]+
305
+ #
306
+ # 00ffdd / 0fd
307
+ #
308
+ rule rgb
309
+ r:(hex hex) g:(hex hex) b:(hex hex) {
310
+ def build
311
+ [r.text_value, g.text_value, b.text_value]
312
+ end
313
+ } / r:hex g:hex b:hex {
314
+ def build
315
+ [r.text_value, g.text_value, b.text_value].map {|c| c * 2 }
316
+ end
317
+ }
307
318
  end
308
319
 
320
+ rule hex
321
+ [a-fA-F0-9]
322
+ end
323
+
309
324
  #
310
325
  # Functions and arguments
311
326
  #
@@ -367,6 +382,10 @@ grammar Less
367
382
  [\n ]*
368
383
  end
369
384
 
385
+ rule WS
386
+ [\n ]+
387
+ end
388
+
370
389
  # Non-space char
371
390
  rule ns
372
391
  ![ ;\n] .
@@ -15,13 +15,7 @@ module Less
15
15
  # RGBA to Node::Color
16
16
  #
17
17
  def rgba *rgba
18
- r, g, b, a = rgba.flatten
19
- hex = [r, g, b].inject("") do |str, c|
20
- c = c.to_i.to_s(16)
21
- c = '0' + c if c.length < 2
22
- str + c
23
- end
24
- Node::Color.new hex, a
18
+ Node::Color.new *rgba
25
19
  end
26
20
 
27
21
  #
@@ -11,44 +11,79 @@ module Less
11
11
  #
12
12
  # rgb(255, 0, 0) #f0f0f0
13
13
  #
14
- class Color < DelegateClass(Fixnum)
14
+ class Color
15
15
  include Literal
16
- attr_reader :color
17
-
18
- def initialize color = nil, opacity = 1.0
19
- @color = if color.is_a? Array
20
- rgba color
21
- elsif color.is_a? ::String
22
- color.delete! unit
23
- (color * ( color.length < 6 ? 6 / color.length : 1 )).to_i 16
16
+ attr_reader :r, :g, :b, :a
17
+
18
+ def initialize(r, g, b, a = 1.0)
19
+ r, g, b = [r, g, b].map {|c| c.is_a?(::String) ? c.to_i(16) : c }
20
+ @r, @g, @b, @a = normalize(r), normalize(g), normalize(b), normalize(a, 1.0)
21
+ end
22
+
23
+ def alpha(v)
24
+ self.class.new(r,g,b,v)
25
+ end
26
+
27
+ def rgb
28
+ [r, g, b]
29
+ end
30
+
31
+ def operate op, other
32
+ if other.is_a? Numeric
33
+ self.class.new *self.rgb.map {|c| c.send(op, other) }, @a
24
34
  else
25
- color
35
+ self.class.new *self.rgb.zip(other.rgb).map {|a, b| a.send(op, b) }, @a
26
36
  end
27
- super @color.to_i
28
37
  end
29
-
30
- def unit
31
- '#'
38
+
39
+ def + other
40
+ operate :+, other
32
41
  end
33
-
34
- def to_css
35
- unit + if self <= 0
36
- '0' * 6
42
+
43
+ def - other
44
+ operate :-, other
45
+ end
46
+
47
+ def * other
48
+ operate :*, other
49
+ end
50
+
51
+ def / other
52
+ operate :/, other
53
+ end
54
+
55
+ def coerce other
56
+ return self, other
57
+ end
58
+
59
+ def to_s
60
+ if a < 1.0
61
+ "rgba(#{r.to_i}, #{g.to_i}, #{b.to_i}, #{a})"
37
62
  else
38
- hex = self.to_i.to_s(16)
39
- '0' * (6 - hex.length) + hex
63
+ "#%02x%02x%02x" % [r,g,b]
40
64
  end
41
65
  end
42
-
43
- def to_ruby
44
- color
66
+
67
+ def inspect
68
+ if a < 1.0
69
+ "rgba(#{r}, #{g}, #{b}, #{a})"
70
+ else
71
+ "rgb(#{r}, #{g}, #{b})"
72
+ end
45
73
  end
46
-
47
- def to_s
48
- "#{unit}#{super}"
74
+
75
+ def to_css
76
+ to_s
49
77
  end
50
78
 
51
- def inspect; to_s end
79
+ def to_ruby
80
+ "Color.new(#{r},#{g},#{b},#{a})"
81
+ end
82
+
83
+ protected
84
+ def normalize(v, max = 255, min = 0)
85
+ [[min, v].max, max].min
86
+ end
52
87
  end
53
88
 
54
89
  #
@@ -94,7 +94,12 @@ module Less
94
94
 
95
95
  unless ruby.include? nil
96
96
  if entity
97
- entity.class.new(eval(ruby.join), *(unit if entity.class == Node::Number))
97
+ result = eval(ruby.join)
98
+ if result.is_a? Entity
99
+ result
100
+ else
101
+ entity.class.new(*result, *(unit if entity.class == Node::Number))
102
+ end
98
103
  else
99
104
  first
100
105
  end
@@ -1,8 +1,8 @@
1
1
  $:.unshift File.dirname(__FILE__)
2
2
 
3
3
  require 'engine/nodes/entity'
4
+ require 'engine/nodes/function'
4
5
  require 'engine/nodes/element'
5
6
  require 'engine/nodes/property'
6
7
  require 'engine/nodes/literal'
7
- require 'engine/nodes/function'
8
8
  require 'engine/nodes/selector'
@@ -1265,14 +1265,19 @@ module Less
1265
1265
  if r5
1266
1266
  r3 = r5
1267
1267
  else
1268
- @index = i3
1269
- r3 = nil
1268
+ r6 = _nt_WS
1269
+ if r6
1270
+ r3 = r6
1271
+ else
1272
+ @index = i3
1273
+ r3 = nil
1274
+ end
1270
1275
  end
1271
1276
  end
1272
1277
  s1 << r3
1273
1278
  if r3
1274
- r6 = _nt_expression
1275
- s1 << r6
1279
+ r7 = _nt_expression
1280
+ s1 << r7
1276
1281
  end
1277
1282
  end
1278
1283
  if s1.last
@@ -1285,9 +1290,9 @@ module Less
1285
1290
  if r1
1286
1291
  r0 = r1
1287
1292
  else
1288
- r7 = _nt_entity
1289
- if r7
1290
- r0 = r7
1293
+ r8 = _nt_entity
1294
+ if r8
1295
+ r0 = r8
1291
1296
  else
1292
1297
  @index = i0
1293
1298
  r0 = nil
@@ -1655,10 +1660,6 @@ module Less
1655
1660
  end
1656
1661
 
1657
1662
  module Element0
1658
- def ident
1659
- elements[1]
1660
- end
1661
-
1662
1663
  end
1663
1664
 
1664
1665
  module Element1
@@ -1716,17 +1717,35 @@ module Less
1716
1717
  end
1717
1718
  s9 << r10
1718
1719
  if r10
1719
- r11 = _nt_ident
1720
+ r12 = _nt_ident
1721
+ if r12
1722
+ r11 = r12
1723
+ else
1724
+ r11 = instantiate_node(SyntaxNode,input, index...index)
1725
+ end
1720
1726
  s9 << r11
1721
1727
  if r11
1722
- if has_terminal?(')', false, index)
1723
- r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
1724
- @index += 1
1725
- else
1726
- terminal_parse_failure(')')
1727
- r12 = nil
1728
+ s13, i13 = [], index
1729
+ loop do
1730
+ r14 = _nt_attribute
1731
+ if r14
1732
+ s13 << r14
1733
+ else
1734
+ break
1735
+ end
1736
+ end
1737
+ r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
1738
+ s9 << r13
1739
+ if r13
1740
+ if has_terminal?(')', false, index)
1741
+ r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
1742
+ @index += 1
1743
+ else
1744
+ terminal_parse_failure(')')
1745
+ r15 = nil
1746
+ end
1747
+ s9 << r15
1728
1748
  end
1729
- s9 << r12
1730
1749
  end
1731
1750
  end
1732
1751
  if s9.last
@@ -1754,28 +1773,47 @@ module Less
1754
1773
  if r1
1755
1774
  r0 = r1
1756
1775
  else
1757
- if has_terminal?('@media', false, index)
1758
- r13 = instantiate_node(SyntaxNode,input, index...(index + 6))
1759
- @index += 6
1776
+ s16, i16 = [], index
1777
+ loop do
1778
+ r17 = _nt_attribute
1779
+ if r17
1780
+ s16 << r17
1781
+ else
1782
+ break
1783
+ end
1784
+ end
1785
+ if s16.empty?
1786
+ @index = i16
1787
+ r16 = nil
1760
1788
  else
1761
- terminal_parse_failure('@media')
1762
- r13 = nil
1789
+ r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
1763
1790
  end
1764
- if r13
1765
- r0 = r13
1791
+ if r16
1792
+ r0 = r16
1766
1793
  else
1767
- if has_terminal?('@font-face', false, index)
1768
- r14 = instantiate_node(SyntaxNode,input, index...(index + 10))
1769
- @index += 10
1794
+ if has_terminal?('@media', false, index)
1795
+ r18 = instantiate_node(SyntaxNode,input, index...(index + 6))
1796
+ @index += 6
1770
1797
  else
1771
- terminal_parse_failure('@font-face')
1772
- r14 = nil
1798
+ terminal_parse_failure('@media')
1799
+ r18 = nil
1773
1800
  end
1774
- if r14
1775
- r0 = r14
1801
+ if r18
1802
+ r0 = r18
1776
1803
  else
1777
- @index = i0
1778
- r0 = nil
1804
+ if has_terminal?('@font-face', false, index)
1805
+ r19 = instantiate_node(SyntaxNode,input, index...(index + 10))
1806
+ @index += 10
1807
+ else
1808
+ terminal_parse_failure('@font-face')
1809
+ r19 = nil
1810
+ end
1811
+ if r19
1812
+ r0 = r19
1813
+ else
1814
+ @index = i0
1815
+ r0 = nil
1816
+ end
1779
1817
  end
1780
1818
  end
1781
1819
  end
@@ -1883,7 +1921,7 @@ module Less
1883
1921
  s1 << r3
1884
1922
  if r3
1885
1923
  i4, s4 = index, []
1886
- if has_terminal?('[|~]', true, index)
1924
+ if has_terminal?('[|~*]', true, index)
1887
1925
  r6 = true
1888
1926
  @index += 1
1889
1927
  else
@@ -2658,41 +2696,37 @@ module Less
2658
2696
  end
2659
2697
 
2660
2698
  i0, s0 = index, []
2661
- if has_terminal?('[a-zA-Z]', true, index)
2662
- r1 = true
2663
- @index += 1
2664
- else
2699
+ s1, i1 = [], index
2700
+ loop do
2701
+ if has_terminal?('[-a-zA-Z]', true, index)
2702
+ r2 = true
2703
+ @index += 1
2704
+ else
2705
+ r2 = nil
2706
+ end
2707
+ if r2
2708
+ s1 << r2
2709
+ else
2710
+ break
2711
+ end
2712
+ end
2713
+ if s1.empty?
2714
+ @index = i1
2665
2715
  r1 = nil
2716
+ else
2717
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2666
2718
  end
2667
2719
  s0 << r1
2668
2720
  if r1
2669
- s2, i2 = [], index
2670
- loop do
2671
- if has_terminal?('[-a-zA-Z]', true, index)
2672
- r3 = true
2673
- @index += 1
2674
- else
2675
- r3 = nil
2676
- end
2677
- if r3
2678
- s2 << r3
2679
- else
2680
- break
2681
- end
2682
- end
2683
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2684
- s0 << r2
2685
- if r2
2686
- i4 = index
2687
- r5 = _nt_ns
2688
- if r5
2689
- r4 = nil
2690
- else
2691
- @index = i4
2692
- r4 = instantiate_node(SyntaxNode,input, index...index)
2693
- end
2694
- s0 << r4
2721
+ i3 = index
2722
+ r4 = _nt_ns
2723
+ if r4
2724
+ r3 = nil
2725
+ else
2726
+ @index = i3
2727
+ r3 = instantiate_node(SyntaxNode,input, index...index)
2695
2728
  end
2729
+ s0 << r3
2696
2730
  end
2697
2731
  if s0.last
2698
2732
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
@@ -3191,14 +3225,14 @@ module Less
3191
3225
  end
3192
3226
 
3193
3227
  module Color0
3194
- def hex
3228
+ def rgb
3195
3229
  elements[1]
3196
3230
  end
3197
3231
  end
3198
3232
 
3199
3233
  module Color1
3200
3234
  def build env
3201
- env.identifiers.last << Node::Color.new(hex.text_value)
3235
+ env.identifiers.last << Node::Color.new(*rgb.build)
3202
3236
  end
3203
3237
  end
3204
3238
 
@@ -3242,7 +3276,7 @@ module Less
3242
3276
  end
3243
3277
  s1 << r2
3244
3278
  if r2
3245
- r3 = _nt_hex
3279
+ r3 = _nt_rgb
3246
3280
  s1 << r3
3247
3281
  end
3248
3282
  if s1.last
@@ -3352,62 +3386,190 @@ module Less
3352
3386
  r0
3353
3387
  end
3354
3388
 
3355
- module Hex0
3389
+ module Rgb0
3390
+ def hex
3391
+ elements[0]
3392
+ end
3393
+
3394
+ def hex
3395
+ elements[1]
3396
+ end
3356
3397
  end
3357
3398
 
3358
- def _nt_hex
3399
+ module Rgb1
3400
+ def hex
3401
+ elements[0]
3402
+ end
3403
+
3404
+ def hex
3405
+ elements[1]
3406
+ end
3407
+ end
3408
+
3409
+ module Rgb2
3410
+ def hex
3411
+ elements[0]
3412
+ end
3413
+
3414
+ def hex
3415
+ elements[1]
3416
+ end
3417
+ end
3418
+
3419
+ module Rgb3
3420
+ def r
3421
+ elements[0]
3422
+ end
3423
+
3424
+ def g
3425
+ elements[1]
3426
+ end
3427
+
3428
+ def b
3429
+ elements[2]
3430
+ end
3431
+ end
3432
+
3433
+ module Rgb4
3434
+ def build
3435
+ [r.text_value, g.text_value, b.text_value]
3436
+ end
3437
+ end
3438
+
3439
+ module Rgb5
3440
+ def r
3441
+ elements[0]
3442
+ end
3443
+
3444
+ def g
3445
+ elements[1]
3446
+ end
3447
+
3448
+ def b
3449
+ elements[2]
3450
+ end
3451
+ end
3452
+
3453
+ module Rgb6
3454
+ def build
3455
+ [r.text_value, g.text_value, b.text_value].map {|c| c * 2 }
3456
+ end
3457
+ end
3458
+
3459
+ def _nt_rgb
3359
3460
  start_index = index
3360
- if node_cache[:hex].has_key?(index)
3361
- cached = node_cache[:hex][index]
3461
+ if node_cache[:rgb].has_key?(index)
3462
+ cached = node_cache[:rgb][index]
3362
3463
  @index = cached.interval.end if cached
3363
3464
  return cached
3364
3465
  end
3365
3466
 
3366
- i0, s0 = index, []
3367
- if has_terminal?('[a-fA-F0-9]', true, index)
3368
- r1 = true
3369
- @index += 1
3467
+ i0 = index
3468
+ i1, s1 = index, []
3469
+ i2, s2 = index, []
3470
+ r3 = _nt_hex
3471
+ s2 << r3
3472
+ if r3
3473
+ r4 = _nt_hex
3474
+ s2 << r4
3475
+ end
3476
+ if s2.last
3477
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3478
+ r2.extend(Rgb0)
3370
3479
  else
3371
- r1 = nil
3480
+ @index = i2
3481
+ r2 = nil
3372
3482
  end
3373
- s0 << r1
3374
- if r1
3375
- if has_terminal?('[a-fA-F0-9]', true, index)
3376
- r2 = true
3377
- @index += 1
3483
+ s1 << r2
3484
+ if r2
3485
+ i5, s5 = index, []
3486
+ r6 = _nt_hex
3487
+ s5 << r6
3488
+ if r6
3489
+ r7 = _nt_hex
3490
+ s5 << r7
3491
+ end
3492
+ if s5.last
3493
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3494
+ r5.extend(Rgb1)
3378
3495
  else
3379
- r2 = nil
3496
+ @index = i5
3497
+ r5 = nil
3380
3498
  end
3381
- s0 << r2
3382
- if r2
3383
- s3, i3 = [], index
3384
- loop do
3385
- if has_terminal?('[a-fA-F0-9]', true, index)
3386
- r4 = true
3387
- @index += 1
3388
- else
3389
- r4 = nil
3390
- end
3391
- if r4
3392
- s3 << r4
3393
- else
3394
- break
3395
- end
3499
+ s1 << r5
3500
+ if r5
3501
+ i8, s8 = index, []
3502
+ r9 = _nt_hex
3503
+ s8 << r9
3504
+ if r9
3505
+ r10 = _nt_hex
3506
+ s8 << r10
3396
3507
  end
3397
- if s3.empty?
3398
- @index = i3
3399
- r3 = nil
3508
+ if s8.last
3509
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
3510
+ r8.extend(Rgb2)
3400
3511
  else
3401
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
3512
+ @index = i8
3513
+ r8 = nil
3402
3514
  end
3403
- s0 << r3
3515
+ s1 << r8
3404
3516
  end
3405
3517
  end
3406
- if s0.last
3407
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3408
- r0.extend(Hex0)
3518
+ if s1.last
3519
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3520
+ r1.extend(Rgb3)
3521
+ r1.extend(Rgb4)
3522
+ else
3523
+ @index = i1
3524
+ r1 = nil
3525
+ end
3526
+ if r1
3527
+ r0 = r1
3528
+ else
3529
+ i11, s11 = index, []
3530
+ r12 = _nt_hex
3531
+ s11 << r12
3532
+ if r12
3533
+ r13 = _nt_hex
3534
+ s11 << r13
3535
+ if r13
3536
+ r14 = _nt_hex
3537
+ s11 << r14
3538
+ end
3539
+ end
3540
+ if s11.last
3541
+ r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
3542
+ r11.extend(Rgb5)
3543
+ r11.extend(Rgb6)
3544
+ else
3545
+ @index = i11
3546
+ r11 = nil
3547
+ end
3548
+ if r11
3549
+ r0 = r11
3550
+ else
3551
+ @index = i0
3552
+ r0 = nil
3553
+ end
3554
+ end
3555
+
3556
+ node_cache[:rgb][start_index] = r0
3557
+
3558
+ r0
3559
+ end
3560
+
3561
+ def _nt_hex
3562
+ start_index = index
3563
+ if node_cache[:hex].has_key?(index)
3564
+ cached = node_cache[:hex][index]
3565
+ @index = cached.interval.end if cached
3566
+ return cached
3567
+ end
3568
+
3569
+ if has_terminal?('[a-fA-F0-9]', true, index)
3570
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
3571
+ @index += 1
3409
3572
  else
3410
- @index = i0
3411
3573
  r0 = nil
3412
3574
  end
3413
3575
 
@@ -3846,6 +4008,40 @@ module Less
3846
4008
  r0
3847
4009
  end
3848
4010
 
4011
+ def _nt_WS
4012
+ start_index = index
4013
+ if node_cache[:WS].has_key?(index)
4014
+ cached = node_cache[:WS][index]
4015
+ @index = cached.interval.end if cached
4016
+ return cached
4017
+ end
4018
+
4019
+ s0, i0 = [], index
4020
+ loop do
4021
+ if has_terminal?('[\\n ]', true, index)
4022
+ r1 = true
4023
+ @index += 1
4024
+ else
4025
+ r1 = nil
4026
+ end
4027
+ if r1
4028
+ s0 << r1
4029
+ else
4030
+ break
4031
+ end
4032
+ end
4033
+ if s0.empty?
4034
+ @index = i0
4035
+ r0 = nil
4036
+ else
4037
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4038
+ end
4039
+
4040
+ node_cache[:WS][start_index] = r0
4041
+
4042
+ r0
4043
+ end
4044
+
3849
4045
  module Ns0
3850
4046
  end
3851
4047
 
@@ -0,0 +1,10 @@
1
+ #yelow #short { color: #ffeeaa; }
2
+ #yelow #long { color: #ffeeaa; }
3
+ #yelow #rgba { color: rgba(255, 238, 170, 0.1); }
4
+ #blue #short { color: #0000ff; }
5
+ #blue #long { color: #0000ff; }
6
+ #blue #rgba { color: rgba(0, 0, 255, 0.1); }
7
+ #overflow .a { color: #000000; }
8
+ #overflow .b { color: #ffffff; }
9
+ #overflow .c { color: #ffffff; }
10
+ #overflow .d { color: #00ff00; }
data/spec/css/css-1.0.css CHANGED
@@ -22,6 +22,8 @@ q:lang(no) { quotes: none; }
22
22
  p + h1 { font-size: 2.2em; }
23
23
  input[type="text"] { font-weight: normal; }
24
24
  h2[title] { font-size: 100%; }
25
+ [disabled] { color: transparent; }
26
+ p:not([class*="lead"]) { color: black; }
25
27
  #shorthands {
26
28
  border: 1px solid #000000;
27
29
  font: 12px/16px Arial;
@@ -18,8 +18,8 @@
18
18
  }
19
19
  .shorthands { padding: -1px 2px 0 -4px; }
20
20
  .colors {
21
- color: #123123;
22
- border-color: #345345;
21
+ color: #112233;
22
+ border-color: #334455;
23
23
  background-color: #000000;
24
24
  }
25
25
  .colors .other {
@@ -1,6 +1,6 @@
1
1
  .tiny-scope {
2
2
  color: none;
3
- border-color: #989989;
3
+ border-color: #998899;
4
4
  }
5
5
  .scope1 {
6
6
  color: blue;
@@ -11,3 +11,4 @@
11
11
  color: white;
12
12
  white-space: pre;
13
13
  }
14
+ .newlines { border: 2px solid black; }
data/spec/engine_spec.rb CHANGED
@@ -54,6 +54,10 @@ describe Less::Engine do
54
54
  lessify(:accessors).should == css(:accessors)
55
55
  end
56
56
 
57
+ it "should parse colors in hex" do
58
+ lessify(:colors).should == css(:colors)
59
+ end
60
+
57
61
  it "should parse mixins" do
58
62
  lessify(:mixins).should == css(:mixins)
59
63
  end
@@ -61,7 +65,7 @@ describe Less::Engine do
61
65
  it "should handle custom functions" do
62
66
  module Less::Functions
63
67
  def color arg
64
- Less::Node::Color.new("#999999") if arg == "evil red"
68
+ Less::Node::Color.new("99", "99", "99") if arg == "evil red"
65
69
  end
66
70
 
67
71
  def increment a
@@ -0,0 +1,30 @@
1
+ #yelow {
2
+ #short {
3
+ color: #fea;
4
+ }
5
+ #long {
6
+ color: #ffeeaa;
7
+ }
8
+ #rgba {
9
+ color: rgba(255, 238, 170, 0.1);
10
+ }
11
+ }
12
+
13
+ #blue {
14
+ #short {
15
+ color: #00f;
16
+ }
17
+ #long {
18
+ color: #0000ff;
19
+ }
20
+ #rgba {
21
+ color: rgba(0, 0, 255, 0.1);
22
+ }
23
+ }
24
+
25
+ #overflow {
26
+ .a { color: #111111 - #444444; } // #000000
27
+ .b { color: #eee + #fff; } // #ffffff
28
+ .c { color: #aaa * 3; } // #ffffff
29
+ .d { color: #00ee00 + #009900; } // #00ff00
30
+ }
@@ -68,6 +68,14 @@ h2[title] {
68
68
  font-size: 100%;
69
69
  }
70
70
 
71
+ [disabled] {
72
+ color: transparent;
73
+ }
74
+
75
+ p:not([class*="lead"]) {
76
+ color: black;
77
+ }
78
+
71
79
  #shorthands {
72
80
  border: 1px solid #000;
73
81
  font: 12px/16px Arial;
@@ -29,8 +29,8 @@
29
29
  }
30
30
 
31
31
  .colors {
32
- color: #123; // #123123
33
- border-color: #234 + #111111; // #345345
32
+ color: #123; // #112233
33
+ border-color: #234 + #111111; // #334455
34
34
  background-color: #222222 - #fff; // #000000
35
35
  .other {
36
36
  color: 2 * #111; // #222222
@@ -20,6 +20,11 @@
20
20
  color: white;
21
21
  white-space: pre
22
22
  }
23
+ .newlines {
24
+ border: 2px
25
+ solid
26
+ black;
27
+ }
23
28
  .empty {
24
29
 
25
30
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudhead-less
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - cloudhead
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-14 00:00:00 -07:00
12
+ date: 2009-07-15 00:00:00 -07:00
13
13
  default_executable: lessc
14
14
  dependencies: []
15
15
 
@@ -136,6 +136,7 @@ files:
136
136
  - spec/command_spec.rb
137
137
  - spec/css/accessors-1.0.css
138
138
  - spec/css/big-1.0.css
139
+ - spec/css/colors-1.0.css
139
140
  - spec/css/comments-1.0.css
140
141
  - spec/css/css-1.0.css
141
142
  - spec/css/functions-1.0.css