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 +1 -1
- data/less.gemspec +3 -2
- data/lib/less/engine/less.tt +7 -3
- data/lib/less/engine/nodes/literal.rb +18 -6
- data/lib/less/engine/parser.rb +105 -51
- data/spec/css/colors-1.0.css +6 -0
- data/spec/css/css-1.0.css +2 -0
- data/spec/css/operations-1.0.css +2 -2
- data/spec/css/scope-1.0.css +1 -1
- data/spec/css/whitespace-1.0.css +1 -0
- data/spec/engine_spec.rb +4 -0
- data/spec/less/colors-1.0.less +27 -0
- data/spec/less/css-1.0.less +5 -0
- data/spec/less/operations-1.0.less +2 -2
- data/spec/less/whitespace-1.0.less +5 -0
- metadata +3 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.8
|
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.
|
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-
|
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",
|
data/lib/less/engine/less.tt
CHANGED
@@ -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+ / '@media' / '@font-face'
|
169
169
|
end
|
170
170
|
|
171
171
|
rule class_id
|
@@ -248,7 +248,7 @@ grammar Less
|
|
248
248
|
# `blue`, `small`, `normal` etc.
|
249
249
|
#
|
250
250
|
rule keyword
|
251
|
-
[
|
251
|
+
[-a-zA-Z]+ !ns {
|
252
252
|
def build env
|
253
253
|
env.identifiers.last << Node::Keyword.new(text_value)
|
254
254
|
end
|
@@ -367,6 +367,10 @@ grammar Less
|
|
367
367
|
[\n ]*
|
368
368
|
end
|
369
369
|
|
370
|
+
rule WS
|
371
|
+
[\n ]+
|
372
|
+
end
|
373
|
+
|
370
374
|
# Non-space char
|
371
375
|
rule ns
|
372
376
|
![ ;\n] .
|
@@ -13,14 +13,21 @@ module Less
|
|
13
13
|
#
|
14
14
|
class Color < DelegateClass(Fixnum)
|
15
15
|
include Literal
|
16
|
-
attr_reader :color
|
16
|
+
attr_reader :color, :opacity
|
17
17
|
|
18
18
|
def initialize color = nil, opacity = 1.0
|
19
|
+
@opacity = opacity
|
19
20
|
@color = if color.is_a? Array
|
20
21
|
rgba color
|
21
22
|
elsif color.is_a? ::String
|
22
23
|
color.delete! unit
|
23
|
-
|
24
|
+
if color.length == 3
|
25
|
+
color.split(//).map {|v| v + v }.join('').to_i 16
|
26
|
+
elsif color.length == 6
|
27
|
+
color.to_i 16
|
28
|
+
else
|
29
|
+
color
|
30
|
+
end
|
24
31
|
else
|
25
32
|
color
|
26
33
|
end
|
@@ -31,12 +38,17 @@ module Less
|
|
31
38
|
'#'
|
32
39
|
end
|
33
40
|
|
41
|
+
def hex
|
42
|
+
v = [[to_i, 0].max, 256 ** 3].min
|
43
|
+
"%06x" % [v]
|
44
|
+
end
|
45
|
+
|
34
46
|
def to_css
|
35
|
-
|
36
|
-
|
47
|
+
if opacity and opacity < 1.0
|
48
|
+
colors = hex.scan(/../).map {|v| v.to_i(16) }.join(", ")
|
49
|
+
"rgba(#{colors}, #{opacity})"
|
37
50
|
else
|
38
|
-
|
39
|
-
'0' * (6 - hex.length) + hex
|
51
|
+
unit + hex
|
40
52
|
end
|
41
53
|
end
|
42
54
|
|
data/lib/less/engine/parser.rb
CHANGED
@@ -1265,14 +1265,19 @@ module Less
|
|
1265
1265
|
if r5
|
1266
1266
|
r3 = r5
|
1267
1267
|
else
|
1268
|
-
|
1269
|
-
|
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
|
-
|
1275
|
-
s1 <<
|
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
|
-
|
1289
|
-
if
|
1290
|
-
r0 =
|
1293
|
+
r8 = _nt_entity
|
1294
|
+
if r8
|
1295
|
+
r0 = r8
|
1291
1296
|
else
|
1292
1297
|
@index = i0
|
1293
1298
|
r0 = nil
|
@@ -1754,28 +1759,47 @@ module Less
|
|
1754
1759
|
if r1
|
1755
1760
|
r0 = r1
|
1756
1761
|
else
|
1757
|
-
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
1761
|
-
|
1762
|
+
s13, i13 = [], index
|
1763
|
+
loop do
|
1764
|
+
r14 = _nt_attribute
|
1765
|
+
if r14
|
1766
|
+
s13 << r14
|
1767
|
+
else
|
1768
|
+
break
|
1769
|
+
end
|
1770
|
+
end
|
1771
|
+
if s13.empty?
|
1772
|
+
@index = i13
|
1762
1773
|
r13 = nil
|
1774
|
+
else
|
1775
|
+
r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
|
1763
1776
|
end
|
1764
1777
|
if r13
|
1765
1778
|
r0 = r13
|
1766
1779
|
else
|
1767
|
-
if has_terminal?('@
|
1768
|
-
|
1769
|
-
@index +=
|
1780
|
+
if has_terminal?('@media', false, index)
|
1781
|
+
r15 = instantiate_node(SyntaxNode,input, index...(index + 6))
|
1782
|
+
@index += 6
|
1770
1783
|
else
|
1771
|
-
terminal_parse_failure('@
|
1772
|
-
|
1784
|
+
terminal_parse_failure('@media')
|
1785
|
+
r15 = nil
|
1773
1786
|
end
|
1774
|
-
if
|
1775
|
-
r0 =
|
1787
|
+
if r15
|
1788
|
+
r0 = r15
|
1776
1789
|
else
|
1777
|
-
@
|
1778
|
-
|
1790
|
+
if has_terminal?('@font-face', false, index)
|
1791
|
+
r16 = instantiate_node(SyntaxNode,input, index...(index + 10))
|
1792
|
+
@index += 10
|
1793
|
+
else
|
1794
|
+
terminal_parse_failure('@font-face')
|
1795
|
+
r16 = nil
|
1796
|
+
end
|
1797
|
+
if r16
|
1798
|
+
r0 = r16
|
1799
|
+
else
|
1800
|
+
@index = i0
|
1801
|
+
r0 = nil
|
1802
|
+
end
|
1779
1803
|
end
|
1780
1804
|
end
|
1781
1805
|
end
|
@@ -2658,41 +2682,37 @@ module Less
|
|
2658
2682
|
end
|
2659
2683
|
|
2660
2684
|
i0, s0 = index, []
|
2661
|
-
|
2662
|
-
|
2663
|
-
|
2664
|
-
|
2685
|
+
s1, i1 = [], index
|
2686
|
+
loop do
|
2687
|
+
if has_terminal?('[-a-zA-Z]', true, index)
|
2688
|
+
r2 = true
|
2689
|
+
@index += 1
|
2690
|
+
else
|
2691
|
+
r2 = nil
|
2692
|
+
end
|
2693
|
+
if r2
|
2694
|
+
s1 << r2
|
2695
|
+
else
|
2696
|
+
break
|
2697
|
+
end
|
2698
|
+
end
|
2699
|
+
if s1.empty?
|
2700
|
+
@index = i1
|
2665
2701
|
r1 = nil
|
2702
|
+
else
|
2703
|
+
r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
|
2666
2704
|
end
|
2667
2705
|
s0 << r1
|
2668
2706
|
if r1
|
2669
|
-
|
2670
|
-
|
2671
|
-
|
2672
|
-
|
2673
|
-
|
2674
|
-
|
2675
|
-
|
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
|
2707
|
+
i3 = index
|
2708
|
+
r4 = _nt_ns
|
2709
|
+
if r4
|
2710
|
+
r3 = nil
|
2711
|
+
else
|
2712
|
+
@index = i3
|
2713
|
+
r3 = instantiate_node(SyntaxNode,input, index...index)
|
2695
2714
|
end
|
2715
|
+
s0 << r3
|
2696
2716
|
end
|
2697
2717
|
if s0.last
|
2698
2718
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
@@ -3846,6 +3866,40 @@ module Less
|
|
3846
3866
|
r0
|
3847
3867
|
end
|
3848
3868
|
|
3869
|
+
def _nt_WS
|
3870
|
+
start_index = index
|
3871
|
+
if node_cache[:WS].has_key?(index)
|
3872
|
+
cached = node_cache[:WS][index]
|
3873
|
+
@index = cached.interval.end if cached
|
3874
|
+
return cached
|
3875
|
+
end
|
3876
|
+
|
3877
|
+
s0, i0 = [], index
|
3878
|
+
loop do
|
3879
|
+
if has_terminal?('[\\n ]', true, index)
|
3880
|
+
r1 = true
|
3881
|
+
@index += 1
|
3882
|
+
else
|
3883
|
+
r1 = nil
|
3884
|
+
end
|
3885
|
+
if r1
|
3886
|
+
s0 << r1
|
3887
|
+
else
|
3888
|
+
break
|
3889
|
+
end
|
3890
|
+
end
|
3891
|
+
if s0.empty?
|
3892
|
+
@index = i0
|
3893
|
+
r0 = nil
|
3894
|
+
else
|
3895
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
3896
|
+
end
|
3897
|
+
|
3898
|
+
node_cache[:WS][start_index] = r0
|
3899
|
+
|
3900
|
+
r0
|
3901
|
+
end
|
3902
|
+
|
3849
3903
|
module Ns0
|
3850
3904
|
end
|
3851
3905
|
|
data/spec/css/css-1.0.css
CHANGED
@@ -22,6 +22,7 @@ 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; }
|
25
26
|
#shorthands {
|
26
27
|
border: 1px solid #000000;
|
27
28
|
font: 12px/16px Arial;
|
@@ -36,6 +37,7 @@ h2[title] { font-size: 100%; }
|
|
36
37
|
}
|
37
38
|
.misc {
|
38
39
|
-moz-border-radius: 2px;
|
40
|
+
display: -moz-inline-stack;
|
39
41
|
width: 0.1em;
|
40
42
|
background-color: #009998;
|
41
43
|
color: red !important;
|
data/spec/css/operations-1.0.css
CHANGED
data/spec/css/scope-1.0.css
CHANGED
data/spec/css/whitespace-1.0.css
CHANGED
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
|
data/spec/less/colors-1.0.less
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
#yelow {
|
2
|
+
#short {
|
3
|
+
color: #fea;
|
4
|
+
}
|
5
|
+
|
6
|
+
#long {
|
7
|
+
color: #ffeeaa;
|
8
|
+
}
|
9
|
+
|
10
|
+
#rgba {
|
11
|
+
color: rgba(255, 238, 170, 0.1);
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
#blue {
|
16
|
+
#short {
|
17
|
+
color: #00f;
|
18
|
+
}
|
19
|
+
|
20
|
+
#long {
|
21
|
+
color: #0000ff;
|
22
|
+
}
|
23
|
+
|
24
|
+
#rgba {
|
25
|
+
color: rgba(0, 0, 255, 0.1);
|
26
|
+
}
|
27
|
+
}
|
data/spec/less/css-1.0.less
CHANGED
@@ -68,6 +68,10 @@ h2[title] {
|
|
68
68
|
font-size: 100%;
|
69
69
|
}
|
70
70
|
|
71
|
+
[disabled] {
|
72
|
+
color: transparent;
|
73
|
+
}
|
74
|
+
|
71
75
|
#shorthands {
|
72
76
|
border: 1px solid #000;
|
73
77
|
font: 12px/16px Arial;
|
@@ -84,6 +88,7 @@ h2[title] {
|
|
84
88
|
|
85
89
|
.misc {
|
86
90
|
-moz-border-radius: 2px;
|
91
|
+
display: -moz-inline-stack;
|
87
92
|
width: .1em;
|
88
93
|
background-color: #009998;
|
89
94
|
color: red !important;
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: less
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
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-
|
12
|
+
date: 2009-07-15 00:00:00 -04: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
|