Class Sass::Tree::IfNode
In: lib/sass/tree/if_node.rb
Parent: Node
Haml::Util Engine Color SyntaxError UnitConversionError StandardError AbstractSequence CommaSequence Sequence SimpleSequence Simple Parent Universal Class SelectorPseudoClass Id Pseudo Attribute Interpolation Element Node Operation Literal UnaryOperation StringInterpolation Funcall Interpolation Variable Lexer CssLexer Number Bool String Parser Parser CssParser EvaluationContext StaticParser SassParser CssParser Node DebugNode IfNode CommentNode ForNode PropNode MixinNode DirectiveNode ExtendNode VariableNode WarnNode RootNode WhileNode RuleNode MixinDefNode 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/literal.rb lib/sass/script/node.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 ScriptLexer ScriptParser 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_85_0.png

A dynamic node representing a Sass `@if` statement.

{IfNode}s are a little odd, in that they also represent `@else` and `@else if`s. This is done as a linked list: each {IfNode} has a link (\{else}) to the next {IfNode}.

@see Sass::Tree

Methods

Attributes

else  [RW]  The next {IfNode} in the if-else list, or `nil`.

@return [IfNode]

Public Class methods

@param expr [Script::Expr] The conditional expression.

  If this is nil, this is an `@else` node, not an `@else if`

[Source]

    # File lib/sass/tree/if_node.rb, line 19
19:     def initialize(expr)
20:       @expr = expr
21:       @last_else = self
22:       super()
23:     end

Public Instance methods

Append an `@else` node to the end of the list.

@param node [IfNode] The `@else` node to append

[Source]

    # File lib/sass/tree/if_node.rb, line 28
28:     def add_else(node)
29:       @last_else.else = node
30:       @last_else = node
31:     end

@see Node#options=

[Source]

    # File lib/sass/tree/if_node.rb, line 34
34:     def options=(options)
35:       super
36:       self.else.options = options if self.else
37:     end

Protected Instance methods

Runs the child nodes if the conditional expression is true; otherwise, tries the \{else} nodes.

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

  variable and mixin values

@return [Array<Tree::Node>] The resulting static nodes @see Sass::Tree

[Source]

    # File lib/sass/tree/if_node.rb, line 62
62:     def _perform(environment)
63:       environment = Sass::Environment.new(environment)
64:       return perform_children(environment) if @expr.nil? || @expr.perform(environment).to_bool
65:       return @else.perform(environment) if @else
66:       []
67:     end

Returns an error message if the given child node is invalid, and false otherwise.

{ExtendNode}s are valid within {IfNode}s.

@param child [Tree::Node] A potential child node. @return [Boolean, String] Whether or not the child node is valid,

  as well as the error message to display if it is invalid

[Source]

    # File lib/sass/tree/if_node.rb, line 77
77:     def invalid_child?(child)
78:       super unless child.is_a?(ExtendNode)
79:     end

@see Node#to_src

[Source]

    # File lib/sass/tree/if_node.rb, line 42
42:     def to_src(tabs, opts, fmt, is_else = false)
43:       name =
44:         if !is_else; "if"
45:         elsif @expr; "else if"
46:         else; "else"
47:         end
48:       str = "#{'  ' * tabs}@#{name}"
49:       str << " #{@expr.to_sass(opts)}" if @expr
50:       str << children_to_src(tabs, opts, fmt)
51:       str << @else.send(:to_src, tabs, opts, fmt, true) if @else
52:       str
53:     end

[Validate]