solargraph 0.5.5 → 0.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 21f02d0452d23441efaec01059cb1ffe5acc68ab
4
- data.tar.gz: ead5d212fc3df6ffa82ad23e3383da16dcb070d3
3
+ metadata.gz: 6777382978fc47bc58e60e5dba335340528371e5
4
+ data.tar.gz: eab7012670ddc8c018cac7d8a9eb2f65da37c7da
5
5
  SHA512:
6
- metadata.gz: cae96d0292a7b26ea4abfd86493736200ad762124ddd2307c2c10b9b04c296b823143ce30acae69d1cc89a46832e35e74ab2ce1efb58de97c369beb263cd9f70
7
- data.tar.gz: cb701ce9b87dc10528a9e80d8cc2db51aa6700361755580af72d63acc37ff0a5d7b5986868950696ce09cf2fb37305245204132938165bf34e485adeeed12b63
6
+ metadata.gz: e81fd6a61cc46763f3b12ac2130ad54dd1f3637632f9dd7fdc03c5b9313a2555b4ef06672c72193ff8a0ac7624a8106394250771782be24d40af1f9c0b5a5b4b
7
+ data.tar.gz: 91137dda081bb75b40e500966684c354c7ab9c4583cd56602d7d8e1cebec20cf9adb5ff7a4ae913100e5f801552a1afb940e0588a9a023ffb669831aee3f5067
@@ -493,7 +493,7 @@ module Solargraph
493
493
  label = "#{c.children[1]}"
494
494
  args = get_method_args(c)
495
495
  label += " #{args.join(', ')}" unless args.empty?
496
- meths.push Suggestion.new(label, insert: c.children[1].to_s, kind: Suggestion::METHOD, detail: 'Method', documentation: docstring) if c.children[1].to_s[0].match(/[a-z_]/i) and c.children[1] != :def
496
+ meths.push Suggestion.new(label, insert: c.children[1].to_s.gsub(/=/, ' = '), kind: Suggestion::METHOD, detail: 'Method', documentation: docstring) if c.children[1].to_s[0].match(/[a-z_]/i) and c.children[1] != :def
497
497
  elsif c.type == :send and c.children[1] == :include
498
498
  # TODO: This might not be right. Should we be getting singleton methods
499
499
  # from an include, or only from an extend?
@@ -536,7 +536,7 @@ module Solargraph
536
536
  label = "#{c.children[0]}"
537
537
  args = get_method_args(c)
538
538
  label += " #{args.join(', ')}" unless args.empty?
539
- meths.push Suggestion.new(label, insert: c.children[0].to_s, kind: Suggestion::METHOD, documentation: cmnt, detail: fqns) if c.children[0].to_s[0].match(/[a-z]/i)
539
+ meths.push Suggestion.new(label, insert: c.children[0].to_s.gsub(/=/, ' = '), kind: Suggestion::METHOD, documentation: cmnt, detail: fqns) if c.children[0].to_s[0].match(/[a-z]/i)
540
540
  elsif c.kind_of?(AST::Node) and c.type == :send and c.children[1] == :attr_reader
541
541
  c.children[2..-1].each { |x|
542
542
  meths.push Suggestion.new(x.children[0], kind: Suggestion::METHOD) if x.type == :sym
@@ -1,3 +1,3 @@
1
1
  module Solargraph
2
- VERSION = '0.5.5'
2
+ VERSION = '0.6.0'
3
3
  end
@@ -5,6 +5,8 @@ require 'yard'
5
5
  module Solargraph
6
6
 
7
7
  class YardMap
8
+ autoload :Cache, 'solargraph/yard_map/cache'
9
+
8
10
  def initialize required: [], workspace: nil
9
11
  unless workspace.nil?
10
12
  wsy = File.join(workspace, '.yardoc')
@@ -32,6 +34,7 @@ module Solargraph
32
34
  yardocs.push File.join(Dir.home, '.solargraph', 'cache', '2.0.0', 'yardoc')
33
35
  #yardocs.push File.join(Dir.home, '.solargraph', 'cache', '2.0.0', 'yardoc-stdlib')
34
36
  yardocs.uniq!
37
+ cache_core
35
38
  end
36
39
 
37
40
  def yardocs
@@ -63,7 +66,10 @@ module Solargraph
63
66
  found
64
67
  end
65
68
 
69
+ # @return [Array<Suggestion>]
66
70
  def get_constants namespace, scope = ''
71
+ cached = cache.get_constants(namespace, scope)
72
+ return cached unless cached.nil?
67
73
  consts = []
68
74
  result = []
69
75
  yardocs.each { |y|
@@ -90,6 +96,7 @@ module Solargraph
90
96
  end
91
97
  result.push Suggestion.new(c.to_s.split('::').last, detail: detail, kind: kind)
92
98
  }
99
+ cache.set_constants(namespace, scope, result)
93
100
  result
94
101
  end
95
102
 
@@ -115,20 +122,23 @@ module Solargraph
115
122
  nil
116
123
  end
117
124
 
125
+ # @return [Array<Suggestion>]
118
126
  def get_methods namespace, scope = '', visibility: [:public]
127
+ cached = cache.get_methods(namespace, scope, visibility)
128
+ return cached unless cached.nil?
119
129
  meths = []
120
130
  yardocs.each { |y|
121
131
  yard = YARD::Registry.load! y
122
132
  unless yard.nil?
123
133
  ns = nil
124
134
  ns = find_first_resolved_namespace(yard, namespace, scope)
125
- unless ns.nil? or !ns.kind_of?(YARD::CodeObjects::NamespaceObject)
135
+ unless ns.nil?
126
136
  ns.meths(scope: :class, visibility: visibility).each { |m|
127
- n = m.to_s.split(/[\.#]/).last
137
+ n = m.to_s.split(/[\.#]/).last.gsub(/=/, ' = ')
128
138
  label = "#{n}"
129
139
  args = get_method_args(m)
130
140
  label += " #{args.join(', ')}" unless args.empty?
131
- meths.push Suggestion.new(label, insert: "#{n}", kind: Suggestion::METHOD, documentation: m.docstring, code_object: m, detail: "#{ns}", location: "#{m.file}:#{m.line}")
141
+ meths.push Suggestion.new(label, insert: "#{n.gsub(/=/, ' = ')}", kind: Suggestion::METHOD, documentation: m.docstring, code_object: m, detail: "#{ns}", location: "#{m.file}:#{m.line}")
132
142
  }
133
143
  # Collect superclass methods
134
144
  if ns.kind_of?(YARD::CodeObjects::ClassObject) and !ns.superclass.nil?
@@ -140,10 +150,14 @@ module Solargraph
140
150
  end
141
151
  end
142
152
  }
153
+ cache.set_methods(namespace, scope, visibility, meths)
143
154
  meths
144
155
  end
145
156
 
157
+ # @return [Array<Suggestion>]
146
158
  def get_instance_methods namespace, scope = '', visibility: [:public]
159
+ cached = cache.get_instance_methods(namespace, scope, visibility)
160
+ return cached unless cached.nil?
147
161
  meths = []
148
162
  yardocs.each { |y|
149
163
  yard = YARD::Registry.load! y
@@ -157,7 +171,7 @@ module Solargraph
157
171
  label = "#{n}"
158
172
  args = get_method_args(m)
159
173
  label += " #{args.join(', ')}" unless args.empty?
160
- meths.push Suggestion.new(label, insert: "#{n}", kind: Suggestion::METHOD, documentation: m.docstring, code_object: m, detail: "#{ns}", location: "#{m.file}:#{m.line}")
174
+ meths.push Suggestion.new(label, insert: "#{n.gsub(/=/, ' = ')}", kind: Suggestion::METHOD, documentation: m.docstring, code_object: m, detail: "#{ns}", location: "#{m.file}:#{m.line}")
161
175
  end
162
176
  }
163
177
  if ns.kind_of?(YARD::CodeObjects::ClassObject) and namespace != 'Object'
@@ -166,6 +180,7 @@ module Solargraph
166
180
  end
167
181
  end
168
182
  }
183
+ cache.set_instance_methods(namespace, scope, visibility, meths)
169
184
  meths
170
185
  end
171
186
 
@@ -178,7 +193,7 @@ module Solargraph
178
193
  yard = YARD::Registry.load! y
179
194
  unless yard.nil?
180
195
  obj = find_first_resolved_namespace(yard, namespace, scope)
181
- return obj.path unless obj.nil?
196
+ return obj.path unless obj.nil? or !obj.kind_of?(YARD::CodeObjects::NamespaceObject)
182
197
  end
183
198
  }
184
199
  nil
@@ -186,6 +201,10 @@ module Solargraph
186
201
 
187
202
  private
188
203
 
204
+ def cache
205
+ @cache ||= Cache.new
206
+ end
207
+
189
208
  def get_method_args meth
190
209
  args = []
191
210
  meth.parameters.each { |a|
@@ -208,6 +227,14 @@ module Solargraph
208
227
  end
209
228
  yard.at(namespace)
210
229
  end
230
+
231
+ def cache_core
232
+ c = get_constants '', ''
233
+ c.each { |n|
234
+ get_methods 'n', visibility: :public
235
+ get_instance_methods 'n', visibility: :public
236
+ }
237
+ end
211
238
  end
212
239
 
213
240
  end
@@ -0,0 +1,33 @@
1
+ module Solargraph
2
+ class YardMap::Cache
3
+ def initialize
4
+ @constants = {}
5
+ @methods = {}
6
+ @instance_methods = {}
7
+ end
8
+
9
+ def set_constants namespace, scope, suggestions
10
+ @constants[[namespace, scope]] = suggestions
11
+ end
12
+
13
+ def set_methods namespace, scope, visibility, suggestions
14
+ @methods[[namespace, scope, visibility]] = suggestions
15
+ end
16
+
17
+ def set_instance_methods namespace, scope, visibility, suggestions
18
+ @instance_methods[[namespace, scope, visibility]] = suggestions
19
+ end
20
+
21
+ def get_methods namespace, scope, visibility
22
+ @methods[[namespace, scope, visibility]]
23
+ end
24
+
25
+ def get_instance_methods namespace, scope, visibility
26
+ @instance_methods[[namespace, scope, visibility]]
27
+ end
28
+
29
+ def get_constants namespace, scope
30
+ @constants[[namespace, scope]]
31
+ end
32
+ end
33
+ end
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.5
4
+ version: 0.6.0
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-22 00:00:00.000000000 Z
11
+ date: 2017-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -96,14 +96,14 @@ dependencies:
96
96
  name: rack-test
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - ">="
99
+ - - "~>"
100
100
  - !ruby/object:Gem::Version
101
101
  version: '0'
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
- - - ">="
106
+ - - "~>"
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
109
  - !ruby/object:Gem::Dependency
@@ -149,6 +149,7 @@ files:
149
149
  - lib/solargraph/views/layout.erb
150
150
  - lib/solargraph/views/search.erb
151
151
  - lib/solargraph/yard_map.rb
152
+ - lib/solargraph/yard_map/cache.rb
152
153
  - yardoc/2.0.0.tar.gz
153
154
  homepage: http://castwide.com
154
155
  licenses: