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)
-
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