Parent

Files

Less::Node::Expression

Attributes

parent[RW]
delimiter[RW]

Public Class Methods

new(ary, parent = nil, delimiter = ' ') click to toggle source
     # 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

Public Instance Methods

delimiter=(d) click to toggle source
     # File lib/less/engine/nodes/property.rb, line 158
158:       def delimiter= d
159:         @delimiter = d.strip + ' '
160:       end
entities() click to toggle source
     # File lib/less/engine/nodes/property.rb, line 146
146:       def entities;    select {|i| i.kind_of? Entity }     end
evaluate(env = nil) click to toggle source

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
expressions() click to toggle source
     # File lib/less/engine/nodes/property.rb, line 143
143:       def expressions; select {|i| i.kind_of? Expression } end
flatten() click to toggle source
     # File lib/less/engine/nodes/property.rb, line 162
162:       def flatten
163:         self
164:       end
inspect() click to toggle source
     # File lib/less/engine/nodes/property.rb, line 154
154:       def inspect
155:         '[' + map {|i| i.inspect }.join(', ') + ']'
156:       end
literals() click to toggle source
     # File lib/less/engine/nodes/property.rb, line 147
147:       def literals;    select {|i| i.kind_of? Literal }    end
operators() click to toggle source
     # File lib/less/engine/nodes/property.rb, line 145
145:       def operators;   select {|i| i.is_a? Operator }      end
parent=(obj) click to toggle source
     # 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
terminal?() click to toggle source
     # File lib/less/engine/nodes/property.rb, line 166
166:       def terminal?
167:         expressions.empty? #&& variables.empty?
168:       end
to_css(env = nil) click to toggle source
     # 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
to_ruby() click to toggle source
     # File lib/less/engine/nodes/property.rb, line 178
178:       def to_ruby
179:         map do |i|
180:           i.respond_to?(:to_ruby) ? i.to_ruby : i.to_s
181:         end
182:       end
variables() click to toggle source
     # File lib/less/engine/nodes/property.rb, line 144
144:       def variables;   select {|i| i.kind_of? Variable   } end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.