diff options
Diffstat (limited to 'lib/puppet/parser')
| -rw-r--r-- | lib/puppet/parser/ast/comparison_operator.rb | 15 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/leaf.rb | 3 |
2 files changed, 10 insertions, 8 deletions
diff --git a/lib/puppet/parser/ast/comparison_operator.rb b/lib/puppet/parser/ast/comparison_operator.rb index c8694bbff..039c81df8 100644 --- a/lib/puppet/parser/ast/comparison_operator.rb +++ b/lib/puppet/parser/ast/comparison_operator.rb @@ -16,17 +16,16 @@ class Puppet::Parser::AST def evaluate(scope) # evaluate the operands, should return a boolean value lval = @lval.safeevaluate(scope) - rval = @rval.safeevaluate(scope) - # convert to number if operands are number - lval = Puppet::Parser::Scope.number?(lval) || lval - rval = Puppet::Parser::Scope.number?(rval) || rval + 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 - # return result - unless @operator == '!=' lval.send(@operator,rval) - else - lval != rval end end diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb index 3b9163d9c..49f430278 100644 --- a/lib/puppet/parser/ast/leaf.rb +++ b/lib/puppet/parser/ast/leaf.rb @@ -17,6 +17,9 @@ class Puppet::Parser::AST obj = obj.downcase if obj.respond_to?(:downcase) value = value.downcase if value.respond_to?(:downcase) + obj = Puppet::Parser::Scope.number?(obj) || obj + value = Puppet::Parser::Scope.number?(value) || value + # "" == undef for case/selector/if obj == value or (obj == "" and value == :undef) end |
