Class: Sass::Tree::Node
- Inherits:
-
Object
- Object
- Sass::Tree::Node
- Includes:
- Enumerable
- Defined in:
- lib/sass/tree/node.rb
Overview
The abstract superclass of all parse-tree nodes.
Direct Known Subclasses
AtRootNode, CharsetNode, CommentNode, ContentNode, DebugNode, DirectiveNode, EachNode, ErrorNode, ExtendNode, ForNode, FunctionNode, IfNode, KeyframeRuleNode, MixinDefNode, MixinNode, PropNode, ReturnNode, RootNode, RuleNode, TraceNode, VariableNode, WarnNode, WhileNode
Instance Attribute Summary collapse
-
#children ⇒ Array<Tree::Node>
readonly
The child nodes of this node.
-
#filename ⇒ String
The name of the document on which this node appeared.
-
#has_children ⇒ Boolean
Whether or not this node has child nodes.
-
#line ⇒ Integer
The line of the document on which this node appeared.
-
#options ⇒ {Symbol => Object}
The options hash for the node.
-
#source_range ⇒ Sass::Source::Range
The source range in the document on which this node appeared.
Instance Method Summary collapse
-
#<<(child)
Appends a child to the node.
-
#==(other) ⇒ Boolean
Compares this node and another object (only other Nodes will be equal).
- #balance(*args) protected
-
#bubbles? ⇒ Boolean
Whether or not this node bubbles up through RuleNodes.
-
#css ⇒ String
Computes the CSS corresponding to this static CSS tree.
-
#css_with_sourcemap ⇒ (String, Sass::Source::Map)
Computes the CSS corresponding to this static CSS tree, along with the respective source map.
-
#deep_copy ⇒ Node
Return a deep clone of this node.
-
#each {|node| ... }
Iterates through each node in the tree rooted at this node in a pre-order walk.
-
#initialize ⇒ Node
constructor
A new instance of Node.
-
#inspect ⇒ String
Returns a representation of the node for debugging purposes.
-
#invisible? ⇒ Boolean
True if #to_s will return
nil
; that is, if the node shouldn't be rendered. -
#style ⇒ Symbol
The output style.
-
#to_sass(options = {}) ⇒ String
Converts a node to Sass code that will generate it.
-
#to_scss(options = {}) ⇒ String
Converts a node to SCSS code that will generate it.
Constructor Details
#initialize ⇒ Node
Returns a new instance of Node.
91 92 93 94 95 |
# File 'lib/sass/tree/node.rb', line 91
def initialize
@children = []
@filename = nil
@options = nil
end
|
Instance Attribute Details
#children ⇒ Array<Tree::Node>
The child nodes of this node.
61 62 63 |
# File 'lib/sass/tree/node.rb', line 61
def children
@children
end
|
#filename ⇒ String
The name of the document on which this node appeared.
114 115 116 |
# File 'lib/sass/tree/node.rb', line 114
def filename
@filename || (@options && @options[:filename])
end
|
#has_children ⇒ Boolean
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. {}
).
68 69 70 |
# File 'lib/sass/tree/node.rb', line 68
def has_children
@has_children
end
|
#line ⇒ Integer
The line of the document on which this node appeared.
73 74 75 |
# File 'lib/sass/tree/node.rb', line 73
def line
@line
end
|
#options ⇒ {Symbol => Object}
The options hash for the node. See the Sass options documentation.
89 90 91 |
# File 'lib/sass/tree/node.rb', line 89
def options
@options
end
|
#source_range ⇒ Sass::Source::Range
The source range in the document on which this node appeared.
78 79 80 |
# File 'lib/sass/tree/node.rb', line 78
def source_range
@source_range
end
|
Instance Method Details
#<<(child)
Appends a child to the node.
122 123 124 125 126 127 128 129 130 |
# File 'lib/sass/tree/node.rb', line 122
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.
143 144 145 |
# File 'lib/sass/tree/node.rb', line 143
def ==(other)
self.class == other.class && other.children == children
end
|
#balance(*args) (protected)
233 234 235 236 237 |
# File 'lib/sass/tree/node.rb', line 233
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.
225 226 227 |
# File 'lib/sass/tree/node.rb', line 225
def bubbles?
false
end
|
#css ⇒ String
Computes the CSS corresponding to this static CSS tree.
165 166 167 |
# File 'lib/sass/tree/node.rb', line 165
def css
Sass::Tree::Visitors::ToCss.new.visit(self)
end
|
#css_with_sourcemap ⇒ (String, Sass::Source::Map)
Computes the CSS corresponding to this static CSS tree, along with the respective source map.
174 175 176 177 178 |
# File 'lib/sass/tree/node.rb', line 174
def css_with_sourcemap
visitor = Sass::Tree::Visitors::ToCss.new(:build_source_mapping)
result = visitor.visit(self)
return result, visitor.source_mapping
end
|
#deep_copy ⇒ Node
Return a deep clone of this node. The child nodes are cloned, but options are not.
218 219 220 |
# File 'lib/sass/tree/node.rb', line 218
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.
193 194 195 196 |
# File 'lib/sass/tree/node.rb', line 193
def each
yield self
children.each {|c| c.each {|n| yield n}}
end
|
#inspect ⇒ String
Returns a representation of the node for debugging purposes.
183 184 185 186 |
# File 'lib/sass/tree/node.rb', line 183
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.
152 |
# File 'lib/sass/tree/node.rb', line 152
def invisible?; false; end
|
#style ⇒ Symbol
The output style. See the Sass options documentation.
157 158 159 |
# File 'lib/sass/tree/node.rb', line 157
def style
@options[:style]
end
|
#to_sass(options = {}) ⇒ String
Converts a node to Sass code that will generate it.
202 203 204 |
# File 'lib/sass/tree/node.rb', line 202
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.
210 211 212 |
# File 'lib/sass/tree/node.rb', line 210
def to_scss(options = {})
Sass::Tree::Visitors::Convert.visit(self, options, :scss)
end
|