Class: Parlour::RbiGenerator::RbiObject Abstract

Inherits:
TypedObject show all
Defined in:
lib/parlour/rbi_generator/rbi_object.rb

Overview

This class is abstract.

An abstract class which is subclassed by any classes which can generate entire lines of an RBI, such as Namespace and Method. (As an example, Parameter is not a subclass because it does not generate lines, only segments of definition and signature lines.)

Direct Known Subclasses

Arbitrary, Constant, Extend, Include, Method, Namespace, TypeAlias

Instance Attribute Summary collapse

Attributes inherited from TypedObject

#comments, #generated_by, #name

Instance Method Summary collapse

Methods inherited from TypedObject

#add_comment, #describe, #describe_tree

Constructor Details

#initialize(generator, name) ⇒ void

Note:

Don’t call this directly.

Creates a new RBI object.

Parameters:

  • generator (RbiGenerator)

    The current RbiGenerator.

  • name (String)

    The name of this module.



19
20
21
22
23
# File 'lib/parlour/rbi_generator/rbi_object.rb', line 19

def initialize(generator, name)
  super(name)
  @generator = generator
  @generated_by = RbiGenerator === generator ? generator.current_plugin : nil
end

Instance Attribute Details

#generatorGenerator (readonly)

The generator which this object belongs to.

Returns:



28
29
30
# File 'lib/parlour/rbi_generator/rbi_object.rb', line 28

def generator
  @generator
end

Instance Method Details

#generalize_from_rbi!void

This method is abstract.

This method returns an undefined value.

Assuming that the types throughout this object and its children have been specified as RBI-style types, generalises them into type instances from the Types module.



79
# File 'lib/parlour/rbi_generator/rbi_object.rb', line 79

def generalize_from_rbi!; end

#generate_rbi(indent_level, options) ⇒ Array<String>

This method is abstract.

Generates the RBI lines for this object.

Parameters:

  • indent_level (Integer)

    The indentation level to generate the lines at.

  • options (Options)

    The formatting options to use.

Returns:

  • (Array<String>)

    The RBI lines, formatted as specified.



42
# File 'lib/parlour/rbi_generator/rbi_object.rb', line 42

def generate_rbi(indent_level, options); end

#merge_into_self(others) ⇒ void

This method is abstract.

This method returns an undefined value.

Given an array of other objects, merges them into this one. Each subclass will do this differently. You MUST ensure that #mergeable? is true for those instances.

Parameters:



70
# File 'lib/parlour/rbi_generator/rbi_object.rb', line 70

def merge_into_self(others); end

#mergeable?(others) ⇒ Boolean

This method is abstract.

Given an array of other objects, returns true if they may be merged into this instance using #merge_into_self. Each subclass will have its own criteria on what allows objects to be mergeable.

Parameters:

Returns:

  • (Boolean)

    Whether this instance may be merged with them.



56
# File 'lib/parlour/rbi_generator/rbi_object.rb', line 56

def mergeable?(others); end