Class: Inch::CodeObject::Provider::YARD::Object::Base
Abstract
- Inherits:
-
Object
- Object
- Inch::CodeObject::Provider::YARD::Object::Base
show all
- Extended by:
- Forwardable
- Includes:
- NodocHelper
- Defined in:
- lib/inch/code_object/provider/yard/object/base.rb
Overview
Defined Under Namespace
Classes: CodeLocation
Constant Summary
collapse
- CONSIDERED_YARD_TAGS =
%w(api example param private return since)
- RUBY_CORE =
%w(Array Bignum BasicObject Object Module Class Complex NilClass Numeric String Float Fiber FiberError Continuation Dir File Encoding Enumerator StopIteration Enumerator::Generator Enumerator::Yielder Exception SystemExit SignalException Interrupt StandardError TypeError ArgumentError IndexError KeyError RangeError ScriptError SyntaxError LoadError NotImplementedError NameError NoMethodError RuntimeError SecurityError NoMemoryError EncodingError SystemCallError Encoding::CompatibilityError File::Stat IO Hash ENV IOError EOFError ARGF RubyVM RubyVM::InstructionSequence Math::DomainError ZeroDivisionError FloatDomainError Integer Fixnum Data TrueClass FalseClass Mutex Thread Proc LocalJumpError SystemStackError Method UnboundMethod Binding Process::Status Random Range Rational RegexpError Regexp MatchData Symbol Struct ThreadGroup ThreadError Time Encoding::UndefinedConversionError Encoding::InvalidByteSequenceError Encoding::ConverterNotFoundError Encoding::Converter RubyVM::Env) +
%w(Comparable Kernel File::Constants Enumerable Errno FileTest GC ObjectSpace GC::Profiler IO::WaitReadable IO::WaitWritable Marshal Math Process Process::UID Process::GID Process::Sys Signal)
Constants included
from NodocHelper
NodocHelper::DOC_REGEX, NodocHelper::NO_DOC_ALL_REGEX, NodocHelper::NO_DOC_REGEX
Instance Attribute Summary collapse
Instance Method Summary
collapse
#declarations, #explicit_doc_comment?, #explicit_nodoc_all_comment?, #explicit_nodoc_comment?, #get_line_no, #implicit_nodoc_all_comment?, #implicit_nodoc_comment?, #nodoc?, #nodoc_comment?
Constructor Details
#initialize(object) ⇒ Base
Returns a new instance of Base.
26
27
28
29
30
31
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 26
def initialize(object)
@object = object
@__api_tag = __api_tag
@__parent = __parent
@__private_tag = __private_tag
end
|
Instance Attribute Details
#aliased_object_fullname ⇒ Object
Returns the fullname of the object that the current object is an alias for
35
36
37
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 35
def aliased_object_fullname
@aliased_object_fullname
end
|
#base_dir ⇒ String
Returns the codebase’s directory.
17
18
19
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 17
def base_dir
@base_dir
end
|
#object ⇒ YARD::CodeObjects::Base
Returns the actual (YARD) code object.
14
15
16
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 14
def object
@object
end
|
Instance Method Details
192
193
194
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 192
def __parent
YARD::Object.for(object.parent) if object.parent
end
|
#aliases_fullnames ⇒ Object
Returns the fullnames of the objects that are aliases for the current object
39
40
41
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 39
def aliases_fullnames
[]
end
|
47
48
49
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 47
def api_tag
@__api_tag
end
|
#api_tag? ⇒ Boolean
43
44
45
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 43
def api_tag?
!api_tag.nil?
end
|
54
55
56
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 54
def child(name)
nil
end
|
65
66
67
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 65
def children
[]
end
|
#children_fullnames ⇒ Array?
Returns the full names of the children of the current object.
59
60
61
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 59
def children_fullnames
[]
end
|
#core? ⇒ Boolean
71
72
73
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 71
def core?
RUBY_CORE.include?(name.to_s)
end
|
#depth ⇒ Fixnum
Note:
top-level counts, that’s why Foo has depth 1!
The depth of the following is 4:
Foo::Bar::Baz#initialize
^ ^ ^ ^
1 << 2 << 3 << 4
depth
answers the question “how many layers of code objects are above this one?”
164
165
166
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 164
def depth
@__depth ||= __depth
end
|
76
77
78
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 76
def docstring
@docstring ||= Docstring.new(object.docstring)
end
|
#filename ⇒ String
Returns the name of the file where the object is declared first
103
104
105
106
107
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 103
def filename
files.first && files.first.filename
end
|
Returns all files declaring the object in the form of an Array of Arrays containing the location of their declaration.
84
85
86
87
88
89
90
91
92
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 84
def files
object.files.map do |(filename, line_no)|
CodeLocation.new(base_dir, filename, line_no)
end
rescue ::YARD::CodeObjects::ProxyMethodError
[]
end
|
109
110
111
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 109
def fullname
@fullname ||= object.path
end
|
#has_children? ⇒ Boolean
117
118
119
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 117
def has_children?
!children.empty?
end
|
#has_code_example? ⇒ Boolean
121
122
123
124
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 121
def has_code_example?
!tags(:example).empty? ||
docstring.contains_code_example?
end
|
#has_doc? ⇒ Boolean
126
127
128
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 126
def has_doc?
!docstring.empty?
end
|
#has_multiple_code_examples? ⇒ Boolean
130
131
132
133
134
135
136
137
138
139
140
141
142
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 130
def has_multiple_code_examples?
if tags(:example).size > 1 || docstring.code_examples.size > 1
true
else
if tag = tag(:example)
multi_code_examples?(tag.text)
elsif text = docstring.code_examples.first
multi_code_examples?(text)
else
false
end
end
end
|
144
145
146
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 144
def has_unconsidered_tags?
!unconsidered_tags.empty?
end
|
#in_in_root? ⇒ Boolean
148
149
150
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 148
def in_in_root?
depth == 1
end
|
#in_root? ⇒ Boolean
216
217
218
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 216
def in_root?
depth == 1
end
|
229
230
231
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 229
def inspect
"#<#{self.class.to_s}: #{fullname}>"
end
|
#method? ⇒ Boolean
Returns true
if the object represents a method.
169
170
171
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 169
def method?
false
end
|
113
114
115
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 113
def name
@name ||= object.name
end
|
#namespace? ⇒ Boolean
Returns true
if the object represents a namespace.
174
175
176
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 174
def namespace?
false
end
|
#original_docstring ⇒ String
Returns the documentation comments.
179
180
181
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 179
def original_docstring
object.docstring.all.to_s
end
|
#parameters ⇒ Object
183
184
185
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 183
def parameters
[]
end
|
#parent ⇒ Array?
Returns the parent of the current object or nil
.
188
189
190
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 188
def parent
@__parent
end
|
#private? ⇒ Boolean
196
197
198
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 196
def private?
visibility == :private
end
|
#protected? ⇒ Boolean
208
209
210
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 208
def protected?
visibility == :protected
end
|
#public? ⇒ Boolean
212
213
214
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 212
def public?
visibility == :public
end
|
#tagged_as_internal_api? ⇒ Boolean
200
201
202
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 200
def tagged_as_internal_api?
private_api_tag? || docstring.describes_internal_api?
end
|
#tagged_as_private? ⇒ Boolean
204
205
206
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 204
def tagged_as_private?
private_tag? || docstring.describes_private_object?
end
|
#unconsidered_tag_count ⇒ Object
225
226
227
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 225
def unconsidered_tag_count
unconsidered_tags.size
end
|
#undocumented? ⇒ Boolean
Returns true
if the object has no documentation at all.
221
222
223
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 221
def undocumented?
original_docstring.empty?
end
|