Module: Ruby::Rego::Builtins::Collections
- Extended by:
- RegistryHelpers
- Defined in:
- lib/ruby/rego/builtins/collections.rb,
lib/ruby/rego/builtins/collections/set_ops.rb,
lib/ruby/rego/builtins/collections/array_ops.rb,
lib/ruby/rego/builtins/collections/object_ops.rb
Overview
Built-in collection helpers.
Defined Under Namespace
Modules: ArrayOps, ObjectOps, SetOps
Constant Summary collapse
- MISSING_SET_ARGUMENT =
Object.new.freeze
- COLLECTION_FUNCTIONS =
{ "set" => { arity: [0, 1], handler: :set }, "sort" => { arity: 1, handler: :sort }, "array.reverse" => { arity: 1, handler: :array_reverse }, "array.concat" => { arity: 2, handler: :array_concat }, "array.slice" => { arity: 3, handler: :array_slice }, "object.get" => { arity: 3, handler: :object_get }, "object.keys" => { arity: 1, handler: :object_keys }, "object.remove" => { arity: 2, handler: :object_remove }, "union" => { arity: 2, handler: :union }, "intersection" => { arity: 2, handler: :intersection }, "set_diff" => { arity: 2, handler: :set_diff } }.freeze
Class Method Summary collapse
-
.array_concat(left, right) ⇒ Ruby::Rego::ArrayValue
-
.array_reverse(array) ⇒ Ruby::Rego::ArrayValue
-
.array_slice(array, start, stop) ⇒ Ruby::Rego::ArrayValue
-
.intersection(left, right) ⇒ Ruby::Rego::SetValue
-
.object_get(object, key, default) ⇒ Ruby::Rego::Value
-
.object_keys(object) ⇒ Ruby::Rego::SetValue
-
.object_remove(object, keys) ⇒ Ruby::Rego::ObjectValue
-
.register! ⇒ Ruby::Rego::Builtins::BuiltinRegistry
-
.set(value = MISSING_SET_ARGUMENT) ⇒ Ruby::Rego::SetValue
-
.set_diff(left, right) ⇒ Ruby::Rego::SetValue
-
.sort(array) ⇒ Ruby::Rego::ArrayValue
-
.union(left, right) ⇒ Ruby::Rego::Value
Methods included from RegistryHelpers
Class Method Details
.array_concat(left, right) ⇒ Ruby::Rego::ArrayValue
66 67 68 |
# File 'lib/ruby/rego/builtins/collections.rb', line 66 def self.array_concat(left, right) ArrayOps.array_concat(left, right) end |
.array_reverse(array) ⇒ Ruby::Rego::ArrayValue
80 81 82 |
# File 'lib/ruby/rego/builtins/collections.rb', line 80 def self.array_reverse(array) ArrayOps.reverse(array) end |
.array_slice(array, start, stop) ⇒ Ruby::Rego::ArrayValue
74 75 76 |
# File 'lib/ruby/rego/builtins/collections.rb', line 74 def self.array_slice(array, start, stop) ArrayOps.array_slice(array, start, stop) end |
.intersection(left, right) ⇒ Ruby::Rego::SetValue
118 119 120 |
# File 'lib/ruby/rego/builtins/collections.rb', line 118 def self.intersection(left, right) SetOps.intersection(left, right) end |
.object_get(object, key, default) ⇒ Ruby::Rego::Value
88 89 90 |
# File 'lib/ruby/rego/builtins/collections.rb', line 88 def self.object_get(object, key, default) ObjectOps.object_get(object, key, default) end |
.object_keys(object) ⇒ Ruby::Rego::SetValue
94 95 96 |
# File 'lib/ruby/rego/builtins/collections.rb', line 94 def self.object_keys(object) ObjectOps.object_keys(object) end |
.object_remove(object, keys) ⇒ Ruby::Rego::ObjectValue
101 102 103 |
# File 'lib/ruby/rego/builtins/collections.rb', line 101 def self.object_remove(object, keys) ObjectOps.object_remove(object, keys) end |
.register! ⇒ Ruby::Rego::Builtins::BuiltinRegistry
36 37 38 39 40 41 42 |
# File 'lib/ruby/rego/builtins/collections.rb', line 36 def self.register! registry = BuiltinRegistry.instance register_configured_functions(registry, COLLECTION_FUNCTIONS) registry end |
.set(value = MISSING_SET_ARGUMENT) ⇒ Ruby::Rego::SetValue
54 55 56 57 58 59 60 61 |
# File 'lib/ruby/rego/builtins/collections.rb', line 54 def self.set(value = MISSING_SET_ARGUMENT) return SetValue.new([]) if value.equal?(MISSING_SET_ARGUMENT) Base.assert_type(value, expected: [ArrayValue, SetValue], context: "set") return value if value.is_a?(SetValue) SetValue.new(value.value) end |
.set_diff(left, right) ⇒ Ruby::Rego::SetValue
125 126 127 |
# File 'lib/ruby/rego/builtins/collections.rb', line 125 def self.set_diff(left, right) SetOps.set_diff(left, right) end |
.sort(array) ⇒ Ruby::Rego::ArrayValue
48 49 50 |
# File 'lib/ruby/rego/builtins/collections.rb', line 48 def self.sort(array) ArrayOps.sort(array) end |
.union(left, right) ⇒ Ruby::Rego::Value
108 109 110 111 112 113 |
# File 'lib/ruby/rego/builtins/collections.rb', line 108 def self.union(left, right) return SetOps.union_sets(left, right) if left.is_a?(SetValue) && right.is_a?(SetValue) return ObjectOps.union_objects(left, right) if left.is_a?(ObjectValue) && right.is_a?(ObjectValue) raise_union_type_error(left, right) end |