Module: Ruby::Rego::Builtins::Types

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

Overview

Built-in type predicates.

Constant Summary collapse

TYPE_PREDICATES =
{
  "is_string" => :is_string,
  "is_number" => :is_number,
  "is_boolean" => :is_boolean,
  "is_array" => :is_array,
  "is_object" => :is_object,
  "is_set" => :is_set,
  "is_null" => :is_null
}.freeze

Class Method Summary collapse

Class Method Details

.is_array(value) ⇒ Ruby::Rego::BooleanValue

Parameters:

Returns:



69
70
71
# File 'lib/ruby/rego/builtins/types.rb', line 69

def self.is_array(value)
  BooleanValue.new(value.is_a?(ArrayValue))
end

.is_boolean(value) ⇒ Ruby::Rego::BooleanValue

Parameters:

Returns:



63
64
65
# File 'lib/ruby/rego/builtins/types.rb', line 63

def self.is_boolean(value)
  BooleanValue.new(value.is_a?(BooleanValue))
end

.is_null(value) ⇒ Ruby::Rego::BooleanValue

Parameters:

Returns:



87
88
89
# File 'lib/ruby/rego/builtins/types.rb', line 87

def self.is_null(value)
  BooleanValue.new(value.is_a?(NullValue))
end

.is_number(value) ⇒ Ruby::Rego::BooleanValue

Parameters:

Returns:



57
58
59
# File 'lib/ruby/rego/builtins/types.rb', line 57

def self.is_number(value)
  BooleanValue.new(value.is_a?(NumberValue))
end

.is_object(value) ⇒ Ruby::Rego::BooleanValue

Parameters:

Returns:



75
76
77
# File 'lib/ruby/rego/builtins/types.rb', line 75

def self.is_object(value)
  BooleanValue.new(value.is_a?(ObjectValue))
end

.is_set(value) ⇒ Ruby::Rego::BooleanValue

Parameters:

Returns:



81
82
83
# File 'lib/ruby/rego/builtins/types.rb', line 81

def self.is_set(value)
  BooleanValue.new(value.is_a?(SetValue))
end

.is_string(value) ⇒ Ruby::Rego::BooleanValue

Parameters:

Returns:



51
52
53
# File 'lib/ruby/rego/builtins/types.rb', line 51

def self.is_string(value)
  BooleanValue.new(value.is_a?(StringValue))
end

.register!Ruby::Rego::Builtins::BuiltinRegistry



24
25
26
27
28
29
30
31
32
33
# File 'lib/ruby/rego/builtins/types.rb', line 24

def self.register!
  registry = BuiltinRegistry.instance

  TYPE_PREDICATES.each do |name, handler|
    register_predicate(registry, name, handler)
  end
  register_type_name(registry)

  registry
end

.type_name(value) ⇒ Ruby::Rego::StringValue

Parameters:

Returns:



93
94
95
# File 'lib/ruby/rego/builtins/types.rb', line 93

def self.type_name(value)
  StringValue.new(value.type_name)
end