Sha256: 29c22737992b0a1b961e46c63c91c18a14d322a415660b6956a53bc82e1317db

Contents?: true

Size: 1.01 KB

Versions: 170

Compression:

Stored size: 1.01 KB

Contents

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

class Puppet::Parser::AST
  class ComparisonOperator < 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)

      case @operator
      when "==","!="
        @rval.evaluate_match(lval, scope) ? @operator == '==' : @operator == '!='
      else
        rval = @rval.safeevaluate(scope)
        rval = Puppet::Parser::Scope.number?(rval) || rval
        lval = Puppet::Parser::Scope.number?(lval) || lval

        lval.send(@operator,rval)
      end
    end

    def initialize(hash)
      super

      raise ArgumentError, "Invalid comparison operator #{@operator}" unless %w{== != < > <= >=}.include?(@operator)
    end
  end
end

Version data entries

170 entries across 170 versions & 5 rubygems

Version Path
puppet-parse-0.1.2 lib/vendor/puppet/parser/ast/comparison_operator.rb
puppet-parse-0.1.1 lib/vendor/puppet/parser/ast/comparison_operator.rb
puppet-3.7.3 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.3-x86-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.3-x64-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.2 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.2-x86-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.2-x64-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.1 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.1-x86-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.1-x64-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.0 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.0-x86-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.7.0-x64-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-2.7.26 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.6.2 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.6.2-x86-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.6.1 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.6.1-x86-mingw32 lib/puppet/parser/ast/comparison_operator.rb
puppet-3.6.0 lib/puppet/parser/ast/comparison_operator.rb