Module: Ruby::Rego::Builtins::Base

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

Overview

Shared helpers for built-in function implementations.

Class Method Summary collapse

Class Method Details

.assert_arity(args, expected, name: nil) ⇒ void

This method returns an undefined value.

Parameters:

  • args (Array<Object>)
  • expected (Integer, Array<Integer>)
  • name (String, nil) (defaults to: nil)


15
16
17
18
19
20
# File 'lib/ruby/rego/builtins/base.rb', line 15

def self.assert_arity(args, expected, name: nil)
  actual = args.size
  return if arity_valid?(actual, expected)

  raise_builtin_arity_error(actual, expected, name)
end

.assert_type(value, expected:, context: nil) ⇒ void

This method returns an undefined value.

Parameters:

  • value (Object)
  • expected (Class, Array<Class>)
  • context (String, nil) (defaults to: nil)


26
27
28
29
30
31
32
33
34
35
# File 'lib/ruby/rego/builtins/base.rb', line 26

def self.assert_type(value, expected:, context: nil)
  expected_classes = normalize_expected(expected)
  return if expected_classes.any? { |klass| value.is_a?(klass) }

  raise_type_error(
    expected: expected_classes.map(&:name).join(" or "),
    actual: value.class.name,
    context: context
  )
end

.to_ruby(value) ⇒ Object

Parameters:

  • value (Object)

Returns:

  • (Object)


39
40
41
# File 'lib/ruby/rego/builtins/base.rb', line 39

def self.to_ruby(value)
  value.is_a?(Ruby::Rego::Value) ? value.to_ruby : value
end

.to_value(value) ⇒ Ruby::Rego::Value

Parameters:

  • value (Object)

Returns:



45
46
47
# File 'lib/ruby/rego/builtins/base.rb', line 45

def self.to_value(value)
  Ruby::Rego::Value.from_ruby(value)
end