Class: Sass::Tree::Node

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/sass/tree/node.rb

Overview

The abstract superclass of all parse-tree nodes.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNode

Returns a new instance of Node.



60
61
62
# File 'lib/sass/tree/node.rb', line 60

def initialize
  @children = []
end

Instance Attribute Details

#childrenArray<Tree::Node>

The child nodes of this node.

Returns:



35
36
37
# File 'lib/sass/tree/node.rb', line 35

def children
  @children
end

#filenameString

The name of the document on which this node appeared.

Returns:

  • (String)


81
82
83
# File 'lib/sass/tree/node.rb', line 81

def filename
  @filename || (@options && @options[:filename])
end

#has_childrenBoolean

Whether or not this node has child nodes. This may be true even when #children is empty, in which case this node has an empty block (e.g. {}).

Returns:

  • (Boolean)


42
43
44
# File 'lib/sass/tree/node.rb', line 42

def has_children
  @has_children
end

#lineFixnum

The line of the document on which this node appeared.

Returns:

  • (Fixnum)


47
48
49
# File 'lib/sass/tree/node.rb', line 47

def line
  @line
end

#options{Symbol => Object}

The options hash for the node. See the Sass options documentation.

Returns:

  • ({Symbol => Object})


58
59
60
# File 'lib/sass/tree/node.rb', line 58

def options
  @options
end

Instance Method Details

#<<(child)

Appends a child to the node.

Parameters:

Raises:



89
90
91
92
93
94
95
96
97
# File 'lib/sass/tree/node.rb', line 89

def <<(child)
  return if child.nil?
  if child.is_a?(Array)
    child.each {|c| self << c}
  else
    self.has_children = true
    @children << child
  end
end

#==(other) ⇒ Boolean

Compares this node and another object (only other Sass::Tree::Nodes will be equal). This does a structural comparison; if the contents of the nodes and all the child nodes are equivalent, then the nodes are as well.

Only static nodes need to override this.

Parameters:

  • other (Object)

    The object to compare with

Returns:

  • (Boolean)

    Whether or not this node and the other object are the same

See Also:



110
111
112
# File 'lib/sass/tree/node.rb', line 110

def ==(other)
  self.class == other.class && other.children == children
end

#balance(*args) (protected)

Raises:

See Also:

  • Shared.balance


189
190
191
192
193
# File 'lib/sass/tree/node.rb', line 189

def balance(*args)
  res = Sass::Shared.balance(*args)
  return res if res
  raise Sass::SyntaxError.new("Unbalanced brackets.", :line => line)
end

#bubbles?Boolean

Whether or not this node bubbles up through RuleNodes.

Returns:

  • (Boolean)


181
182
183
# File 'lib/sass/tree/node.rb', line 181

def bubbles?
  false
end

#deep_copyNode

Return a deep clone of this node. The child nodes are cloned, but options are not.

Returns:



174
175
176
# File 'lib/sass/tree/node.rb', line 174

def deep_copy
  Sass::Tree::Visitors::DeepCopy.visit(self)
end

#each {|node| ... }

Iterates through each node in the tree rooted at this node in a pre-order walk.

Yields:

  • node

Yield Parameters:

  • node (Node)

    a node in the tree



149
150
151
152
# File 'lib/sass/tree/node.rb', line 149

def each
  yield self
  children.each {|c| c.each {|n| yield n}}
end

#inspectString

Returns a representation of the node for debugging purposes.

Returns:

  • (String)


139
140
141
142
# File 'lib/sass/tree/node.rb', line 139

def inspect
  return self.class.to_s unless has_children
  "(#{self.class} #{children.map {|c| c.inspect}.join(' ')})"
end

#invisible?Boolean

True if #to_s will return nil; that is, if the node shouldn't be rendered. Should only be called in a static tree.

Returns:

  • (Boolean)


119
# File 'lib/sass/tree/node.rb', line 119

def invisible?; false; end

#styleSymbol

The output style. See the Sass options documentation.

Returns:

  • (Symbol)


124
125
126
# File 'lib/sass/tree/node.rb', line 124

def style
  @options[:style]
end

#to_sString?

Computes the CSS corresponding to this static CSS tree.

Returns:

  • (String, nil)

    The resulting CSS

See Also:



132
133
134
# File 'lib/sass/tree/node.rb', line 132

def to_s
  Sass::Tree::Visitors::ToCss.visit(self)
end

#to_sass(options = {}) ⇒ String

Converts a node to Sass code that will generate it.

Parameters:

  • options ({Symbol => Object}) (defaults to: {})

    An options hash (see CSS#initialize)

Returns:

  • (String)

    The Sass code corresponding to the node



158
159
160
# File 'lib/sass/tree/node.rb', line 158

def to_sass(options = {})
  Sass::Tree::Visitors::Convert.visit(self, options, :sass)
end

#to_scss(options = {}) ⇒ String

Converts a node to SCSS code that will generate it.

Parameters:

  • options ({Symbol => Object}) (defaults to: {})

    An options hash (see CSS#initialize)

Returns:

  • (String)

    The Sass code corresponding to the node



166
167
168
# File 'lib/sass/tree/node.rb', line 166

def to_scss(options = {})
  Sass::Tree::Visitors::Convert.visit(self, options, :scss)
end