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)
- AUTO_GENERATED_TAG_NAMES =
%w(raise yield)
- 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
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.
29
30
31
32
33
34
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 29
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
38
39
40
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 38
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
217
218
219
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 217
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
42
43
44
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 42
def aliases_fullnames
[]
end
|
50
51
52
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 50
def api_tag
@__api_tag
end
|
#api_tag? ⇒ Boolean
46
47
48
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 46
def api_tag?
!api_tag.nil?
end
|
57
58
59
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 57
def child(name)
nil
end
|
68
69
70
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 68
def children
[]
end
|
#children_fullnames ⇒ Array?
Returns the full names of the children of the current object.
62
63
64
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 62
def children_fullnames
[]
end
|
#core? ⇒ Boolean
95
96
97
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 95
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
^ ^ ^ ^
1 << 2 << 3 << 4
depth answers the question “how many layers of code objects are above this one?”
189
190
191
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 189
def depth
@__depth ||= __depth
end
|
100
101
102
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 100
def docstring
@docstring ||= Docstring.new(object.docstring)
end
|
#filename ⇒ String
Returns the name of the file where the object is declared first
128
129
130
131
132
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 128
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.
108
109
110
111
112
113
114
115
116
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 108
def files
object.files.map do |(filename, line_no)|
CodeLocation.new(base_dir, filename, line_no)
end
rescue ::YARD::CodeObjects::ProxyMethodError
[]
end
|
134
135
136
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 134
def fullname
@fullname ||= object.path
end
|
#has_children? ⇒ Boolean
142
143
144
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 142
def has_children?
!children.empty?
end
|
#has_code_example? ⇒ Boolean
146
147
148
149
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 146
def has_code_example?
!tags(:example).empty? ||
docstring.contains_code_example?
end
|
#has_doc? ⇒ Boolean
151
152
153
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 151
def has_doc?
!docstring.empty?
end
|
#has_multiple_code_examples? ⇒ Boolean
155
156
157
158
159
160
161
162
163
164
165
166
167
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 155
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
|
169
170
171
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 169
def has_unconsidered_tags?
!unconsidered_tags.empty?
end
|
#in_in_root? ⇒ Boolean
173
174
175
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 173
def in_in_root?
depth == 1
end
|
#in_root? ⇒ Boolean
241
242
243
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 241
def in_root?
depth == 1
end
|
254
255
256
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 254
def inspect
"#<#{self.class}: #{fullname}>"
end
|
#method? ⇒ Boolean
Returns true if the object represents a method.
194
195
196
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 194
def method?
false
end
|
138
139
140
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 138
def name
@name ||= object.name
end
|
#namespace? ⇒ Boolean
Returns true if the object represents a namespace.
199
200
201
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 199
def namespace?
false
end
|
#original_docstring ⇒ String
Returns the documentation comments.
204
205
206
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 204
def original_docstring
object.docstring.all.to_s
end
|
#parameters ⇒ Object
208
209
210
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 208
def parameters
[]
end
|
#parent ⇒ Array?
Returns the parent of the current object or nil.
213
214
215
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 213
def parent
@__parent
end
|
#private? ⇒ Boolean
221
222
223
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 221
def private?
visibility == :private
end
|
#protected? ⇒ Boolean
233
234
235
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 233
def protected?
visibility == :protected
end
|
#public? ⇒ Boolean
237
238
239
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 237
def public?
visibility == :public
end
|
#tagged_as_internal_api? ⇒ Boolean
225
226
227
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 225
def tagged_as_internal_api?
private_api_tag? || docstring.describes_internal_api?
end
|
#tagged_as_private? ⇒ Boolean
229
230
231
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 229
def tagged_as_private?
private_tag? || docstring.describes_private_object?
end
|
#unconsidered_tag_count ⇒ Object
250
251
252
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 250
def unconsidered_tag_count
unconsidered_tags.size
end
|
#undocumented? ⇒ Boolean
Returns true if the object has no documentation at all.
246
247
248
|
# File 'lib/inch/code_object/provider/yard/object/base.rb', line 246
def undocumented?
original_docstring.empty?
end
|