# class Puppet::Parser::AST::IfStatement

A basic ‘if/elsif/else’ statement.

### Attributes

else[RW]
statements[RW]
test[RW]

### Public Instance Methods

each() { |child| ... } click to toggle source

    # File lib/puppet/parser/ast/ifstatement.rb, line 11
    def each
      [@test,@else,@statements].each { |child| yield child }
    end

evaluate(scope) click to toggle source

Short-curcuit evaluation. If we’re true, evaluate our statements, else if there’s an ‘else’ setting, evaluate it. the first option that matches.

    # File lib/puppet/parser/ast/ifstatement.rb, line 18
    def evaluate(scope)
      level = scope.ephemeral_level
      value = @test.safeevaluate(scope)

      # let's emulate a new scope for each branches
      begin
        if Puppet::Parser::Scope.true?(value)
          return @statements.safeevaluate(scope)
        else
          return defined?(@else) ? @else.safeevaluate(scope) : nil
        end
      ensure
        scope.unset_ephemeral_var(level)
      end
    end