Class: RBI::NodeWithComments

Inherits:
Node
  • Object
show all
Extended by:
T::Helpers, T::Sig
Defined in:
lib/rbi/model.rb,
lib/rbi/rewriters/merge_trees.rb,
lib/rbi/rewriters/filter_versions.rb

Instance Attribute Summary collapse

Attributes inherited from Node

#loc, #parent_tree

Instance Method Summary collapse

Methods inherited from Node

#compatible_with?, #detach, #parent_conflict_tree, #parent_scope, #print, #rbs_print, #rbs_string, #replace, #satisfies_version?, #string

Constructor Details

#initialize(loc: nil, comments: []) ⇒ NodeWithComments

Returns a new instance of NodeWithComments.



95
96
97
98
# File 'lib/rbi/model.rb', line 95

def initialize(loc: nil, comments: [])
  super(loc: loc)
  @comments = comments
end

Instance Attribute Details

#commentsObject

Returns the value of attribute comments.



92
93
94
# File 'lib/rbi/model.rb', line 92

def comments
  @comments
end

Instance Method Details

#annotationsObject



101
102
103
104
105
# File 'lib/rbi/model.rb', line 101

def annotations
  comments
    .select { |comment| comment.text.start_with?("@") }
    .map { |comment| T.must(comment.text[1..]) }
end

#merge_with(other) ⇒ Object



311
312
313
314
315
316
317
# File 'lib/rbi/rewriters/merge_trees.rb', line 311

def merge_with(other)
  return unless other.is_a?(NodeWithComments)

  other.comments.each do |comment|
    comments << comment unless comments.include?(comment)
  end
end

#version_requirementsObject



104
105
106
107
108
109
110
111
# File 'lib/rbi/rewriters/filter_versions.rb', line 104

def version_requirements
  annotations.select do |annotation|
    annotation.start_with?(Rewriters::FilterVersions::VERSION_PREFIX)
  end.map do |annotation|
    versions = annotation.delete_prefix(Rewriters::FilterVersions::VERSION_PREFIX).split(/, */)
    Gem::Requirement.new(versions)
  end
end