Parent

Included Modules

Class/Module Index [+]

Quicksearch

Sass::Tree::Node

The abstract superclass of all parse-tree nodes.

Attributes

children[RW]

The child nodes of this node.

@return [Array<Tree::Node>]

filename[W]

The name of the document on which this node appeared.

@return [String]

has_children[RW]

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. `{}`).

@return [Boolean]

line[RW]

The line of the document on which this node appeared.

@return [Fixnum]

options[R]

The options hash for the node. See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}.

@return [{Symbol => Object}]

Public Class Methods

new() click to toggle source
# File lib/sass/tree/node.rb, line 59
def initialize
  @children = []
end

Public Instance Methods

<<(child) click to toggle source

Appends a child to the node.

@param child [Tree::Node, Array<Tree::Node>] The child node or nodes @raise [Sass::SyntaxError] if `child` is invalid

# File lib/sass/tree/node.rb, line 88
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) click to toggle source

Compares this node and another object (only other {Tree::Node}s 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.

@param other [Object] The object to compare with @return [Boolean] Whether or not this node and the other object

are the same

@see Sass::Tree

# File lib/sass/tree/node.rb, line 109
def ==(other)
  self.class == other.class && other.children == children
end
children=(children) click to toggle source

@private

# File lib/sass/tree/node.rb, line 72
def children=(children)
  self.has_children ||= !children.empty?
  @children = children
end
deep_copy() click to toggle source

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

@return [Node]

# File lib/sass/tree/node.rb, line 186
def deep_copy
  Sass::Tree::Visitors::DeepCopy.visit(self)
end
do_extend(extends) click to toggle source

Converts a static CSS tree (e.g. the output of {Tree::Visitors::Cssize}) into another static CSS tree, with the given extensions applied to all relevant {RuleNode}s.

@todo Link this to the reference documentation on `@extend`

when such a thing exists.

@param extends [Sass::Util::SubsetMap{Selector::Simple => Selector::Sequence}]

The extensions to perform on this tree

@return [Tree::Node] The resulting tree of static CSS nodes. @raise [Sass::SyntaxError] Only if there's a programmer error

and this is not a static CSS tree
# File lib/sass/tree/node.rb, line 147
def do_extend(extends)
  node = dup
  node.children = children.map {|c| c.do_extend(extends)}
  node
rescue Sass::SyntaxError => e
  e.modify_backtrace(:filename => filename, :line => line)
  raise e
end
each(&block) click to toggle source

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

@yield node @yieldparam node [Node] a node in the tree

# File lib/sass/tree/node.rb, line 161
def each(&block)
  yield self
  children.each {|c| c.each(&block)}
end
filename() click to toggle source

The name of the document on which this node appeared.

@return [String]

# File lib/sass/tree/node.rb, line 80
def filename
  @filename || (@options && @options[:filename])
end
invisible?() click to toggle source

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

@return [Boolean]

# File lib/sass/tree/node.rb, line 118
def invisible?; false; end
options=(options) click to toggle source

Sets the options hash for the node and all its children.

@param options [{Symbol => Object}] The options @see options

# File lib/sass/tree/node.rb, line 67
def options=(options)
  Sass::Tree::Visitors::SetOptions.visit(self, options)
end
style() click to toggle source

The output style. See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}.

@return [Symbol]

# File lib/sass/tree/node.rb, line 123
def style
  @options[:style]
end
to_s() click to toggle source

Computes the CSS corresponding to this static CSS tree.

@return [String, nil] The resulting CSS @see Sass::Tree

# File lib/sass/tree/node.rb, line 131
def to_s
  Sass::Tree::Visitors::ToCss.visit(self)
end
to_sass(options = {}) click to toggle source

Converts a node to Sass code that will generate it.

@param options [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}) @return [String] The Sass code corresponding to the node

# File lib/sass/tree/node.rb, line 170
def to_sass(options = {})
  Sass::Tree::Visitors::Convert.visit(self, options, :sass)
end
to_scss(options = {}) click to toggle source

Converts a node to SCSS code that will generate it.

@param options [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}) @return [String] The Sass code corresponding to the node

# File lib/sass/tree/node.rb, line 178
def to_scss(options = {})
  Sass::Tree::Visitors::Convert.visit(self, options, :scss)
end

Protected Instance Methods

balance(*args) click to toggle source

@see Sass::Shared.balance @raise [Sass::SyntaxError] if the brackets aren't balanced

# File lib/sass/tree/node.rb, line 194
def balance(*args)
  res = Sass::Shared.balance(*args)
  return res if res
  raise Sass::SyntaxError.new("Unbalanced brackets.", :line => line)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.