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