Module: Ruby::Rego::Builtins::Comparisons::Casts
- Defined in:
- lib/ruby/rego/builtins/comparisons/casts.rb
Overview
Casting and conversion helpers.
Class Method Summary collapse
-
.cast_array(value) ⇒ Ruby::Rego::ArrayValue
-
.cast_boolean(value) ⇒ Ruby::Rego::BooleanValue
-
.cast_object(value) ⇒ Ruby::Rego::ObjectValue
-
.cast_set(value) ⇒ Ruby::Rego::SetValue
-
.cast_string(value) ⇒ Ruby::Rego::StringValue
-
.to_number(value) ⇒ Ruby::Rego::NumberValue
Class Method Details
.cast_array(value) ⇒ Ruby::Rego::ArrayValue
52 53 54 55 56 57 |
# File 'lib/ruby/rego/builtins/comparisons/casts.rb', line 52 def self.cast_array(value) return value if value.is_a?(ArrayValue) Base.assert_type(value, expected: [ArrayValue, SetValue], context: "cast_array") ArrayValue.new(value.value.to_a) end |
.cast_boolean(value) ⇒ Ruby::Rego::BooleanValue
40 41 42 43 44 45 46 47 48 |
# File 'lib/ruby/rego/builtins/comparisons/casts.rb', line 40 def self.cast_boolean(value) return value if value.is_a?(BooleanValue) raw = value.value return boolean_from_string(raw) if value.is_a?(StringValue) return boolean_from_number(raw) if value.is_a?(NumberValue) raise_type_mismatch("cast_boolean", "boolean, string, or number", value.class.name) end |
.cast_object(value) ⇒ Ruby::Rego::ObjectValue
70 71 72 73 74 |
# File 'lib/ruby/rego/builtins/comparisons/casts.rb', line 70 def self.cast_object(value) object = value # @type var object: ObjectValue Base.assert_type(object, expected: ObjectValue, context: "cast_object") object end |
.cast_set(value) ⇒ Ruby::Rego::SetValue
61 62 63 64 65 66 |
# File 'lib/ruby/rego/builtins/comparisons/casts.rb', line 61 def self.cast_set(value) return value if value.is_a?(SetValue) Base.assert_type(value, expected: [SetValue, ArrayValue], context: "cast_set") SetValue.new(value.value) end |
.cast_string(value) ⇒ Ruby::Rego::StringValue
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/ruby/rego/builtins/comparisons/casts.rb', line 25 def self.cast_string(value) Base.assert_type( value, expected: [StringValue, NumberValue, BooleanValue, NullValue], context: "cast_string" ) return value if value.is_a?(StringValue) return StringValue.new("null") if value.is_a?(NullValue) StringValue.new(Base.to_ruby(value).to_s) end |
.to_number(value) ⇒ Ruby::Rego::NumberValue
15 16 17 18 19 20 21 |
# File 'lib/ruby/rego/builtins/comparisons/casts.rb', line 15 def self.to_number(value) raw = value.value return NumberValue.new(raw) if value.is_a?(NumberValue) return NumberValue.new(number_from_string(raw)) if value.is_a?(StringValue) raise_type_mismatch("to_number", "number or string", value.class.name) end |