| Class | Sass::Tree::ForNode |
| In: |
lib/sass/tree/for_node.rb
|
| Parent: | Node |
A dynamic node representing a Sass `@for` loop.
@see Sass::Tree
@param var [String] The name of the loop variable @param from [Script::Node] The parse tree for the initial expression @param to [Script::Node] The parse tree for the final expression @param exclusive [Boolean] Whether to include `to` in the loop
or stop just before
# File lib/sass/tree/for_node.rb, line 13
13: def initialize(var, from, to, exclusive)
14: @var = var
15: @from = from
16: @to = to
17: @exclusive = exclusive
18: super()
19: end
Runs the child nodes once for each time through the loop, varying the variable each time.
@param environment [Sass::Environment] The lexical environment containing
variable and mixin values
@return [Array<Tree::Node>] The resulting static nodes @see Sass::Tree
# File lib/sass/tree/for_node.rb, line 37
37: def _perform(environment)
38: from = @from.perform(environment)
39: to = @to.perform(environment)
40: from.assert_int!
41: to.assert_int!
42:
43: to = to.coerce(from.numerator_units, from.denominator_units)
44: range = Range.new(from.to_i, to.to_i, @exclusive)
45:
46: children = []
47: environment = Sass::Environment.new(environment)
48: range.each do |i|
49: environment.set_local_var(@var, Sass::Script::Number.new(i, from.numerator_units, from.denominator_units))
50: children += perform_children(environment)
51: end
52: children
53: end
Returns an error message if the given child node is invalid, and false otherwise.
{ExtendNode}s are valid within {ForNode}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
# File lib/sass/tree/for_node.rb, line 63
63: def invalid_child?(child)
64: super unless child.is_a?(ExtendNode)
65: end
@see Node#to_src
# File lib/sass/tree/for_node.rb, line 24
24: def to_src(tabs, opts, fmt)
25: to = @exclusive ? "to" : "through"
26: "#{' ' * tabs}@for $#{dasherize(@var, opts)} from #{@from.to_sass(opts)} #{to} #{@to.to_sass(opts)}" +
27: children_to_src(tabs, opts, fmt)
28: end