| Class | Less::Node::Expression |
| In: |
lib/sass/less.rb
|
| Parent: | Object |
| LESS_TO_SASS_OPERATORS | = | {"-" => :minus, "+" => :plus, "*" => :times, "/" => :div, "=" => :single_eq} |
# 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
# 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
# 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
# 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
# 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