solargraph 0.28.4 → 0.29.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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/lib/solargraph/api_map.rb +43 -10
  3. data/lib/solargraph/api_map/store.rb +13 -0
  4. data/lib/solargraph/bundle.rb +3 -0
  5. data/lib/solargraph/complex_type.rb +5 -4
  6. data/lib/solargraph/core_fills.rb +3 -2
  7. data/lib/solargraph/language_server/host.rb +0 -1
  8. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +4 -3
  9. data/lib/solargraph/language_server/message/extended/document_gems.rb +7 -0
  10. data/lib/solargraph/language_server/transport/socket.rb +7 -1
  11. data/lib/solargraph/library.rb +1 -1
  12. data/lib/solargraph/page.rb +1 -2
  13. data/lib/solargraph/pin.rb +1 -0
  14. data/lib/solargraph/pin/base.rb +8 -1
  15. data/lib/solargraph/pin/base_variable.rb +1 -1
  16. data/lib/solargraph/pin/block_parameter.rb +5 -0
  17. data/lib/solargraph/pin/conversions.rb +1 -1
  18. data/lib/solargraph/pin/method.rb +59 -1
  19. data/lib/solargraph/pin/method_alias.rb +19 -0
  20. data/lib/solargraph/pin/yard_pin/method.rb +2 -2
  21. data/lib/solargraph/source.rb +63 -1
  22. data/lib/solargraph/source/chain/call.rb +39 -20
  23. data/lib/solargraph/source/node_chainer.rb +1 -1
  24. data/lib/solargraph/source/node_methods.rb +81 -0
  25. data/lib/solargraph/source_map.rb +15 -0
  26. data/lib/solargraph/source_map/clip.rb +1 -1
  27. data/lib/solargraph/source_map/mapper.rb +9 -421
  28. data/lib/solargraph/source_map/node_processor.rb +75 -0
  29. data/lib/solargraph/source_map/node_processor/alias_node.rb +21 -0
  30. data/lib/solargraph/source_map/node_processor/args_node.rb +28 -0
  31. data/lib/solargraph/source_map/node_processor/base.rb +68 -0
  32. data/lib/solargraph/source_map/node_processor/begin_node.rb +11 -0
  33. data/lib/solargraph/source_map/node_processor/block_node.rb +14 -0
  34. data/lib/solargraph/source_map/node_processor/casgn_node.rb +14 -0
  35. data/lib/solargraph/source_map/node_processor/cvasgn_node.rb +14 -0
  36. data/lib/solargraph/source_map/node_processor/def_node.rb +54 -0
  37. data/lib/solargraph/source_map/node_processor/defs_node.rb +21 -0
  38. data/lib/solargraph/source_map/node_processor/gvasgn_node.rb +12 -0
  39. data/lib/solargraph/source_map/node_processor/ivasgn_node.rb +18 -0
  40. data/lib/solargraph/source_map/node_processor/lvasgn_node.rb +16 -0
  41. data/lib/solargraph/source_map/node_processor/namespace_node.rb +26 -0
  42. data/lib/solargraph/source_map/node_processor/orasgn_node.rb +12 -0
  43. data/lib/solargraph/source_map/node_processor/sclass_node.rb +11 -0
  44. data/lib/solargraph/source_map/node_processor/send_node.rb +150 -0
  45. data/lib/solargraph/source_map/node_processor/sym_node.rb +11 -0
  46. data/lib/solargraph/source_map/region.rb +58 -0
  47. data/lib/solargraph/version.rb +1 -1
  48. data/lib/solargraph/yard_map.rb +17 -10
  49. data/lib/yard-solargraph.rb +0 -2
  50. metadata +24 -18
@@ -0,0 +1,11 @@
1
+ module Solargraph
2
+ class SourceMap
3
+ module NodeProcessor
4
+ class SymNode < Base
5
+ def process
6
+ pins.push Solargraph::Pin::Symbol.new(get_node_location(node), ":#{node.children[0]}")
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,58 @@
1
+ module Solargraph
2
+ class SourceMap
3
+ # Data used by the NodeProcessor library to track context at various
4
+ # locations in a source.
5
+ #
6
+ class Region
7
+ # @return [String]
8
+ attr_reader :namespace
9
+
10
+ # @return [Symbol]
11
+ attr_reader :scope
12
+
13
+ # @return [Symbol]
14
+ attr_reader :visibility
15
+
16
+ # @return [Solargraph::Source]
17
+ attr_reader :source
18
+
19
+ # @param source [Source]
20
+ # @param namespace [String]
21
+ # @param scope [Symbol]
22
+ # @param visibility [Symbol]
23
+ def initialize source: Solargraph::Source.load_string(''), namespace: '',
24
+ scope: :instance, visibility: :public
25
+ @source = source
26
+ @namespace = namespace
27
+ @scope = scope
28
+ @visibility = visibility
29
+ end
30
+
31
+ # @return [String]
32
+ def filename
33
+ source.filename
34
+ end
35
+
36
+ # Generate a new Region with the provided attribute changes.
37
+ #
38
+ # @param namespace [String, nil]
39
+ # @param scope [Symbol, nil]
40
+ # @param visibility [Symbol, nil]
41
+ # @return [Region]
42
+ def update namespace: nil, scope: nil, visibility: nil
43
+ Region.new(
44
+ source: source,
45
+ namespace: namespace || self.namespace,
46
+ scope: scope || self.scope,
47
+ visibility: visibility || self.visibility
48
+ )
49
+ end
50
+
51
+ # @param node [Parser::AST::Node]
52
+ # @return [String]
53
+ def code_for node
54
+ source.code_for(node)
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,3 +1,3 @@
1
1
  module Solargraph
2
- VERSION = '0.28.4'
2
+ VERSION = '0.29.0'
3
3
  end
@@ -23,10 +23,14 @@ module Solargraph
23
23
  # @return [Array<String>]
24
24
  attr_reader :required
25
25
 
26
+ attr_writer :with_dependencies
27
+
26
28
  # @param required [Array<String>]
27
- def initialize(required: [])
29
+ # @param skip_dependencies [Boolean]
30
+ def initialize(required: [], with_dependencies: true)
28
31
  # HACK: YardMap needs its own copy of this array
29
32
  @required = required.clone
33
+ @with_dependencies = with_dependencies
30
34
  @gem_paths = {}
31
35
  @stdlib_namespaces = []
32
36
  process_requires
@@ -38,6 +42,11 @@ module Solargraph
38
42
  @pins ||= []
39
43
  end
40
44
 
45
+ def with_dependencies?
46
+ @with_dependencies ||= true unless @with_dependencies == false
47
+ @with_dependencies
48
+ end
49
+
41
50
  # @param new_requires [Array<String>]
42
51
  # @return [Boolean]
43
52
  def change new_requires
@@ -176,8 +185,7 @@ module Solargraph
176
185
  unless yardocs.include?(yd)
177
186
  yardocs.unshift yd
178
187
  result.concat process_yardoc yd
179
- # @todo Testing performance
180
- # result.concat add_gem_dependencies spec
188
+ result.concat add_gem_dependencies(spec) if with_dependencies?
181
189
  end
182
190
  end
183
191
  rescue Gem::LoadError => e
@@ -231,17 +239,16 @@ module Solargraph
231
239
  (spec.dependencies - spec.development_dependencies).each do |dep|
232
240
  begin
233
241
  depspec = Gem::Specification.find_by_name(dep.name)
234
- @gem_paths[depspec.name] = depspec.full_gem_path unless depspec.nil?
242
+ next if depspec.nil? || @gem_paths.key?(depspec.name)
243
+ @gem_paths[depspec.name] = depspec.full_gem_path
235
244
  gy = YARD::Registry.yardoc_file_for_gem(dep.name)
236
245
  if gy.nil?
237
246
  unresolved_requires.push dep.name
238
247
  else
239
- unless yardocs.include?(gy)
240
- yardocs.unshift gy
241
- result.concat process_yardoc gy
242
- # @todo Trying only one level of dependencies
243
- # result.concat add_gem_dependencies(depspec)
244
- end
248
+ next if yardocs.include?(gy)
249
+ yardocs.unshift gy
250
+ result.concat process_yardoc gy
251
+ result.concat add_gem_dependencies(depspec)
245
252
  end
246
253
  rescue Gem::LoadError
247
254
  # This error probably indicates a bug in an installed gem
@@ -1,6 +1,4 @@
1
1
  require 'yard'
2
- require 'yard/templates/helpers/markup_helper'
3
- require 'yard/templates/helpers/html_helper'
4
2
 
5
3
  # Define a @type tag for documenting variables
6
4
  YARD::Tags::Library.define_tag("Type", :type, :with_types_and_name)
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solargraph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.4
4
+ version: 0.29.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: 2018-10-26 00:00:00.000000000 Z
11
+ date: 2018-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: coderay
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.1'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: eventmachine
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -84,14 +70,14 @@ dependencies:
84
70
  requirements:
85
71
  - - "~>"
86
72
  - !ruby/object:Gem::Version
87
- version: '2.4'
73
+ version: '2.3'
88
74
  type: :runtime
89
75
  prerelease: false
90
76
  version_requirements: !ruby/object:Gem::Requirement
91
77
  requirements:
92
78
  - - "~>"
93
79
  - !ruby/object:Gem::Version
94
- version: '2.4'
80
+ version: '2.3'
95
81
  - !ruby/object:Gem::Dependency
96
82
  name: reverse_markdown
97
83
  requirement: !ruby/object:Gem::Requirement
@@ -324,6 +310,7 @@ files:
324
310
  - lib/solargraph/pin/local_variable.rb
325
311
  - lib/solargraph/pin/localized.rb
326
312
  - lib/solargraph/pin/method.rb
313
+ - lib/solargraph/pin/method_alias.rb
327
314
  - lib/solargraph/pin/method_parameter.rb
328
315
  - lib/solargraph/pin/namespace.rb
329
316
  - lib/solargraph/pin/plugin/method.rb
@@ -371,6 +358,25 @@ files:
371
358
  - lib/solargraph/source_map/clip.rb
372
359
  - lib/solargraph/source_map/completion.rb
373
360
  - lib/solargraph/source_map/mapper.rb
361
+ - lib/solargraph/source_map/node_processor.rb
362
+ - lib/solargraph/source_map/node_processor/alias_node.rb
363
+ - lib/solargraph/source_map/node_processor/args_node.rb
364
+ - lib/solargraph/source_map/node_processor/base.rb
365
+ - lib/solargraph/source_map/node_processor/begin_node.rb
366
+ - lib/solargraph/source_map/node_processor/block_node.rb
367
+ - lib/solargraph/source_map/node_processor/casgn_node.rb
368
+ - lib/solargraph/source_map/node_processor/cvasgn_node.rb
369
+ - lib/solargraph/source_map/node_processor/def_node.rb
370
+ - lib/solargraph/source_map/node_processor/defs_node.rb
371
+ - lib/solargraph/source_map/node_processor/gvasgn_node.rb
372
+ - lib/solargraph/source_map/node_processor/ivasgn_node.rb
373
+ - lib/solargraph/source_map/node_processor/lvasgn_node.rb
374
+ - lib/solargraph/source_map/node_processor/namespace_node.rb
375
+ - lib/solargraph/source_map/node_processor/orasgn_node.rb
376
+ - lib/solargraph/source_map/node_processor/sclass_node.rb
377
+ - lib/solargraph/source_map/node_processor/send_node.rb
378
+ - lib/solargraph/source_map/node_processor/sym_node.rb
379
+ - lib/solargraph/source_map/region.rb
374
380
  - lib/solargraph/version.rb
375
381
  - lib/solargraph/views/_method.erb
376
382
  - lib/solargraph/views/_name_type_tag.erb