Class: RBS::DefinitionBuilder::AncestorBuilder::OneAncestors

Inherits:
Object
  • Object
show all
Defined in:
sig/ancestor_builder.rbs,
lib/rbs/definition_builder/ancestor_builder.rb

Overview

OneAncestors represents a list of direct ancestors of a type name

Direct ancestors is defined as follows:

  • Super class is a direct ancestor
  • Self type constraints are direct ancestors
  • Mixin modules are direct ancestors
  • Mixin interfaces are direct ancestors

The optional attributes are defined by the type of the ancestors object, one of the following five groups:

  1. Instance of a class -- with super_class, included_modules, included_interfaces, and prepended_modules
  2. Instance of a module -- with self_types, included_modules, included_interfaces, and prepended_modules
  3. Singleton of a class or module -- with super_class, extended_modules, and extended_interfaces
  4. Interface -- with included_interfaces

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type_name:, params:, super_class:, self_types:, included_modules:, included_interfaces:, prepended_modules:, extended_modules:, extended_interfaces:) ⇒ OneAncestors

Returns a new instance of OneAncestors.



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 17

def initialize(type_name:, params:, super_class:, self_types:, included_modules:, included_interfaces:, prepended_modules:, extended_modules:, extended_interfaces:)
  @type_name = type_name
  @params = params
  @super_class = super_class
  @self_types = self_types
  @included_modules = included_modules
  @included_interfaces = included_interfaces
  @prepended_modules = prepended_modules
  @extended_modules = extended_modules
  @extended_interfaces = extended_interfaces
end

Instance Attribute Details

#extended_interfacesArray[Definition::Ancestor::Instance]? (readonly)

Returns the list of extended interfaces

  • Returns nil if it is an interface or it is an instance.

Returns:



66
67
68
# File 'sig/ancestor_builder.rbs', line 66

def extended_interfaces
  @extended_interfaces
end

#extended_modulesArray[Definition::Ancestor::Instance]? (readonly)

Returns the list of extended modules

  • Returns nil if it is an interface or it is an instance.

Returns:



60
61
62
# File 'sig/ancestor_builder.rbs', line 60

def extended_modules
  @extended_modules
end

#included_interfacesArray[Definition::Ancestor::Instance]? (readonly)

Returns the list of included interfaces

  • Returns nil it it is a singleton.

Returns:



48
49
50
# File 'sig/ancestor_builder.rbs', line 48

def included_interfaces
  @included_interfaces
end

#included_modulesArray[Definition::Ancestor::Instance]? (readonly)

Returns the list of included modules

  • Returns nil if it is an interface or it is a singleton.

Returns:



42
43
44
# File 'sig/ancestor_builder.rbs', line 42

def included_modules
  @included_modules
end

#paramsArray[Symbol]? (readonly)

Returns the value of attribute params.

Returns:

  • (Array[Symbol], nil)


8
9
10
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 8

def params
  @params
end

#prepended_modulesArray[Definition::Ancestor::Instance]? (readonly)

Returns the list of prepended modules

  • Returns nil if it is an interface or it is a singleton.

Returns:



54
55
56
# File 'sig/ancestor_builder.rbs', line 54

def prepended_modules
  @prepended_modules
end

#self_typesArray[Definition::Ancestor::Instance]? (readonly)

Returns list of self type constraints of a module

  • Returns nil if it is not a module instance.

Returns:



36
37
38
# File 'sig/ancestor_builder.rbs', line 36

def self_types
  @self_types
end

#super_classDefinition::Ancestor::t? (readonly)

Returns super_class ancestor if specified

  • Always nil if this is not a class.

Returns:

  • (Definition::Ancestor::t, nil)


30
31
32
# File 'sig/ancestor_builder.rbs', line 30

def super_class
  @super_class
end

#type_nameTypeName (readonly)

Returns the value of attribute type_name.

Returns:



7
8
9
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 7

def type_name
  @type_name
end

Class Method Details

.class_instance(type_name:, params:, super_class:) ⇒ instance

Returns a OneAncestors object for class instance

Parameters:

  • type_name: (TypeName)
  • params: (Array[Symbol])
  • super_class: (Definition::Ancestor::t, nil)

Returns:

  • (instance)


82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'sig/ancestor_builder.rbs', line 82

def self.class_instance(type_name:, params:, super_class:)
  new(
    type_name: type_name,
    params: params,
    super_class: super_class,
    self_types: nil,
    included_modules: [],
    included_interfaces: [],
    prepended_modules: [],
    extended_modules: nil,
    extended_interfaces: nil
  )
end

.interface(type_name:, params:) ⇒ instance

Returns a OneAncestors object for interface

Parameters:

  • type_name: (TypeName)
  • params: (Array[Symbol])

Returns:

  • (instance)


91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'sig/ancestor_builder.rbs', line 91

def self.interface(type_name:, params:)
  new(
    type_name: type_name,
    params: params,
    self_types: nil,
    included_modules: nil,
    included_interfaces: [],
    prepended_modules: nil,
    super_class: nil,
    extended_modules: nil,
    extended_interfaces: nil
  )
end

.module_instance(type_name:, params:) ⇒ instance

Returns a OneAncestors object for module instance

Parameters:

  • type_name: (TypeName)
  • params: (Array[Symbol])

Returns:

  • (instance)


85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'sig/ancestor_builder.rbs', line 85

def self.module_instance(type_name:, params:)
  new(
    type_name: type_name,
    params: params,
    self_types: [],
    included_modules: [],
    included_interfaces: [],
    prepended_modules: [],
    super_class: nil,
    extended_modules: nil,
    extended_interfaces: nil
  )
end

.singleton(type_name:, super_class:) ⇒ instance

Returns a OneAncestors object for class/module singleton

Parameters:

  • type_name: (TypeName)
  • super_class: (Definition::Ancestor::t)

Returns:

  • (instance)


88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'sig/ancestor_builder.rbs', line 88

def self.singleton(type_name:, super_class:)
  new(
    type_name: type_name,
    params: nil,
    super_class: super_class,
    self_types: nil,
    included_modules: nil,
    included_interfaces: nil,
    prepended_modules: nil,
    extended_modules: [],
    extended_interfaces: []
  )
end

Instance Method Details

#each_ancestorvoid #each_ancestorEnumerator[Definition::Ancestor::t, void]

Overloads:

  • #each_ancestorvoid

    This method returns an undefined value.

  • #each_ancestorEnumerator[Definition::Ancestor::t, void]

    Returns:

    • (Enumerator[Definition::Ancestor::t, void])

Yields:

Yield Parameters:

  • arg0 (Definition::Ancestor::t)

Yield Returns:

  • (void)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 29

def each_ancestor(&block)
  if block
    if s = super_class
      yield s
    end

    each_self_type(&block)
    each_included_module(&block)
    each_included_interface(&block)
    each_prepended_module(&block)
    each_extended_module(&block)
    each_extended_interface(&block)
  else
    enum_for :each_ancestor
  end
end

#each_extended_interfacevoid #each_extended_interfaceEnumerator[Definition::Ancestor::Instance, void]

Overloads:

Yields:

Yield Parameters:

Yield Returns:

  • (void)


86
87
88
89
90
91
92
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 86

def each_extended_interface(&block)
  if block
    extended_interfaces&.each(&block)
  else
    enum_for :each_extended_interface
  end
end

#each_extended_modulevoid #each_extended_moduleEnumerator[Definition::Ancestor::Instance, void]

Overloads:

Yields:

Yield Parameters:

Yield Returns:

  • (void)


78
79
80
81
82
83
84
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 78

def each_extended_module(&block)
  if block
    extended_modules&.each(&block)
  else
    enum_for :each_extended_module
  end
end

#each_included_interfacevoid #each_included_interfaceEnumerator[Definition::Ancestor::Instance, void]

Overloads:

Yields:

Yield Parameters:

Yield Returns:

  • (void)


62
63
64
65
66
67
68
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 62

def each_included_interface(&block)
  if block
    included_interfaces&.each(&block)
  else
    enum_for :each_included_interface
  end
end

#each_included_modulevoid #each_included_moduleEnumerator[Definition::Ancestor::Instance, void]

Overloads:

Yields:

Yield Parameters:

Yield Returns:

  • (void)


54
55
56
57
58
59
60
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 54

def each_included_module(&block)
  if block
    included_modules&.each(&block)
  else
    enum_for :each_included_module
  end
end

#each_prepended_modulevoid #each_prepended_moduleEnumerator[Definition::Ancestor::Instance, void]

Overloads:

Yields:

Yield Parameters:

Yield Returns:

  • (void)


70
71
72
73
74
75
76
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 70

def each_prepended_module(&block)
  if block
    prepended_modules&.each(&block)
  else
    enum_for :each_prepended_module
  end
end

#each_self_typevoid #each_self_typeEnumerator[Definition::Ancestor::Instance, void]

Overloads:

Yields:

Yield Parameters:

Yield Returns:

  • (void)


46
47
48
49
50
51
52
# File 'lib/rbs/definition_builder/ancestor_builder.rb', line 46

def each_self_type(&block)
  if block
    self_types&.each(&block)
  else
    enum_for :each_self_type
  end
end