class Rage::OpenAPI::Collector

@private
At this point we don’t care whether these are Rage OpenAPI comments or not.
Collect all global comments or comments attached to methods in a class.
#

def dangling_comments

def dangling_comments
  @comments
end

def initialize(comments)

Parameters:
  • comments (Array) --
def initialize(comments)
  @comments = comments.dup
  @method_comments = {}
end

def method_comments(method_name)

def method_comments(method_name)
  @method_comments[method_name.to_s]
end

def visit_def_node(node)

def visit_def_node(node)
  method_comments = []
  start_line = node.location.start_line - 1
  loop do
    comment_i = @comments.find_index { |comment| comment.location.start_line == start_line }
    if comment_i
      comment = @comments.delete_at(comment_i)
      method_comments << comment
      start_line -= 1
    end
    break unless comment
  end
  @method_comments[node.name.to_s] = method_comments.reverse
  # reject comments inside methods
  @comments.reject! do |comment|
    comment.location.start_line >= node.location.start_line && comment.location.start_line <= node.location.end_line
  end
end