Class: Sass::Tree::Visitors::Extend
- Inherits:
- Base
- Object
- Base
- Sass::Tree::Visitors::Extend
- Defined in:
- /Users/ceppstei/Projects/sass-lang/.sass/lib/sass/tree/visitors/extend.rb
Overview
A visitor for performing selector inheritance on a static CSS tree.
Destructively modifies the tree.
Class Method Summary (collapse)
- + (Object) visit(root, extends)
Performs the given extensions on the static CSS tree based in
root, then validates that all extends matched some selector.
Instance Method Summary (collapse)
- - (Extend) initialize(extends) constructor protected
A new instance of Extend.
- - visit(node) protected
If an exception is raised, this adds proper metadata to the backtrace.
- - visit_children(parent) protected
Keeps track of the current parent directives.
- - visit_rule(node) protected
Applies the extend to a single rule’s selector.
Methods inherited from Base
Constructor Details
- (Extend) initialize(extends) (protected)
Returns a new instance of Extend
21 22 23 24 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/tree/visitors/extend.rb', line 21
def initialize(extends)
@parent_directives = []
@extends = extends
end |
Class Method Details
+ (Object) visit(root, extends)
Performs the given extensions on the static CSS tree based in root, then validates that all extends matched some selector.
The extensions to perform on this tree.
13 14 15 16 17 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/tree/visitors/extend.rb', line 13
def self.visit(root, extends)
return if extends.empty?
new(extends).send(:visit, root)
check_extends_fired! extends
end |
Instance Method Details
- visit(node) (protected)
If an exception is raised, this adds proper metadata to the backtrace.
27 28 29 30 31 32 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/tree/visitors/extend.rb', line 27
def visit(node)
super(node)
rescue Sass::SyntaxError => e
e.modify_backtrace(:filename => node.filename, :line => node.line)
raise e
end |
- visit_children(parent) (protected)
Keeps track of the current parent directives.
35 36 37 38 39 40 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/tree/visitors/extend.rb', line 35
def visit_children(parent)
@parent_directives.push parent if parent.is_a?(Sass::Tree::DirectiveNode)
super
ensure
@parent_directives.pop if parent.is_a?(Sass::Tree::DirectiveNode)
end |
- visit_rule(node) (protected)
Applies the extend to a single rule’s selector.
43 44 45 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/tree/visitors/extend.rb', line 43
def visit_rule(node)
node.resolved_rules = node.resolved_rules.do_extend(@extends, @parent_directives)
end |