solargraph 0.5.3 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/solargraph/api_map.rb +11 -22
- data/lib/solargraph/code_map.rb +2 -19
- data/lib/solargraph/suggestion.rb +16 -0
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/yard_map.rb +9 -37
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd8da15d1c0d25c8c95d4da12a4cba4c4b312ed0
|
4
|
+
data.tar.gz: 0cb4e3d5705c8b6339db2b2d144748068aec4d96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e785fbea311d6778f7452897fdacb3cd9d7a5e5038db0bc12c3d30e51bf0f99d816f73308e7b379c856e6a8f434a6bc402f6786e849b7dfd93c745e5454f2f5
|
7
|
+
data.tar.gz: d24ac0e448bc7796cf8c92f63727699a3ea8c5cb1f0de50069f787de68ec9b0576fa2362666c1a74d2a82d6f5437e8d9dc04f6ccb66978c632ff376eb380dd96
|
data/lib/solargraph/api_map.rb
CHANGED
@@ -24,10 +24,10 @@ module Solargraph
|
|
24
24
|
attr_reader :required
|
25
25
|
|
26
26
|
def initialize workspace = nil
|
27
|
-
@workspace = workspace
|
27
|
+
@workspace = workspace.gsub(/\\/, '/') unless workspace.nil?
|
28
28
|
clear
|
29
29
|
unless @workspace.nil?
|
30
|
-
extra = File.join(workspace, '.solargraph')
|
30
|
+
extra = File.join(@workspace, '.solargraph')
|
31
31
|
if File.exist?(extra)
|
32
32
|
append_file(extra)
|
33
33
|
end
|
@@ -252,7 +252,10 @@ module Solargraph
|
|
252
252
|
if @yardoc_files.nil?
|
253
253
|
@yardoc_files = []
|
254
254
|
yard_options[:include].each { |glob|
|
255
|
-
|
255
|
+
#@yardoc_files.concat Dir[File.join workspace, glob]
|
256
|
+
Dir[File.join workspace, glob].each { |f|
|
257
|
+
@yardoc_files.push File.absolute_path(f)
|
258
|
+
}
|
256
259
|
}
|
257
260
|
end
|
258
261
|
@yardoc_files.include?(file)
|
@@ -351,10 +354,8 @@ module Solargraph
|
|
351
354
|
meths.delete_if{ |m| m.insert != p }
|
352
355
|
return nil if meths.empty?
|
353
356
|
type = nil
|
354
|
-
|
355
|
-
|
356
|
-
type = find_fully_qualified_namespace(match[1]) unless match.nil?
|
357
|
-
end
|
357
|
+
match = meths[0].return_type
|
358
|
+
type = find_fully_qualified_namespace(match) unless match.nil?
|
358
359
|
end
|
359
360
|
scope = :instance
|
360
361
|
top = false
|
@@ -362,15 +363,6 @@ module Solargraph
|
|
362
363
|
type
|
363
364
|
end
|
364
365
|
|
365
|
-
def get_method_return_value namespace, root, method, scope = :instance
|
366
|
-
meths = get_methods(namespace, root).delete_if{ |m| m.insert != method }
|
367
|
-
meths.each { |m|
|
368
|
-
r = get_return_tag(m)
|
369
|
-
return r unless r.nil?
|
370
|
-
}
|
371
|
-
nil
|
372
|
-
end
|
373
|
-
|
374
366
|
def get_namespace_type namespace, root = ''
|
375
367
|
type = nil
|
376
368
|
fqns = find_fully_qualified_namespace(namespace, root)
|
@@ -411,6 +403,8 @@ module Solargraph
|
|
411
403
|
list.children.each { |c|
|
412
404
|
if c.type == :arg
|
413
405
|
args.push c.children[0]
|
406
|
+
elsif c.type == :kwoptarg
|
407
|
+
args.push "#{c.children[0]}:"
|
414
408
|
end
|
415
409
|
}
|
416
410
|
args
|
@@ -430,12 +424,6 @@ module Solargraph
|
|
430
424
|
elsif type == :module
|
431
425
|
meths += yard_map.get_instance_methods('Module')
|
432
426
|
end
|
433
|
-
# TODO: Look out for repeats. Consider not doing this at all.
|
434
|
-
#sc = get_superclass(namespace, root)
|
435
|
-
#until sc.nil?
|
436
|
-
# meths += yard.get_instance_methods(sc, root)
|
437
|
-
# sc = get_superclass(sc)
|
438
|
-
#end
|
439
427
|
end
|
440
428
|
meths
|
441
429
|
end
|
@@ -529,6 +517,7 @@ module Solargraph
|
|
529
517
|
skip.push fqns
|
530
518
|
nodes = get_namespace_nodes(fqns)
|
531
519
|
nodes.each { |n|
|
520
|
+
f = get_filename_for(n)
|
532
521
|
unless yardoc_has_file?(get_filename_for(n))
|
533
522
|
if n.kind_of?(AST::Node)
|
534
523
|
if n.type == :class and !n.children[1].nil?
|
data/lib/solargraph/code_map.rb
CHANGED
@@ -221,7 +221,8 @@ module Solargraph
|
|
221
221
|
fqns = @api_map.find_fully_qualified_namespace(signature, ns_here)
|
222
222
|
if fqns.nil?
|
223
223
|
# It's a method call
|
224
|
-
|
224
|
+
sig_scope = (scope.type == :def ? :instance : :class)
|
225
|
+
type = @api_map.infer_signature_type(signature, ns_here, scope: sig_scope)
|
225
226
|
result.concat @api_map.get_instance_methods(type) unless type.nil?
|
226
227
|
else
|
227
228
|
if fqns == ns_here
|
@@ -271,24 +272,6 @@ module Solargraph
|
|
271
272
|
obj
|
272
273
|
end
|
273
274
|
|
274
|
-
# @todo Candidate for deprecation
|
275
|
-
def get_instance_method_return_value namespace, root, method
|
276
|
-
meths = @api_map.get_instance_methods(namespace, root).delete_if{ |m| m.insert != method }
|
277
|
-
meths.each { |m|
|
278
|
-
r = get_return_tag(m)
|
279
|
-
return r unless r.nil?
|
280
|
-
}
|
281
|
-
nil
|
282
|
-
end
|
283
|
-
|
284
|
-
def get_return_tag suggestion
|
285
|
-
unless suggestion.documentation.nil?
|
286
|
-
match = suggestion.documentation.all.match(/@return \[([a-z0-9:_]*)/i)
|
287
|
-
return match[1]
|
288
|
-
end
|
289
|
-
nil
|
290
|
-
end
|
291
|
-
|
292
275
|
def get_signature_at index
|
293
276
|
brackets = 0
|
294
277
|
squares = 0
|
@@ -30,6 +30,22 @@ module Solargraph
|
|
30
30
|
label
|
31
31
|
end
|
32
32
|
|
33
|
+
def return_type
|
34
|
+
if code_object.nil?
|
35
|
+
unless documentation.nil?
|
36
|
+
match = documentation.all.match(/@return \[([a-z0-9:_]*)/i)
|
37
|
+
return match[1]
|
38
|
+
end
|
39
|
+
else
|
40
|
+
o = code_object.tag(:overload)
|
41
|
+
unless o.nil?
|
42
|
+
r = o.tag(:return)
|
43
|
+
return r.types[0] unless r.nil?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
|
33
49
|
def to_json args={}
|
34
50
|
obj = {
|
35
51
|
label: @label,
|
data/lib/solargraph/version.rb
CHANGED
data/lib/solargraph/yard_map.rb
CHANGED
@@ -57,12 +57,7 @@ module Solargraph
|
|
57
57
|
yard = YARD::Registry.load! y
|
58
58
|
unless yard.nil?
|
59
59
|
obj = yard.at query
|
60
|
-
|
61
|
-
unless obj.nil?
|
62
|
-
# HACK: Fix return tags in core documentation
|
63
|
-
fix_return! obj if obj.kind_of?(YARD::CodeObjects::MethodObject) and y.include?('.solargraph')
|
64
|
-
found.push obj
|
65
|
-
end
|
60
|
+
found.push obj unless obj.nil?
|
66
61
|
end
|
67
62
|
}
|
68
63
|
found
|
@@ -126,15 +121,9 @@ module Solargraph
|
|
126
121
|
yard = YARD::Registry.load! y
|
127
122
|
unless yard.nil?
|
128
123
|
ns = nil
|
129
|
-
|
130
|
-
# ns = yard.at(namespace)
|
131
|
-
#else
|
132
|
-
ns = find_first_resolved_namespace(yard, namespace, scope)
|
133
|
-
#end
|
124
|
+
ns = find_first_resolved_namespace(yard, namespace, scope)
|
134
125
|
unless ns.nil? or !ns.kind_of?(YARD::CodeObjects::NamespaceObject)
|
135
126
|
ns.meths(scope: :class, visibility: visibility).each { |m|
|
136
|
-
# HACK: Fix return tags in core documentation
|
137
|
-
fix_return! m if y.include?('.solargraph')
|
138
127
|
n = m.to_s.split(/[\.#]/).last
|
139
128
|
label = "#{n}"
|
140
129
|
args = get_method_args(m)
|
@@ -160,15 +149,9 @@ module Solargraph
|
|
160
149
|
yard = YARD::Registry.load! y
|
161
150
|
unless yard.nil?
|
162
151
|
ns = nil
|
163
|
-
|
164
|
-
# ns = yard.at(namespace)
|
165
|
-
#else
|
166
|
-
ns = find_first_resolved_namespace(yard, namespace, scope)
|
167
|
-
#end
|
152
|
+
ns = find_first_resolved_namespace(yard, namespace, scope)
|
168
153
|
unless ns.nil?
|
169
154
|
ns.meths(scope: :instance, visibility: visibility).each { |m|
|
170
|
-
# HACK: Fix return tags in core documentation
|
171
|
-
fix_return! m if y.include?('.solargraph')
|
172
155
|
n = m.to_s.split(/[\.#]/).last
|
173
156
|
if n.to_s.match(/^[a-z]/i) and (namespace == 'Kernel' or !m.to_s.start_with?('Kernel#')) and !m.docstring.to_s.include?(':nodoc:')
|
174
157
|
label = "#{n}"
|
@@ -206,25 +189,14 @@ module Solargraph
|
|
206
189
|
def get_method_args meth
|
207
190
|
args = []
|
208
191
|
meth.parameters.each { |a|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
def fix_return! meth
|
215
|
-
return unless meth.tag(:return).nil?
|
216
|
-
return unless meth.docstring.all.include?('@return')
|
217
|
-
text = ''
|
218
|
-
meth.docstring.all.lines.each { |line|
|
219
|
-
if line.strip.start_with?('@return')
|
220
|
-
text += line.strip
|
221
|
-
else
|
222
|
-
text += line
|
192
|
+
p = a[0]
|
193
|
+
unless a[1].nil?
|
194
|
+
p += ' =' unless p.end_with?(':')
|
195
|
+
p += " #{a[1]}"
|
223
196
|
end
|
224
|
-
|
197
|
+
args.push p
|
225
198
|
}
|
226
|
-
|
227
|
-
meth.docstring = doc
|
199
|
+
args
|
228
200
|
end
|
229
201
|
|
230
202
|
def find_first_resolved_namespace yard, namespace, scope
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solargraph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -92,6 +92,20 @@ dependencies:
|
|
92
92
|
- - ">="
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: 3.5.0
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rack-test
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
95
109
|
- !ruby/object:Gem::Dependency
|
96
110
|
name: codeclimate-test-reporter
|
97
111
|
requirement: !ruby/object:Gem::Requirement
|