Module: Ruby::Rego::Builtins::Collections::ArrayOps

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

Overview

Array-focused collection helpers.

Class Method Summary collapse

Class Method Details

.array_concat(left, right) ⇒ Ruby::Rego::ArrayValue

Parameters:

Returns:



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

def self.array_concat(left, right)
  left_values = array_values(left, name: "array.concat left")
  right_values = array_values(right, name: "array.concat right")
  ArrayValue.new(left_values + right_values)
end

.array_slice(array, start, stop) ⇒ Ruby::Rego::ArrayValue

Parameters:

Returns:



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

def self.array_slice(array, start, stop)
  elements = array_values(array, name: "array.slice array")
  start_index, stop_index = slice_indices(start, stop)
  ArrayValue.new(slice_elements(elements, start_index, stop_index))
end

.reverse(array) ⇒ Ruby::Rego::ArrayValue

Parameters:

Returns:



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

def self.reverse(array)
  elements = array_values(array, name: "array.reverse")
  ArrayValue.new(elements.reverse)
end

.sort(array) ⇒ Ruby::Rego::ArrayValue

Parameters:

Returns:



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

def self.sort(array)
  elements = array_values(array, name: "sort")
  return ArrayValue.new([]) if elements.empty?

  ensure_uniform_sort_type(elements)
  sorted = elements.sort_by(&:to_ruby)
  ArrayValue.new(sorted)
end