Sha256: 269152957d6b4ce13e404c1117fef1330d50bb93cb23bf4daae0fb6d6aa91112

Contents?: true

Size: 1.67 KB

Versions: 8

Compression:

Stored size: 1.67 KB

Contents

require 'puppet/parser/ast/branch'

class Puppet::Parser::AST
    # Each individual option in a case statement.
    class CaseOpt < AST::Branch
        attr_accessor :value, :statements

        # CaseOpt is a bit special -- we just want the value first,
        # so that CaseStatement can compare, and then it will selectively
        # decide whether to fully evaluate this option

        def each
            [@value,@statements].each { |child| yield child }
        end

        # Are we the default option?
        def default?
            # Cache the @default value.
            if defined? @default
                return @default
            end

            if @value.is_a?(AST::ASTArray)
                @value.each { |subval|
                    if subval.is_a?(AST::Default)
                        @default = true
                        break
                    end
                }
            else
                if @value.is_a?(AST::Default)
                    @default = true
                end
            end

            unless defined? @default
                @default = false
            end

            return @default
        end

        # You can specify a list of values; return each in turn.
        def eachvalue(scope)
            if @value.is_a?(AST::ASTArray)
                @value.each { |subval|
                    yield subval.safeevaluate(scope)
                }
            else
                yield @value.safeevaluate(scope)
            end
        end

        # Evaluate the actual statements; this only gets called if
        # our option matched.
        def evaluate(scope)
            return @statements.safeevaluate(scope)
        end
    end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
puppet-0.24.9 lib/puppet/parser/ast/caseopt.rb
puppet-0.24.2 lib/puppet/parser/ast/caseopt.rb
puppet-0.24.4 lib/puppet/parser/ast/caseopt.rb
puppet-0.24.3 lib/puppet/parser/ast/caseopt.rb
puppet-0.24.6 lib/puppet/parser/ast/caseopt.rb
puppet-0.24.7 lib/puppet/parser/ast/caseopt.rb
puppet-0.24.5 lib/puppet/parser/ast/caseopt.rb
puppet-0.24.8 lib/puppet/parser/ast/caseopt.rb