Class: Less::Node::Property

Inherits:
String
  • Object
show all
Includes:
Entity
Defined in:
lib/less/engine/nodes/property.rb

Direct Known Subclasses

Variable

Instance Attribute Summary collapse

Attributes included from Entity

#parent

Instance Method Summary collapse

Methods included from Entity

#path, #root

Constructor Details

#initialize(key, value = nil, parent = nil) ⇒ Property

Returns a new instance of Property.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/less/engine/nodes/property.rb', line 8

def initialize key, value = nil, parent = nil
  super key, parent

  value = if value.is_a? Array
    value.each {|v| v.parent = self if v.respond_to? :parent }
  elsif value.nil?
    []
  else
    value
  end

  @value = value.is_a?(Value) ? value : Value.new(value, self)
  @eval = false # Store the first evaluation in here
end

Instance Attribute Details

#valueObject

Returns the value of attribute value.



6
7
8
# File 'lib/less/engine/nodes/property.rb', line 6

def value
  @value
end

Instance Method Details

#<<(token) ⇒ Object



32
33
34
35
36
# File 'lib/less/engine/nodes/property.rb', line 32

def << token
  token = Node::Anonymous.new(*token) unless token.is_a? Entity or token.respond_to? :to_ruby
  token.parent = self if token.respond_to? :parent
  @value << token
end

#==(other) ⇒ Object



45
46
47
# File 'lib/less/engine/nodes/property.rb', line 45

def == other
  self.to_s == other.to_s
end

#copyObject



28
29
30
# File 'lib/less/engine/nodes/property.rb', line 28

def copy
  clone.tap {|c| c.value = value.copy }
end

#empty?Boolean

Returns:

  • (Boolean)


38
# File 'lib/less/engine/nodes/property.rb', line 38

def empty?; !@value || @value.empty? end

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/less/engine/nodes/property.rb', line 49

def eql? other
  self == other and value.eql? other.value
end

#eval?Boolean

Returns:

  • (Boolean)


39
# File 'lib/less/engine/nodes/property.rb', line 39

def eval?;  @eval end

#evaluateObject

TODO: @eval and @value should be merged



62
63
64
# File 'lib/less/engine/nodes/property.rb', line 62

def evaluate
  @eval ||= value.is_a?(Value) ? value.map {|e| e.evaluate } : [value.evaluate]
end

#inspectObject



41
42
43
# File 'lib/less/engine/nodes/property.rb', line 41

def inspect
  self + (empty?? "" : ": `#{value.map {|i| i.to_s } * ' | '}`")
end

#nearest(node) ⇒ Object



57
58
59
# File 'lib/less/engine/nodes/property.rb', line 57

def nearest node
  parent.nearest node
end

#parent=(obj) ⇒ Object



23
24
25
26
# File 'lib/less/engine/nodes/property.rb', line 23

def parent= obj
  @parent = obj
  value.parent = self
end

#to_cssObject



66
67
68
# File 'lib/less/engine/nodes/property.rb', line 66

def to_css
  "#{self}: #{evaluate.map {|i| i.to_css }.join(", ")};"
end

#to_sObject



53
54
55
# File 'lib/less/engine/nodes/property.rb', line 53

def to_s
  super
end