Class Sass::Tree::ExtendNode
In: lib/sass/tree/extend_node.rb
Parent: Node
Haml::Util Engine Color SyntaxError UnitConversionError StandardError AbstractSequence CommaSequence Sequence SimpleSequence Simple Parent Universal Class Negation Id Pseudo Attribute Interpolation Element Node Operation Literal UnaryOperation StringInterpolation Funcall Variable Interpolation Lexer CssLexer Number String Bool Parser Parser CssParser EvaluationContext StaticParser SassParser CssParser Node DebugNode IfNode CommentNode ForNode PropNode MixinNode DirectiveNode VariableNode RootNode WarnNode ExtendNode RuleNode MixinDefNode WhileNode Enumerable ImportNode Merb::BootLoader MerbBootLoader Repl CSS Environment Rack StalenessChecker lib/sass/repl.rb lib/sass/css.rb lib/sass/environment.rb lib/sass/error.rb lib/sass/engine.rb lib/sass/selector/simple_sequence.rb lib/sass/selector/abstract_sequence.rb lib/sass/selector/sequence.rb lib/sass/selector/comma_sequence.rb lib/sass/selector/simple.rb lib/sass/selector.rb Selector lib/sass/script/css_parser.rb lib/sass/script/lexer.rb lib/sass/script/color.rb lib/sass/script/string.rb lib/sass/script/unary_operation.rb lib/sass/script/variable.rb lib/sass/script/funcall.rb lib/sass/script/string_interpolation.rb lib/sass/script/operation.rb lib/sass/script/bool.rb lib/sass/script/parser.rb lib/sass/script/node.rb lib/sass/script/literal.rb lib/sass/script/interpolation.rb lib/sass/script/css_lexer.rb lib/sass/script/number.rb lib/sass/script/functions.rb Functions Script lib/sass/scss/sass_parser.rb lib/sass/scss/static_parser.rb lib/sass/scss/parser.rb lib/sass/scss/css_parser.rb ScriptParser ScriptLexer RX SCSS Files Callbacks lib/sass/tree/while_node.rb lib/sass/tree/if_node.rb lib/sass/tree/mixin_def_node.rb lib/sass/tree/debug_node.rb lib/sass/tree/root_node.rb lib/sass/tree/for_node.rb lib/sass/tree/import_node.rb lib/sass/tree/prop_node.rb lib/sass/tree/node.rb lib/sass/tree/comment_node.rb lib/sass/tree/extend_node.rb lib/sass/tree/mixin_node.rb lib/sass/tree/warn_node.rb lib/sass/tree/directive_node.rb lib/sass/tree/rule_node.rb lib/sass/tree/variable_node.rb Tree lib/sass/plugin/rack.rb lib/sass/plugin/staleness_checker.rb lib/sass/plugin/merb.rb Plugin Sass dot/m_61_0.png

A static node reprenting an `@extend` directive.

@see Sass::Tree

Methods

cssize   new   perform!   to_src  

Public Class methods

@param selector [Array<String, Sass::Script::Node>]

  The CSS selector to extend,
  interspersed with {Sass::Script::Node}s
  representing `#{}`-interpolation.

[Source]

    # File lib/sass/tree/extend_node.rb, line 12
12:     def initialize(selector)
13:       @selector = selector
14:       super()
15:     end

Public Instance methods

Registers this extension in the `extends` subset map.

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

  The extensions defined for this tree

@param parent [RuleNode] The parent node of this node @see Node#cssize

[Source]

    # File lib/sass/tree/extend_node.rb, line 23
23:     def cssize(extends, parent)
24:       @resolved_selector.members.each do |seq|
25:         if seq.members.size > 1
26:           raise Sass::SyntaxError.new("Can't extend #{seq.to_a.join}: can't extend nested selectors")
27:         end
28: 
29:         sseq = seq.members.first
30:         if !sseq.is_a?(Sass::Selector::SimpleSequence)
31:           raise Sass::SyntaxError.new("Can't extend #{seq.to_a.join}: invalid selector")
32:         end
33: 
34:         sel = sseq.members
35:         parent.resolved_rules.members.each do |seq|
36:           if !seq.members.last.is_a?(Sass::Selector::SimpleSequence)
37:             raise Sass::SyntaxError.new("#{seq} can't extend: invalid selector")
38:           end
39: 
40:           extends[sel] = seq
41:         end
42:       end
43: 
44:       []
45:     end

Protected Instance methods

Runs SassScript interpolation in the selector, and then parses the result into a {Sass::Selector::CommaSequence}.

@param environment [Sass::Environment] The lexical environment containing

  variable and mixin values

[Source]

    # File lib/sass/tree/extend_node.rb, line 59
59:     def perform!(environment)
60:       @resolved_selector = Sass::SCSS::CssParser.new(run_interp(@selector, environment), self.line).
61:         parse_selector(self.filename)
62:       super
63:     end

@see Node#to_src

[Source]

    # File lib/sass/tree/extend_node.rb, line 50
50:     def to_src(tabs, opts, fmt)
51:       "#{'  ' * tabs}@extend #{selector_to_src(@selector, tabs, opts, fmt).lstrip}#{semi fmt}\n"
52:     end

[Validate]