inch 0.4.10 → 0.5.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -11
- data/Gemfile +2 -5
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/bin/inch +3 -3
- data/config/defaults.rb +0 -7
- data/inch.gemspec +7 -7
- data/lib/inch.rb +9 -9
- data/lib/inch/api.rb +10 -10
- data/lib/inch/api/compare.rb +2 -2
- data/lib/inch/api/compare/code_objects.rb +3 -2
- data/lib/inch/api/compare/codebases.rb +1 -1
- data/lib/inch/api/diff.rb +10 -7
- data/lib/inch/api/filter.rb +1 -1
- data/lib/inch/api/get.rb +1 -1
- data/lib/inch/api/options/base.rb +4 -4
- data/lib/inch/api/options/filter.rb +4 -0
- data/lib/inch/api/options/suggest.rb +5 -1
- data/lib/inch/api/stats.rb +1 -0
- data/lib/inch/api/suggest.rb +10 -9
- data/lib/inch/cli.rb +6 -6
- data/lib/inch/cli/arguments.rb +2 -2
- data/lib/inch/cli/command.rb +15 -15
- data/lib/inch/cli/command/base.rb +4 -4
- data/lib/inch/cli/command/console.rb +5 -5
- data/lib/inch/cli/command/diff.rb +8 -7
- data/lib/inch/cli/command/inspect.rb +4 -5
- data/lib/inch/cli/command/list.rb +4 -4
- data/lib/inch/cli/command/options/base.rb +8 -8
- data/lib/inch/cli/command/options/base_list.rb +5 -9
- data/lib/inch/cli/command/options/console.rb +3 -4
- data/lib/inch/cli/command/options/diff.rb +6 -8
- data/lib/inch/cli/command/options/inspect.rb +2 -2
- data/lib/inch/cli/command/options/list.rb +2 -3
- data/lib/inch/cli/command/options/show.rb +2 -2
- data/lib/inch/cli/command/options/stats.rb +1 -2
- data/lib/inch/cli/command/options/suggest.rb +3 -6
- data/lib/inch/cli/command/output/base.rb +6 -4
- data/lib/inch/cli/command/output/console.rb +5 -4
- data/lib/inch/cli/command/output/diff.rb +6 -6
- data/lib/inch/cli/command/output/inspect.rb +8 -6
- data/lib/inch/cli/command/output/list.rb +1 -0
- data/lib/inch/cli/command/output/show.rb +5 -4
- data/lib/inch/cli/command/output/stats.rb +21 -21
- data/lib/inch/cli/command/output/suggest.rb +27 -30
- data/lib/inch/cli/command/show.rb +4 -4
- data/lib/inch/cli/command/stats.rb +4 -4
- data/lib/inch/cli/command/suggest.rb +6 -6
- data/lib/inch/cli/command_parser.rb +5 -6
- data/lib/inch/cli/sparkline_helper.rb +6 -6
- data/lib/inch/cli/trace_helper.rb +1 -1
- data/lib/inch/cli/yardopts_helper.rb +3 -4
- data/lib/inch/code_object.rb +3 -3
- data/lib/inch/code_object/converter.rb +8 -6
- data/lib/inch/code_object/provider.rb +1 -1
- data/lib/inch/code_object/provider/yard.rb +12 -10
- data/lib/inch/code_object/provider/yard/docstring.rb +19 -51
- data/lib/inch/code_object/provider/yard/nodoc_helper.rb +4 -4
- data/lib/inch/code_object/provider/yard/object.rb +10 -12
- data/lib/inch/code_object/provider/yard/object/base.rb +27 -48
- data/lib/inch/code_object/provider/yard/object/method_object.rb +10 -47
- data/lib/inch/code_object/provider/yard/object/method_parameter_object.rb +6 -10
- data/lib/inch/code_object/provider/yard/object/method_signature.rb +8 -12
- data/lib/inch/code_object/provider/yard/object/namespace_object.rb +4 -1
- data/lib/inch/code_object/provider/yard/parser.rb +3 -3
- data/lib/inch/code_object/proxy.rb +9 -10
- data/lib/inch/code_object/proxy/base.rb +10 -12
- data/lib/inch/code_object/proxy/method_object.rb +2 -3
- data/lib/inch/code_object/proxy/method_parameter_object.rb +3 -5
- data/lib/inch/codebase.rb +5 -4
- data/lib/inch/codebase/objects_filter.rb +4 -2
- data/lib/inch/codebase/serializer.rb +3 -3
- data/lib/inch/config.rb +2 -2
- data/lib/inch/config/base.rb +1 -0
- data/lib/inch/config/codebase.rb +4 -4
- data/lib/inch/core_ext.rb +1 -1
- data/lib/inch/core_ext/string.rb +1 -1
- data/lib/inch/evaluation.rb +15 -16
- data/lib/inch/evaluation/file.rb +1 -1
- data/lib/inch/evaluation/grade_list.rb +2 -2
- data/lib/inch/evaluation/object_schema.rb +1 -1
- data/lib/inch/evaluation/proxy.rb +7 -8
- data/lib/inch/evaluation/proxy/base.rb +10 -13
- data/lib/inch/evaluation/proxy/constant_object.rb +1 -1
- data/lib/inch/evaluation/proxy/method_object.rb +5 -12
- data/lib/inch/evaluation/proxy/module_object.rb +1 -1
- data/lib/inch/evaluation/proxy/namespace_object.rb +1 -1
- data/lib/inch/evaluation/role/base.rb +1 -1
- data/lib/inch/evaluation/role/method.rb +2 -2
- data/lib/inch/evaluation/role/method_parameter.rb +1 -2
- data/lib/inch/evaluation/role/object.rb +2 -2
- data/lib/inch/rake.rb +2 -2
- data/lib/inch/rake/suggest.rb +2 -3
- data/lib/inch/utils/shell_helper.rb +1 -1
- data/lib/inch/utils/ui.rb +5 -5
- data/lib/inch/utils/weighted_list.rb +3 -2
- data/lib/inch/version.rb +1 -1
- data/test/fixtures/simple/lib/broken.rb +7 -35
- data/test/fixtures/simple/lib/foo.rb +1 -22
- data/test/integration/api/compare/codebases.rb +1 -1
- data/test/integration/cli/command/console_test.rb +5 -5
- data/test/integration/cli/command/inspect_test.rb +5 -4
- data/test/integration/cli/command/list_test.rb +4 -3
- data/test/integration/cli/command/show_test.rb +4 -4
- data/test/integration/cli/command/stats_test.rb +2 -2
- data/test/integration/cli/command/suggest_test.rb +10 -10
- data/test/integration/stats_options_test.rb +3 -3
- data/test/integration/visibility_options_test.rb +13 -13
- data/test/shared/base_list.rb +3 -4
- data/test/test_helper.rb +6 -16
- data/test/unit/api/filter_test.rb +7 -7
- data/test/unit/api/get_test.rb +1 -1
- data/test/unit/api/list_test.rb +1 -1
- data/test/unit/api/options/base_test.rb +3 -3
- data/test/unit/api/stats_test.rb +1 -1
- data/test/unit/api/suggest_test.rb +3 -3
- data/test/unit/cli/arguments_test.rb +1 -1
- data/test/unit/cli/command/base_test.rb +1 -1
- data/test/unit/cli/command/options/base_list_test.rb +2 -2
- data/test/unit/cli/command/options/base_object_test.rb +1 -1
- data/test/unit/cli/command/options/base_test.rb +1 -1
- data/test/unit/cli/command_parser_test.rb +2 -2
- data/test/unit/cli/trace_helper_test.rb +1 -1
- data/test/unit/cli/yardopts_helper_test.rb +3 -4
- data/test/unit/code_object/converter_test.rb +1 -1
- data/test/unit/code_object/provider/yard/docstring_test.rb +28 -106
- data/test/unit/code_object/provider/yard/nodoc_helper_test.rb +5 -6
- data/test/unit/code_object/provider/yard/object/method_object_test.rb +10 -20
- data/test/unit/code_object/provider/yard_test.rb +4 -4
- data/test/unit/code_object/provider_test.rb +1 -1
- data/test/unit/code_object/proxy/method_object_test.rb +262 -382
- data/test/unit/code_object/proxy_test.rb +1 -1
- data/test/unit/codebase/objects_test.rb +2 -2
- data/test/unit/codebase/proxy_test.rb +1 -1
- data/test/unit/config/codebase_test.rb +1 -1
- data/test/unit/evaluation/role/base_test.rb +2 -2
- data/test/unit/utils/ui_test.rb +4 -4
- data/test/unit/utils/weighted_list_test.rb +4 -7
- metadata +4 -14
- data/.rubocop.yml +0 -15
- data/.rubocop_todo.yml +0 -94
- data/lib/inch/code_object/provider/yard/object/class_variable_object.rb +0 -12
- data/lib/inch/code_object/proxy/class_variable_object.rb +0 -8
- data/lib/inch/evaluation/proxy/class_variable_object.rb +0 -19
- data/lib/inch/evaluation/role/class_variable.rb +0 -55
- data/test/fixtures/simple/lib/broken_ruby_2_0_features.rb +0 -7
- data/test/fixtures/simple/lib/directives.rb +0 -8
data/lib/inch/code_object.rb
CHANGED
@@ -52,7 +52,7 @@ module Inch
|
|
52
52
|
unconsidered_tag_count
|
53
53
|
undocumented?
|
54
54
|
visibility
|
55
|
-
|
55
|
+
).map(&:to_sym)
|
56
56
|
|
57
57
|
PARAMETER_ATTRIBUTES = %w(
|
58
58
|
name
|
@@ -62,7 +62,7 @@ module Inch
|
|
62
62
|
splat?
|
63
63
|
typed?
|
64
64
|
wrongly_mentioned?
|
65
|
-
|
65
|
+
).map(&:to_sym)
|
66
66
|
|
67
67
|
# Returns an attributes Hash for a given code object
|
68
68
|
#
|
@@ -71,14 +71,16 @@ module Inch
|
|
71
71
|
def self.to_hash(o)
|
72
72
|
attributes = {}
|
73
73
|
OBJECT_ATTRIBUTES.each do |name|
|
74
|
-
|
75
|
-
|
74
|
+
if o.respond_to?(name)
|
75
|
+
attributes[name] = o.public_send(name)
|
76
|
+
end
|
76
77
|
end
|
77
78
|
attributes[:parameters] = o.parameters.map do |parameter|
|
78
79
|
hash = {}
|
79
80
|
PARAMETER_ATTRIBUTES.each do |pname|
|
80
|
-
|
81
|
-
|
81
|
+
if parameter.respond_to?(pname)
|
82
|
+
hash[pname] = parameter.public_send(pname)
|
83
|
+
end
|
82
84
|
end
|
83
85
|
hash
|
84
86
|
end
|
@@ -3,6 +3,7 @@ module Inch
|
|
3
3
|
module Provider
|
4
4
|
# Parses the source tree (using YARD)
|
5
5
|
module YARD
|
6
|
+
|
6
7
|
# Returns +true+ if the docstring was generated by YARD
|
7
8
|
#
|
8
9
|
# @param docstring [Docstring,String]
|
@@ -12,7 +13,7 @@ module Inch
|
|
12
13
|
if method.getter?
|
13
14
|
docstring.to_s == "Returns the value of attribute #{name}"
|
14
15
|
elsif method.setter?
|
15
|
-
basename = name.to_s.gsub(/(\=)$/,
|
16
|
+
basename = name.to_s.gsub(/(\=)$/, '')
|
16
17
|
docstring.to_s == "Sets the attribute #{basename}"
|
17
18
|
else
|
18
19
|
false
|
@@ -26,11 +27,11 @@ module Inch
|
|
26
27
|
def self.implicit_tag?(tag, method)
|
27
28
|
name = method.name
|
28
29
|
if method.getter?
|
29
|
-
tag.tag_name ==
|
30
|
+
tag.tag_name == 'return' &&
|
30
31
|
tag.text == "the current value of #{name}"
|
31
32
|
elsif method.setter?
|
32
|
-
tag.tag_name ==
|
33
|
-
tag.text ==
|
33
|
+
tag.tag_name == 'return' &&
|
34
|
+
tag.text == 'the newly set value'
|
34
35
|
else
|
35
36
|
false
|
36
37
|
end
|
@@ -39,17 +40,18 @@ module Inch
|
|
39
40
|
def self.parse(dir, config = Inch::Config.codebase)
|
40
41
|
Parser.parse(dir, config)
|
41
42
|
end
|
43
|
+
|
42
44
|
end
|
43
45
|
end
|
44
46
|
end
|
45
47
|
end
|
46
48
|
|
47
|
-
require
|
48
|
-
require
|
49
|
+
require 'logger'
|
50
|
+
require 'yard'
|
49
51
|
|
50
52
|
log.level = ::Logger::UNKNOWN # basically disable YARD's logging
|
51
53
|
|
52
|
-
require
|
53
|
-
require
|
54
|
-
require
|
55
|
-
require
|
54
|
+
require 'inch/code_object/provider/yard/parser'
|
55
|
+
require 'inch/code_object/provider/yard/docstring'
|
56
|
+
require 'inch/code_object/provider/yard/nodoc_helper'
|
57
|
+
require 'inch/code_object/provider/yard/object'
|
@@ -42,16 +42,11 @@ module Inch
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def mentions_return?
|
45
|
-
|
46
|
-
line =~ /^#{tomdoc_modifiers}Returns\ /
|
47
|
-
end
|
45
|
+
last_line =~ /^Returns\ /
|
48
46
|
end
|
49
47
|
|
50
48
|
def describes_return?
|
51
|
-
|
52
|
-
line =~ /^#{tomdoc_modifiers}Returns\ (\w+\s){2,}/i ||
|
53
|
-
line =~ /^#{tomdoc_modifiers}Returns\ (nil|nothing)\.*/i
|
54
|
-
end
|
49
|
+
last_line =~ /^Returns\ (\w+\s){2,}/
|
55
50
|
end
|
56
51
|
|
57
52
|
def to_s
|
@@ -64,28 +59,18 @@ module Inch
|
|
64
59
|
@first_line ||= @text.lines.to_a.first
|
65
60
|
end
|
66
61
|
|
67
|
-
|
68
|
-
|
69
|
-
# indented, the last unindented line
|
70
|
-
def last_lines
|
71
|
-
@last_lines ||= begin
|
72
|
-
list = []
|
73
|
-
@text.lines.to_a.reverse.each do |line|
|
74
|
-
list << line
|
75
|
-
break if line =~ /^\S/
|
76
|
-
end
|
77
|
-
list.reverse
|
78
|
-
end
|
62
|
+
def last_line
|
63
|
+
@last_line ||= @text.lines.to_a.last
|
79
64
|
end
|
80
65
|
|
81
66
|
def parse_code_examples
|
82
67
|
code_examples = []
|
83
68
|
example = nil
|
84
|
-
@text.lines.
|
85
|
-
if line
|
69
|
+
@text.lines.each_with_index do |line, index|
|
70
|
+
if line =~/^\s*+$/
|
86
71
|
code_examples << example if example
|
87
72
|
example = []
|
88
|
-
elsif line
|
73
|
+
elsif line =~/^\ {2,}\S+/
|
89
74
|
example << line if example
|
90
75
|
else
|
91
76
|
code_examples << example if example
|
@@ -96,34 +81,22 @@ module Inch
|
|
96
81
|
code_examples.delete_if(&:empty?).map(&:join)
|
97
82
|
end
|
98
83
|
|
99
|
-
# Returns patterns in which method parameters are mentioned
|
100
|
-
# in inline docs.
|
101
|
-
#
|
102
|
-
# @param name [String] the name of the method parameter
|
103
|
-
# @return [Array<Regexp>]
|
104
84
|
def mention_parameter_patterns(name)
|
105
|
-
escaped_name = Regexp.escape(name)
|
106
|
-
type = /<[^>]+>/
|
107
85
|
[
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
/<tt>#{expr}<\/tt>/, # <tt>param1</tt>
|
116
|
-
/<tt>#{expr}<\/tt>\:\:/, # <tt>param1</tt>::
|
117
|
-
/^#{expr}\ \-\ / # param1 -
|
118
|
-
]
|
119
|
-
end.flatten
|
86
|
+
"+#{name}+",
|
87
|
+
"+#{name}+::",
|
88
|
+
"<tt>#{name}</tt>",
|
89
|
+
"<tt>#{name}</tt>::",
|
90
|
+
"#{name}::",
|
91
|
+
/^#{Regexp.escape(name)}\ \-\ /
|
92
|
+
]
|
120
93
|
end
|
121
94
|
|
122
95
|
def describe_parameter_extra_regexps(name)
|
123
96
|
[
|
124
97
|
"#{name}::",
|
125
98
|
"+#{name}+::",
|
126
|
-
"<tt>#{name}</tt>::"
|
99
|
+
"<tt>#{name}</tt>::",
|
127
100
|
].map do |pattern|
|
128
101
|
r = pattern.is_a?(Regexp) ? pattern : Regexp.escape(pattern)
|
129
102
|
/#{r}\n\ {2,}.+/m
|
@@ -131,11 +104,10 @@ module Inch
|
|
131
104
|
end
|
132
105
|
|
133
106
|
def describe_parameter_regexps(name)
|
134
|
-
same_line_regexps =
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
end
|
107
|
+
same_line_regexps = mention_parameter_patterns(name).map do |pattern|
|
108
|
+
r = pattern.is_a?(Regexp) ? pattern : Regexp.escape(pattern)
|
109
|
+
/^#{r}\s?\S+/
|
110
|
+
end
|
139
111
|
same_line_regexps + describe_parameter_extra_regexps(name)
|
140
112
|
end
|
141
113
|
|
@@ -149,10 +121,6 @@ module Inch
|
|
149
121
|
end
|
150
122
|
end
|
151
123
|
end
|
152
|
-
|
153
|
-
def tomdoc_modifiers
|
154
|
-
/((Public|Private|Internal)\:\ )*/
|
155
|
-
end
|
156
124
|
end
|
157
125
|
end
|
158
126
|
end
|
@@ -3,6 +3,7 @@ module Inch
|
|
3
3
|
module Provider
|
4
4
|
module YARD
|
5
5
|
module NodocHelper
|
6
|
+
|
6
7
|
# Returns true if the code object is somehow marked not to be
|
7
8
|
# documented.
|
8
9
|
#
|
@@ -80,11 +81,10 @@ module Inch
|
|
80
81
|
# @return [String]
|
81
82
|
def get_line_no(filename, line_number)
|
82
83
|
f = File.open(filename)
|
83
|
-
line_number.times
|
84
|
-
result = $_
|
84
|
+
line_number.times{f.gets}
|
85
|
+
result = $_
|
85
86
|
f.close
|
86
|
-
result.encode(
|
87
|
-
invalid: :replace, undef: :replace, replace: "")
|
87
|
+
result.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
@@ -16,11 +16,10 @@ module Inch
|
|
16
16
|
# @return [Provider::YARD::Object]
|
17
17
|
def for(yard_object)
|
18
18
|
@cache ||= {}
|
19
|
-
if
|
19
|
+
if proxy_object = @cache[cache_key(yard_object)]
|
20
20
|
proxy_object
|
21
21
|
else
|
22
|
-
@cache[cache_key(yard_object)] =
|
23
|
-
class_for(yard_object).new(yard_object)
|
22
|
+
@cache[cache_key(yard_object)] = class_for(yard_object).new(yard_object)
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
@@ -31,7 +30,7 @@ module Inch
|
|
31
30
|
# @param yard_object [YARD::CodeObject]
|
32
31
|
# @return [Class]
|
33
32
|
def class_for(yard_object)
|
34
|
-
class_name = yard_object.class.to_s.split(
|
33
|
+
class_name = yard_object.class.to_s.split('::').last
|
35
34
|
const_get(class_name)
|
36
35
|
rescue NameError
|
37
36
|
Base
|
@@ -51,11 +50,10 @@ module Inch
|
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
54
|
-
require
|
55
|
-
require
|
56
|
-
require
|
57
|
-
require
|
58
|
-
require
|
59
|
-
require
|
60
|
-
require
|
61
|
-
require "inch/code_object/provider/yard/object/module_object"
|
53
|
+
require 'inch/code_object/provider/yard/object/base'
|
54
|
+
require 'inch/code_object/provider/yard/object/namespace_object'
|
55
|
+
require 'inch/code_object/provider/yard/object/class_object'
|
56
|
+
require 'inch/code_object/provider/yard/object/constant_object'
|
57
|
+
require 'inch/code_object/provider/yard/object/method_object'
|
58
|
+
require 'inch/code_object/provider/yard/object/method_parameter_object'
|
59
|
+
require 'inch/code_object/provider/yard/object/module_object'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'forwardable'
|
2
2
|
|
3
3
|
module Inch
|
4
4
|
module CodeObject
|
@@ -21,17 +21,14 @@ module Inch
|
|
21
21
|
AUTO_GENERATED_TAG_NAMES = %w(raise yield)
|
22
22
|
|
23
23
|
# convenient shortcuts to (YARD) code object
|
24
|
-
def_delegators :object,
|
25
|
-
:type, :namespace, :source, :source_type, :group,
|
26
|
-
:dynamic, :visibility
|
24
|
+
def_delegators :object, :type, :namespace, :source, :source_type, :group, :dynamic, :visibility
|
27
25
|
|
28
|
-
# @param object [YARD::CodeObjects::Base] the actual (YARD) code
|
29
|
-
# object
|
26
|
+
# @param object [YARD::CodeObjects::Base] the actual (YARD) code object
|
30
27
|
def initialize(object)
|
31
28
|
@object = object
|
32
|
-
@
|
33
|
-
@
|
34
|
-
@
|
29
|
+
@__api_tag = __api_tag
|
30
|
+
@__parent = __parent
|
31
|
+
@__private_tag = __private_tag
|
35
32
|
end
|
36
33
|
|
37
34
|
# Returns the fullname of the object that the current object
|
@@ -48,18 +45,18 @@ module Inch
|
|
48
45
|
!api_tag.nil?
|
49
46
|
end
|
50
47
|
|
51
|
-
|
48
|
+
def api_tag
|
49
|
+
@__api_tag
|
50
|
+
end
|
52
51
|
|
53
52
|
# To be overridden
|
54
53
|
# @see Proxy::NamespaceObject
|
55
|
-
# @return [CodeObject::Proxy::Base,nil] the child inside the current
|
56
|
-
|
57
|
-
def child(_name)
|
54
|
+
# @return [CodeObject::Proxy::Base,nil] the child inside the current object or +nil+
|
55
|
+
def child(name)
|
58
56
|
nil
|
59
57
|
end
|
60
58
|
|
61
|
-
# @return [Array,nil] the full names of the children of the current
|
62
|
-
# object
|
59
|
+
# @return [Array,nil] the full names of the children of the current object
|
63
60
|
def children_fullnames
|
64
61
|
[]
|
65
62
|
end
|
@@ -70,29 +67,8 @@ module Inch
|
|
70
67
|
[]
|
71
68
|
end
|
72
69
|
|
73
|
-
RUBY_CORE = %w(
|
74
|
-
|
75
|
-
Numeric String Float Fiber FiberError Continuation Dir File
|
76
|
-
Encoding Enumerator StopIteration Enumerator::Generator
|
77
|
-
Enumerator::Yielder Exception SystemExit SignalException Interrupt
|
78
|
-
StandardError TypeError ArgumentError IndexError KeyError
|
79
|
-
RangeError ScriptError SyntaxError LoadError NotImplementedError
|
80
|
-
NameError NoMethodError RuntimeError SecurityError NoMemoryError
|
81
|
-
EncodingError SystemCallError Encoding::CompatibilityError
|
82
|
-
File::Stat IO Hash ENV IOError EOFError ARGF RubyVM
|
83
|
-
RubyVM::InstructionSequence Math::DomainError ZeroDivisionError
|
84
|
-
FloatDomainError Integer Fixnum Data TrueClass FalseClass Mutex
|
85
|
-
Thread Proc LocalJumpError SystemStackError Method UnboundMethod
|
86
|
-
Binding Process::Status Random Range Rational RegexpError Regexp
|
87
|
-
MatchData Symbol Struct ThreadGroup ThreadError Time
|
88
|
-
Encoding::UndefinedConversionError
|
89
|
-
Encoding::InvalidByteSequenceError
|
90
|
-
Encoding::ConverterNotFoundError Encoding::Converter RubyVM::Env
|
91
|
-
|
92
|
-
Comparable Kernel File::Constants Enumerable Errno FileTest GC
|
93
|
-
ObjectSpace GC::Profiler IO::WaitReadable IO::WaitWritable Marshal
|
94
|
-
Math Process Process::UID Process::GID Process::Sys Signal
|
95
|
-
)
|
70
|
+
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) +
|
71
|
+
%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)
|
96
72
|
def core?
|
97
73
|
RUBY_CORE.include?(name.to_s)
|
98
74
|
end
|
@@ -116,8 +92,7 @@ module Inch
|
|
116
92
|
[]
|
117
93
|
end
|
118
94
|
|
119
|
-
# CodeLocation is a utility class to find declarations of objects in
|
120
|
-
# files
|
95
|
+
# CodeLocation is a utility class to find declarations of objects in files
|
121
96
|
class CodeLocation < Struct.new(:base_dir, :relative_path, :line_no)
|
122
97
|
def filename
|
123
98
|
File.join(base_dir, relative_path)
|
@@ -157,9 +132,9 @@ module Inch
|
|
157
132
|
if tags(:example).size > 1 || docstring.code_examples.size > 1
|
158
133
|
true
|
159
134
|
else
|
160
|
-
if
|
135
|
+
if tag = tag(:example)
|
161
136
|
multi_code_examples?(tag.text)
|
162
|
-
elsif
|
137
|
+
elsif text = docstring.code_examples.first
|
163
138
|
multi_code_examples?(text)
|
164
139
|
else
|
165
140
|
false
|
@@ -211,7 +186,9 @@ module Inch
|
|
211
186
|
end
|
212
187
|
|
213
188
|
# @return [Array,nil] the parent of the current object or +nil+
|
214
|
-
|
189
|
+
def parent
|
190
|
+
@__parent
|
191
|
+
end
|
215
192
|
|
216
193
|
def __parent
|
217
194
|
YARD::Object.for(object.parent) if object.parent
|
@@ -251,7 +228,7 @@ module Inch
|
|
251
228
|
end
|
252
229
|
|
253
230
|
def inspect
|
254
|
-
"#<#{self.class}: #{fullname}>"
|
231
|
+
"#<#{self.class.to_s}: #{fullname}>"
|
255
232
|
end
|
256
233
|
|
257
234
|
protected
|
@@ -266,10 +243,12 @@ module Inch
|
|
266
243
|
!private_tag.nil?
|
267
244
|
end
|
268
245
|
|
269
|
-
|
246
|
+
def private_tag
|
247
|
+
@__private_tag
|
248
|
+
end
|
270
249
|
|
271
250
|
def private_api_tag?
|
272
|
-
api_tag && api_tag.text ==
|
251
|
+
api_tag && api_tag.text == 'private'
|
273
252
|
end
|
274
253
|
|
275
254
|
def tag(name)
|
@@ -290,12 +269,12 @@ module Inch
|
|
290
269
|
@unconsidered_tags ||= tags.reject do |tag|
|
291
270
|
auto_generated_tag?(tag) ||
|
292
271
|
CONSIDERED_YARD_TAGS.include?(tag.tag_name)
|
293
|
-
|
272
|
+
end
|
294
273
|
end
|
295
274
|
|
296
275
|
def __depth(i = 0)
|
297
276
|
if parent
|
298
|
-
parent.__depth(i
|
277
|
+
parent.__depth(i+1)
|
299
278
|
else
|
300
279
|
i
|
301
280
|
end
|