cloudhead-less 1.0.13 → 1.0.16
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/Rakefile +1 -1
- data/VERSION +1 -1
- data/less.gemspec +4 -2
- data/lib/less/engine/less.tt +65 -37
- data/lib/less/engine/nodes/entity.rb +6 -0
- data/lib/less/engine/nodes/literal.rb +3 -3
- data/lib/less/engine/nodes/property.rb +56 -37
- data/lib/less/engine/parser.rb +396 -144
- data/lib/less.rb +15 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/character_class.rb +8 -7
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_expression.rb +0 -8
- data/lib/vendor/treetop/lib/treetop/runtime/compiled_parser.rb +12 -16
- data/lib/vendor/treetop/lib/treetop/runtime/syntax_node.rb +2 -20
- data/lib/vendor/treetop/lib/treetop/version.rb +2 -2
- data/lib/vendor/treetop/spec/compiler/character_class_spec.rb +0 -65
- data/lib/vendor/treetop/spec/runtime/syntax_node_spec.rb +0 -15
- data/lib/vendor/treetop/treetop.gemspec +1 -1
- data/spec/css/parens.css +7 -0
- data/spec/engine_spec.rb +4 -0
- data/spec/less/operations.less +1 -1
- data/spec/less/parens.less +15 -0
- metadata +4 -2
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.16
|
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.16"
|
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-23}
|
10
10
|
s.default_executable = %q{lessc}
|
11
11
|
s.description = %q{LESS is leaner CSS}
|
12
12
|
s.email = %q{self@cloudhead.net}
|
@@ -140,6 +140,7 @@ Gem::Specification.new do |s|
|
|
140
140
|
"spec/css/mixins-args.css",
|
141
141
|
"spec/css/mixins.css",
|
142
142
|
"spec/css/operations.css",
|
143
|
+
"spec/css/parens.css",
|
143
144
|
"spec/css/rulesets.css",
|
144
145
|
"spec/css/scope.css",
|
145
146
|
"spec/css/selectors.css",
|
@@ -166,6 +167,7 @@ Gem::Specification.new do |s|
|
|
166
167
|
"spec/less/mixins-args.less",
|
167
168
|
"spec/less/mixins.less",
|
168
169
|
"spec/less/operations.less",
|
170
|
+
"spec/less/parens.less",
|
169
171
|
"spec/less/rulesets.less",
|
170
172
|
"spec/less/scope.less",
|
171
173
|
"spec/less/selectors.less",
|
data/lib/less/engine/less.tt
CHANGED
@@ -100,20 +100,47 @@ grammar Less
|
|
100
100
|
# height: 100%;
|
101
101
|
#
|
102
102
|
rule declaration
|
103
|
-
ws name:(ident / variable) s ':' s
|
103
|
+
ws name:(ident / variable) s ':' s expressions s (';'/ ws &'}') ws {
|
104
104
|
def build env
|
105
|
-
env << (name.text_value =~ /^@/ ?
|
106
|
-
|
105
|
+
env << (name.text_value =~ /^@/ ?
|
106
|
+
Node::Variable : Node::Property).new(name.text_value, expressions.build(env), env)
|
107
|
+
|
107
108
|
end
|
108
109
|
# Empty rule
|
109
110
|
} / ws ident s ':' s ';' ws
|
110
111
|
end
|
111
112
|
|
113
|
+
rule expressions
|
114
|
+
expression+ {
|
115
|
+
def build env
|
116
|
+
elements.map do |e|
|
117
|
+
e.build(env) if e.respond_to? :build
|
118
|
+
end.compact
|
119
|
+
end
|
120
|
+
}
|
121
|
+
end
|
122
|
+
|
112
123
|
#
|
113
124
|
# An operation or compound value
|
114
125
|
#
|
115
126
|
rule expression
|
116
|
-
|
127
|
+
s '(' s expressions s ')' s {
|
128
|
+
def build env
|
129
|
+
Node::Expression.new(['('] + expressions.build(env).flatten + [')'])
|
130
|
+
end
|
131
|
+
} / entity tail:(operator entity)* ws {
|
132
|
+
def build env
|
133
|
+
exp = all.map do |e|
|
134
|
+
e.method(:build).arity.zero??
|
135
|
+
e.build : e.build(env) if e.respond_to? :build
|
136
|
+
end.dissolve
|
137
|
+
exp.is_a?(Array) ? Node::Expression.new(exp) : exp
|
138
|
+
end
|
139
|
+
|
140
|
+
def all
|
141
|
+
[entity] + tail.elements.map {|i| [i.operator, i.entity] }.flatten.compact
|
142
|
+
end
|
143
|
+
}
|
117
144
|
end
|
118
145
|
|
119
146
|
#
|
@@ -125,22 +152,23 @@ grammar Less
|
|
125
152
|
|
126
153
|
rule fonts
|
127
154
|
font family:(s ',' s font)+ {
|
128
|
-
def build
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
155
|
+
def build
|
156
|
+
Node::FontFamily.new(all.map(&:build))
|
157
|
+
end
|
158
|
+
|
159
|
+
def all
|
160
|
+
[font] + family.elements.map {|f| f.font }
|
133
161
|
end
|
134
162
|
}
|
135
163
|
end
|
136
164
|
|
137
165
|
rule font
|
138
166
|
[a-zA-Z] [-a-zA-Z0-9]* {
|
139
|
-
def build
|
167
|
+
def build
|
140
168
|
Node::Keyword.new(text_value)
|
141
169
|
end
|
142
170
|
} / string {
|
143
|
-
def build
|
171
|
+
def build
|
144
172
|
Node::String.new(text_value)
|
145
173
|
end
|
146
174
|
}
|
@@ -150,13 +178,13 @@ grammar Less
|
|
150
178
|
# An identifier
|
151
179
|
#
|
152
180
|
rule ident
|
153
|
-
'-'? [-a-z0-9_]+
|
181
|
+
'*'? '-'? [-a-z0-9_]+
|
154
182
|
end
|
155
183
|
|
156
184
|
rule variable
|
157
185
|
'@' [-a-zA-Z0-9_]+ {
|
158
|
-
def build
|
159
|
-
|
186
|
+
def build
|
187
|
+
Node::Variable.new(text_value)
|
160
188
|
end
|
161
189
|
}
|
162
190
|
end
|
@@ -199,19 +227,19 @@ grammar Less
|
|
199
227
|
rule accessor
|
200
228
|
ident:(class_id / tag) '[' attr:(string / variable) ']' {
|
201
229
|
def build env
|
202
|
-
env.
|
230
|
+
env.nearest(ident.text_value)[attr.text_value.delete(%q["'])].evaluate
|
203
231
|
end
|
204
232
|
}
|
205
233
|
end
|
206
234
|
|
207
235
|
rule operator
|
208
236
|
S [-+*/] S {
|
209
|
-
def build
|
210
|
-
|
237
|
+
def build
|
238
|
+
Node::Operator.new(text_value.strip)
|
211
239
|
end
|
212
240
|
} / [-+*/] {
|
213
|
-
def build
|
214
|
-
|
241
|
+
def build
|
242
|
+
Node::Operator.new(text_value)
|
215
243
|
end
|
216
244
|
}
|
217
245
|
end
|
@@ -221,16 +249,16 @@ grammar Less
|
|
221
249
|
#
|
222
250
|
rule literal
|
223
251
|
color / (dimension / [-a-z]+) '/' dimension {
|
224
|
-
def build
|
225
|
-
|
252
|
+
def build
|
253
|
+
Node::Anonymous.new(text_value)
|
226
254
|
end
|
227
255
|
} / number unit {
|
228
|
-
def build
|
229
|
-
|
256
|
+
def build
|
257
|
+
Node::Number.new(number.text_value, unit.text_value)
|
230
258
|
end
|
231
259
|
} / string {
|
232
|
-
def build
|
233
|
-
|
260
|
+
def build
|
261
|
+
Node::String.new(text_value)
|
234
262
|
end
|
235
263
|
}
|
236
264
|
end
|
@@ -238,8 +266,8 @@ grammar Less
|
|
238
266
|
# !important
|
239
267
|
rule important
|
240
268
|
'!important' {
|
241
|
-
def build
|
242
|
-
|
269
|
+
def build
|
270
|
+
Node::Keyword.new(text_value)
|
243
271
|
end
|
244
272
|
}
|
245
273
|
end
|
@@ -249,8 +277,8 @@ grammar Less
|
|
249
277
|
#
|
250
278
|
rule keyword
|
251
279
|
[-a-zA-Z]+ !ns {
|
252
|
-
def build
|
253
|
-
|
280
|
+
def build
|
281
|
+
Node::Keyword.new(text_value)
|
254
282
|
end
|
255
283
|
}
|
256
284
|
end
|
@@ -261,11 +289,11 @@ grammar Less
|
|
261
289
|
rule string
|
262
290
|
"'" content:(!"'" . )* "'" {
|
263
291
|
def value
|
264
|
-
text_value
|
292
|
+
content.text_value
|
265
293
|
end
|
266
294
|
} / ["] content:(!["] . )* ["] {
|
267
295
|
def value
|
268
|
-
text_value
|
296
|
+
content.text_value
|
269
297
|
end
|
270
298
|
}
|
271
299
|
end
|
@@ -291,12 +319,12 @@ grammar Less
|
|
291
319
|
#
|
292
320
|
rule color
|
293
321
|
'#' rgb {
|
294
|
-
def build
|
295
|
-
|
322
|
+
def build
|
323
|
+
Node::Color.new(*rgb.build)
|
296
324
|
end
|
297
325
|
} / fn:(('hsl'/'rgb') 'a'?) arguments {
|
298
|
-
def build
|
299
|
-
|
326
|
+
def build
|
327
|
+
Node::Function.new(fn.text_value, arguments.build.flatten)
|
300
328
|
end
|
301
329
|
}
|
302
330
|
end
|
@@ -325,8 +353,8 @@ grammar Less
|
|
325
353
|
#
|
326
354
|
rule function
|
327
355
|
name:([-a-zA-Z_]+) arguments {
|
328
|
-
def build
|
329
|
-
|
356
|
+
def build
|
357
|
+
Node::Function.new(name.text_value, [arguments.build].flatten)
|
330
358
|
end
|
331
359
|
}
|
332
360
|
end
|
@@ -135,15 +135,15 @@ module Less
|
|
135
135
|
include Literal
|
136
136
|
end
|
137
137
|
|
138
|
-
class FontFamily
|
138
|
+
class FontFamily
|
139
139
|
include Literal
|
140
140
|
|
141
141
|
def initialize family = []
|
142
|
-
|
142
|
+
@family = family
|
143
143
|
end
|
144
144
|
|
145
145
|
def to_css
|
146
|
-
|
146
|
+
@family.map(&:to_css) * ', '
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
@@ -5,14 +5,23 @@ module Less
|
|
5
5
|
|
6
6
|
attr_accessor :value
|
7
7
|
|
8
|
-
def initialize key, value = nil
|
9
|
-
super key
|
10
|
-
|
8
|
+
def initialize key, value = nil, parent = nil
|
9
|
+
super key, parent
|
10
|
+
|
11
|
+
value = if value.is_a? Array
|
12
|
+
value.each {|v| v.parent = self if v.respond_to? :parent }
|
13
|
+
elsif value.nil?
|
14
|
+
[]
|
15
|
+
else
|
16
|
+
value
|
17
|
+
end
|
18
|
+
|
19
|
+
@value = Expression.new(value, self)
|
11
20
|
@eval = false # Store the first evaluation in here
|
12
21
|
end
|
13
22
|
|
14
23
|
def << token
|
15
|
-
token = Node::Anonymous.new(*token) unless token.is_a? Entity or token.
|
24
|
+
token = Node::Anonymous.new(*token) unless token.is_a? Entity or token.respond_to? :to_ruby
|
16
25
|
token.parent = self if token.respond_to? :parent
|
17
26
|
@value << token
|
18
27
|
end
|
@@ -45,9 +54,9 @@ module Less
|
|
45
54
|
class Variable < Property
|
46
55
|
attr_reader :declaration
|
47
56
|
|
48
|
-
def initialize key, value = nil
|
57
|
+
def initialize key, value = nil, parent = nil
|
49
58
|
@declaration = value ? true : false
|
50
|
-
super key.delete('@'), value
|
59
|
+
super key.delete('@'), value, parent
|
51
60
|
end
|
52
61
|
|
53
62
|
def inspect
|
@@ -76,55 +85,65 @@ module Less
|
|
76
85
|
end
|
77
86
|
|
78
87
|
class Expression < Array
|
79
|
-
|
80
|
-
|
88
|
+
attr_reader :parent
|
89
|
+
|
90
|
+
def initialize ary, parent = nil
|
91
|
+
self.parent = parent
|
92
|
+
super ary
|
93
|
+
end
|
94
|
+
|
95
|
+
def expressions; select {|i| i.kind_of? Expression } end
|
96
|
+
def operators; select {|i| i.is_a? Operator } end
|
97
|
+
def entities; select {|i| i.kind_of? Entity } end
|
98
|
+
def literals; select {|i| i.kind_of? Literal } end
|
99
|
+
|
100
|
+
def parent= obj
|
101
|
+
@parent = obj
|
102
|
+
each {|e| e.parent = obj if e.respond_to? :parent }
|
81
103
|
end
|
82
104
|
|
83
|
-
def operators; select {|i| i.is_a? Operator } end
|
84
|
-
def entities; select {|i| i.kind_of? Entity } end
|
85
|
-
def literals; select {|i| i.kind_of? Literal } end
|
86
|
-
|
87
105
|
def inspect
|
88
106
|
'[' + map {|i| i.inspect }.join(', ') + ']'
|
89
107
|
end
|
108
|
+
|
109
|
+
def terminal?
|
110
|
+
expressions.empty?
|
111
|
+
end
|
90
112
|
|
91
113
|
def to_css
|
92
|
-
map
|
114
|
+
map do |i|
|
115
|
+
i.respond_to?(:to_css) ? i.to_css : i.to_s
|
116
|
+
end * ' '
|
117
|
+
end
|
118
|
+
|
119
|
+
def to_ruby
|
120
|
+
map do |i|
|
121
|
+
i.respond_to?(:to_ruby) ? i.to_ruby : i.to_s
|
122
|
+
end
|
93
123
|
end
|
94
124
|
|
95
125
|
#
|
96
126
|
# Evaluates the expression and instantiates a new Literal with the result
|
97
127
|
# ex: [#111, +, #111] will evaluate to a Color node, with value #222
|
98
128
|
#
|
99
|
-
# TODO: refactor the conditionals
|
100
129
|
def evaluate
|
101
|
-
if size > 2
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
unit = evaluated.literals.map do |node|
|
130
|
+
if size > 2 or !terminal?
|
131
|
+
# Replace self with an evaluated sub-expression
|
132
|
+
replace map {|e| e.respond_to?(:evaluate) ? e.evaluate : e }
|
133
|
+
|
134
|
+
unit = literals.map do |node|
|
107
135
|
node.unit
|
108
136
|
end.compact.uniq.tap do |ary|
|
109
137
|
raise MixedUnitsError, self * ' ' if ary.size > 1
|
110
138
|
end.join
|
111
|
-
|
112
|
-
entity =
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
result
|
120
|
-
else
|
121
|
-
entity.class.new(result, *(unit if entity.class == Node::Number))
|
122
|
-
end
|
123
|
-
else
|
124
|
-
first
|
125
|
-
end
|
126
|
-
else
|
127
|
-
self
|
139
|
+
|
140
|
+
entity = literals.find {|e| e.unit == unit } || entities.first
|
141
|
+
result = operators.empty?? self : eval(to_ruby.join)
|
142
|
+
|
143
|
+
case result
|
144
|
+
when Entity then result
|
145
|
+
when Expression then result.one?? result.first : self.class.new(result)
|
146
|
+
else entity.class.new(result, *(unit if entity.class == Node::Number))
|
128
147
|
end
|
129
148
|
elsif size == 1
|
130
149
|
first
|
data/lib/less/engine/parser.rb
CHANGED
@@ -622,8 +622,8 @@ module Less
|
|
622
622
|
else
|
623
623
|
s4, i4 = [], index
|
624
624
|
loop do
|
625
|
-
if has_terminal?('[-a-zA-Z0-9_%$/.&=:;#+?]', true, index)
|
626
|
-
r5 =
|
625
|
+
if has_terminal?('\G[-a-zA-Z0-9_%$/.&=:;#+?]', true, index)
|
626
|
+
r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
627
627
|
@index += 1
|
628
628
|
else
|
629
629
|
r5 = nil
|
@@ -698,8 +698,8 @@ module Less
|
|
698
698
|
i0, s0 = index, []
|
699
699
|
s1, i1 = [], index
|
700
700
|
loop do
|
701
|
-
if has_terminal?('[-a-z]', true, index)
|
702
|
-
r2 =
|
701
|
+
if has_terminal?('\G[-a-z]', true, index)
|
702
|
+
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
703
703
|
@index += 1
|
704
704
|
else
|
705
705
|
r2 = nil
|
@@ -738,8 +738,8 @@ module Less
|
|
738
738
|
if r7
|
739
739
|
s8, i8 = [], index
|
740
740
|
loop do
|
741
|
-
if has_terminal?('[a-z]', true, index)
|
742
|
-
r9 =
|
741
|
+
if has_terminal?('\G[a-z]', true, index)
|
742
|
+
r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
743
743
|
@index += 1
|
744
744
|
else
|
745
745
|
r9 = nil
|
@@ -1039,7 +1039,7 @@ module Less
|
|
1039
1039
|
elements[4]
|
1040
1040
|
end
|
1041
1041
|
|
1042
|
-
def
|
1042
|
+
def expressions
|
1043
1043
|
elements[5]
|
1044
1044
|
end
|
1045
1045
|
|
@@ -1054,8 +1054,9 @@ module Less
|
|
1054
1054
|
|
1055
1055
|
module Declaration2
|
1056
1056
|
def build env
|
1057
|
-
env << (name.text_value =~ /^@/ ?
|
1058
|
-
|
1057
|
+
env << (name.text_value =~ /^@/ ?
|
1058
|
+
Node::Variable : Node::Property).new(name.text_value, expressions.build(env), env)
|
1059
|
+
|
1059
1060
|
end
|
1060
1061
|
# Empty rule
|
1061
1062
|
end
|
@@ -1125,7 +1126,7 @@ module Less
|
|
1125
1126
|
r8 = _nt_s
|
1126
1127
|
s1 << r8
|
1127
1128
|
if r8
|
1128
|
-
r9 =
|
1129
|
+
r9 = _nt_expressions
|
1129
1130
|
s1 << r9
|
1130
1131
|
if r9
|
1131
1132
|
r10 = _nt_s
|
@@ -1258,16 +1259,110 @@ module Less
|
|
1258
1259
|
r0
|
1259
1260
|
end
|
1260
1261
|
|
1262
|
+
module Expressions0
|
1263
|
+
def build env
|
1264
|
+
elements.map do |e|
|
1265
|
+
e.build(env) if e.respond_to? :build
|
1266
|
+
end.compact
|
1267
|
+
end
|
1268
|
+
end
|
1269
|
+
|
1270
|
+
def _nt_expressions
|
1271
|
+
start_index = index
|
1272
|
+
if node_cache[:expressions].has_key?(index)
|
1273
|
+
cached = node_cache[:expressions][index]
|
1274
|
+
@index = cached.interval.end if cached
|
1275
|
+
return cached
|
1276
|
+
end
|
1277
|
+
|
1278
|
+
s0, i0 = [], index
|
1279
|
+
loop do
|
1280
|
+
r1 = _nt_expression
|
1281
|
+
if r1
|
1282
|
+
s0 << r1
|
1283
|
+
else
|
1284
|
+
break
|
1285
|
+
end
|
1286
|
+
end
|
1287
|
+
if s0.empty?
|
1288
|
+
@index = i0
|
1289
|
+
r0 = nil
|
1290
|
+
else
|
1291
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
1292
|
+
r0.extend(Expressions0)
|
1293
|
+
end
|
1294
|
+
|
1295
|
+
node_cache[:expressions][start_index] = r0
|
1296
|
+
|
1297
|
+
r0
|
1298
|
+
end
|
1299
|
+
|
1261
1300
|
module Expression0
|
1301
|
+
def s
|
1302
|
+
elements[0]
|
1303
|
+
end
|
1304
|
+
|
1305
|
+
def s
|
1306
|
+
elements[2]
|
1307
|
+
end
|
1308
|
+
|
1309
|
+
def expressions
|
1310
|
+
elements[3]
|
1311
|
+
end
|
1312
|
+
|
1313
|
+
def s
|
1314
|
+
elements[4]
|
1315
|
+
end
|
1316
|
+
|
1317
|
+
def s
|
1318
|
+
elements[6]
|
1319
|
+
end
|
1320
|
+
end
|
1321
|
+
|
1322
|
+
module Expression1
|
1323
|
+
def build env
|
1324
|
+
Node::Expression.new(['('] + expressions.build(env).flatten + [')'])
|
1325
|
+
end
|
1326
|
+
end
|
1327
|
+
|
1328
|
+
module Expression2
|
1329
|
+
def operator
|
1330
|
+
elements[0]
|
1331
|
+
end
|
1332
|
+
|
1333
|
+
def entity
|
1334
|
+
elements[1]
|
1335
|
+
end
|
1336
|
+
end
|
1337
|
+
|
1338
|
+
module Expression3
|
1262
1339
|
def entity
|
1263
1340
|
elements[0]
|
1264
1341
|
end
|
1265
1342
|
|
1266
|
-
def
|
1343
|
+
def tail
|
1344
|
+
elements[1]
|
1345
|
+
end
|
1346
|
+
|
1347
|
+
def ws
|
1267
1348
|
elements[2]
|
1268
1349
|
end
|
1269
1350
|
end
|
1270
1351
|
|
1352
|
+
module Expression4
|
1353
|
+
def build env
|
1354
|
+
exp = all.map do |e|
|
1355
|
+
e.method(:build).arity.zero??
|
1356
|
+
e.build : e.build(env) if e.respond_to? :build
|
1357
|
+
end.dissolve
|
1358
|
+
exp.is_a?(Array) ? Node::Expression.new(exp) : exp
|
1359
|
+
end
|
1360
|
+
|
1361
|
+
def all
|
1362
|
+
[entity] + tail.elements.map {|i| [i.operator, i.entity] }.flatten.compact
|
1363
|
+
end
|
1364
|
+
end
|
1365
|
+
|
1271
1366
|
def _nt_expression
|
1272
1367
|
start_index = index
|
1273
1368
|
if node_cache[:expression].has_key?(index)
|
@@ -1278,36 +1373,48 @@ module Less
|
|
1278
1373
|
|
1279
1374
|
i0 = index
|
1280
1375
|
i1, s1 = index, []
|
1281
|
-
r2 =
|
1376
|
+
r2 = _nt_s
|
1282
1377
|
s1 << r2
|
1283
1378
|
if r2
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
r3 = r4
|
1379
|
+
if has_terminal?('(', false, index)
|
1380
|
+
r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1381
|
+
@index += 1
|
1288
1382
|
else
|
1289
|
-
|
1290
|
-
|
1291
|
-
r3 = r5
|
1292
|
-
else
|
1293
|
-
r6 = _nt_WS
|
1294
|
-
if r6
|
1295
|
-
r3 = r6
|
1296
|
-
else
|
1297
|
-
@index = i3
|
1298
|
-
r3 = nil
|
1299
|
-
end
|
1300
|
-
end
|
1383
|
+
terminal_parse_failure('(')
|
1384
|
+
r3 = nil
|
1301
1385
|
end
|
1302
1386
|
s1 << r3
|
1303
1387
|
if r3
|
1304
|
-
|
1305
|
-
s1 <<
|
1388
|
+
r4 = _nt_s
|
1389
|
+
s1 << r4
|
1390
|
+
if r4
|
1391
|
+
r5 = _nt_expressions
|
1392
|
+
s1 << r5
|
1393
|
+
if r5
|
1394
|
+
r6 = _nt_s
|
1395
|
+
s1 << r6
|
1396
|
+
if r6
|
1397
|
+
if has_terminal?(')', false, index)
|
1398
|
+
r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1399
|
+
@index += 1
|
1400
|
+
else
|
1401
|
+
terminal_parse_failure(')')
|
1402
|
+
r7 = nil
|
1403
|
+
end
|
1404
|
+
s1 << r7
|
1405
|
+
if r7
|
1406
|
+
r8 = _nt_s
|
1407
|
+
s1 << r8
|
1408
|
+
end
|
1409
|
+
end
|
1410
|
+
end
|
1411
|
+
end
|
1306
1412
|
end
|
1307
1413
|
end
|
1308
1414
|
if s1.last
|
1309
|
-
r1 = instantiate_node(
|
1415
|
+
r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
|
1310
1416
|
r1.extend(Expression0)
|
1417
|
+
r1.extend(Expression1)
|
1311
1418
|
else
|
1312
1419
|
@index = i1
|
1313
1420
|
r1 = nil
|
@@ -1315,9 +1422,49 @@ module Less
|
|
1315
1422
|
if r1
|
1316
1423
|
r0 = r1
|
1317
1424
|
else
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1425
|
+
i9, s9 = index, []
|
1426
|
+
r10 = _nt_entity
|
1427
|
+
s9 << r10
|
1428
|
+
if r10
|
1429
|
+
s11, i11 = [], index
|
1430
|
+
loop do
|
1431
|
+
i12, s12 = index, []
|
1432
|
+
r13 = _nt_operator
|
1433
|
+
s12 << r13
|
1434
|
+
if r13
|
1435
|
+
r14 = _nt_entity
|
1436
|
+
s12 << r14
|
1437
|
+
end
|
1438
|
+
if s12.last
|
1439
|
+
r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
|
1440
|
+
r12.extend(Expression2)
|
1441
|
+
else
|
1442
|
+
@index = i12
|
1443
|
+
r12 = nil
|
1444
|
+
end
|
1445
|
+
if r12
|
1446
|
+
s11 << r12
|
1447
|
+
else
|
1448
|
+
break
|
1449
|
+
end
|
1450
|
+
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
|
+
end
|
1458
|
+
if s9.last
|
1459
|
+
r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
|
1460
|
+
r9.extend(Expression3)
|
1461
|
+
r9.extend(Expression4)
|
1462
|
+
else
|
1463
|
+
@index = i9
|
1464
|
+
r9 = nil
|
1465
|
+
end
|
1466
|
+
if r9
|
1467
|
+
r0 = r9
|
1321
1468
|
else
|
1322
1469
|
@index = i0
|
1323
1470
|
r0 = nil
|
@@ -1329,6 +1476,92 @@ module Less
|
|
1329
1476
|
r0
|
1330
1477
|
end
|
1331
1478
|
|
1479
|
+
def _nt_separator
|
1480
|
+
start_index = index
|
1481
|
+
if node_cache[:separator].has_key?(index)
|
1482
|
+
cached = node_cache[:separator][index]
|
1483
|
+
@index = cached.interval.end if cached
|
1484
|
+
return cached
|
1485
|
+
end
|
1486
|
+
|
1487
|
+
i0 = index
|
1488
|
+
r1 = _nt_operator
|
1489
|
+
if r1
|
1490
|
+
r0 = r1
|
1491
|
+
else
|
1492
|
+
r2 = _nt_S
|
1493
|
+
if r2
|
1494
|
+
r0 = r2
|
1495
|
+
else
|
1496
|
+
r3 = _nt_WS
|
1497
|
+
if r3
|
1498
|
+
r0 = r3
|
1499
|
+
else
|
1500
|
+
@index = i0
|
1501
|
+
r0 = nil
|
1502
|
+
end
|
1503
|
+
end
|
1504
|
+
end
|
1505
|
+
|
1506
|
+
node_cache[:separator][start_index] = r0
|
1507
|
+
|
1508
|
+
r0
|
1509
|
+
end
|
1510
|
+
|
1511
|
+
module Paren0
|
1512
|
+
def s
|
1513
|
+
elements[0]
|
1514
|
+
end
|
1515
|
+
|
1516
|
+
def s
|
1517
|
+
elements[2]
|
1518
|
+
end
|
1519
|
+
end
|
1520
|
+
|
1521
|
+
module Paren1
|
1522
|
+
def build
|
1523
|
+
Node::Paren.new(text_value.strip)
|
1524
|
+
end
|
1525
|
+
end
|
1526
|
+
|
1527
|
+
def _nt_paren
|
1528
|
+
start_index = index
|
1529
|
+
if node_cache[:paren].has_key?(index)
|
1530
|
+
cached = node_cache[:paren][index]
|
1531
|
+
@index = cached.interval.end if cached
|
1532
|
+
return cached
|
1533
|
+
end
|
1534
|
+
|
1535
|
+
i0, s0 = index, []
|
1536
|
+
r1 = _nt_s
|
1537
|
+
s0 << r1
|
1538
|
+
if r1
|
1539
|
+
if has_terminal?('\G[()]', true, index)
|
1540
|
+
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1541
|
+
@index += 1
|
1542
|
+
else
|
1543
|
+
r2 = nil
|
1544
|
+
end
|
1545
|
+
s0 << r2
|
1546
|
+
if r2
|
1547
|
+
r3 = _nt_s
|
1548
|
+
s0 << r3
|
1549
|
+
end
|
1550
|
+
end
|
1551
|
+
if s0.last
|
1552
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
1553
|
+
r0.extend(Paren0)
|
1554
|
+
r0.extend(Paren1)
|
1555
|
+
else
|
1556
|
+
@index = i0
|
1557
|
+
r0 = nil
|
1558
|
+
end
|
1559
|
+
|
1560
|
+
node_cache[:paren][start_index] = r0
|
1561
|
+
|
1562
|
+
r0
|
1563
|
+
end
|
1564
|
+
|
1332
1565
|
def _nt_entity
|
1333
1566
|
start_index = index
|
1334
1567
|
if node_cache[:entity].has_key?(index)
|
@@ -1406,11 +1639,15 @@ module Less
|
|
1406
1639
|
end
|
1407
1640
|
|
1408
1641
|
module Fonts2
|
1409
|
-
def build
|
1410
|
-
fonts =
|
1411
|
-
font.build
|
1642
|
+
def build
|
1643
|
+
fonts = all.map do |font|
|
1644
|
+
font.build
|
1412
1645
|
end
|
1413
|
-
|
1646
|
+
Node::FontFamily.new(all.map(&:build))
|
1647
|
+
end
|
1648
|
+
|
1649
|
+
def all
|
1650
|
+
[font] + family.elements.map {|f| f.font }
|
1414
1651
|
end
|
1415
1652
|
end
|
1416
1653
|
|
@@ -1488,13 +1725,13 @@ module Less
|
|
1488
1725
|
end
|
1489
1726
|
|
1490
1727
|
module Font1
|
1491
|
-
def build
|
1728
|
+
def build
|
1492
1729
|
Node::Keyword.new(text_value)
|
1493
1730
|
end
|
1494
1731
|
end
|
1495
1732
|
|
1496
1733
|
module Font2
|
1497
|
-
def build
|
1734
|
+
def build
|
1498
1735
|
Node::String.new(text_value)
|
1499
1736
|
end
|
1500
1737
|
end
|
@@ -1509,8 +1746,8 @@ module Less
|
|
1509
1746
|
|
1510
1747
|
i0 = index
|
1511
1748
|
i1, s1 = index, []
|
1512
|
-
if has_terminal?('[a-zA-Z]', true, index)
|
1513
|
-
r2 =
|
1749
|
+
if has_terminal?('\G[a-zA-Z]', true, index)
|
1750
|
+
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1514
1751
|
@index += 1
|
1515
1752
|
else
|
1516
1753
|
r2 = nil
|
@@ -1519,8 +1756,8 @@ module Less
|
|
1519
1756
|
if r2
|
1520
1757
|
s3, i3 = [], index
|
1521
1758
|
loop do
|
1522
|
-
if has_terminal?('[-a-zA-Z0-9]', true, index)
|
1523
|
-
r4 =
|
1759
|
+
if has_terminal?('\G[-a-zA-Z0-9]', true, index)
|
1760
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1524
1761
|
@index += 1
|
1525
1762
|
else
|
1526
1763
|
r4 = nil
|
@@ -1572,11 +1809,11 @@ module Less
|
|
1572
1809
|
end
|
1573
1810
|
|
1574
1811
|
i0, s0 = index, []
|
1575
|
-
if has_terminal?('
|
1812
|
+
if has_terminal?('*', false, index)
|
1576
1813
|
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1577
1814
|
@index += 1
|
1578
1815
|
else
|
1579
|
-
terminal_parse_failure('
|
1816
|
+
terminal_parse_failure('*')
|
1580
1817
|
r2 = nil
|
1581
1818
|
end
|
1582
1819
|
if r2
|
@@ -1586,27 +1823,42 @@ module Less
|
|
1586
1823
|
end
|
1587
1824
|
s0 << r1
|
1588
1825
|
if r1
|
1589
|
-
|
1590
|
-
|
1591
|
-
|
1592
|
-
|
1593
|
-
|
1594
|
-
|
1595
|
-
r4 = nil
|
1596
|
-
end
|
1597
|
-
if r4
|
1598
|
-
s3 << r4
|
1599
|
-
else
|
1600
|
-
break
|
1601
|
-
end
|
1826
|
+
if has_terminal?('-', false, index)
|
1827
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1828
|
+
@index += 1
|
1829
|
+
else
|
1830
|
+
terminal_parse_failure('-')
|
1831
|
+
r4 = nil
|
1602
1832
|
end
|
1603
|
-
if
|
1604
|
-
|
1605
|
-
r3 = nil
|
1833
|
+
if r4
|
1834
|
+
r3 = r4
|
1606
1835
|
else
|
1607
|
-
r3 = instantiate_node(SyntaxNode,input,
|
1836
|
+
r3 = instantiate_node(SyntaxNode,input, index...index)
|
1608
1837
|
end
|
1609
1838
|
s0 << r3
|
1839
|
+
if r3
|
1840
|
+
s5, i5 = [], index
|
1841
|
+
loop do
|
1842
|
+
if has_terminal?('\G[-a-z0-9_]', true, index)
|
1843
|
+
r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1844
|
+
@index += 1
|
1845
|
+
else
|
1846
|
+
r6 = nil
|
1847
|
+
end
|
1848
|
+
if r6
|
1849
|
+
s5 << r6
|
1850
|
+
else
|
1851
|
+
break
|
1852
|
+
end
|
1853
|
+
end
|
1854
|
+
if s5.empty?
|
1855
|
+
@index = i5
|
1856
|
+
r5 = nil
|
1857
|
+
else
|
1858
|
+
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
1859
|
+
end
|
1860
|
+
s0 << r5
|
1861
|
+
end
|
1610
1862
|
end
|
1611
1863
|
if s0.last
|
1612
1864
|
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
@@ -1625,8 +1877,8 @@ module Less
|
|
1625
1877
|
end
|
1626
1878
|
|
1627
1879
|
module Variable1
|
1628
|
-
def build
|
1629
|
-
|
1880
|
+
def build
|
1881
|
+
Node::Variable.new(text_value)
|
1630
1882
|
end
|
1631
1883
|
end
|
1632
1884
|
|
@@ -1650,8 +1902,8 @@ module Less
|
|
1650
1902
|
if r1
|
1651
1903
|
s2, i2 = [], index
|
1652
1904
|
loop do
|
1653
|
-
if has_terminal?('[-a-zA-Z0-9_]', true, index)
|
1654
|
-
r3 =
|
1905
|
+
if has_terminal?('\G[-a-zA-Z0-9_]', true, index)
|
1906
|
+
r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1655
1907
|
@index += 1
|
1656
1908
|
else
|
1657
1909
|
r3 = nil
|
@@ -1946,8 +2198,8 @@ module Less
|
|
1946
2198
|
s1 << r3
|
1947
2199
|
if r3
|
1948
2200
|
i4, s4 = index, []
|
1949
|
-
if has_terminal?('[|~*$^]', true, index)
|
1950
|
-
r6 =
|
2201
|
+
if has_terminal?('\G[|~*$^]', true, index)
|
2202
|
+
r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
1951
2203
|
@index += 1
|
1952
2204
|
else
|
1953
2205
|
r6 = nil
|
@@ -2090,8 +2342,8 @@ module Less
|
|
2090
2342
|
end
|
2091
2343
|
s0 << r1
|
2092
2344
|
if r1
|
2093
|
-
if has_terminal?('[_a-z]', true, index)
|
2094
|
-
r2 =
|
2345
|
+
if has_terminal?('\G[_a-z]', true, index)
|
2346
|
+
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2095
2347
|
@index += 1
|
2096
2348
|
else
|
2097
2349
|
r2 = nil
|
@@ -2100,8 +2352,8 @@ module Less
|
|
2100
2352
|
if r2
|
2101
2353
|
s3, i3 = [], index
|
2102
2354
|
loop do
|
2103
|
-
if has_terminal?('[-a-zA-Z0-9_]', true, index)
|
2104
|
-
r4 =
|
2355
|
+
if has_terminal?('\G[-a-zA-Z0-9_]', true, index)
|
2356
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2105
2357
|
@index += 1
|
2106
2358
|
else
|
2107
2359
|
r4 = nil
|
@@ -2150,8 +2402,8 @@ module Less
|
|
2150
2402
|
end
|
2151
2403
|
s0 << r1
|
2152
2404
|
if r1
|
2153
|
-
if has_terminal?('[_a-z]', true, index)
|
2154
|
-
r2 =
|
2405
|
+
if has_terminal?('\G[_a-z]', true, index)
|
2406
|
+
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2155
2407
|
@index += 1
|
2156
2408
|
else
|
2157
2409
|
r2 = nil
|
@@ -2160,8 +2412,8 @@ module Less
|
|
2160
2412
|
if r2
|
2161
2413
|
s3, i3 = [], index
|
2162
2414
|
loop do
|
2163
|
-
if has_terminal?('[-a-zA-Z0-9_]', true, index)
|
2164
|
-
r4 =
|
2415
|
+
if has_terminal?('\G[-a-zA-Z0-9_]', true, index)
|
2416
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2165
2417
|
@index += 1
|
2166
2418
|
else
|
2167
2419
|
r4 = nil
|
@@ -2202,8 +2454,8 @@ module Less
|
|
2202
2454
|
|
2203
2455
|
i0 = index
|
2204
2456
|
i1, s1 = index, []
|
2205
|
-
if has_terminal?('[a-zA-Z]', true, index)
|
2206
|
-
r2 =
|
2457
|
+
if has_terminal?('\G[a-zA-Z]', true, index)
|
2458
|
+
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2207
2459
|
@index += 1
|
2208
2460
|
else
|
2209
2461
|
r2 = nil
|
@@ -2212,8 +2464,8 @@ module Less
|
|
2212
2464
|
if r2
|
2213
2465
|
s3, i3 = [], index
|
2214
2466
|
loop do
|
2215
|
-
if has_terminal?('[-a-zA-Z]', true, index)
|
2216
|
-
r4 =
|
2467
|
+
if has_terminal?('\G[-a-zA-Z]', true, index)
|
2468
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2217
2469
|
@index += 1
|
2218
2470
|
else
|
2219
2471
|
r4 = nil
|
@@ -2227,8 +2479,8 @@ module Less
|
|
2227
2479
|
r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
|
2228
2480
|
s1 << r3
|
2229
2481
|
if r3
|
2230
|
-
if has_terminal?('[0-9]', true, index)
|
2231
|
-
r6 =
|
2482
|
+
if has_terminal?('\G[0-9]', true, index)
|
2483
|
+
r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2232
2484
|
@index += 1
|
2233
2485
|
else
|
2234
2486
|
r6 = nil
|
@@ -2301,8 +2553,8 @@ module Less
|
|
2301
2553
|
r3 = _nt_s
|
2302
2554
|
s2 << r3
|
2303
2555
|
if r3
|
2304
|
-
if has_terminal?('[+>~]', true, index)
|
2305
|
-
r4 =
|
2556
|
+
if has_terminal?('\G[+>~]', true, index)
|
2557
|
+
r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2306
2558
|
@index += 1
|
2307
2559
|
else
|
2308
2560
|
r4 = nil
|
@@ -2379,7 +2631,7 @@ module Less
|
|
2379
2631
|
|
2380
2632
|
module Accessor1
|
2381
2633
|
def build env
|
2382
|
-
env.
|
2634
|
+
env.nearest(ident.text_value)[attr.text_value.delete(%q["'])].evaluate
|
2383
2635
|
end
|
2384
2636
|
end
|
2385
2637
|
|
@@ -2467,14 +2719,14 @@ module Less
|
|
2467
2719
|
end
|
2468
2720
|
|
2469
2721
|
module Operator1
|
2470
|
-
def build
|
2471
|
-
|
2722
|
+
def build
|
2723
|
+
Node::Operator.new(text_value.strip)
|
2472
2724
|
end
|
2473
2725
|
end
|
2474
2726
|
|
2475
2727
|
module Operator2
|
2476
|
-
def build
|
2477
|
-
|
2728
|
+
def build
|
2729
|
+
Node::Operator.new(text_value)
|
2478
2730
|
end
|
2479
2731
|
end
|
2480
2732
|
|
@@ -2491,8 +2743,8 @@ module Less
|
|
2491
2743
|
r2 = _nt_S
|
2492
2744
|
s1 << r2
|
2493
2745
|
if r2
|
2494
|
-
if has_terminal?('[-+*/]', true, index)
|
2495
|
-
r3 =
|
2746
|
+
if has_terminal?('\G[-+*/]', true, index)
|
2747
|
+
r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2496
2748
|
@index += 1
|
2497
2749
|
else
|
2498
2750
|
r3 = nil
|
@@ -2514,7 +2766,7 @@ module Less
|
|
2514
2766
|
if r1
|
2515
2767
|
r0 = r1
|
2516
2768
|
else
|
2517
|
-
if has_terminal?('[-+*/]', true, index)
|
2769
|
+
if has_terminal?('\G[-+*/]', true, index)
|
2518
2770
|
r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2519
2771
|
r5.extend(Operator2)
|
2520
2772
|
@index += 1
|
@@ -2541,8 +2793,8 @@ module Less
|
|
2541
2793
|
end
|
2542
2794
|
|
2543
2795
|
module Literal1
|
2544
|
-
def build
|
2545
|
-
|
2796
|
+
def build
|
2797
|
+
Node::Anonymous.new(text_value)
|
2546
2798
|
end
|
2547
2799
|
end
|
2548
2800
|
|
@@ -2557,14 +2809,14 @@ module Less
|
|
2557
2809
|
end
|
2558
2810
|
|
2559
2811
|
module Literal3
|
2560
|
-
def build
|
2561
|
-
|
2812
|
+
def build
|
2813
|
+
Node::Number.new(number.text_value, unit.text_value)
|
2562
2814
|
end
|
2563
2815
|
end
|
2564
2816
|
|
2565
2817
|
module Literal4
|
2566
|
-
def build
|
2567
|
-
|
2818
|
+
def build
|
2819
|
+
Node::String.new(text_value)
|
2568
2820
|
end
|
2569
2821
|
end
|
2570
2822
|
|
@@ -2589,8 +2841,8 @@ module Less
|
|
2589
2841
|
else
|
2590
2842
|
s5, i5 = [], index
|
2591
2843
|
loop do
|
2592
|
-
if has_terminal?('[-a-z]', true, index)
|
2593
|
-
r6 =
|
2844
|
+
if has_terminal?('\G[-a-z]', true, index)
|
2845
|
+
r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2594
2846
|
@index += 1
|
2595
2847
|
else
|
2596
2848
|
r6 = nil
|
@@ -2676,8 +2928,8 @@ module Less
|
|
2676
2928
|
end
|
2677
2929
|
|
2678
2930
|
module Important0
|
2679
|
-
def build
|
2680
|
-
|
2931
|
+
def build
|
2932
|
+
Node::Keyword.new(text_value)
|
2681
2933
|
end
|
2682
2934
|
end
|
2683
2935
|
|
@@ -2707,8 +2959,8 @@ module Less
|
|
2707
2959
|
end
|
2708
2960
|
|
2709
2961
|
module Keyword1
|
2710
|
-
def build
|
2711
|
-
|
2962
|
+
def build
|
2963
|
+
Node::Keyword.new(text_value)
|
2712
2964
|
end
|
2713
2965
|
end
|
2714
2966
|
|
@@ -2723,8 +2975,8 @@ module Less
|
|
2723
2975
|
i0, s0 = index, []
|
2724
2976
|
s1, i1 = [], index
|
2725
2977
|
loop do
|
2726
|
-
if has_terminal?('[-a-zA-Z]', true, index)
|
2727
|
-
r2 =
|
2978
|
+
if has_terminal?('\G[-a-zA-Z]', true, index)
|
2979
|
+
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2728
2980
|
@index += 1
|
2729
2981
|
else
|
2730
2982
|
r2 = nil
|
@@ -2779,7 +3031,7 @@ module Less
|
|
2779
3031
|
|
2780
3032
|
module String2
|
2781
3033
|
def value
|
2782
|
-
text_value
|
3034
|
+
content.text_value
|
2783
3035
|
end
|
2784
3036
|
end
|
2785
3037
|
|
@@ -2795,7 +3047,7 @@ module Less
|
|
2795
3047
|
|
2796
3048
|
module String5
|
2797
3049
|
def value
|
2798
|
-
text_value
|
3050
|
+
content.text_value
|
2799
3051
|
end
|
2800
3052
|
end
|
2801
3053
|
|
@@ -2884,8 +3136,8 @@ module Less
|
|
2884
3136
|
r0 = r1
|
2885
3137
|
else
|
2886
3138
|
i9, s9 = index, []
|
2887
|
-
if has_terminal?('["]', true, index)
|
2888
|
-
r10 =
|
3139
|
+
if has_terminal?('\G["]', true, index)
|
3140
|
+
r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2889
3141
|
@index += 1
|
2890
3142
|
else
|
2891
3143
|
r10 = nil
|
@@ -2896,8 +3148,8 @@ module Less
|
|
2896
3148
|
loop do
|
2897
3149
|
i12, s12 = index, []
|
2898
3150
|
i13 = index
|
2899
|
-
if has_terminal?('["]', true, index)
|
2900
|
-
r14 =
|
3151
|
+
if has_terminal?('\G["]', true, index)
|
3152
|
+
r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2901
3153
|
@index += 1
|
2902
3154
|
else
|
2903
3155
|
r14 = nil
|
@@ -2935,8 +3187,8 @@ module Less
|
|
2935
3187
|
r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
|
2936
3188
|
s9 << r11
|
2937
3189
|
if r11
|
2938
|
-
if has_terminal?('["]', true, index)
|
2939
|
-
r16 =
|
3190
|
+
if has_terminal?('\G["]', true, index)
|
3191
|
+
r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
2940
3192
|
@index += 1
|
2941
3193
|
else
|
2942
3194
|
r16 = nil
|
@@ -3035,8 +3287,8 @@ module Less
|
|
3035
3287
|
if r2
|
3036
3288
|
s4, i4 = [], index
|
3037
3289
|
loop do
|
3038
|
-
if has_terminal?('[0-9]', true, index)
|
3039
|
-
r5 =
|
3290
|
+
if has_terminal?('\G[0-9]', true, index)
|
3291
|
+
r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3040
3292
|
@index += 1
|
3041
3293
|
else
|
3042
3294
|
r5 = nil
|
@@ -3061,8 +3313,8 @@ module Less
|
|
3061
3313
|
if r6
|
3062
3314
|
s7, i7 = [], index
|
3063
3315
|
loop do
|
3064
|
-
if has_terminal?('[0-9]', true, index)
|
3065
|
-
r8 =
|
3316
|
+
if has_terminal?('\G[0-9]', true, index)
|
3317
|
+
r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3066
3318
|
@index += 1
|
3067
3319
|
else
|
3068
3320
|
r8 = nil
|
@@ -3110,8 +3362,8 @@ module Less
|
|
3110
3362
|
if r10
|
3111
3363
|
s12, i12 = [], index
|
3112
3364
|
loop do
|
3113
|
-
if has_terminal?('[0-9]', true, index)
|
3114
|
-
r13 =
|
3365
|
+
if has_terminal?('\G[0-9]', true, index)
|
3366
|
+
r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3115
3367
|
@index += 1
|
3116
3368
|
else
|
3117
3369
|
r13 = nil
|
@@ -3256,8 +3508,8 @@ module Less
|
|
3256
3508
|
end
|
3257
3509
|
|
3258
3510
|
module Color1
|
3259
|
-
def build
|
3260
|
-
|
3511
|
+
def build
|
3512
|
+
Node::Color.new(*rgb.build)
|
3261
3513
|
end
|
3262
3514
|
end
|
3263
3515
|
|
@@ -3275,8 +3527,8 @@ module Less
|
|
3275
3527
|
end
|
3276
3528
|
|
3277
3529
|
module Color4
|
3278
|
-
def build
|
3279
|
-
|
3530
|
+
def build
|
3531
|
+
Node::Function.new(fn.text_value, arguments.build.flatten)
|
3280
3532
|
end
|
3281
3533
|
end
|
3282
3534
|
|
@@ -3569,7 +3821,7 @@ module Less
|
|
3569
3821
|
return cached
|
3570
3822
|
end
|
3571
3823
|
|
3572
|
-
if has_terminal?('[a-fA-F0-9]', true, index)
|
3824
|
+
if has_terminal?('\G[a-fA-F0-9]', true, index)
|
3573
3825
|
r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3574
3826
|
@index += 1
|
3575
3827
|
else
|
@@ -3592,8 +3844,8 @@ module Less
|
|
3592
3844
|
end
|
3593
3845
|
|
3594
3846
|
module Function1
|
3595
|
-
def build
|
3596
|
-
|
3847
|
+
def build
|
3848
|
+
Node::Function.new(name.text_value, [arguments.build].flatten)
|
3597
3849
|
end
|
3598
3850
|
end
|
3599
3851
|
|
@@ -3608,8 +3860,8 @@ module Less
|
|
3608
3860
|
i0, s0 = index, []
|
3609
3861
|
s1, i1 = [], index
|
3610
3862
|
loop do
|
3611
|
-
if has_terminal?('[-a-zA-Z_]', true, index)
|
3612
|
-
r2 =
|
3863
|
+
if has_terminal?('\G[-a-zA-Z_]', true, index)
|
3864
|
+
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3613
3865
|
@index += 1
|
3614
3866
|
else
|
3615
3867
|
r2 = nil
|
@@ -3869,8 +4121,8 @@ module Less
|
|
3869
4121
|
i6, s6 = index, []
|
3870
4122
|
s7, i7 = [], index
|
3871
4123
|
loop do
|
3872
|
-
if has_terminal?('[a-zA-Z]', true, index)
|
3873
|
-
r8 =
|
4124
|
+
if has_terminal?('\G[a-zA-Z]', true, index)
|
4125
|
+
r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3874
4126
|
@index += 1
|
3875
4127
|
else
|
3876
4128
|
r8 = nil
|
@@ -3915,8 +4167,8 @@ module Less
|
|
3915
4167
|
else
|
3916
4168
|
s11, i11 = [], index
|
3917
4169
|
loop do
|
3918
|
-
if has_terminal?('[-a-zA-Z0-9_%$/.&=:;#+?]', true, index)
|
3919
|
-
r12 =
|
4170
|
+
if has_terminal?('\G[-a-zA-Z0-9_%$/.&=:;#+?]', true, index)
|
4171
|
+
r12 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3920
4172
|
@index += 1
|
3921
4173
|
else
|
3922
4174
|
r12 = nil
|
@@ -3960,8 +4212,8 @@ module Less
|
|
3960
4212
|
|
3961
4213
|
s0, i0 = [], index
|
3962
4214
|
loop do
|
3963
|
-
if has_terminal?('[ ]', true, index)
|
3964
|
-
r1 =
|
4215
|
+
if has_terminal?('\G[ ]', true, index)
|
4216
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3965
4217
|
@index += 1
|
3966
4218
|
else
|
3967
4219
|
r1 = nil
|
@@ -3989,8 +4241,8 @@ module Less
|
|
3989
4241
|
|
3990
4242
|
s0, i0 = [], index
|
3991
4243
|
loop do
|
3992
|
-
if has_terminal?('[ ]', true, index)
|
3993
|
-
r1 =
|
4244
|
+
if has_terminal?('\G[ ]', true, index)
|
4245
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3994
4246
|
@index += 1
|
3995
4247
|
else
|
3996
4248
|
r1 = nil
|
@@ -4023,8 +4275,8 @@ module Less
|
|
4023
4275
|
|
4024
4276
|
s0, i0 = [], index
|
4025
4277
|
loop do
|
4026
|
-
if has_terminal?('[\\n ]', true, index)
|
4027
|
-
r1 =
|
4278
|
+
if has_terminal?('\G[\\n ]', true, index)
|
4279
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
4028
4280
|
@index += 1
|
4029
4281
|
else
|
4030
4282
|
r1 = nil
|
@@ -4052,8 +4304,8 @@ module Less
|
|
4052
4304
|
|
4053
4305
|
s0, i0 = [], index
|
4054
4306
|
loop do
|
4055
|
-
if has_terminal?('[\\n ]', true, index)
|
4056
|
-
r1 =
|
4307
|
+
if has_terminal?('\G[\\n ]', true, index)
|
4308
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
4057
4309
|
@index += 1
|
4058
4310
|
else
|
4059
4311
|
r1 = nil
|
@@ -4089,8 +4341,8 @@ module Less
|
|
4089
4341
|
|
4090
4342
|
i0, s0 = index, []
|
4091
4343
|
i1 = index
|
4092
|
-
if has_terminal?('[ ;\\n]', true, index)
|
4093
|
-
r2 =
|
4344
|
+
if has_terminal?('\G[ ;\\n]', true, index)
|
4345
|
+
r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
4094
4346
|
@index += 1
|
4095
4347
|
else
|
4096
4348
|
r2 = nil
|