Sha256: a673979906a3214f4b7c3d3e10c02328881259afc17ab0fad147fc227e4e1a4f

Contents?: true

Size: 1.25 KB

Versions: 10

Compression:

Stored size: 1.25 KB

Contents

require 'puppet'
require 'puppet/parser/ast/branch'

class Puppet::Parser::AST
    class ArithmeticOperator < AST::Branch

        attr_accessor :operator, :lval, :rval

        # Iterate across all of our children.
        def each
            [@lval,@rval,@operator].each { |child| yield child }
        end

        # Returns a boolean which is the result of the boolean operation
        # of lval and rval operands
        def evaluate(scope)
            # evaluate the operands, should return a boolean value
            lval = @lval.safeevaluate(scope)
            lval = Puppet::Parser::Scope.number?(lval)
            if lval == nil
                raise ArgumentError, "left operand of %s is not a number" % @operator
            end
            rval = @rval.safeevaluate(scope)
            rval = Puppet::Parser::Scope.number?(rval)
            if rval == nil
                raise ArgumentError, "right operand of %s is not a number" % @operator
            end

            # compute result
            lval.send(@operator, rval)
        end

        def initialize(hash)
            super

            unless %w{+ - * / << >>}.include?(@operator)
                raise ArgumentError, "Invalid arithmetic operator %s" % @operator
            end
        end
    end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
puppet-0.25.5 lib/puppet/parser/ast/arithmetic_operator.rb
puppet-0.25.4 lib/puppet/parser/ast/arithmetic_operator.rb
puppet-0.25.3 lib/puppet/parser/ast/arithmetic_operator.rb
puppet-0.24.9 lib/puppet/parser/ast/arithmetic_operator.rb
puppet-0.25.2 lib/puppet/parser/ast/arithmetic_operator.rb
puppet-0.25.1 lib/puppet/parser/ast/arithmetic_operator.rb
puppet-0.25.0 lib/puppet/parser/ast/arithmetic_operator.rb
puppet-0.24.6 lib/puppet/parser/ast/arithmetic_operator.rb
puppet-0.24.7 lib/puppet/parser/ast/arithmetic_operator.rb
puppet-0.24.8 lib/puppet/parser/ast/arithmetic_operator.rb