Class: RBS::Definition::Method
Relationships & Source Files | |
Namespace Children | |
Classes:
| |
Inherits: | Object |
Defined in: | lib/rbs/definition.rb |
Class Method Summary
Instance Attribute Summary
- #accessibility readonly
- #alias_of readonly
- #defs readonly
- #extra_annotations readonly
- #private? ⇒ Boolean readonly
- #public? ⇒ Boolean readonly
- #super_method readonly
Instance Method Summary
- #==(other) (also: #eql?)
- #annotations
- #comments
- #defined_in
-
#eql?(other)
Alias for #==.
- #hash
- #implemented_in
- #map_method_type(&block)
- #map_type(&block)
- #map_type_bound(&block)
- #members
- #method_types
- #sub(s)
- #update(super_method: self.super_method, defs: self.defs, accessibility: self.accessibility, alias_of: self.alias_of, annotations: self.annotations)
Constructor Details
.new(super_method:, defs:, accessibility:, annotations: [], alias_of:) ⇒ Method
# File 'lib/rbs/definition.rb', line 81
def initialize(super_method:, defs:, accessibility:, annotations: [], alias_of:) @super_method = super_method @defs = defs @accessibility = accessibility @extra_annotations = annotations @alias_of = alias_of end
Instance Attribute Details
#accessibility (readonly)
[ GitHub ]# File 'lib/rbs/definition.rb', line 77
attr_reader :accessibility
#alias_of (readonly)
[ GitHub ]# File 'lib/rbs/definition.rb', line 79
attr_reader :alias_of
#defs (readonly)
[ GitHub ]# File 'lib/rbs/definition.rb', line 76
attr_reader :defs
#extra_annotations (readonly)
[ GitHub ]# File 'lib/rbs/definition.rb', line 78
attr_reader :extra_annotations
#private? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/rbs/definition.rb', line 138
def private? @accessibility == :private end
#public? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/rbs/definition.rb', line 134
def public? @accessibility == :public end
#super_method (readonly)
[ GitHub ]# File 'lib/rbs/definition.rb', line 75
attr_reader :super_method
Instance Method Details
#==(other) Also known as: #eql?
[ GitHub ]# File 'lib/rbs/definition.rb', line 89
def ==(other) other.is_a?(Method) && other.super_method == super_method && other.defs == defs && other.accessibility == accessibility && other.annotations == annotations && other.alias_of == alias_of end
#annotations
[ GitHub ]# File 'lib/rbs/definition.rb', line 126
def annotations @annotations ||= @extra_annotations + defs.flat_map {|d| d.annotations } end
#comments
[ GitHub ]# File 'lib/rbs/definition.rb', line 122
def comments @comments ||= defs.map(&:comment).compact.uniq end
#defined_in
[ GitHub ]# File 'lib/rbs/definition.rb', line 104
def defined_in @defined_in ||= begin last_def = defs.last or raise last_def.defined_in end end
#eql?(other)
Alias for #==.
# File 'lib/rbs/definition.rb', line 98
alias eql? ==
#hash
[ GitHub ]# File 'lib/rbs/definition.rb', line 100
def hash self.class.hash ^ super_method.hash ^ defs.hash ^ accessibility.hash ^ annotations.hash ^ alias_of.hash end
#implemented_in
[ GitHub ]# File 'lib/rbs/definition.rb', line 111
def implemented_in @implemented_in ||= begin last_def = defs.last or raise last_def.implemented_in end end
#map_method_type(&block)
[ GitHub ]# File 'lib/rbs/definition.rb', line 169
def map_method_type(&block) self.class.new( super_method: super_method, defs: defs.map {|defn| defn.update(type: yield(defn.type)) }, accessibility: @accessibility, alias_of: alias_of ) end
#map_type(&block)
[ GitHub ]# File 'lib/rbs/definition.rb', line 151
def map_type(&block) self.class.new( super_method: super_method&.map_type(&block), defs: defs.map {|defn| defn.update(type: defn.type.map_type(&block)) }, accessibility: @accessibility, alias_of: alias_of ) end
#map_type_bound(&block)
[ GitHub ]# File 'lib/rbs/definition.rb', line 160
def map_type_bound(&block) self.class.new( super_method: super_method&.map_type_bound(&block), defs: defs.map {|defn| defn.update(type: defn.type.map_type_bound(&block)) }, accessibility: @accessibility, alias_of: alias_of ) end
#members
[ GitHub ]# File 'lib/rbs/definition.rb', line 130
def members @members ||= defs.map(&:member).uniq end
#method_types
[ GitHub ]# File 'lib/rbs/definition.rb', line 118
def method_types @method_types ||= defs.map(&:type) end
#sub(s)
[ GitHub ]# File 'lib/rbs/definition.rb', line 142
def sub(s) self.class.new( super_method: super_method&.sub(s), defs: defs.map {|defn| defn.update(type: defn.type.sub(s)) }, accessibility: @accessibility, alias_of: alias_of ) end
#update(super_method: self.super_method, defs: self.defs, accessibility: self.accessibility, alias_of: self.alias_of, annotations: self.annotations)
[ GitHub ]# File 'lib/rbs/definition.rb', line 178
def update(super_method: self.super_method, defs: self.defs, accessibility: self.accessibility, alias_of: self.alias_of, annotations: self.annotations) self.class.new( super_method: super_method, defs: defs, accessibility: accessibility, alias_of: alias_of, annotations: annotations ) end