Module: Ruby::Rego::Builtins::TermOrder

Defined in:
lib/ruby/rego/builtins/term_order.rb

Overview

OPA’s canonical term ordering, shared by the builtins that serialize a Rego set deterministically (json.marshal, yaml.marshal). Rego sets are unordered; OPA emits their elements sorted by term order: null < bool < number < string < array < object < set. Composites compare element-wise (a nested set ranks as a set, above an object — not as its array form), so the comparator runs on the raw value before any JSON/YAML conversion that would flatten sets into arrays.

Class Method Summary collapse

Class Method Details

.sorted(set) ⇒ Array<Object>

Returns a set’s elements sorted into term order.

Parameters:

  • set (Set, Array)

Returns:

  • (Array<Object>)


16
17
18
# File 'lib/ruby/rego/builtins/term_order.rb', line 16

def self.sorted(set)
  set.to_a.sort_by { |element| sort_key(element) }
end