Class: YARD::CodeObjects::ClassObject
- Inherits:
-
NamespaceObject
- Object
- Base
- NamespaceObject
- YARD::CodeObjects::ClassObject
- Defined in:
- lib/yard/code_objects/class_object.rb
Overview
A ClassObject represents a Ruby class in source code. It is a ModuleObject with extra inheritance semantics through the superclass.
Instance Attribute Summary (collapse)
-
- (ClassObject) superclass
The ClassObject that this class object inherits from in Ruby source.
Attributes inherited from NamespaceObject
aliases, attributes, child, children, class_attributes, class_mixins, constants, cvars, groups, included_constants, included_meths, instance_attributes, instance_mixins, meths, mixins
Attributes inherited from Base
docstring, dynamic, files, group, namespace, signature, source, source_type, visibility
Instance Method Summary (collapse)
-
- (Array<ConstantObject>) constants(opts = {})
Returns the list of constants matching the options hash.
-
- (Array<NamespaceObject>) inheritance_tree(include_mods = false)
Returns the inheritance tree of the object including self.
-
- (Array<ConstantObject>) inherited_constants
Returns only the constants that were inherited.
-
- (Array<MethodObject>) inherited_meths(opts = {})
Returns only the methods that were inherited.
-
- (ClassObject) initialize(namespace, name, *args, &block)
constructor
Creates a new class object in namespace with name.
-
- (Boolean) is_exception?
Whether or not the class is a Ruby Exception.
-
- (Array<MethodObject>) meths(opts = {})
Returns the list of methods matching the options hash.
Methods inherited from Base
===, #[], #[]=, #add_file, #dynamic?, #equal?, #file, #format, #format_source, #has_tag?, #hash, #inspect, #line, #method_missing, #name, new, #path, #relative_path, #root?, #sep, #tag, #tags, #to_ary, #type
Constructor Details
- (ClassObject) initialize(namespace, name, *args, &block)
Creates a new class object in namespace with name
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/yard/code_objects/class_object.rb', line 12 def initialize(namespace, name, *args, &block) super if is_exception? self.superclass ||= "::Exception" unless P(namespace, name) == P(:Exception) else case P(namespace, name).path when "BasicObject" nil when "Object" self.superclass ||= "::BasicObject" else self.superclass ||= "::Object" end end end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class YARD::CodeObjects::Base
Instance Attribute Details
- (ClassObject) superclass
The YARD::CodeObjects::ClassObject that this class object inherits from in Ruby source.
7 8 9 |
# File 'lib/yard/code_objects/class_object.rb', line 7 def superclass @superclass end |
Instance Method Details
- (Array<ConstantObject>) constants(opts = {})
Returns the list of constants matching the options hash.
98 99 100 101 |
# File 'lib/yard/code_objects/class_object.rb', line 98 def constants(opts = {}) opts = SymbolHash[:inherited => true].update(opts) super(opts) + (opts[:inherited] ? inherited_constants : []) end |
- (Array<NamespaceObject>) inheritance_tree(include_mods = false)
Returns the inheritance tree of the object including self.
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/yard/code_objects/class_object.rb', line 42 def inheritance_tree(include_mods = false) list = (include_mods ? mixins(:instance, :class) : []) if superclass.is_a?(Proxy) || superclass.respond_to?(:inheritance_tree) list += [superclass] unless superclass == P(:Object) || superclass == P(:BasicObject) end [self] + list.map do |m| next m if m == self next m unless m.respond_to?(:inheritance_tree) m.inheritance_tree(include_mods) end.flatten.uniq end |
- (Array<ConstantObject>) inherited_constants
Returns only the constants that were inherited.
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/yard/code_objects/class_object.rb', line 106 def inherited_constants inheritance_tree[1..-1].inject([]) do |list, superclass| if superclass.is_a?(Proxy) list else list += superclass.constants.reject do |o| child(:name => o.name) || list.find {|o2| o2.name == o.name } end end end end |
- (Array<MethodObject>) inherited_meths(opts = {})
Returns only the methods that were inherited.
76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/yard/code_objects/class_object.rb', line 76 def inherited_meths(opts = {}) inheritance_tree[1..-1].inject([]) do |list, superclass| if superclass.is_a?(Proxy) list else list += superclass.meths(opts).reject do |o| next(false) if opts[:all] child(:name => o.name, :scope => o.scope) || list.find {|o2| o2.name == o.name && o2.scope == o.scope } end end end end |
- (Boolean) is_exception?
Whether or not the class is a Ruby Exception
32 33 34 |
# File 'lib/yard/code_objects/class_object.rb', line 32 def is_exception? inheritance_tree.reverse.any? {|o| BUILTIN_EXCEPTIONS_HASH.has_key? o.path } end |
- (Array<MethodObject>) meths(opts = {})
Returns the list of methods matching the options hash. Returns all methods if hash is empty.
63 64 65 66 67 68 69 70 71 |
# File 'lib/yard/code_objects/class_object.rb', line 63 def meths(opts = {}) opts = SymbolHash[:inherited => true].update(opts) list = super(opts) list += inherited_meths(opts).reject do |o| next(false) if opts[:all] list.find {|o2| o2.name == o.name && o2.scope == o.scope } end if opts[:inherited] list end |