Class: YARD::CodeObjects::NamespaceObject
- Inherits:
-
Base
- Object
- Base
- YARD::CodeObjects::NamespaceObject
- Defined in:
- lib/yard/code_objects/namespace_object.rb
Overview
A “namespace” is any object that can store other objects within itself. The two main Ruby objects that can act as namespaces are modules (ModuleObject) and classes (ClassObject).
Direct Known Subclasses
Instance Attribute Summary (collapse)
-
- (Hash) aliases
readonly
A hash containing two keys, :class and :instance, each containing a hash of objects and their alias names.
-
- (Hash) attributes
readonly
A hash containing two keys, class and instance, each containing the attribute name with a { :read, :write } hash for the read and write objects respectively.
-
- (Docstring) base_docstring
inherited
from Base
readonly
The non-localized documentation string associated with the object.
-
- (Base?) child(opts = {})
Looks for a child that matches the attributes specified by
opts
. -
- (Array<Base>) children
readonly
The list of objects defined in this namespace.
-
- (Hash) class_attributes
Only the class attributes.
-
- (Array<ModuleObject>) class_mixins
readonly
Class mixins.
-
- (Array<ConstantObject>) constants(opts = {})
Returns all constants in the namespace.
-
- (Array<ClassVariableObject>) cvars
Returns class variables defined in this namespace.
-
- (Boolean) dynamic
inherited
from Base
Marks whether or not the method is conditionally defined at runtime.
-
- (Array<String>) files
inherited
from Base
readonly
The files the object was defined in.
-
- (String) group
inherited
from Base
The group this object is associated with.
-
- (Array<String>) groups
A list of ordered group names inside the namespace.
-
- (Array<ConstantObject>) included_constants
Returns constants included from any mixins.
-
- (Object) included_meths(opts = {})
Returns methods included from any mixins that match the attributes specified by
opts
. -
- (Hash) instance_attributes
Only the instance attributes.
-
- (Array<ModuleObject>) instance_mixins
readonly
Instance mixins.
-
- (Array<MethodObject>) meths(opts = {})
Returns all methods that match the attributes specified by
opts
. -
- (Array<ModuleObject>) mixins(*scopes)
Returns for specific scopes.
-
- (NamespaceObject) namespace
(also: #parent)
inherited
from Base
The namespace the object is defined in.
-
- (String) signature
inherited
from Base
The one line signature representing an object.
-
- (String?) source
inherited
from Base
The source code associated with the object.
-
- (Symbol) source_type
inherited
from Base
Language of the source code associated with the object.
-
- (Symbol) visibility
inherited
from Base
The visibility of an object (:public, :private, :protected).
Instance Method Summary (collapse)
-
- (NamespaceObject) initialize(namespace, name, *args, &block)
constructor
Creates a new namespace object inside
namespace
withname
.
Constructor Details
- (NamespaceObject) initialize(namespace, name, *args, &block)
Creates a new namespace object inside namespace
with
name
.
56 57 58 59 60 61 62 63 64 |
# File 'lib/yard/code_objects/namespace_object.rb', line 56 def initialize(namespace, name, *args, &block) @children = CodeObjectList.new(self) @class_mixins = CodeObjectList.new(self) @instance_mixins = CodeObjectList.new(self) @attributes = SymbolHash[:class => SymbolHash.new, :instance => SymbolHash.new] @aliases = {} @groups = [] super end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class YARD::CodeObjects::Base
Instance Attribute Details
- (Hash) aliases (readonly)
A hash containing two keys, :class and :instance, each containing a hash of objects and their alias names.
44 45 46 |
# File 'lib/yard/code_objects/namespace_object.rb', line 44 def aliases @aliases end |
- (Hash) attributes (readonly)
A hash containing two keys, class and instance, each containing the attribute name with a { :read, :write } hash for the read and write objects respectively.
39 40 41 |
# File 'lib/yard/code_objects/namespace_object.rb', line 39 def attributes @attributes end |
- (Docstring) base_docstring (readonly) Originally defined in class Base
The non-localized documentation string associated with the object
- (Base?) child(opts = {})
Looks for a child that matches the attributes specified by
opts
.
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/yard/code_objects/namespace_object.rb', line 86 def child(opts = {}) if !opts.is_a?(Hash) children.find {|o| o.name == opts.to_sym } else opts = SymbolHash[opts] children.find do |obj| opts.each do |meth, value| break false if !(value.is_a?(Array) ? value.include?(obj[meth]) : obj[meth] == value) end end end end |
- (Array<Base>) children (readonly)
The list of objects defined in this namespace
16 17 18 |
# File 'lib/yard/code_objects/namespace_object.rb', line 16 def children @children end |
- (Hash) class_attributes
Only the class attributes
69 70 71 |
# File 'lib/yard/code_objects/namespace_object.rb', line 69 def class_attributes attributes[:class] end |
- (Array<ModuleObject>) class_mixins (readonly)
Class mixins
48 49 50 |
# File 'lib/yard/code_objects/namespace_object.rb', line 48 def class_mixins @class_mixins end |
- (Array<ConstantObject>) constants(opts = {})
Returns all constants in the namespace
164 165 166 167 168 |
# File 'lib/yard/code_objects/namespace_object.rb', line 164 def constants(opts = {}) opts = SymbolHash[:included => true].update(opts) consts = children.select {|o| o.is_a? ConstantObject } consts + (opts[:included] ? included_constants : []) end |
- (Array<ClassVariableObject>) cvars
Returns class variables defined in this namespace.
186 187 188 |
# File 'lib/yard/code_objects/namespace_object.rb', line 186 def cvars children.select {|o| o.is_a? ClassVariableObject } end |
- (Boolean) dynamic Originally defined in class Base
Marks whether or not the method is conditionally defined at runtime
- (Array<String>) files (readonly) Originally defined in class Base
The files the object was defined in. To add a file, use #add_file.
- (Array<String>) groups
Returns a list of ordered group names inside the namespace
12 13 14 |
# File 'lib/yard/code_objects/namespace_object.rb', line 12 def groups @groups end |
- (Array<ConstantObject>) included_constants
Returns constants included from any mixins
172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/yard/code_objects/namespace_object.rb', line 172 def included_constants instance_mixins.inject([]) do |list, mixin| if mixin.respond_to? :constants list += mixin.constants.reject do |o| child(:name => o.name) || list.find {|o2| o2.name == o.name } end else list end end end |
- (Object) included_meths(opts = {})
Returns methods included from any mixins that match the attributes
specified by opts
. If no options are specified, returns all
included methods.
144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/yard/code_objects/namespace_object.rb', line 144 def included_meths(opts = {}) opts = SymbolHash[:scope => [:instance, :class]].update(opts) [opts[:scope]].flatten.map do |scope| mixins(scope).inject([]) do |list, mixin| next list if mixin.is_a?(Proxy) arr = mixin.meths(opts.merge(:scope => :instance)).reject do |o| next false if opts[:all] child(:name => o.name, :scope => scope) || list.find {|o2| o2.name == o.name } end arr.map! {|o| ExtendedMethodObject.new(o) } if scope == :class list + arr end end.flatten end |
- (Hash) instance_attributes
Only the instance attributes
76 77 78 |
# File 'lib/yard/code_objects/namespace_object.rb', line 76 def instance_attributes attributes[:instance] end |
- (Array<ModuleObject>) instance_mixins (readonly)
Instance mixins
52 53 54 |
# File 'lib/yard/code_objects/namespace_object.rb', line 52 def instance_mixins @instance_mixins end |
- (Array<MethodObject>) meths(opts = {})
Returns all methods that match the attributes specified by
opts
. If no options are provided, returns all methods.
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/yard/code_objects/namespace_object.rb', line 113 def meths(opts = {}) opts = SymbolHash[ :visibility => [:public, :private, :protected], :scope => [:class, :instance], :included => true ].update(opts) opts[:visibility] = [opts[:visibility]].flatten opts[:scope] = [opts[:scope]].flatten ourmeths = children.select do |o| o.is_a?(MethodObject) && opts[:visibility].include?(o.visibility) && opts[:scope].include?(o.scope) end ourmeths + (opts[:included] ? included_meths(opts) : []) end |
- (Array<ModuleObject>) mixins(*scopes)
Returns for specific scopes. If no scopes are provided, returns all mixins.
194 195 196 197 198 |
# File 'lib/yard/code_objects/namespace_object.rb', line 194 def mixins(*scopes) return class_mixins if scopes == [:class] return instance_mixins if scopes == [:instance] class_mixins | instance_mixins end |
- (NamespaceObject) namespace Also known as: parent Originally defined in class Base
The namespace the object is defined in. If the object is in the top level namespace, this is Registry.root
- (String) signature Originally defined in class Base
The one line signature representing an object. For a method, this will be of the form “def meth(arguments…)”. This is usually the first source line.
- (Symbol) source_type Originally defined in class Base
Language of the source code associated with the object. Defaults to
:ruby
.
- (Symbol) visibility Originally defined in class Base
Returns the visibility of an object (:public, :private, :protected)