Class: Ruby::Rego::Value
- Inherits:
-
Object
- Object
- Ruby::Rego::Value
- Defined in:
- lib/ruby/rego/value.rb
Overview
Base class for Rego values.
Direct Known Subclasses
ArrayValue, BooleanValue, NullValue, NumberValue, ObjectValue, SetValue, StringValue, UndefinedValue
Constant Summary collapse
- TYPE_NAME =
"value"
Instance Attribute Summary collapse
-
#value ⇒ Object
readonly
The wrapped Ruby value.
Class Method Summary collapse
-
.from_ruby(value) ⇒ Value
Coerce Ruby values into Rego values.
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
(also: #eql?)
Compare values by class and underlying Ruby value.
-
#fetch_reference(_key) ⇒ Value
Resolve a reference on the value.
-
#hash ⇒ Integer
Hash for use in Ruby collections.
-
#initialize(value = nil) ⇒ Value
constructor
Create a value wrapper.
-
#object_key ⇒ Object
Return a normalized object key representation.
-
#to_ruby ⇒ Object
Convert the value back to Ruby.
-
#truthy? ⇒ Boolean
Determine truthiness for Rego evaluation.
-
#type_name ⇒ String
Return the Rego type name.
-
#undefined? ⇒ Boolean
Check if the value is undefined.
Constructor Details
#initialize(value = nil) ⇒ Value
Create a value wrapper.
17 18 19 |
# File 'lib/ruby/rego/value.rb', line 17 def initialize(value = nil) @value = value end |
Instance Attribute Details
#value ⇒ Object (readonly)
The wrapped Ruby value.
24 25 26 |
# File 'lib/ruby/rego/value.rb', line 24 def value @value end |
Class Method Details
.from_ruby(value) ⇒ Value
Coerce Ruby values into Rego values.
92 93 94 95 96 97 98 99 100 |
# File 'lib/ruby/rego/value.rb', line 92 def self.from_ruby(value) return value if value.is_a?(Value) return UndefinedValue.new if value.equal?(UndefinedValue::UNDEFINED) built_value = build_value(value) return built_value if built_value raise ArgumentError, "Unsupported value type: #{value.class}" end |
Instance Method Details
#==(other) ⇒ Boolean Also known as: eql?
Compare values by class and underlying Ruby value.
75 76 77 |
# File 'lib/ruby/rego/value.rb', line 75 def ==(other) other.is_a?(self.class) && other.to_ruby == to_ruby end |
#fetch_reference(_key) ⇒ Value
Resolve a reference on the value.
51 52 53 54 55 |
# File 'lib/ruby/rego/value.rb', line 51 def fetch_reference(_key) return self if undefined? UndefinedValue.new end |
#hash ⇒ Integer
Hash for use in Ruby collections.
84 85 86 |
# File 'lib/ruby/rego/value.rb', line 84 def hash [self.class.name, to_ruby].hash end |
#object_key ⇒ Object
Return a normalized object key representation.
67 68 69 |
# File 'lib/ruby/rego/value.rb', line 67 def object_key to_ruby end |
#to_ruby ⇒ Object
Convert the value back to Ruby.
36 37 38 |
# File 'lib/ruby/rego/value.rb', line 36 def to_ruby value end |
#truthy? ⇒ Boolean
Determine truthiness for Rego evaluation.
29 30 31 |
# File 'lib/ruby/rego/value.rb', line 29 def truthy? true end |
#type_name ⇒ String
Return the Rego type name.
43 44 45 |
# File 'lib/ruby/rego/value.rb', line 43 def type_name self.class::TYPE_NAME end |
#undefined? ⇒ Boolean
Check if the value is undefined.
60 61 62 |
# File 'lib/ruby/rego/value.rb', line 60 def undefined? is_a?(UndefinedValue) end |