Module: Ruby::Rego::Builtins::Collections::ObjectOps

Defined in:
lib/ruby/rego/builtins/collections/object_ops.rb

Overview

Object-focused collection helpers.

Class Method Summary collapse

Class Method Details

.object_get(object, key, default) ⇒ Ruby::Rego::Value

Parameters:

Returns:



17
18
19
20
21
22
# File 'lib/ruby/rego/builtins/collections/object_ops.rb', line 17

def self.object_get(object, key, default)
  obj = object_value(object, name: "object.get object")
  key_value = normalize_object_key(Base.to_ruby(key))
  value = obj.fetch_reference(key_value)
  value.is_a?(UndefinedValue) ? default : value
end

.object_keys(object) ⇒ Ruby::Rego::SetValue

Parameters:

Returns:



26
27
28
29
# File 'lib/ruby/rego/builtins/collections/object_ops.rb', line 26

def self.object_keys(object)
  obj = object_value(object, name: "object.keys")
  SetValue.new(obj.value.keys)
end

.object_remove(object, keys) ⇒ Ruby::Rego::ObjectValue

Parameters:

Returns:



34
35
36
37
38
39
# File 'lib/ruby/rego/builtins/collections/object_ops.rb', line 34

def self.object_remove(object, keys)
  obj = object_value(object, name: "object.remove object")
  remove_keys = key_collection(keys, name: "object.remove keys")
  filtered = obj.value.reject { |key, _value| remove_keys.include?(normalize_object_key(key)) }
  ObjectValue.new(filtered)
end

.union_objects(left, right) ⇒ Ruby::Rego::ObjectValue

Parameters:

Returns:



44
45
46
47
48
# File 'lib/ruby/rego/builtins/collections/object_ops.rb', line 44

def self.union_objects(left, right)
  left_obj = object_value(left, name: "union left").value
  right_obj = object_value(right, name: "union right").value
  ObjectValue.new(merge_objects(left_obj, right_obj))
end