solargraph 0.45.0 → 0.46.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/rspec.yml +41 -41
- data/.gitignore +9 -9
- data/.rspec +2 -2
- data/.travis.yml +19 -19
- data/CHANGELOG.md +1115 -1109
- data/Gemfile +0 -0
- data/LICENSE +0 -0
- data/README.md +128 -128
- data/Rakefile +0 -0
- data/SPONSORS.md +18 -17
- data/bin/solargraph +0 -0
- data/lib/solargraph/api_map/bundler_methods.rb +22 -22
- data/lib/solargraph/api_map/cache.rb +70 -70
- data/lib/solargraph/api_map/source_to_yard.rb +81 -81
- data/lib/solargraph/api_map/store.rb +256 -256
- data/lib/solargraph/api_map.rb +686 -681
- data/lib/solargraph/bench.rb +27 -27
- data/lib/solargraph/compat.rb +37 -37
- data/lib/solargraph/complex_type/type_methods.rb +130 -130
- data/lib/solargraph/complex_type/unique_type.rb +75 -75
- data/lib/solargraph/complex_type.rb +221 -221
- data/lib/solargraph/convention/base.rb +33 -33
- data/lib/solargraph/convention/gemfile.rb +15 -15
- data/lib/solargraph/convention/gemspec.rb +22 -22
- data/lib/solargraph/convention/rspec.rb +30 -30
- data/lib/solargraph/convention.rb +47 -47
- data/lib/solargraph/converters/dd.rb +12 -12
- data/lib/solargraph/converters/dl.rb +12 -12
- data/lib/solargraph/converters/dt.rb +12 -12
- data/lib/solargraph/converters/misc.rb +1 -1
- data/lib/solargraph/diagnostics/base.rb +29 -29
- data/lib/solargraph/diagnostics/require_not_found.rb +53 -37
- data/lib/solargraph/diagnostics/rubocop.rb +98 -98
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +63 -63
- data/lib/solargraph/diagnostics/severities.rb +15 -15
- data/lib/solargraph/diagnostics/type_check.rb +54 -54
- data/lib/solargraph/diagnostics/update_errors.rb +41 -41
- data/lib/solargraph/diagnostics.rb +55 -55
- data/lib/solargraph/documentor.rb +76 -76
- data/lib/solargraph/environ.rb +45 -45
- data/lib/solargraph/language_server/completion_item_kinds.rb +35 -35
- data/lib/solargraph/language_server/error_codes.rb +20 -20
- data/lib/solargraph/language_server/host/cataloger.rb +56 -56
- data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
- data/lib/solargraph/language_server/host/dispatch.rb +111 -111
- data/lib/solargraph/language_server/host/message_worker.rb +59 -59
- data/lib/solargraph/language_server/host/sources.rb +156 -156
- data/lib/solargraph/language_server/host.rb +865 -865
- data/lib/solargraph/language_server/message/base.rb +89 -89
- data/lib/solargraph/language_server/message/cancel_request.rb +13 -13
- data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
- data/lib/solargraph/language_server/message/client.rb +11 -11
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -58
- data/lib/solargraph/language_server/message/completion_item.rb +11 -11
- data/lib/solargraph/language_server/message/exit_notification.rb +13 -13
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +100 -100
- data/lib/solargraph/language_server/message/extended/document.rb +20 -20
- data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
- data/lib/solargraph/language_server/message/extended/download_core.rb +23 -23
- data/lib/solargraph/language_server/message/extended/environment.rb +25 -25
- data/lib/solargraph/language_server/message/extended/search.rb +20 -20
- data/lib/solargraph/language_server/message/extended.rb +21 -21
- data/lib/solargraph/language_server/message/initialize.rb +162 -162
- data/lib/solargraph/language_server/message/initialized.rb +27 -27
- data/lib/solargraph/language_server/message/method_not_found.rb +16 -16
- data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -14
- data/lib/solargraph/language_server/message/shutdown.rb +13 -13
- data/lib/solargraph/language_server/message/text_document/base.rb +19 -19
- data/lib/solargraph/language_server/message/text_document/code_action.rb +17 -17
- data/lib/solargraph/language_server/message/text_document/completion.rb +59 -59
- data/lib/solargraph/language_server/message/text_document/definition.rb +38 -38
- data/lib/solargraph/language_server/message/text_document/did_change.rb +15 -15
- data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -15
- data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -15
- data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -17
- data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +23 -23
- data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -26
- data/lib/solargraph/language_server/message/text_document/formatting.rb +126 -126
- data/lib/solargraph/language_server/message/text_document/hover.rb +54 -44
- data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +34 -34
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -11
- data/lib/solargraph/language_server/message/text_document/references.rb +16 -16
- data/lib/solargraph/language_server/message/text_document/rename.rb +19 -19
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +29 -29
- data/lib/solargraph/language_server/message/text_document.rb +28 -28
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +30 -30
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +33 -33
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
- data/lib/solargraph/language_server/message/workspace.rb +14 -14
- data/lib/solargraph/language_server/message.rb +93 -93
- data/lib/solargraph/language_server/message_types.rb +14 -14
- data/lib/solargraph/language_server/request.rb +24 -24
- data/lib/solargraph/language_server/symbol_kinds.rb +36 -36
- data/lib/solargraph/language_server/transport/adapter.rb +53 -53
- data/lib/solargraph/language_server/transport/data_reader.rb +72 -72
- data/lib/solargraph/language_server/transport.rb +13 -13
- data/lib/solargraph/language_server/uri_helpers.rb +49 -49
- data/lib/solargraph/language_server.rb +19 -19
- data/lib/solargraph/library.rb +546 -546
- data/lib/solargraph/location.rb +37 -37
- data/lib/solargraph/logging.rb +27 -27
- data/lib/solargraph/page.rb +83 -83
- data/lib/solargraph/parser/comment_ripper.rb +52 -52
- data/lib/solargraph/parser/legacy/class_methods.rb +135 -135
- data/lib/solargraph/parser/legacy/flawed_builder.rb +16 -16
- data/lib/solargraph/parser/legacy/node_chainer.rb +148 -148
- data/lib/solargraph/parser/legacy/node_methods.rb +325 -325
- data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +23 -23
- data/lib/solargraph/parser/legacy/node_processors/args_node.rb +35 -35
- data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/legacy/node_processors/block_node.rb +42 -42
- data/lib/solargraph/parser/legacy/node_processors/casgn_node.rb +25 -25
- data/lib/solargraph/parser/legacy/node_processors/cvasgn_node.rb +23 -23
- data/lib/solargraph/parser/legacy/node_processors/def_node.rb +63 -63
- data/lib/solargraph/parser/legacy/node_processors/defs_node.rb +36 -36
- data/lib/solargraph/parser/legacy/node_processors/gvasgn_node.rb +23 -23
- data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +38 -38
- data/lib/solargraph/parser/legacy/node_processors/lvasgn_node.rb +28 -28
- data/lib/solargraph/parser/legacy/node_processors/namespace_node.rb +39 -39
- data/lib/solargraph/parser/legacy/node_processors/orasgn_node.rb +16 -16
- data/lib/solargraph/parser/legacy/node_processors/resbody_node.rb +36 -36
- data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +21 -21
- data/lib/solargraph/parser/legacy/node_processors/send_node.rb +257 -257
- data/lib/solargraph/parser/legacy/node_processors/sym_node.rb +18 -18
- data/lib/solargraph/parser/legacy/node_processors.rb +54 -54
- data/lib/solargraph/parser/legacy.rb +12 -12
- data/lib/solargraph/parser/node_methods.rb +43 -43
- data/lib/solargraph/parser/node_processor/base.rb +77 -77
- data/lib/solargraph/parser/node_processor.rb +43 -43
- data/lib/solargraph/parser/region.rb +66 -66
- data/lib/solargraph/parser/rubyvm/class_methods.rb +144 -144
- data/lib/solargraph/parser/rubyvm/node_chainer.rb +160 -160
- data/lib/solargraph/parser/rubyvm/node_methods.rb +315 -315
- data/lib/solargraph/parser/rubyvm/node_processors/alias_node.rb +23 -23
- data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +85 -85
- data/lib/solargraph/parser/rubyvm/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +42 -42
- data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +22 -22
- data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +23 -23
- data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +63 -64
- data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +57 -57
- data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +23 -23
- data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +38 -38
- data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +39 -39
- data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +20 -20
- data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +27 -27
- data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +39 -39
- data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +26 -26
- data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +15 -15
- data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +45 -45
- data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +21 -21
- data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +15 -15
- data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +277 -277
- data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +18 -18
- data/lib/solargraph/parser/rubyvm/node_processors.rb +63 -63
- data/lib/solargraph/parser/rubyvm.rb +40 -40
- data/lib/solargraph/parser/snippet.rb +13 -13
- data/lib/solargraph/parser.rb +26 -26
- data/lib/solargraph/pin/base.rb +296 -296
- data/lib/solargraph/pin/base_variable.rb +84 -84
- data/lib/solargraph/pin/block.rb +72 -72
- data/lib/solargraph/pin/class_variable.rb +8 -8
- data/lib/solargraph/pin/closure.rb +37 -37
- data/lib/solargraph/pin/common.rb +70 -70
- data/lib/solargraph/pin/constant.rb +43 -43
- data/lib/solargraph/pin/conversions.rb +96 -96
- data/lib/solargraph/pin/documenting.rb +105 -105
- data/lib/solargraph/pin/duck_method.rb +16 -16
- data/lib/solargraph/pin/global_variable.rb +8 -8
- data/lib/solargraph/pin/instance_variable.rb +30 -30
- data/lib/solargraph/pin/keyword.rb +15 -15
- data/lib/solargraph/pin/keyword_param.rb +8 -8
- data/lib/solargraph/pin/local_variable.rb +55 -55
- data/lib/solargraph/pin/method.rb +245 -245
- data/lib/solargraph/pin/method_alias.rb +31 -31
- data/lib/solargraph/pin/namespace.rb +91 -91
- data/lib/solargraph/pin/parameter.rb +201 -203
- data/lib/solargraph/pin/proxy_type.rb +29 -29
- data/lib/solargraph/pin/reference/extend.rb +10 -10
- data/lib/solargraph/pin/reference/include.rb +10 -10
- data/lib/solargraph/pin/reference/override.rb +29 -29
- data/lib/solargraph/pin/reference/prepend.rb +10 -10
- data/lib/solargraph/pin/reference/require.rb +14 -14
- data/lib/solargraph/pin/reference/superclass.rb +10 -10
- data/lib/solargraph/pin/reference.rb +14 -14
- data/lib/solargraph/pin/search.rb +56 -0
- data/lib/solargraph/pin/singleton.rb +11 -11
- data/lib/solargraph/pin/symbol.rb +47 -47
- data/lib/solargraph/pin.rb +37 -36
- data/lib/solargraph/position.rb +100 -100
- data/lib/solargraph/range.rb +95 -95
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +226 -226
- data/lib/solargraph/source/chain/block_variable.rb +13 -13
- data/lib/solargraph/source/chain/call.rb +204 -204
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +75 -75
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +28 -28
- data/lib/solargraph/source/chain/head.rb +19 -19
- data/lib/solargraph/source/chain/instance_variable.rb +13 -13
- data/lib/solargraph/source/chain/link.rb +71 -71
- data/lib/solargraph/source/chain/literal.rb +23 -23
- data/lib/solargraph/source/chain/or.rb +23 -23
- data/lib/solargraph/source/chain/q_call.rb +11 -11
- data/lib/solargraph/source/chain/variable.rb +13 -13
- data/lib/solargraph/source/chain/z_super.rb +30 -30
- data/lib/solargraph/source/chain.rb +164 -164
- data/lib/solargraph/source/change.rb +79 -79
- data/lib/solargraph/source/cursor.rb +164 -164
- data/lib/solargraph/source/source_chainer.rb +191 -191
- data/lib/solargraph/source/updater.rb +54 -54
- data/lib/solargraph/source.rb +522 -522
- data/lib/solargraph/source_map/clip.rb +224 -224
- data/lib/solargraph/source_map/completion.rb +23 -23
- data/lib/solargraph/source_map/mapper.rb +212 -212
- data/lib/solargraph/source_map.rb +180 -189
- data/lib/solargraph/type_checker/checks.rb +99 -99
- data/lib/solargraph/type_checker/param_def.rb +35 -35
- data/lib/solargraph/type_checker/problem.rb +32 -32
- data/lib/solargraph/type_checker/rules.rb +57 -57
- data/lib/solargraph/type_checker.rb +543 -529
- data/lib/solargraph/version.rb +5 -5
- data/lib/solargraph/views/environment.erb +58 -58
- data/lib/solargraph/workspace/config.rb +231 -231
- data/lib/solargraph/workspace.rb +215 -214
- data/lib/solargraph/yard_map/cache.rb +19 -19
- data/lib/solargraph/yard_map/core_docs.rb +170 -170
- data/lib/solargraph/yard_map/core_fills.rb +208 -208
- data/lib/solargraph/yard_map/core_gen.rb +76 -76
- data/lib/solargraph/yard_map/helpers.rb +16 -16
- data/lib/solargraph/yard_map/mapper/to_constant.rb +25 -25
- data/lib/solargraph/yard_map/mapper/to_method.rb +78 -78
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +27 -27
- data/lib/solargraph/yard_map/mapper.rb +77 -77
- data/lib/solargraph/yard_map/rdoc_to_yard.rb +140 -140
- data/lib/solargraph/yard_map/stdlib_fills.rb +43 -43
- data/lib/solargraph/yard_map/to_method.rb +79 -79
- data/lib/solargraph/yard_map.rb +460 -445
- data/lib/solargraph.rb +69 -69
- data/lib/yard-solargraph.rb +33 -33
- data/solargraph.gemspec +0 -0
- metadata +13 -12
data/Gemfile
CHANGED
File without changes
|
data/LICENSE
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -1,128 +1,128 @@
|
|
1
|
-
# Solargraph
|
2
|
-
|
3
|
-
[![RSpec](https://github.com/castwide/solargraph/actions/workflows/rspec.yml/badge.svg)](https://github.com/castwide/solargraph/actions/workflows/rspec.yml)
|
4
|
-
|
5
|
-
## A Ruby Language Server
|
6
|
-
|
7
|
-
Solargraph provides a comprehensive suite of tools for Ruby programming: intellisense, diagnostics, inline documentation, and type checking.
|
8
|
-
|
9
|
-
## Online Demo
|
10
|
-
|
11
|
-
A web-based demonstration of Solargraph's autocomplete is available at https://solargraph.org/demo.
|
12
|
-
|
13
|
-
## Installation
|
14
|
-
|
15
|
-
Install the gem from the command line:
|
16
|
-
|
17
|
-
gem install solargraph
|
18
|
-
|
19
|
-
Or add it to your Gemfile:
|
20
|
-
|
21
|
-
gem 'solargraph', group: :development
|
22
|
-
|
23
|
-
## Using Solargraph
|
24
|
-
|
25
|
-
Plug-ins and extensions are available for the following editors:
|
26
|
-
|
27
|
-
* **Visual Studio Code**
|
28
|
-
* Extension: https://marketplace.visualstudio.com/items?itemName=castwide.solargraph
|
29
|
-
* GitHub: https://github.com/castwide/vscode-solargraph
|
30
|
-
|
31
|
-
* **Atom**
|
32
|
-
* Package: https://atom.io/packages/ruby-solargraph
|
33
|
-
* GitHub: https://github.com/castwide/atom-solargraph
|
34
|
-
|
35
|
-
* **Vim**
|
36
|
-
* GitHub: `LanguageClient-neovim`, https://github.com/autozimu/LanguageClient-neovim
|
37
|
-
* GitHub: `coc`, https://github.com/neoclide/coc-solargraph
|
38
|
-
* GitHub: `Vim-EasyComplete`, https://github.com/jayli/vim-easycomplete
|
39
|
-
|
40
|
-
* **Emacs**
|
41
|
-
* GitHub: `eglot.el`, https://github.com/joaotavora/eglot
|
42
|
-
* GitHub: `lsp-mode.el`, https://github.com/emacs-lsp/lsp-mode
|
43
|
-
|
44
|
-
* **Eclipse**
|
45
|
-
* Plugin: https://marketplace.eclipse.org/content/ruby-solargraph
|
46
|
-
* GitHub: https://github.com/PyvesB/eclipse-solargraph
|
47
|
-
|
48
|
-
### Configuration
|
49
|
-
|
50
|
-
Solargraph's behavior can be controlled via optional [configuration](https://solargraph.org/guides/configuration) files. The highest priority file is a `.solargraph.yml` file at the root of the project. If not present, any global configuration at `~/.config/solargraph/config.yml` will apply. The path to the global configuration can be overridden with the `SOLARGRAPH_GLOBAL_CONFIG` environment variable.
|
51
|
-
|
52
|
-
### Gem Support
|
53
|
-
|
54
|
-
Solargraph is capable of providing code completion and documentation for gems that have YARD documentation. You can make sure your gems are documented by running `yard gems` from the command line. (YARD is included as one of Solargraph's gem dependencies. The first time you run it might take a while if you have a lot of gems installed).
|
55
|
-
|
56
|
-
When editing code, a `require` call that references a gem will pull the documentation into the code maps and include the gem's API in code completion and intellisense.
|
57
|
-
|
58
|
-
If your project automatically requires bundled gems (e.g., `require 'bundler/require'`), Solargraph will add all of the Gemfile's default dependencies to the map.
|
59
|
-
|
60
|
-
### Type Checking
|
61
|
-
|
62
|
-
As of version 0.33.0, Solargraph includes a [type checker](https://github.com/castwide/solargraph/issues/192) that uses a combination of YARD tags and code analysis to report missing type definitions. In strict mode, it performs type inference to determine whether the tags match the types it detects from code.
|
63
|
-
|
64
|
-
### Updating Core Documentation
|
65
|
-
|
66
|
-
The Solargraph gem ships with documentation for Ruby 2.2.2. You can download documentation for other Ruby versions from the command line.
|
67
|
-
|
68
|
-
$ solargraph list-cores # List the installed documentation versions
|
69
|
-
$ solargraph available-cores # List the versions available for download
|
70
|
-
$ solargraph download-core # Install the best match for your Ruby version
|
71
|
-
$ solargraph clear # Reset the documentation cache
|
72
|
-
|
73
|
-
### The Documentation Cache
|
74
|
-
|
75
|
-
Solargraph uses a cache directory to store documentation for the Ruby core and customized documentation for certain gems. The default location is `~/.solargraph/cache`, e.g., `/home/<username>/.solargraph/cache` on Linux or `C:\Users\<username>\.solargraph` on Windows.
|
76
|
-
|
77
|
-
You can change the location of the cache directory with the `SOLARGRAPH_CACHE` environment variable. This can be useful if you want the cache to comply with the XDG Base Directory Specification.
|
78
|
-
|
79
|
-
### Solargraph and Bundler
|
80
|
-
|
81
|
-
If you're using the language server with a project that uses Bundler, the most comprehensive way to use your bundled gems is to bundle Solargraph.
|
82
|
-
|
83
|
-
In the Gemfile:
|
84
|
-
|
85
|
-
gem 'solargraph', group: :development
|
86
|
-
|
87
|
-
Run `bundle install` and use `bundle exec yard gems` to generate the documentation. This process documents cached or vendored gems, or even gems that are installed from a local path.
|
88
|
-
|
89
|
-
In order to make sure you're using the correct dependencies, you can start the language server with Bundler. In VS Code, there's a `solargraph.useBundler` option. Other clients will vary, but the command you probably want to run is `bundle exec solargraph socket` or `bundle exec solargraph stdio`.
|
90
|
-
|
91
|
-
### Rubocop Version
|
92
|
-
|
93
|
-
If you have multiple versions of [`rubocop`](https://rubygems.org/gems/rubocop) installed and you would like to choose a version other than the latest to use, this specific version can be configured.
|
94
|
-
|
95
|
-
In `.solargraph.yml`:
|
96
|
-
|
97
|
-
```yaml
|
98
|
-
---
|
99
|
-
reporters:
|
100
|
-
- rubocop:version=0.61.0 # diagnostics
|
101
|
-
formatter:
|
102
|
-
rubocop:
|
103
|
-
version: 0.61.0 # formatting
|
104
|
-
```
|
105
|
-
|
106
|
-
### Integrating Other Editors
|
107
|
-
|
108
|
-
The [language server protocol](https://microsoft.github.io/language-server-protocol/specification) is the recommended way for integrating Solargraph into editors and IDEs. Clients can connect using either stdio or TCP. Language client developers should refer to [https://solargraph.org/guides/language-server](https://solargraph.org/guides/language-server).
|
109
|
-
|
110
|
-
### More Information
|
111
|
-
|
112
|
-
See [https://solargraph.org/guides](https://solargraph.org/guides) for more tips and tutorials about Solargraph.
|
113
|
-
|
114
|
-
## Contributing to Solargraph
|
115
|
-
|
116
|
-
### Bug Reports and Feature Requests
|
117
|
-
|
118
|
-
[GitHub Issues](https://github.com/castwide/solargraph/issues) are the best place to ask questions, report problems, and suggest improvements.
|
119
|
-
|
120
|
-
### Development
|
121
|
-
|
122
|
-
Code contributions are always appreciated. Feel free to fork the repo and submit pull requests. Check for open issues that could use help. Start new issues to discuss changes that have a major impact on the code or require large time commitments.
|
123
|
-
|
124
|
-
### Sponsorship and Donation
|
125
|
-
|
126
|
-
Use Patreon to support ongoing development of Solargraph at [https://www.patreon.com/castwide](https://www.patreon.com/castwide).
|
127
|
-
|
128
|
-
You can also make one-time donations via PayPal at [https://www.paypal.me/castwide](https://www.paypal.me/castwide).
|
1
|
+
# Solargraph
|
2
|
+
|
3
|
+
[![RSpec](https://github.com/castwide/solargraph/actions/workflows/rspec.yml/badge.svg)](https://github.com/castwide/solargraph/actions/workflows/rspec.yml)
|
4
|
+
|
5
|
+
## A Ruby Language Server
|
6
|
+
|
7
|
+
Solargraph provides a comprehensive suite of tools for Ruby programming: intellisense, diagnostics, inline documentation, and type checking.
|
8
|
+
|
9
|
+
## Online Demo
|
10
|
+
|
11
|
+
A web-based demonstration of Solargraph's autocomplete is available at https://solargraph.org/demo.
|
12
|
+
|
13
|
+
## Installation
|
14
|
+
|
15
|
+
Install the gem from the command line:
|
16
|
+
|
17
|
+
gem install solargraph
|
18
|
+
|
19
|
+
Or add it to your Gemfile:
|
20
|
+
|
21
|
+
gem 'solargraph', group: :development
|
22
|
+
|
23
|
+
## Using Solargraph
|
24
|
+
|
25
|
+
Plug-ins and extensions are available for the following editors:
|
26
|
+
|
27
|
+
* **Visual Studio Code**
|
28
|
+
* Extension: https://marketplace.visualstudio.com/items?itemName=castwide.solargraph
|
29
|
+
* GitHub: https://github.com/castwide/vscode-solargraph
|
30
|
+
|
31
|
+
* **Atom**
|
32
|
+
* Package: https://atom.io/packages/ruby-solargraph
|
33
|
+
* GitHub: https://github.com/castwide/atom-solargraph
|
34
|
+
|
35
|
+
* **Vim**
|
36
|
+
* GitHub: `LanguageClient-neovim`, https://github.com/autozimu/LanguageClient-neovim
|
37
|
+
* GitHub: `coc`, https://github.com/neoclide/coc-solargraph
|
38
|
+
* GitHub: `Vim-EasyComplete`, https://github.com/jayli/vim-easycomplete
|
39
|
+
|
40
|
+
* **Emacs**
|
41
|
+
* GitHub: `eglot.el`, https://github.com/joaotavora/eglot
|
42
|
+
* GitHub: `lsp-mode.el`, https://github.com/emacs-lsp/lsp-mode
|
43
|
+
|
44
|
+
* **Eclipse**
|
45
|
+
* Plugin: https://marketplace.eclipse.org/content/ruby-solargraph
|
46
|
+
* GitHub: https://github.com/PyvesB/eclipse-solargraph
|
47
|
+
|
48
|
+
### Configuration
|
49
|
+
|
50
|
+
Solargraph's behavior can be controlled via optional [configuration](https://solargraph.org/guides/configuration) files. The highest priority file is a `.solargraph.yml` file at the root of the project. If not present, any global configuration at `~/.config/solargraph/config.yml` will apply. The path to the global configuration can be overridden with the `SOLARGRAPH_GLOBAL_CONFIG` environment variable.
|
51
|
+
|
52
|
+
### Gem Support
|
53
|
+
|
54
|
+
Solargraph is capable of providing code completion and documentation for gems that have YARD documentation. You can make sure your gems are documented by running `yard gems` from the command line. (YARD is included as one of Solargraph's gem dependencies. The first time you run it might take a while if you have a lot of gems installed).
|
55
|
+
|
56
|
+
When editing code, a `require` call that references a gem will pull the documentation into the code maps and include the gem's API in code completion and intellisense.
|
57
|
+
|
58
|
+
If your project automatically requires bundled gems (e.g., `require 'bundler/require'`), Solargraph will add all of the Gemfile's default dependencies to the map.
|
59
|
+
|
60
|
+
### Type Checking
|
61
|
+
|
62
|
+
As of version 0.33.0, Solargraph includes a [type checker](https://github.com/castwide/solargraph/issues/192) that uses a combination of YARD tags and code analysis to report missing type definitions. In strict mode, it performs type inference to determine whether the tags match the types it detects from code.
|
63
|
+
|
64
|
+
### Updating Core Documentation
|
65
|
+
|
66
|
+
The Solargraph gem ships with documentation for Ruby 2.2.2. You can download documentation for other Ruby versions from the command line.
|
67
|
+
|
68
|
+
$ solargraph list-cores # List the installed documentation versions
|
69
|
+
$ solargraph available-cores # List the versions available for download
|
70
|
+
$ solargraph download-core # Install the best match for your Ruby version
|
71
|
+
$ solargraph clear # Reset the documentation cache
|
72
|
+
|
73
|
+
### The Documentation Cache
|
74
|
+
|
75
|
+
Solargraph uses a cache directory to store documentation for the Ruby core and customized documentation for certain gems. The default location is `~/.solargraph/cache`, e.g., `/home/<username>/.solargraph/cache` on Linux or `C:\Users\<username>\.solargraph` on Windows.
|
76
|
+
|
77
|
+
You can change the location of the cache directory with the `SOLARGRAPH_CACHE` environment variable. This can be useful if you want the cache to comply with the XDG Base Directory Specification.
|
78
|
+
|
79
|
+
### Solargraph and Bundler
|
80
|
+
|
81
|
+
If you're using the language server with a project that uses Bundler, the most comprehensive way to use your bundled gems is to bundle Solargraph.
|
82
|
+
|
83
|
+
In the Gemfile:
|
84
|
+
|
85
|
+
gem 'solargraph', group: :development
|
86
|
+
|
87
|
+
Run `bundle install` and use `bundle exec yard gems` to generate the documentation. This process documents cached or vendored gems, or even gems that are installed from a local path.
|
88
|
+
|
89
|
+
In order to make sure you're using the correct dependencies, you can start the language server with Bundler. In VS Code, there's a `solargraph.useBundler` option. Other clients will vary, but the command you probably want to run is `bundle exec solargraph socket` or `bundle exec solargraph stdio`.
|
90
|
+
|
91
|
+
### Rubocop Version
|
92
|
+
|
93
|
+
If you have multiple versions of [`rubocop`](https://rubygems.org/gems/rubocop) installed and you would like to choose a version other than the latest to use, this specific version can be configured.
|
94
|
+
|
95
|
+
In `.solargraph.yml`:
|
96
|
+
|
97
|
+
```yaml
|
98
|
+
---
|
99
|
+
reporters:
|
100
|
+
- rubocop:version=0.61.0 # diagnostics
|
101
|
+
formatter:
|
102
|
+
rubocop:
|
103
|
+
version: 0.61.0 # formatting
|
104
|
+
```
|
105
|
+
|
106
|
+
### Integrating Other Editors
|
107
|
+
|
108
|
+
The [language server protocol](https://microsoft.github.io/language-server-protocol/specification) is the recommended way for integrating Solargraph into editors and IDEs. Clients can connect using either stdio or TCP. Language client developers should refer to [https://solargraph.org/guides/language-server](https://solargraph.org/guides/language-server).
|
109
|
+
|
110
|
+
### More Information
|
111
|
+
|
112
|
+
See [https://solargraph.org/guides](https://solargraph.org/guides) for more tips and tutorials about Solargraph.
|
113
|
+
|
114
|
+
## Contributing to Solargraph
|
115
|
+
|
116
|
+
### Bug Reports and Feature Requests
|
117
|
+
|
118
|
+
[GitHub Issues](https://github.com/castwide/solargraph/issues) are the best place to ask questions, report problems, and suggest improvements.
|
119
|
+
|
120
|
+
### Development
|
121
|
+
|
122
|
+
Code contributions are always appreciated. Feel free to fork the repo and submit pull requests. Check for open issues that could use help. Start new issues to discuss changes that have a major impact on the code or require large time commitments.
|
123
|
+
|
124
|
+
### Sponsorship and Donation
|
125
|
+
|
126
|
+
Use Patreon to support ongoing development of Solargraph at [https://www.patreon.com/castwide](https://www.patreon.com/castwide).
|
127
|
+
|
128
|
+
You can also make one-time donations via PayPal at [https://www.paypal.me/castwide](https://www.paypal.me/castwide).
|
data/Rakefile
CHANGED
File without changes
|
data/SPONSORS.md
CHANGED
@@ -1,17 +1,18 @@
|
|
1
|
-
# Sponsors
|
2
|
-
|
3
|
-
Solargraph is developed and maintained by [Castwide Technologies](https://castwide.com).
|
4
|
-
|
5
|
-
The following people and organizations provide funding or other resources. [Become a sponsor](https://patreon.com/castwide)
|
6
|
-
|
7
|
-
## Linked Sponsors
|
8
|
-
|
9
|
-
- **[Calyptix Security](https://www.calyptix.com/)**
|
10
|
-
|
11
|
-
## Named Sponsors
|
12
|
-
|
13
|
-
-
|
14
|
-
-
|
15
|
-
-
|
16
|
-
-
|
17
|
-
-
|
1
|
+
# Sponsors
|
2
|
+
|
3
|
+
Solargraph is developed and maintained by [Castwide Technologies](https://castwide.com).
|
4
|
+
|
5
|
+
The following people and organizations provide funding or other resources. [Become a sponsor](https://patreon.com/castwide)
|
6
|
+
|
7
|
+
## Linked Sponsors
|
8
|
+
|
9
|
+
- **[Calyptix Security](https://www.calyptix.com/)**
|
10
|
+
|
11
|
+
## Named Sponsors
|
12
|
+
|
13
|
+
- Tom de Grunt
|
14
|
+
- Akira Yamada
|
15
|
+
- Erlend Finvåg
|
16
|
+
- Matt Massicotte
|
17
|
+
- Hasan Kumar
|
18
|
+
- Oscar Rivas
|
data/bin/solargraph
CHANGED
File without changes
|
@@ -1,22 +1,22 @@
|
|
1
|
-
require 'bundler'
|
2
|
-
require 'shellwords'
|
3
|
-
|
4
|
-
module Solargraph
|
5
|
-
class ApiMap
|
6
|
-
module BundlerMethods
|
7
|
-
module_function
|
8
|
-
|
9
|
-
# @param directory [String]
|
10
|
-
# @return [Hash]
|
11
|
-
def require_from_bundle directory
|
12
|
-
begin
|
13
|
-
Solargraph.logger.info "Loading gems for bundler/require"
|
14
|
-
Documentor.specs_from_bundle(directory)
|
15
|
-
rescue BundleNotFoundError => e
|
16
|
-
Solargraph.logger.warn e.message
|
17
|
-
{}
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
1
|
+
require 'bundler'
|
2
|
+
require 'shellwords'
|
3
|
+
|
4
|
+
module Solargraph
|
5
|
+
class ApiMap
|
6
|
+
module BundlerMethods
|
7
|
+
module_function
|
8
|
+
|
9
|
+
# @param directory [String]
|
10
|
+
# @return [Hash]
|
11
|
+
def require_from_bundle directory
|
12
|
+
begin
|
13
|
+
Solargraph.logger.info "Loading gems for bundler/require"
|
14
|
+
Documentor.specs_from_bundle(directory)
|
15
|
+
rescue BundleNotFoundError => e
|
16
|
+
Solargraph.logger.warn e.message
|
17
|
+
{}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,70 +1,70 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
class ApiMap
|
5
|
-
class Cache
|
6
|
-
def initialize
|
7
|
-
@methods = {}
|
8
|
-
@constants = {}
|
9
|
-
@qualified_namespaces = {}
|
10
|
-
@receiver_definitions = {}
|
11
|
-
end
|
12
|
-
|
13
|
-
# @return [Array<Pin::Method>]
|
14
|
-
def get_methods fqns, scope, visibility, deep
|
15
|
-
@methods[[fqns, scope, visibility.sort, deep]]
|
16
|
-
end
|
17
|
-
|
18
|
-
def set_methods fqns, scope, visibility, deep, value
|
19
|
-
@methods[[fqns, scope, visibility.sort, deep]] = value
|
20
|
-
end
|
21
|
-
|
22
|
-
# @return [Array<Pin::Base>]
|
23
|
-
def get_constants namespace, context
|
24
|
-
@constants[[namespace, context]]
|
25
|
-
end
|
26
|
-
|
27
|
-
def set_constants namespace, context, value
|
28
|
-
@constants[[namespace, context]] = value
|
29
|
-
end
|
30
|
-
|
31
|
-
# @return [String]
|
32
|
-
def get_qualified_namespace name, context
|
33
|
-
@qualified_namespaces[[name, context]]
|
34
|
-
end
|
35
|
-
|
36
|
-
def set_qualified_namespace name, context, value
|
37
|
-
@qualified_namespaces[[name, context]] = value
|
38
|
-
end
|
39
|
-
|
40
|
-
def receiver_defined? path
|
41
|
-
@receiver_definitions.key? path
|
42
|
-
end
|
43
|
-
|
44
|
-
# @return [Pin::Method]
|
45
|
-
def get_receiver_definition path
|
46
|
-
@receiver_definitions[path]
|
47
|
-
end
|
48
|
-
|
49
|
-
def set_receiver_definition path, pin
|
50
|
-
@receiver_definitions[path] = pin
|
51
|
-
end
|
52
|
-
|
53
|
-
# @return [void]
|
54
|
-
def clear
|
55
|
-
@methods.clear
|
56
|
-
@constants.clear
|
57
|
-
@qualified_namespaces.clear
|
58
|
-
@receiver_definitions.clear
|
59
|
-
end
|
60
|
-
|
61
|
-
# @return [Boolean]
|
62
|
-
def empty?
|
63
|
-
@methods.empty? &&
|
64
|
-
@constants.empty? &&
|
65
|
-
@qualified_namespaces.empty? &&
|
66
|
-
@receiver_definitions.empty?
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Solargraph
|
4
|
+
class ApiMap
|
5
|
+
class Cache
|
6
|
+
def initialize
|
7
|
+
@methods = {}
|
8
|
+
@constants = {}
|
9
|
+
@qualified_namespaces = {}
|
10
|
+
@receiver_definitions = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [Array<Pin::Method>]
|
14
|
+
def get_methods fqns, scope, visibility, deep
|
15
|
+
@methods[[fqns, scope, visibility.sort, deep]]
|
16
|
+
end
|
17
|
+
|
18
|
+
def set_methods fqns, scope, visibility, deep, value
|
19
|
+
@methods[[fqns, scope, visibility.sort, deep]] = value
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Array<Pin::Base>]
|
23
|
+
def get_constants namespace, context
|
24
|
+
@constants[[namespace, context]]
|
25
|
+
end
|
26
|
+
|
27
|
+
def set_constants namespace, context, value
|
28
|
+
@constants[[namespace, context]] = value
|
29
|
+
end
|
30
|
+
|
31
|
+
# @return [String]
|
32
|
+
def get_qualified_namespace name, context
|
33
|
+
@qualified_namespaces[[name, context]]
|
34
|
+
end
|
35
|
+
|
36
|
+
def set_qualified_namespace name, context, value
|
37
|
+
@qualified_namespaces[[name, context]] = value
|
38
|
+
end
|
39
|
+
|
40
|
+
def receiver_defined? path
|
41
|
+
@receiver_definitions.key? path
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [Pin::Method]
|
45
|
+
def get_receiver_definition path
|
46
|
+
@receiver_definitions[path]
|
47
|
+
end
|
48
|
+
|
49
|
+
def set_receiver_definition path, pin
|
50
|
+
@receiver_definitions[path] = pin
|
51
|
+
end
|
52
|
+
|
53
|
+
# @return [void]
|
54
|
+
def clear
|
55
|
+
@methods.clear
|
56
|
+
@constants.clear
|
57
|
+
@qualified_namespaces.clear
|
58
|
+
@receiver_definitions.clear
|
59
|
+
end
|
60
|
+
|
61
|
+
# @return [Boolean]
|
62
|
+
def empty?
|
63
|
+
@methods.empty? &&
|
64
|
+
@constants.empty? &&
|
65
|
+
@qualified_namespaces.empty? &&
|
66
|
+
@receiver_definitions.empty?
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -1,81 +1,81 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
class ApiMap
|
5
|
-
module SourceToYard
|
6
|
-
|
7
|
-
# Get the YARD CodeObject at the specified path.
|
8
|
-
#
|
9
|
-
# @param path [String]
|
10
|
-
# @return [YARD::CodeObjects::Base]
|
11
|
-
def code_object_at path
|
12
|
-
code_object_map[path]
|
13
|
-
end
|
14
|
-
|
15
|
-
# @return [Array<String>]
|
16
|
-
def code_object_paths
|
17
|
-
code_object_map.keys
|
18
|
-
end
|
19
|
-
|
20
|
-
# @param store [ApiMap::Store] ApiMap pin store
|
21
|
-
# @return [void]
|
22
|
-
def rake_yard store
|
23
|
-
YARD::Registry.clear
|
24
|
-
code_object_map.clear
|
25
|
-
store.namespace_pins.each do |pin|
|
26
|
-
next if pin.path.nil? || pin.path.empty?
|
27
|
-
if pin.code_object
|
28
|
-
code_object_map[pin.path] ||= pin.code_object
|
29
|
-
next
|
30
|
-
end
|
31
|
-
if pin.type == :class
|
32
|
-
code_object_map[pin.path] ||= YARD::CodeObjects::ClassObject.new(root_code_object, pin.path) { |obj|
|
33
|
-
next if pin.location.nil? || pin.location.filename.nil?
|
34
|
-
obj.add_file(pin.location.filename, pin.location.range.start.line, !pin.comments.empty?)
|
35
|
-
}
|
36
|
-
else
|
37
|
-
code_object_map[pin.path] ||= YARD::CodeObjects::ModuleObject.new(root_code_object, pin.path) { |obj|
|
38
|
-
next if pin.location.nil? || pin.location.filename.nil?
|
39
|
-
obj.add_file(pin.location.filename, pin.location.range.start.line, !pin.comments.empty?)
|
40
|
-
}
|
41
|
-
end
|
42
|
-
code_object_map[pin.path].docstring = pin.docstring
|
43
|
-
store.get_includes(pin.path).each do |ref|
|
44
|
-
code_object_map[pin.path].instance_mixins.push code_object_map[ref] unless code_object_map[ref].nil? or code_object_map[pin.path].nil?
|
45
|
-
end
|
46
|
-
store.get_extends(pin.path).each do |ref|
|
47
|
-
code_object_map[pin.path].instance_mixins.push code_object_map[ref] unless code_object_map[ref].nil? or code_object_map[pin.path].nil?
|
48
|
-
code_object_map[pin.path].class_mixins.push code_object_map[ref] unless code_object_map[ref].nil? or code_object_map[pin.path].nil?
|
49
|
-
end
|
50
|
-
end
|
51
|
-
store.method_pins.each do |pin|
|
52
|
-
if pin.code_object
|
53
|
-
code_object_map[pin.path] ||= pin.code_object
|
54
|
-
next
|
55
|
-
end
|
56
|
-
code_object_map[pin.path] ||= YARD::CodeObjects::MethodObject.new(code_object_at(pin.namespace), pin.name, pin.scope) { |obj|
|
57
|
-
next if pin.location.nil? || pin.location.filename.nil?
|
58
|
-
obj.add_file pin.location.filename, pin.location.range.start.line
|
59
|
-
}
|
60
|
-
code_object_map[pin.path].docstring = pin.docstring
|
61
|
-
code_object_map[pin.path].visibility = pin.visibility || :public
|
62
|
-
code_object_map[pin.path].parameters = pin.parameters.map do |p|
|
63
|
-
[p.name, p.asgn_code]
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
private
|
69
|
-
|
70
|
-
# @return [Hash{String => YARD::CodeObjects::Base}]
|
71
|
-
def code_object_map
|
72
|
-
@code_object_map ||= {}
|
73
|
-
end
|
74
|
-
|
75
|
-
# @return [YARD::CodeObjects::RootObject]
|
76
|
-
def root_code_object
|
77
|
-
@root_code_object ||= YARD::CodeObjects::RootObject.new(nil, 'root')
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Solargraph
|
4
|
+
class ApiMap
|
5
|
+
module SourceToYard
|
6
|
+
|
7
|
+
# Get the YARD CodeObject at the specified path.
|
8
|
+
#
|
9
|
+
# @param path [String]
|
10
|
+
# @return [YARD::CodeObjects::Base]
|
11
|
+
def code_object_at path
|
12
|
+
code_object_map[path]
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [Array<String>]
|
16
|
+
def code_object_paths
|
17
|
+
code_object_map.keys
|
18
|
+
end
|
19
|
+
|
20
|
+
# @param store [ApiMap::Store] ApiMap pin store
|
21
|
+
# @return [void]
|
22
|
+
def rake_yard store
|
23
|
+
YARD::Registry.clear
|
24
|
+
code_object_map.clear
|
25
|
+
store.namespace_pins.each do |pin|
|
26
|
+
next if pin.path.nil? || pin.path.empty?
|
27
|
+
if pin.code_object
|
28
|
+
code_object_map[pin.path] ||= pin.code_object
|
29
|
+
next
|
30
|
+
end
|
31
|
+
if pin.type == :class
|
32
|
+
code_object_map[pin.path] ||= YARD::CodeObjects::ClassObject.new(root_code_object, pin.path) { |obj|
|
33
|
+
next if pin.location.nil? || pin.location.filename.nil?
|
34
|
+
obj.add_file(pin.location.filename, pin.location.range.start.line, !pin.comments.empty?)
|
35
|
+
}
|
36
|
+
else
|
37
|
+
code_object_map[pin.path] ||= YARD::CodeObjects::ModuleObject.new(root_code_object, pin.path) { |obj|
|
38
|
+
next if pin.location.nil? || pin.location.filename.nil?
|
39
|
+
obj.add_file(pin.location.filename, pin.location.range.start.line, !pin.comments.empty?)
|
40
|
+
}
|
41
|
+
end
|
42
|
+
code_object_map[pin.path].docstring = pin.docstring
|
43
|
+
store.get_includes(pin.path).each do |ref|
|
44
|
+
code_object_map[pin.path].instance_mixins.push code_object_map[ref] unless code_object_map[ref].nil? or code_object_map[pin.path].nil?
|
45
|
+
end
|
46
|
+
store.get_extends(pin.path).each do |ref|
|
47
|
+
code_object_map[pin.path].instance_mixins.push code_object_map[ref] unless code_object_map[ref].nil? or code_object_map[pin.path].nil?
|
48
|
+
code_object_map[pin.path].class_mixins.push code_object_map[ref] unless code_object_map[ref].nil? or code_object_map[pin.path].nil?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
store.method_pins.each do |pin|
|
52
|
+
if pin.code_object
|
53
|
+
code_object_map[pin.path] ||= pin.code_object
|
54
|
+
next
|
55
|
+
end
|
56
|
+
code_object_map[pin.path] ||= YARD::CodeObjects::MethodObject.new(code_object_at(pin.namespace), pin.name, pin.scope) { |obj|
|
57
|
+
next if pin.location.nil? || pin.location.filename.nil?
|
58
|
+
obj.add_file pin.location.filename, pin.location.range.start.line
|
59
|
+
}
|
60
|
+
code_object_map[pin.path].docstring = pin.docstring
|
61
|
+
code_object_map[pin.path].visibility = pin.visibility || :public
|
62
|
+
code_object_map[pin.path].parameters = pin.parameters.map do |p|
|
63
|
+
[p.name, p.asgn_code]
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
# @return [Hash{String => YARD::CodeObjects::Base}]
|
71
|
+
def code_object_map
|
72
|
+
@code_object_map ||= {}
|
73
|
+
end
|
74
|
+
|
75
|
+
# @return [YARD::CodeObjects::RootObject]
|
76
|
+
def root_code_object
|
77
|
+
@root_code_object ||= YARD::CodeObjects::RootObject.new(nil, 'root')
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|