module Sass::Tree
A namespace for nodes in the Sass
parse tree.
The Sass
parse tree has three states: dynamic, static Sass
, and static CSS
.
When it’s first parsed, a Sass
document is in the dynamic state. It has nodes for mixin definitions and ‘@for` loops and so forth, in addition to nodes for CSS
rules and properties. Nodes that only appear in this state are called **dynamic nodes**.
{Tree::Visitors::Perform} creates a static Sass
tree, which is different. It still has nodes for CSS
rules and properties but it doesn’t have any dynamic-generation-related nodes. The nodes in this state are in a similar structure to the Sass
document: rules and properties are nested beneath one another, although the {Tree::RuleNode} selectors are already in their final state. Nodes that can be in this state or in the dynamic state are called **static nodes**; nodes that can only be in this state are called **solely static nodes**.
{Tree::Visitors::Cssize} is then used to create a static CSS
tree. This is like a static Sass
tree, but the structure exactly mirrors that of the generated CSS
. Rules and properties can’t be nested beneath one another in this state.
Finally, {Tree::Visitors::ToCss} can be called on a static CSS
tree to get the actual CSS
code as a string.