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 }, "array.flatten" => { arity: 1, handler: :array_flatten }, "object.get" => { arity: 3, handler: :object_get }, "object.subset" => { arity: 2, handler: :object_subset }, "object.keys" => { arity: 1, handler: :object_keys }, "object.remove" => { arity: 2, handler: :object_remove }, "object.union" => { arity: 2, handler: :object_union }, "object.union_n" => { arity: 1, handler: :object_union_n }, "object.filter" => { arity: 2, handler: :object_filter }, "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_flatten(array) ⇒ Ruby::Rego::ArrayValue
-
.array_reverse(array) ⇒ Ruby::Rego::ArrayValue
-
.array_slice(array, start, stop) ⇒ Ruby::Rego::ArrayValue
-
.intersection(left, right) ⇒ Ruby::Rego::SetValue
-
.object_filter(object, keys) ⇒ Ruby::Rego::ObjectValue
-
.object_get(object, key, default) ⇒ Ruby::Rego::Value
-
.object_keys(object) ⇒ Ruby::Rego::SetValue
-
.object_remove(object, keys) ⇒ Ruby::Rego::ObjectValue
-
.object_subset(super_value, sub_value) ⇒ Ruby::Rego::BooleanValue
-
.object_union(left, right) ⇒ Ruby::Rego::ObjectValue
-
.object_union_n(array) ⇒ 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
71 72 73 |
# File 'lib/ruby/rego/builtins/collections.rb', line 71 def self.array_concat(left, right) ArrayOps.array_concat(left, right) end |
.array_flatten(array) ⇒ Ruby::Rego::ArrayValue
91 92 93 |
# File 'lib/ruby/rego/builtins/collections.rb', line 91 def self.array_flatten(array) ArrayOps.flatten(array) end |
.array_reverse(array) ⇒ Ruby::Rego::ArrayValue
85 86 87 |
# File 'lib/ruby/rego/builtins/collections.rb', line 85 def self.array_reverse(array) ArrayOps.reverse(array) end |
.array_slice(array, start, stop) ⇒ Ruby::Rego::ArrayValue
79 80 81 |
# File 'lib/ruby/rego/builtins/collections.rb', line 79 def self.array_slice(array, start, stop) ArrayOps.array_slice(array, start, stop) end |
.intersection(left, right) ⇒ Ruby::Rego::SetValue
156 157 158 |
# File 'lib/ruby/rego/builtins/collections.rb', line 156 def self.intersection(left, right) SetOps.intersection(left, right) end |
.object_filter(object, keys) ⇒ Ruby::Rego::ObjectValue
139 140 141 |
# File 'lib/ruby/rego/builtins/collections.rb', line 139 def self.object_filter(object, keys) ObjectOps.object_filter(object, keys) end |
.object_get(object, key, default) ⇒ Ruby::Rego::Value
106 107 108 |
# File 'lib/ruby/rego/builtins/collections.rb', line 106 def self.object_get(object, key, default) ObjectOps.object_get(object, key, default) end |
.object_keys(object) ⇒ Ruby::Rego::SetValue
112 113 114 |
# File 'lib/ruby/rego/builtins/collections.rb', line 112 def self.object_keys(object) ObjectOps.object_keys(object) end |
.object_remove(object, keys) ⇒ Ruby::Rego::ObjectValue
119 120 121 |
# File 'lib/ruby/rego/builtins/collections.rb', line 119 def self.object_remove(object, keys) ObjectOps.object_remove(object, keys) end |
.object_subset(super_value, sub_value) ⇒ Ruby::Rego::BooleanValue
98 99 100 |
# File 'lib/ruby/rego/builtins/collections.rb', line 98 def self.object_subset(super_value, sub_value) ObjectOps.subset(super_value, sub_value) end |
.object_union(left, right) ⇒ Ruby::Rego::ObjectValue
126 127 128 |
# File 'lib/ruby/rego/builtins/collections.rb', line 126 def self.object_union(left, right) ObjectOps.object_union(left, right) end |
.object_union_n(array) ⇒ Ruby::Rego::ObjectValue
132 133 134 |
# File 'lib/ruby/rego/builtins/collections.rb', line 132 def self.object_union_n(array) ObjectOps.object_union_n(array) end |
.register! ⇒ Ruby::Rego::Builtins::BuiltinRegistry
41 42 43 44 45 46 47 |
# File 'lib/ruby/rego/builtins/collections.rb', line 41 def self.register! registry = BuiltinRegistry.instance register_configured_functions(registry, COLLECTION_FUNCTIONS) registry end |
.set(value = MISSING_SET_ARGUMENT) ⇒ Ruby::Rego::SetValue
59 60 61 62 63 64 65 66 |
# File 'lib/ruby/rego/builtins/collections.rb', line 59 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
163 164 165 |
# File 'lib/ruby/rego/builtins/collections.rb', line 163 def self.set_diff(left, right) SetOps.set_diff(left, right) end |
.sort(array) ⇒ Ruby::Rego::ArrayValue
53 54 55 |
# File 'lib/ruby/rego/builtins/collections.rb', line 53 def self.sort(array) ArrayOps.sort(array) end |
.union(left, right) ⇒ Ruby::Rego::Value
146 147 148 149 150 151 |
# File 'lib/ruby/rego/builtins/collections.rb', line 146 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 |