class Yoda::Model::Values::InstanceValue

Attributes

class_object[R]

@type ::YARD::CodeObjects::ClassObject | ::YARD::CodeObjects::Proxy

registry[R]

@type Registry

Public Class Methods

new(registry, class_object) click to toggle source

@param registry [Registry] @param class_object [::YARD::CodeObjects::ClassObject, ::YARD::CodeObjects::Proxy]

# File lib/yoda/model/values/instance_value.rb, line 13
def initialize(registry, class_object)
  fail ArgumentError, registry unless registry.is_a?(Registry)
  fail ArgumentError, class_object unless class_object.is_a?(::YARD::CodeObjects::NamespaceObject) || class_object.is_a?(::YARD::CodeObjects::Proxy)
  @registry = registry
  @class_object = class_object
end

Public Instance Methods

defined_files() click to toggle source

@return [Array<[String, Integer]>]

# File lib/yoda/model/values/instance_value.rb, line 42
def defined_files
  namespace.files
end
docstring() click to toggle source

@param [String]

# File lib/yoda/model/values/instance_value.rb, line 37
def docstring
  class_object.docstring
end
methods(visibility: nil) click to toggle source

@return [Array<Functions::Base>]

# File lib/yoda/model/values/instance_value.rb, line 21
def methods(visibility: nil)
  return [] if class_object.type == :proxy
  opts = { scope: :instance, visibility: visibility }.compact
  class_object.meths(opts).map { |meth| Functions::Method.new(meth) } + object_methods(visibility: visibility)
end
namespace() click to toggle source
# File lib/yoda/model/values/instance_value.rb, line 32
def namespace
  class_object
end
path() click to toggle source

@return [String]

# File lib/yoda/model/values/instance_value.rb, line 28
def path
  namespace.path
end

Private Instance Methods

object_methods(visibility: nil) click to toggle source

@return [Array<Functions::Base>]

# File lib/yoda/model/values/instance_value.rb, line 49
def object_methods(visibility: nil)
  return [] if class_object.type == :proxy
  opts = { scope: :instance, visibility: visibility }.compact
  method_names = Set.new(class_object.meths(opts).map(&:name))
  if object = registry.find('::Object')
    object.meths(opts)
      .reject { |o| ![visibility].flatten.include?(:private) && o.namespace.name == :Kernel }
      .reject { |o| method_names.include?(o.name) }
      .map { |meth| Functions::Method.new(meth) }
  else
    []
  end
end