class RBI::Method

Methods and args

Attributes

is_singleton[RW]
name[RW]
params[R]
sigs[RW]
visibility[RW]

Public Class Methods

new( name, params: [], is_singleton: false, visibility: Public.new, sigs: [], loc: nil, comments: [], &block ) click to toggle source
Calls superclass method RBI::NodeWithComments::new
# File lib/rbi/model.rb, line 492
def initialize(
  name,
  params: [],
  is_singleton: false,
  visibility: Public.new,
  sigs: [],
  loc: nil,
  comments: [],
  &block
)
  super(loc: loc, comments: comments)
  @name = name
  @params = params
  @is_singleton = is_singleton
  @visibility = visibility
  @sigs = sigs
  block&.call(self)
end

Public Instance Methods

<<(param) click to toggle source
# File lib/rbi/model.rb, line 512
def <<(param)
  @params << param
end
accept_printer(v) click to toggle source
# File lib/rbi/printer.rb, line 340
def accept_printer(v)
  previous_node = v.previous_node
  v.printn if previous_node && (!previous_node.oneline? || !oneline?)

  v.visit_all(comments)
  v.visit_all(sigs)
  v.printl("# #{loc}") if loc && v.print_locs
  v.printt
  unless v.in_visibility_group || visibility.public?
    v.print(visibility.visibility.to_s)
    v.print(" ")
  end
  v.print("def ")
  v.print("self.") if is_singleton
  v.print(name)
  unless params.empty?
    v.print("(")
    if inline_params?
      params.each_with_index do |param, index|
        v.print(", ") if index > 0
        v.visit(param)
      end
    else
      v.printn
      v.indent
      params.each_with_index do |param, pindex|
        v.printt
        v.visit(param)
        v.print(",") if pindex < params.size - 1
        param.comments.each_with_index do |comment, cindex|
          if cindex > 0
            param.print_comment_leading_space(v, last: pindex == params.size - 1)
          else
            v.print(" ")
          end
          v.print("# #{comment.text.strip}")
        end
        v.printn
      end
      v.dedent
    end
    v.print(")")
  end
  v.print("; end")
  v.printn
end
compatible_with?(other) click to toggle source
# File lib/rbi/rewriters/merge_trees.rb, line 431
def compatible_with?(other)
  return false unless other.is_a?(Method)
  return false unless name == other.name
  return false unless params == other.params
  sigs.empty? || other.sigs.empty? || sigs == other.sigs
end
fully_qualified_name() click to toggle source
# File lib/rbi/model.rb, line 517
def fully_qualified_name
  if is_singleton
    "#{parent_scope&.fully_qualified_name}::#{name}"
  else
    "#{parent_scope&.fully_qualified_name}##{name}"
  end
end
index_ids() click to toggle source
# File lib/rbi/index.rb, line 112
def index_ids
  [fully_qualified_name]
end
inline_params?() click to toggle source
# File lib/rbi/printer.rb, line 393
def inline_params?
  params.all? { |p| p.comments.empty? }
end
merge_with(other) click to toggle source
Calls superclass method RBI::NodeWithComments#merge_with
# File lib/rbi/rewriters/merge_trees.rb, line 439
def merge_with(other)
  return unless other.is_a?(Method)
  super
  other.sigs.each do |sig|
    sigs << sig unless sigs.include?(sig)
  end
end
oneline?() click to toggle source
# File lib/rbi/printer.rb, line 388
def oneline?
  comments.empty? && sigs.empty? && inline_params?
end
to_s() click to toggle source
# File lib/rbi/model.rb, line 526
def to_s
  "#{fully_qualified_name}(#{params.join(", ")})"
end