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
-
.object_get(object, key, default) ⇒ Ruby::Rego::Value
-
.object_keys(object) ⇒ Ruby::Rego::SetValue
-
.object_remove(object, keys) ⇒ Ruby::Rego::ObjectValue
-
.union_objects(left, right) ⇒ Ruby::Rego::ObjectValue
Class Method Details
.object_get(object, key, default) ⇒ Ruby::Rego::Value
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
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
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
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 |