cloudhead-less 1.1.1 → 1.1.2
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 +1 -1
- data/bin/lessc +2 -2
- data/less.gemspec +2 -2
- data/lib/less/engine/less.tt +10 -11
- data/lib/less/engine/parser.rb +139 -70
- data/spec/css/parens.css +10 -1
- data/spec/less/parens.less +8 -2
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.2
|
data/bin/lessc
CHANGED
@@ -34,10 +34,10 @@ opts = OptionParser.new do |o|
|
|
34
34
|
|
35
35
|
# Growl
|
36
36
|
o.on("-g", "--growl", "growl notifications") do
|
37
|
-
if Less::GROWL && Growl.installed?
|
37
|
+
if Less::GROWL && (Growl.installed? rescue false)
|
38
38
|
options[:growl] = true
|
39
39
|
elsif Less::GROWL
|
40
|
-
abort "Growl wasn't found on your system."
|
40
|
+
abort "Growl or 'growlnotify' wasn't found on your system."
|
41
41
|
else
|
42
42
|
abort "Growl gem not found, please install with: " +
|
43
43
|
"`sudo gem install visionmedia-growl -s http://gems.github.com`"
|
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.1.
|
5
|
+
s.version = "1.1.2"
|
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-
|
9
|
+
s.date = %q{2009-07-27}
|
10
10
|
s.default_executable = %q{lessc}
|
11
11
|
s.description = %q{LESS is leaner CSS}
|
12
12
|
s.email = %q{self@cloudhead.net}
|
data/lib/less/engine/less.tt
CHANGED
@@ -104,7 +104,6 @@ grammar Less
|
|
104
104
|
def build env
|
105
105
|
env << (name.text_value =~ /^@/ ?
|
106
106
|
Node::Variable : Node::Property).new(name.text_value, expressions.build(env), env)
|
107
|
-
|
108
107
|
end
|
109
108
|
# Empty rule
|
110
109
|
} / ws ident s ':' s ';' ws
|
@@ -123,12 +122,13 @@ grammar Less
|
|
123
122
|
#
|
124
123
|
# An operation or compound value
|
125
124
|
#
|
125
|
+
# TODO: we can refactor this, by separating entities from operators
|
126
126
|
rule expression
|
127
|
-
s '(' s expressions s ')'
|
127
|
+
s '(' s expressions s ')' {
|
128
128
|
def build env
|
129
129
|
Node::Expression.new(['('] + expressions.build(env).flatten + [')'])
|
130
130
|
end
|
131
|
-
} / entity tail:(operator entity)* ws {
|
131
|
+
} / s entity tail:(operator entity)* ws {
|
132
132
|
def build env
|
133
133
|
exp = all.map do |e|
|
134
134
|
e.method(:build).arity.zero??
|
@@ -140,7 +140,7 @@ grammar Less
|
|
140
140
|
def all
|
141
141
|
[entity] + tail.elements.map {|i| [i.operator, i.entity] }.flatten.compact
|
142
142
|
end
|
143
|
-
}
|
143
|
+
} / operator
|
144
144
|
end
|
145
145
|
|
146
146
|
#
|
@@ -234,11 +234,11 @@ grammar Less
|
|
234
234
|
|
235
235
|
rule operator
|
236
236
|
S [-+*/] S {
|
237
|
-
def build
|
237
|
+
def build env
|
238
238
|
Node::Operator.new(text_value.strip)
|
239
239
|
end
|
240
240
|
} / [-+*/] {
|
241
|
-
def build
|
241
|
+
def build env
|
242
242
|
Node::Operator.new(text_value)
|
243
243
|
end
|
244
244
|
}
|
@@ -373,11 +373,7 @@ grammar Less
|
|
373
373
|
end
|
374
374
|
|
375
375
|
rule argument
|
376
|
-
color {
|
377
|
-
def build
|
378
|
-
Node::Color.new text_value
|
379
|
-
end
|
380
|
-
} / number unit {
|
376
|
+
color / number unit {
|
381
377
|
def build
|
382
378
|
Node::Number.new number.text_value, unit.text_value
|
383
379
|
end
|
@@ -393,6 +389,9 @@ grammar Less
|
|
393
389
|
def build
|
394
390
|
Node::String.new text_value
|
395
391
|
end
|
392
|
+
} / function / keyword other:(S keyword)* {
|
393
|
+
def build
|
394
|
+
end
|
396
395
|
}
|
397
396
|
end
|
398
397
|
|
data/lib/less/engine/parser.rb
CHANGED
@@ -1056,7 +1056,6 @@ module Less
|
|
1056
1056
|
def build env
|
1057
1057
|
env << (name.text_value =~ /^@/ ?
|
1058
1058
|
Node::Variable : Node::Property).new(name.text_value, expressions.build(env), env)
|
1059
|
-
|
1060
1059
|
end
|
1061
1060
|
# Empty rule
|
1062
1061
|
end
|
@@ -1314,9 +1313,6 @@ module Less
|
|
1314
1313
|
elements[4]
|
1315
1314
|
end
|
1316
1315
|
|
1317
|
-
def s
|
1318
|
-
elements[6]
|
1319
|
-
end
|
1320
1316
|
end
|
1321
1317
|
|
1322
1318
|
module Expression1
|
@@ -1336,17 +1332,21 @@ module Less
|
|
1336
1332
|
end
|
1337
1333
|
|
1338
1334
|
module Expression3
|
1339
|
-
def
|
1335
|
+
def s
|
1340
1336
|
elements[0]
|
1341
1337
|
end
|
1342
1338
|
|
1343
|
-
def
|
1339
|
+
def entity
|
1344
1340
|
elements[1]
|
1345
1341
|
end
|
1346
1342
|
|
1347
|
-
def
|
1343
|
+
def tail
|
1348
1344
|
elements[2]
|
1349
1345
|
end
|
1346
|
+
|
1347
|
+
def ws
|
1348
|
+
elements[3]
|
1349
|
+
end
|
1350
1350
|
end
|
1351
1351
|
|
1352
1352
|
module Expression4
|
@@ -1402,10 +1402,6 @@ module Less
|
|
1402
1402
|
r7 = nil
|
1403
1403
|
end
|
1404
1404
|
s1 << r7
|
1405
|
-
if r7
|
1406
|
-
r8 = _nt_s
|
1407
|
-
s1 << r8
|
1408
|
-
end
|
1409
1405
|
end
|
1410
1406
|
end
|
1411
1407
|
end
|
@@ -1422,52 +1418,61 @@ module Less
|
|
1422
1418
|
if r1
|
1423
1419
|
r0 = r1
|
1424
1420
|
else
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
if
|
1429
|
-
|
1430
|
-
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
s12 <<
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1442
|
-
|
1443
|
-
|
1421
|
+
i8, s8 = index, []
|
1422
|
+
r9 = _nt_s
|
1423
|
+
s8 << r9
|
1424
|
+
if r9
|
1425
|
+
r10 = _nt_entity
|
1426
|
+
s8 << r10
|
1427
|
+
if r10
|
1428
|
+
s11, i11 = [], index
|
1429
|
+
loop do
|
1430
|
+
i12, s12 = index, []
|
1431
|
+
r13 = _nt_operator
|
1432
|
+
s12 << r13
|
1433
|
+
if r13
|
1434
|
+
r14 = _nt_entity
|
1435
|
+
s12 << r14
|
1436
|
+
end
|
1437
|
+
if s12.last
|
1438
|
+
r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
|
1439
|
+
r12.extend(Expression2)
|
1440
|
+
else
|
1441
|
+
@index = i12
|
1442
|
+
r12 = nil
|
1443
|
+
end
|
1444
|
+
if r12
|
1445
|
+
s11 << r12
|
1446
|
+
else
|
1447
|
+
break
|
1448
|
+
end
|
1444
1449
|
end
|
1445
|
-
|
1446
|
-
|
1447
|
-
|
1448
|
-
|
1450
|
+
r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
|
1451
|
+
s8 << r11
|
1452
|
+
if r11
|
1453
|
+
r15 = _nt_ws
|
1454
|
+
s8 << r15
|
1449
1455
|
end
|
1450
1456
|
end
|
1451
|
-
r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
|
1452
|
-
s9 << r11
|
1453
|
-
if r11
|
1454
|
-
r15 = _nt_ws
|
1455
|
-
s9 << r15
|
1456
|
-
end
|
1457
1457
|
end
|
1458
|
-
if
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1458
|
+
if s8.last
|
1459
|
+
r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
|
1460
|
+
r8.extend(Expression3)
|
1461
|
+
r8.extend(Expression4)
|
1462
1462
|
else
|
1463
|
-
@index =
|
1464
|
-
|
1463
|
+
@index = i8
|
1464
|
+
r8 = nil
|
1465
1465
|
end
|
1466
|
-
if
|
1467
|
-
r0 =
|
1466
|
+
if r8
|
1467
|
+
r0 = r8
|
1468
1468
|
else
|
1469
|
-
|
1470
|
-
|
1469
|
+
r16 = _nt_operator
|
1470
|
+
if r16
|
1471
|
+
r0 = r16
|
1472
|
+
else
|
1473
|
+
@index = i0
|
1474
|
+
r0 = nil
|
1475
|
+
end
|
1471
1476
|
end
|
1472
1477
|
end
|
1473
1478
|
|
@@ -2630,13 +2635,13 @@ module Less
|
|
2630
2635
|
end
|
2631
2636
|
|
2632
2637
|
module Operator1
|
2633
|
-
def build
|
2638
|
+
def build env
|
2634
2639
|
Node::Operator.new(text_value.strip)
|
2635
2640
|
end
|
2636
2641
|
end
|
2637
2642
|
|
2638
2643
|
module Operator2
|
2639
|
-
def build
|
2644
|
+
def build env
|
2640
2645
|
Node::Operator.new(text_value)
|
2641
2646
|
end
|
2642
2647
|
end
|
@@ -3947,12 +3952,6 @@ module Less
|
|
3947
3952
|
end
|
3948
3953
|
|
3949
3954
|
module Argument0
|
3950
|
-
def build
|
3951
|
-
Node::Color.new text_value
|
3952
|
-
end
|
3953
|
-
end
|
3954
|
-
|
3955
|
-
module Argument1
|
3956
3955
|
def number
|
3957
3956
|
elements[0]
|
3958
3957
|
end
|
@@ -3962,36 +3961,61 @@ module Less
|
|
3962
3961
|
end
|
3963
3962
|
end
|
3964
3963
|
|
3965
|
-
module
|
3964
|
+
module Argument1
|
3966
3965
|
def build
|
3967
3966
|
Node::Number.new number.text_value, unit.text_value
|
3968
3967
|
end
|
3969
3968
|
end
|
3970
3969
|
|
3971
|
-
module
|
3970
|
+
module Argument2
|
3972
3971
|
def build
|
3973
3972
|
Node::String.new text_value
|
3974
3973
|
end
|
3975
3974
|
end
|
3976
3975
|
|
3977
|
-
module
|
3976
|
+
module Argument3
|
3978
3977
|
def dimension
|
3979
3978
|
elements[2]
|
3980
3979
|
end
|
3981
3980
|
end
|
3982
3981
|
|
3983
|
-
module
|
3982
|
+
module Argument4
|
3984
3983
|
def build
|
3985
3984
|
Node::Anonymous.new text_value
|
3986
3985
|
end
|
3987
3986
|
end
|
3988
3987
|
|
3989
|
-
module
|
3988
|
+
module Argument5
|
3990
3989
|
def build
|
3991
3990
|
Node::String.new text_value
|
3992
3991
|
end
|
3993
3992
|
end
|
3994
3993
|
|
3994
|
+
module Argument6
|
3995
|
+
def S
|
3996
|
+
elements[0]
|
3997
|
+
end
|
3998
|
+
|
3999
|
+
def keyword
|
4000
|
+
elements[1]
|
4001
|
+
end
|
4002
|
+
end
|
4003
|
+
|
4004
|
+
module Argument7
|
4005
|
+
def keyword
|
4006
|
+
elements[0]
|
4007
|
+
end
|
4008
|
+
|
4009
|
+
def other
|
4010
|
+
elements[1]
|
4011
|
+
end
|
4012
|
+
end
|
4013
|
+
|
4014
|
+
module Argument8
|
4015
|
+
def build
|
4016
|
+
end
|
4017
|
+
end
|
4018
|
+
|
3995
4019
|
def _nt_argument
|
3996
4020
|
start_index = index
|
3997
4021
|
if node_cache[:argument].has_key?(index)
|
@@ -4002,7 +4026,6 @@ module Less
|
|
4002
4026
|
|
4003
4027
|
i0 = index
|
4004
4028
|
r1 = _nt_color
|
4005
|
-
r1.extend(Argument0)
|
4006
4029
|
if r1
|
4007
4030
|
r0 = r1
|
4008
4031
|
else
|
@@ -4015,8 +4038,8 @@ module Less
|
|
4015
4038
|
end
|
4016
4039
|
if s2.last
|
4017
4040
|
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
|
4041
|
+
r2.extend(Argument0)
|
4018
4042
|
r2.extend(Argument1)
|
4019
|
-
r2.extend(Argument2)
|
4020
4043
|
else
|
4021
4044
|
@index = i2
|
4022
4045
|
r2 = nil
|
@@ -4025,7 +4048,7 @@ module Less
|
|
4025
4048
|
r0 = r2
|
4026
4049
|
else
|
4027
4050
|
r5 = _nt_string
|
4028
|
-
r5.extend(
|
4051
|
+
r5.extend(Argument2)
|
4029
4052
|
if r5
|
4030
4053
|
r0 = r5
|
4031
4054
|
else
|
@@ -4067,8 +4090,8 @@ module Less
|
|
4067
4090
|
end
|
4068
4091
|
if s6.last
|
4069
4092
|
r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
|
4093
|
+
r6.extend(Argument3)
|
4070
4094
|
r6.extend(Argument4)
|
4071
|
-
r6.extend(Argument5)
|
4072
4095
|
else
|
4073
4096
|
@index = i6
|
4074
4097
|
r6 = nil
|
@@ -4095,13 +4118,59 @@ module Less
|
|
4095
4118
|
r11 = nil
|
4096
4119
|
else
|
4097
4120
|
r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
|
4098
|
-
r11.extend(
|
4121
|
+
r11.extend(Argument5)
|
4099
4122
|
end
|
4100
4123
|
if r11
|
4101
4124
|
r0 = r11
|
4102
4125
|
else
|
4103
|
-
|
4104
|
-
|
4126
|
+
r13 = _nt_function
|
4127
|
+
if r13
|
4128
|
+
r0 = r13
|
4129
|
+
else
|
4130
|
+
i14, s14 = index, []
|
4131
|
+
r15 = _nt_keyword
|
4132
|
+
s14 << r15
|
4133
|
+
if r15
|
4134
|
+
s16, i16 = [], index
|
4135
|
+
loop do
|
4136
|
+
i17, s17 = index, []
|
4137
|
+
r18 = _nt_S
|
4138
|
+
s17 << r18
|
4139
|
+
if r18
|
4140
|
+
r19 = _nt_keyword
|
4141
|
+
s17 << r19
|
4142
|
+
end
|
4143
|
+
if s17.last
|
4144
|
+
r17 = instantiate_node(SyntaxNode,input, i17...index, s17)
|
4145
|
+
r17.extend(Argument6)
|
4146
|
+
else
|
4147
|
+
@index = i17
|
4148
|
+
r17 = nil
|
4149
|
+
end
|
4150
|
+
if r17
|
4151
|
+
s16 << r17
|
4152
|
+
else
|
4153
|
+
break
|
4154
|
+
end
|
4155
|
+
end
|
4156
|
+
r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
|
4157
|
+
s14 << r16
|
4158
|
+
end
|
4159
|
+
if s14.last
|
4160
|
+
r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
|
4161
|
+
r14.extend(Argument7)
|
4162
|
+
r14.extend(Argument8)
|
4163
|
+
else
|
4164
|
+
@index = i14
|
4165
|
+
r14 = nil
|
4166
|
+
end
|
4167
|
+
if r14
|
4168
|
+
r0 = r14
|
4169
|
+
else
|
4170
|
+
@index = i0
|
4171
|
+
r0 = nil
|
4172
|
+
end
|
4173
|
+
end
|
4105
4174
|
end
|
4106
4175
|
end
|
4107
4176
|
end
|
data/spec/css/parens.css
CHANGED
data/spec/less/parens.less
CHANGED
@@ -9,7 +9,13 @@
|
|
9
9
|
.more-parens {
|
10
10
|
@var: (2 * 2);
|
11
11
|
padding: (2 * @var) 4 4 (@var * 1px);
|
12
|
-
|
12
|
+
width: (@var * @var) * 6;
|
13
|
+
height: (7 * 7) + (8 * 8);
|
14
|
+
margin: 4 * (5 + 5) / 2 - (@var * 2);
|
13
15
|
//margin: (6 * 6)px;
|
14
|
-
//height: (7 * 7) + (8 * 8);
|
15
16
|
}
|
17
|
+
|
18
|
+
.nested-parens {
|
19
|
+
width: 2 * (4 * (2 + (1 + 6))) - 1;
|
20
|
+
height: ((2+3)*(2+3) / (9-4)) + 1;
|
21
|
+
}
|
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.1.
|
4
|
+
version: 1.1.2
|
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-
|
12
|
+
date: 2009-07-27 00:00:00 -07:00
|
13
13
|
default_executable: lessc
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -186,6 +186,7 @@ files:
|
|
186
186
|
- spec/spec_helper.rb
|
187
187
|
has_rdoc: true
|
188
188
|
homepage: http://www.lesscss.org
|
189
|
+
licenses:
|
189
190
|
post_install_message:
|
190
191
|
rdoc_options:
|
191
192
|
- --charset=UTF-8
|
@@ -206,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
207
|
requirements: []
|
207
208
|
|
208
209
|
rubyforge_project: less
|
209
|
-
rubygems_version: 1.
|
210
|
+
rubygems_version: 1.3.5
|
210
211
|
signing_key:
|
211
212
|
specification_version: 2
|
212
213
|
summary: LESS compiler
|