class Yoda::Model::Values::ModuleValue

Attributes

namespace_object[R]
registry[R]

Public Class Methods

new(registry, namespace_object) click to toggle source

@param registry [Registry] @param namespace_object [::YARD::CodeObjects::NamespaceObject, ::YARD::CodeObjects::Proxy]

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

Public Instance Methods

defined_files() click to toggle source

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

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

@param [String]

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

@return [Array<Functions::Base>]

# File lib/yoda/model/values/module_value.rb, line 17
def methods(visibility: nil)
  return [] if namespace_object.type == :proxy
  @methods ||= begin
    opts = { scope: :class, visibility: visibility }.compact
    class_methods = namespace_object.meths(opts).map { |meth| Functions::Method.new(meth) } + constructors
    class_method_names = Set.new(class_methods.map(&:name))
    parent_meths = parent_methods(visibility: visibility).reject { |m| class_method_names.include?(m.name) }
    class_methods + parent_meths
  end
end
namespace() click to toggle source
# File lib/yoda/model/values/module_value.rb, line 33
def namespace
  namespace_object
end
path() click to toggle source

@return [String]

# File lib/yoda/model/values/module_value.rb, line 29
def path
  "#{namespace.path}.#{namespace.type == :class ? 'class' : 'module'}"
end

Private Instance Methods

constructors() click to toggle source

@return [Array<Functions::Constructor>]

# File lib/yoda/model/values/module_value.rb, line 50
def constructors
  [] unless namespace_object.type == :class
  [] if namespace.child(name: :new, scope: :class)
  [namespace.child(name: :initialize, scope: :instance)].map do |method_object|
    Functions::Constructor.new(method_object)
  end
end
parent_methods(visibility: nil) click to toggle source

@return [Array<Functions::Base>]

# File lib/yoda/model/values/module_value.rb, line 59
def parent_methods(visibility: nil)
  case namespace_object.type
  when :class
    InstanceValue.new(registry, registry.find_or_proxy('::Class')).methods(visibility: visibility)
  when :module
    InstanceValue.new(registry, registry.find_or_proxy('::Module')).methods(visibility: visibility)
  else
    []
  end
end