Class: Ruby::Rego::AST::Rule

Inherits:
Base
  • Object
show all
Defined in:
lib/ruby/rego/ast/rule.rb

Overview

Represents a rule definition.

Defined Under Namespace

Classes: Definition

Constant Summary collapse

RULE_TYPE_LOOKUP =
%i[rule_type type kind].freeze

Instance Attribute Summary collapse

Attributes inherited from Base

#location

Instance Method Summary collapse

Methods inherited from Base

#==, #accept, #deconstruct_keys, #eql?, format_value, #hash, #to_s

Constructor Details

#initialize(name:, head: nil, body: nil, default_value: nil, else_clause: nil, location: nil) ⇒ Rule

:reek:LongParameterList

Parameters:

  • name (String)
  • head (Object, nil) (defaults to: nil)
  • body (Object, nil) (defaults to: nil)
  • default_value (Object, nil) (defaults to: nil)
  • else_clause (Object, nil) (defaults to: nil)
  • location (Location, nil) (defaults to: nil)


22
23
24
25
26
27
28
29
30
31
# File 'lib/ruby/rego/ast/rule.rb', line 22

def initialize(name:, head: nil, body: nil, default_value: nil, else_clause: nil, location: nil) # rubocop:disable Metrics/ParameterLists
  super(location: location)
  @name = name
  @definition = Definition.new(
    head: head,
    body: body,
    default_value: default_value,
    else_clause: else_clause
  )
end

Instance Attribute Details

#nameString (readonly)

Returns:

  • (String)


34
35
36
# File 'lib/ruby/rego/ast/rule.rb', line 34

def name
  @name
end

Instance Method Details

#bodyObject?

Returns:

  • (Object, nil)


42
43
44
# File 'lib/ruby/rego/ast/rule.rb', line 42

def body
  definition.body
end

#complete?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/ruby/rego/ast/rule.rb', line 57

def complete?
  rule_type == :complete
end

#default_valueObject?

Returns:

  • (Object, nil)


47
48
49
# File 'lib/ruby/rego/ast/rule.rb', line 47

def default_value
  definition.default_value
end

#else_clauseObject?

Returns:

  • (Object, nil)


52
53
54
# File 'lib/ruby/rego/ast/rule.rb', line 52

def else_clause
  definition.else_clause
end

#function?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/ruby/rego/ast/rule.rb', line 72

def function?
  rule_type == :function
end

#headObject?

Returns:

  • (Object, nil)


37
38
39
# File 'lib/ruby/rego/ast/rule.rb', line 37

def head
  definition.head
end

#partial_object?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/ruby/rego/ast/rule.rb', line 67

def partial_object?
  rule_type == :partial_object
end

#partial_set?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/ruby/rego/ast/rule.rb', line 62

def partial_set?
  rule_type == :partial_set
end