Sha256: ebbbbbf20f749cce55818e343c7e562be0be4f4efd0b4b5127f7492e956669b3

Contents?: true

Size: 1.84 KB

Versions: 3

Compression:

Stored size: 1.84 KB

Contents

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?
            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
            if @value.is_a?(AST::ASTArray)
                @value.each { |subval|
                    yield subval.value
                }
            else
                yield @value.value
            end
        end

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

        def tree(indent = 0)
            rettree = [
                @value.tree(indent + 1),
                ((@@indline * indent) + self.typewrap(self.pin)),
                @statements.tree(indent + 1)
            ]
            return rettree.flatten.join("\n")
        end
    end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
puppet-0.13.2 lib/puppet/parser/ast/caseopt.rb
puppet-0.13.0 lib/puppet/parser/ast/caseopt.rb
puppet-0.13.1 lib/puppet/parser/ast/caseopt.rb