# File lib/less/engine/nodes/property.rb, line 136 136: def initialize ary, parent = nil, delimiter = ' ' 137: self.parent = parent 138: self.delimiter = delimiter 139: # puts "new expression #{ary} |#{delimiter}|" 140: super(ary.is_a?(Array) ? ary : [ary].flatten) 141: end
# File lib/less/engine/nodes/property.rb, line 158 158: def delimiter= d 159: @delimiter = d.strip + ' ' 160: end
# File lib/less/engine/nodes/property.rb, line 146 146: def entities; select {|i| i.kind_of? Entity } end
Evaluates the expression and instantiates a new Literal with the result ex: [#111, +, #111] will evaluate to a Color node, with value #222
# File lib/less/engine/nodes/property.rb, line 188 188: def evaluate env = nil 189: # puts "expression #{self.inspect} env: #{env ? env.variables : "nil"}" 190: if size > 2 or !terminal? 191: # puts " SIZE > 2 or !terminal" 192: 193: # puts "--- sub evaluation ---" 194: 195: # Replace self with an evaluated sub-expression 196: evaled = self.class.new(map {|e| e.respond_to?(:evaluate) ? e.evaluate(env) : e }, parent, delimiter) #5 197: 198: # puts "======================" 199: # puts "evaled => #{evaled.inspect}" 200: 201: unit = evaled.literals.map do |node| 202: node.unit 203: end.compact.uniq.tap do |ary| 204: raise MixedUnitsError, evaled * ' ' if ary.size > 1 && !evaled.operators.empty? 205: end.join 206: 207: entity = evaled.literals.find {|e| e.unit == unit } || evaled.literals.first || evaled.entities.first 208: result = evaled.operators.empty?? evaled : eval(evaled.to_ruby.join) 209: 210: # puts "entity is a #{entity.class}" 211: # puts "delimiter is |#{@delimiter}|" 212: 213: case result 214: when Entity then result 215: when Expression then result.one?? result.first : self.class.new(result, parent, delimiter) 216: else entity.class.new(result, *(unit if entity.class == Node::Number)) 217: end 218: elsif size == 1 219: if first.is_a? Variable 220: first.evaluate(env) 221: elsif first.is_a? Function 222: first.evaluate(env) 223: else 224: first 225: end 226: else 227: self 228: end 229: end
# File lib/less/engine/nodes/property.rb, line 143 143: def expressions; select {|i| i.kind_of? Expression } end
# File lib/less/engine/nodes/property.rb, line 162 162: def flatten 163: self 164: end
# File lib/less/engine/nodes/property.rb, line 154 154: def inspect 155: '[' + map {|i| i.inspect }.join(', ') + ']' 156: end
# File lib/less/engine/nodes/property.rb, line 147 147: def literals; select {|i| i.kind_of? Literal } end
# File lib/less/engine/nodes/property.rb, line 145 145: def operators; select {|i| i.is_a? Operator } end
# File lib/less/engine/nodes/property.rb, line 149 149: def parent= obj 150: @parent = obj 151: each {|e| e.parent = obj if e.respond_to? :parent } 152: end
# File lib/less/engine/nodes/property.rb, line 166 166: def terminal? 167: expressions.empty? #&& variables.empty? 168: end
# File lib/less/engine/nodes/property.rb, line 170 170: def to_css env = nil 171: # puts "TOCSS, delim: |#{@delimiter}|" 172: map do |i| 173: i.parent = self.parent 174: i.respond_to?(:to_css) ? i.to_css() : i.to_s 175: end * @delimiter 176: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.