Class Less::Node::Expression
In: lib/sass/less.rb
Parent: Object
SassNode Engine Keyword FontFamily Anonymous Number Color Function Expression Variable Quoted Property Element Def Call lib/sass/less.rb lib/sass/less.rb lib/sass/less.rb Mixin Entity Node Selectors2 Import1 Accessor1 Declaration3 Alpha1 Entity Mixin4 StyleSheet Less dot/m_51_0.png

Methods

Constants

LESS_TO_SASS_OPERATORS = {"-" => :minus, "+" => :plus, "*" => :times, "/" => :div, "=" => :single_eq}

Public Instance methods

[Source]

     # File lib/sass/less.rb, line 235
235:       def to_sass_tree
236:         if first.is_a?(Array)
237:           val = map {|e| _to_sass_tree(e)}.inject(nil) do |e, i|
238:             next i unless e
239:             Sass::Script::Operation.new(e, i, :comma)
240:           end
241:         else
242:           val = _to_sass_tree(self)
243:         end
244:         val.options = {}
245:         val
246:       end

Private Instance methods

[Source]

     # File lib/sass/less.rb, line 290
290:       def _sass_split(arr)
291:         return arr[0].to_sass_tree, arr[1..-1] unless arr[0] == "("
292:         parens = 1
293:         i = arr[1..-1].each_with_index do |e, i|
294:           parens += 1 if e == "("
295:           parens -= 1 if e == ")"
296:           break i if parens == 0
297:         end
298: 
299:         return _to_sass_tree(arr[1...i+1]), arr[i+2..-1]
300:       end

[Source]

     # File lib/sass/less.rb, line 252
252:       def _to_sass_tree(arr)
253:         e, rest = _to_sass_tree_plus_minus_eq(arr)
254:         until rest.empty?
255:           e2, rest = _to_sass_tree_plus_minus_eq(rest)
256:           e = Sass::Script::Operation.new(e, e2, :concat)
257:         end
258:         return e
259:       end

[Source]

     # File lib/sass/less.rb, line 261
261:       def _to_sass_tree_plus_minus_eq(arr)
262:         e, rest = _to_sass_tree_times_div(arr)
263:         while rest[0] && rest[0].is_a?(Operator) && %w[+ - =].include?(rest[0])
264:           op = LESS_TO_SASS_OPERATORS[rest[0]]
265:           e2, rest = _to_sass_tree_times_div(rest[1..-1])
266:           e = Sass::Script::Operation.new(e, e2, op)
267:         end
268:         return e, rest
269:       end

[Source]

     # File lib/sass/less.rb, line 271
271:       def _to_sass_tree_times_div(arr)
272:         e, rest = _to_sass_tree_unary(arr)
273:         while rest[0] && rest[0].is_a?(Operator) && %w[* /].include?(rest[0])
274:           op = LESS_TO_SASS_OPERATORS[rest[0]]
275:           e2, rest = _to_sass_tree_unary(rest[1..-1])
276:           e = Sass::Script::Operation.new(e, e2, op)
277:         end
278:         return e, rest
279:       end

[Source]

     # File lib/sass/less.rb, line 281
281:       def _to_sass_tree_unary(arr)
282:         if arr[0] == "-"
283:           first, rest = _sass_split(arr[1..-1])
284:           return Sass::Script::UnaryOperation.new(first, :minus), rest
285:         else
286:           return _sass_split(arr[0..-1])
287:         end
288:       end

[Validate]