Class: Cel::Number

Inherits:
Literal
  • Object
show all
Defined in:
lib/cel/ast/elements/number.rb

Direct Known Subclasses

Protobuf::Enum

Instance Attribute Summary

Attributes inherited from Literal

#type, #value

Instance Method Summary collapse

Methods inherited from Literal

#initialize, to_cel_type

Methods included from CelMethods

included

Constructor Details

This class inherits a constructor from Cel::Literal

Instance Method Details

#==(other) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/cel/ast/elements/number.rb', line 5

def ==(other)
  case other
  when Number
    @value == other.value
  else
    super
  end
end

#check_overflow(value = @value) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/cel/ast/elements/number.rb', line 58

def check_overflow(value = @value)
  case @type
  when TYPES[:double]
    return if value.nan? || value.infinite?
    raise EvaluateError, "return error for overflow" unless (-(MAX_FLOAT - 1)...MAX_FLOAT).cover?(value)
  when TYPES[:uint]
    raise EvaluateError, "return error for overflow" unless (0...MAX_INT).cover?(value)
  else
    raise EvaluateError, "return error for overflow" unless (-(MAX_INT - 1)...MAX_INT).cover?(value)
  end
end