solargraph 0.58.1 → 0.58.3
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/.github/workflows/plugins.yml +3 -2
- data/.gitignore +1 -0
- data/CHANGELOG.md +10 -1
- data/lib/solargraph/api_map/cache.rb +110 -110
- data/lib/solargraph/api_map/constants.rb +279 -279
- data/lib/solargraph/api_map/index.rb +193 -193
- data/lib/solargraph/api_map/source_to_yard.rb +97 -97
- data/lib/solargraph/api_map/store.rb +384 -384
- data/lib/solargraph/api_map.rb +945 -945
- data/lib/solargraph/bench.rb +45 -45
- data/lib/solargraph/complex_type/type_methods.rb +228 -228
- data/lib/solargraph/complex_type/unique_type.rb +482 -482
- data/lib/solargraph/complex_type.rb +444 -444
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -91
- data/lib/solargraph/convention/data_definition.rb +105 -105
- data/lib/solargraph/convention/gemfile.rb +15 -15
- data/lib/solargraph/convention/gemspec.rb +23 -23
- data/lib/solargraph/convention/rakefile.rb +17 -17
- data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +61 -61
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -102
- data/lib/solargraph/convention/struct_definition.rb +164 -164
- data/lib/solargraph/convention.rb +78 -78
- data/lib/solargraph/converters/dd.rb +17 -17
- data/lib/solargraph/converters/dl.rb +15 -15
- data/lib/solargraph/converters/dt.rb +15 -15
- data/lib/solargraph/converters/misc.rb +1 -1
- data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
- data/lib/solargraph/diagnostics/rubocop.rb +118 -118
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +68 -68
- data/lib/solargraph/diagnostics/type_check.rb +55 -55
- data/lib/solargraph/diagnostics/update_errors.rb +41 -41
- data/lib/solargraph/doc_map.rb +439 -439
- data/lib/solargraph/equality.rb +34 -34
- data/lib/solargraph/gem_pins.rb +98 -98
- data/lib/solargraph/language_server/error_codes.rb +20 -20
- data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
- data/lib/solargraph/language_server/host/dispatch.rb +130 -130
- data/lib/solargraph/language_server/host/message_worker.rb +112 -112
- data/lib/solargraph/language_server/host/sources.rb +99 -99
- data/lib/solargraph/language_server/host.rb +878 -878
- data/lib/solargraph/language_server/message/base.rb +97 -97
- data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +60 -60
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +114 -114
- data/lib/solargraph/language_server/message/extended/document.rb +23 -23
- data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
- data/lib/solargraph/language_server/message/extended/download_core.rb +19 -19
- data/lib/solargraph/language_server/message/extended/search.rb +20 -20
- data/lib/solargraph/language_server/message/initialize.rb +191 -191
- data/lib/solargraph/language_server/message/text_document/completion.rb +56 -56
- data/lib/solargraph/language_server/message/text_document/definition.rb +40 -40
- data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -26
- data/lib/solargraph/language_server/message/text_document/formatting.rb +148 -148
- data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
- 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 +24 -24
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -25
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +35 -35
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +40 -40
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +26 -26
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
- data/lib/solargraph/language_server/message.rb +94 -94
- data/lib/solargraph/language_server/request.rb +27 -27
- data/lib/solargraph/language_server/transport/data_reader.rb +74 -74
- data/lib/solargraph/language_server/uri_helpers.rb +49 -49
- data/lib/solargraph/library.rb +683 -683
- data/lib/solargraph/location.rb +82 -82
- data/lib/solargraph/logging.rb +37 -37
- data/lib/solargraph/page.rb +92 -92
- data/lib/solargraph/parser/comment_ripper.rb +69 -69
- data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -255
- data/lib/solargraph/parser/node_processor/base.rb +92 -92
- data/lib/solargraph/parser/node_processor.rb +62 -62
- data/lib/solargraph/parser/parser_gem/class_methods.rb +149 -149
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +166 -166
- data/lib/solargraph/parser/parser_gem/node_methods.rb +486 -486
- data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -22
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +59 -59
- data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +46 -46
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +53 -53
- data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +37 -37
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -23
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +40 -40
- data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +59 -59
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -98
- data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
- data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +38 -38
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +52 -52
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +291 -291
- data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors.rb +70 -70
- data/lib/solargraph/parser/parser_gem.rb +12 -12
- data/lib/solargraph/parser/region.rb +69 -69
- data/lib/solargraph/parser/snippet.rb +17 -17
- data/lib/solargraph/parser.rb +23 -23
- data/lib/solargraph/pin/base.rb +729 -729
- data/lib/solargraph/pin/base_variable.rb +126 -126
- data/lib/solargraph/pin/block.rb +104 -104
- data/lib/solargraph/pin/breakable.rb +9 -9
- data/lib/solargraph/pin/callable.rb +231 -231
- data/lib/solargraph/pin/closure.rb +72 -72
- data/lib/solargraph/pin/common.rb +79 -79
- data/lib/solargraph/pin/constant.rb +45 -45
- data/lib/solargraph/pin/conversions.rb +123 -123
- data/lib/solargraph/pin/delegated_method.rb +120 -120
- data/lib/solargraph/pin/documenting.rb +114 -114
- data/lib/solargraph/pin/instance_variable.rb +34 -34
- data/lib/solargraph/pin/keyword.rb +20 -20
- data/lib/solargraph/pin/local_variable.rb +75 -75
- data/lib/solargraph/pin/method.rb +672 -672
- data/lib/solargraph/pin/method_alias.rb +34 -34
- data/lib/solargraph/pin/namespace.rb +115 -115
- data/lib/solargraph/pin/parameter.rb +275 -275
- data/lib/solargraph/pin/proxy_type.rb +39 -39
- data/lib/solargraph/pin/reference/override.rb +47 -47
- data/lib/solargraph/pin/reference/superclass.rb +15 -15
- data/lib/solargraph/pin/reference.rb +39 -39
- data/lib/solargraph/pin/search.rb +61 -61
- data/lib/solargraph/pin/signature.rb +61 -61
- data/lib/solargraph/pin/symbol.rb +53 -53
- data/lib/solargraph/pin/until.rb +18 -18
- data/lib/solargraph/pin/while.rb +18 -18
- data/lib/solargraph/pin.rb +44 -44
- data/lib/solargraph/pin_cache.rb +245 -245
- data/lib/solargraph/position.rb +132 -119
- data/lib/solargraph/range.rb +112 -112
- data/lib/solargraph/rbs_map/conversions.rb +823 -823
- data/lib/solargraph/rbs_map/core_fills.rb +84 -84
- data/lib/solargraph/rbs_map/core_map.rb +58 -58
- data/lib/solargraph/rbs_map/stdlib_map.rb +43 -43
- data/lib/solargraph/rbs_map.rb +163 -163
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +363 -352
- data/lib/solargraph/source/chain/array.rb +37 -37
- data/lib/solargraph/source/chain/call.rb +337 -337
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +26 -26
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +34 -34
- data/lib/solargraph/source/chain/if.rb +28 -28
- data/lib/solargraph/source/chain/instance_variable.rb +13 -13
- data/lib/solargraph/source/chain/link.rb +109 -109
- data/lib/solargraph/source/chain/literal.rb +48 -48
- 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 +291 -291
- data/lib/solargraph/source/change.rb +82 -82
- data/lib/solargraph/source/cursor.rb +166 -166
- data/lib/solargraph/source/source_chainer.rb +194 -194
- data/lib/solargraph/source/updater.rb +55 -55
- data/lib/solargraph/source.rb +498 -498
- data/lib/solargraph/source_map/clip.rb +226 -226
- data/lib/solargraph/source_map/data.rb +34 -34
- data/lib/solargraph/source_map/mapper.rb +259 -259
- data/lib/solargraph/source_map.rb +212 -212
- data/lib/solargraph/type_checker/checks.rb +124 -124
- data/lib/solargraph/type_checker/param_def.rb +37 -37
- data/lib/solargraph/type_checker/problem.rb +32 -32
- data/lib/solargraph/type_checker/rules.rb +84 -84
- data/lib/solargraph/type_checker.rb +814 -814
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +255 -255
- data/lib/solargraph/workspace/require_paths.rb +97 -97
- data/lib/solargraph/workspace.rb +220 -220
- data/lib/solargraph/yard_map/helpers.rb +44 -44
- data/lib/solargraph/yard_map/mapper/to_method.rb +130 -130
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +31 -31
- data/lib/solargraph/yard_map/mapper.rb +79 -79
- data/lib/solargraph/yard_map/to_method.rb +89 -89
- data/lib/solargraph/yard_tags.rb +20 -20
- data/lib/solargraph/yardoc.rb +87 -87
- data/lib/solargraph.rb +105 -105
- data/rbs_collection.yaml +1 -1
- metadata +12 -12
- /data/{sig → rbs}/shims/ast/0/node.rbs +0 -0
- /data/{sig → rbs}/shims/ast/2.4/.rbs_meta.yaml +0 -0
- /data/{sig → rbs}/shims/ast/2.4/ast.rbs +0 -0
- /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
- /data/{sig → rbs}/shims/parser/3.2.0.1/manifest.yaml +0 -0
- /data/{sig → rbs}/shims/parser/3.2.0.1/parser.rbs +0 -0
- /data/{sig → rbs}/shims/parser/3.2.0.1/polyfill.rbs +0 -0
- /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
- /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
- /data/{sig → rbs}/shims/thor/1.2.0.1/thor.rbs +0 -0
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
# Conventions provide a way to modify an ApiMap based on expectations about
|
|
5
|
-
# one of its sources.
|
|
6
|
-
#
|
|
7
|
-
module Convention
|
|
8
|
-
autoload :Base, 'solargraph/convention/base'
|
|
9
|
-
autoload :Gemfile, 'solargraph/convention/gemfile'
|
|
10
|
-
autoload :Gemspec, 'solargraph/convention/gemspec'
|
|
11
|
-
autoload :Rakefile, 'solargraph/convention/rakefile'
|
|
12
|
-
autoload :StructDefinition, 'solargraph/convention/struct_definition'
|
|
13
|
-
autoload :DataDefinition, 'solargraph/convention/data_definition'
|
|
14
|
-
autoload :ActiveSupportConcern, 'solargraph/convention/active_support_concern'
|
|
15
|
-
|
|
16
|
-
# @type [Set<Convention::Base>]
|
|
17
|
-
@@conventions = Set.new
|
|
18
|
-
|
|
19
|
-
# @param convention [Class<Convention::Base>]
|
|
20
|
-
# @return [void]
|
|
21
|
-
def self.register convention
|
|
22
|
-
@@conventions.add convention.new
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# @param convention [Class<Convention::Base>]
|
|
26
|
-
# @return [void]
|
|
27
|
-
def self.unregister convention
|
|
28
|
-
@@conventions.delete_if { |c| c.is_a?(convention) }
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# @param source_map [SourceMap]
|
|
32
|
-
# @return [Environ]
|
|
33
|
-
def self.for_local(source_map)
|
|
34
|
-
result = Environ.new
|
|
35
|
-
@@conventions.each do |conv|
|
|
36
|
-
result.merge conv.local(source_map)
|
|
37
|
-
end
|
|
38
|
-
result
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# @param doc_map [DocMap]
|
|
42
|
-
# @return [Environ]
|
|
43
|
-
def self.for_global(doc_map)
|
|
44
|
-
result = Environ.new
|
|
45
|
-
@@conventions.each do |conv|
|
|
46
|
-
result.merge conv.global(doc_map)
|
|
47
|
-
end
|
|
48
|
-
result
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Provides any additional method pins based on the described object.
|
|
52
|
-
#
|
|
53
|
-
# @param api_map [ApiMap]
|
|
54
|
-
# @param rooted_tag [String] A fully qualified namespace, with
|
|
55
|
-
# generic parameter values if applicable
|
|
56
|
-
# @param scope [Symbol] :class or :instance
|
|
57
|
-
# @param visibility [Array<Symbol>] :public, :protected, and/or :private
|
|
58
|
-
# @param deep [Boolean]
|
|
59
|
-
# @param skip [Set<String>]
|
|
60
|
-
# @param no_core [Boolean] Skip core classes if true
|
|
61
|
-
#
|
|
62
|
-
# @return [Environ]
|
|
63
|
-
def self.for_object api_map, rooted_tag, scope, visibility,
|
|
64
|
-
deep, skip, no_core
|
|
65
|
-
result = Environ.new
|
|
66
|
-
@@conventions.each do |conv|
|
|
67
|
-
result.merge conv.object(api_map, rooted_tag, scope, visibility,
|
|
68
|
-
deep, skip, no_core)
|
|
69
|
-
end
|
|
70
|
-
result
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
register Gemfile
|
|
74
|
-
register Gemspec
|
|
75
|
-
register Rakefile
|
|
76
|
-
register ActiveSupportConcern
|
|
77
|
-
end
|
|
78
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
# Conventions provide a way to modify an ApiMap based on expectations about
|
|
5
|
+
# one of its sources.
|
|
6
|
+
#
|
|
7
|
+
module Convention
|
|
8
|
+
autoload :Base, 'solargraph/convention/base'
|
|
9
|
+
autoload :Gemfile, 'solargraph/convention/gemfile'
|
|
10
|
+
autoload :Gemspec, 'solargraph/convention/gemspec'
|
|
11
|
+
autoload :Rakefile, 'solargraph/convention/rakefile'
|
|
12
|
+
autoload :StructDefinition, 'solargraph/convention/struct_definition'
|
|
13
|
+
autoload :DataDefinition, 'solargraph/convention/data_definition'
|
|
14
|
+
autoload :ActiveSupportConcern, 'solargraph/convention/active_support_concern'
|
|
15
|
+
|
|
16
|
+
# @type [Set<Convention::Base>]
|
|
17
|
+
@@conventions = Set.new
|
|
18
|
+
|
|
19
|
+
# @param convention [Class<Convention::Base>]
|
|
20
|
+
# @return [void]
|
|
21
|
+
def self.register convention
|
|
22
|
+
@@conventions.add convention.new
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @param convention [Class<Convention::Base>]
|
|
26
|
+
# @return [void]
|
|
27
|
+
def self.unregister convention
|
|
28
|
+
@@conventions.delete_if { |c| c.is_a?(convention) }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @param source_map [SourceMap]
|
|
32
|
+
# @return [Environ]
|
|
33
|
+
def self.for_local(source_map)
|
|
34
|
+
result = Environ.new
|
|
35
|
+
@@conventions.each do |conv|
|
|
36
|
+
result.merge conv.local(source_map)
|
|
37
|
+
end
|
|
38
|
+
result
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @param doc_map [DocMap]
|
|
42
|
+
# @return [Environ]
|
|
43
|
+
def self.for_global(doc_map)
|
|
44
|
+
result = Environ.new
|
|
45
|
+
@@conventions.each do |conv|
|
|
46
|
+
result.merge conv.global(doc_map)
|
|
47
|
+
end
|
|
48
|
+
result
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Provides any additional method pins based on the described object.
|
|
52
|
+
#
|
|
53
|
+
# @param api_map [ApiMap]
|
|
54
|
+
# @param rooted_tag [String] A fully qualified namespace, with
|
|
55
|
+
# generic parameter values if applicable
|
|
56
|
+
# @param scope [Symbol] :class or :instance
|
|
57
|
+
# @param visibility [Array<Symbol>] :public, :protected, and/or :private
|
|
58
|
+
# @param deep [Boolean]
|
|
59
|
+
# @param skip [Set<String>]
|
|
60
|
+
# @param no_core [Boolean] Skip core classes if true
|
|
61
|
+
#
|
|
62
|
+
# @return [Environ]
|
|
63
|
+
def self.for_object api_map, rooted_tag, scope, visibility,
|
|
64
|
+
deep, skip, no_core
|
|
65
|
+
result = Environ.new
|
|
66
|
+
@@conventions.each do |conv|
|
|
67
|
+
result.merge conv.object(api_map, rooted_tag, scope, visibility,
|
|
68
|
+
deep, skip, no_core)
|
|
69
|
+
end
|
|
70
|
+
result
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
register Gemfile
|
|
74
|
+
register Gemspec
|
|
75
|
+
register Rakefile
|
|
76
|
+
register ActiveSupportConcern
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
require 'nokogiri'
|
|
2
|
-
|
|
3
|
-
module ReverseMarkdown
|
|
4
|
-
module Converters
|
|
5
|
-
class Dd < Base
|
|
6
|
-
# @return [String]
|
|
7
|
-
# @param node [Nokogiri::XML::Element]
|
|
8
|
-
# @param state [Hash]
|
|
9
|
-
def convert node, state = {}
|
|
10
|
-
content = treat_children(node, state)
|
|
11
|
-
": #{content.strip}\n"
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
ReverseMarkdown::Converters.register :dd, ReverseMarkdown::Converters::Dd.new
|
|
1
|
+
require 'nokogiri'
|
|
2
|
+
|
|
3
|
+
module ReverseMarkdown
|
|
4
|
+
module Converters
|
|
5
|
+
class Dd < Base
|
|
6
|
+
# @return [String]
|
|
7
|
+
# @param node [Nokogiri::XML::Element]
|
|
8
|
+
# @param state [Hash]
|
|
9
|
+
def convert node, state = {}
|
|
10
|
+
content = treat_children(node, state)
|
|
11
|
+
": #{content.strip}\n"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
ReverseMarkdown::Converters.register :dd, ReverseMarkdown::Converters::Dd.new
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
module ReverseMarkdown
|
|
2
|
-
module Converters
|
|
3
|
-
class Dl < Base
|
|
4
|
-
# @return [String]
|
|
5
|
-
# @param node [Nokogiri::XML::Element]
|
|
6
|
-
# @param state [Hash]
|
|
7
|
-
def convert node, state = {}
|
|
8
|
-
content = treat_children(node, state).strip
|
|
9
|
-
"\n\n#{content}\n"
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
ReverseMarkdown::Converters.register :dl, ReverseMarkdown::Converters::Dl.new
|
|
1
|
+
module ReverseMarkdown
|
|
2
|
+
module Converters
|
|
3
|
+
class Dl < Base
|
|
4
|
+
# @return [String]
|
|
5
|
+
# @param node [Nokogiri::XML::Element]
|
|
6
|
+
# @param state [Hash]
|
|
7
|
+
def convert node, state = {}
|
|
8
|
+
content = treat_children(node, state).strip
|
|
9
|
+
"\n\n#{content}\n"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
ReverseMarkdown::Converters.register :dl, ReverseMarkdown::Converters::Dl.new
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
module ReverseMarkdown
|
|
2
|
-
module Converters
|
|
3
|
-
class Dt < Base
|
|
4
|
-
# @return [String]
|
|
5
|
-
# @param node [Nokogiri::XML::Element]
|
|
6
|
-
# @param state [Hash]
|
|
7
|
-
def convert node, state = {}
|
|
8
|
-
content = treat_children(node, state)
|
|
9
|
-
"\n#{content.strip}\n"
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
ReverseMarkdown::Converters.register :dt, ReverseMarkdown::Converters::Dt.new
|
|
1
|
+
module ReverseMarkdown
|
|
2
|
+
module Converters
|
|
3
|
+
class Dt < Base
|
|
4
|
+
# @return [String]
|
|
5
|
+
# @param node [Nokogiri::XML::Element]
|
|
6
|
+
# @param state [Hash]
|
|
7
|
+
def convert node, state = {}
|
|
8
|
+
content = treat_children(node, state)
|
|
9
|
+
"\n#{content.strip}\n"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
ReverseMarkdown::Converters.register :dt, ReverseMarkdown::Converters::Dt.new
|
|
@@ -1 +1 @@
|
|
|
1
|
-
ReverseMarkdown::Converters.register :tt, ReverseMarkdown::Converters::Code.new
|
|
1
|
+
ReverseMarkdown::Converters.register :tt, ReverseMarkdown::Converters::Code.new
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module Diagnostics
|
|
5
|
-
# RequireNotFound reports required paths that could not be resolved to
|
|
6
|
-
# either a file in the workspace or a gem.
|
|
7
|
-
#
|
|
8
|
-
class RequireNotFound < Base
|
|
9
|
-
def diagnose source, api_map
|
|
10
|
-
return [] unless source.parsed? && source.synchronized?
|
|
11
|
-
result = []
|
|
12
|
-
refs = {}
|
|
13
|
-
map = api_map.source_map(source.filename)
|
|
14
|
-
map.requires.each { |ref| refs[ref.name] = ref }
|
|
15
|
-
api_map.missing_docs.each do |r|
|
|
16
|
-
next unless refs.key?(r)
|
|
17
|
-
result.push docs_error(r, refs[r].location)
|
|
18
|
-
end
|
|
19
|
-
api_map.unresolved_requires.each do |r|
|
|
20
|
-
next unless refs.key?(r)
|
|
21
|
-
result.push require_error(r, refs[r].location)
|
|
22
|
-
end
|
|
23
|
-
result
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
# @param path [String]
|
|
29
|
-
# @param location [Location]
|
|
30
|
-
# @return [Hash]
|
|
31
|
-
def docs_error path, location
|
|
32
|
-
{
|
|
33
|
-
range: location.range.to_hash,
|
|
34
|
-
severity: Diagnostics::Severities::WARNING,
|
|
35
|
-
source: 'RequireNotFound',
|
|
36
|
-
message: "YARD docs not found for #{path}"
|
|
37
|
-
}
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# @param path [String]
|
|
41
|
-
# @param location [Location]
|
|
42
|
-
# @return [Hash]
|
|
43
|
-
def require_error path, location
|
|
44
|
-
{
|
|
45
|
-
range: location.range.to_hash,
|
|
46
|
-
severity: Diagnostics::Severities::WARNING,
|
|
47
|
-
source: 'RequireNotFound',
|
|
48
|
-
message: "Required path #{path} could not be resolved."
|
|
49
|
-
}
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module Diagnostics
|
|
5
|
+
# RequireNotFound reports required paths that could not be resolved to
|
|
6
|
+
# either a file in the workspace or a gem.
|
|
7
|
+
#
|
|
8
|
+
class RequireNotFound < Base
|
|
9
|
+
def diagnose source, api_map
|
|
10
|
+
return [] unless source.parsed? && source.synchronized?
|
|
11
|
+
result = []
|
|
12
|
+
refs = {}
|
|
13
|
+
map = api_map.source_map(source.filename)
|
|
14
|
+
map.requires.each { |ref| refs[ref.name] = ref }
|
|
15
|
+
api_map.missing_docs.each do |r|
|
|
16
|
+
next unless refs.key?(r)
|
|
17
|
+
result.push docs_error(r, refs[r].location)
|
|
18
|
+
end
|
|
19
|
+
api_map.unresolved_requires.each do |r|
|
|
20
|
+
next unless refs.key?(r)
|
|
21
|
+
result.push require_error(r, refs[r].location)
|
|
22
|
+
end
|
|
23
|
+
result
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
# @param path [String]
|
|
29
|
+
# @param location [Location]
|
|
30
|
+
# @return [Hash]
|
|
31
|
+
def docs_error path, location
|
|
32
|
+
{
|
|
33
|
+
range: location.range.to_hash,
|
|
34
|
+
severity: Diagnostics::Severities::WARNING,
|
|
35
|
+
source: 'RequireNotFound',
|
|
36
|
+
message: "YARD docs not found for #{path}"
|
|
37
|
+
}
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# @param path [String]
|
|
41
|
+
# @param location [Location]
|
|
42
|
+
# @return [Hash]
|
|
43
|
+
def require_error path, location
|
|
44
|
+
{
|
|
45
|
+
range: location.range.to_hash,
|
|
46
|
+
severity: Diagnostics::Severities::WARNING,
|
|
47
|
+
source: 'RequireNotFound',
|
|
48
|
+
message: "Required path #{path} could not be resolved."
|
|
49
|
+
}
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'stringio'
|
|
4
|
-
|
|
5
|
-
module Solargraph
|
|
6
|
-
module Diagnostics
|
|
7
|
-
# This reporter provides linting through RuboCop.
|
|
8
|
-
#
|
|
9
|
-
class Rubocop < Base
|
|
10
|
-
include RubocopHelpers
|
|
11
|
-
|
|
12
|
-
# Conversion of RuboCop severity names to LSP constants
|
|
13
|
-
SEVERITIES = {
|
|
14
|
-
'info' => Severities::HINT,
|
|
15
|
-
'refactor' => Severities::HINT,
|
|
16
|
-
'convention' => Severities::INFORMATION,
|
|
17
|
-
'warning' => Severities::WARNING,
|
|
18
|
-
'error' => Severities::ERROR,
|
|
19
|
-
'fatal' => Severities::ERROR
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
# @param source [Solargraph::Source]
|
|
23
|
-
# @param _api_map [Solargraph::ApiMap]
|
|
24
|
-
# @return [Array<Hash>]
|
|
25
|
-
def diagnose source, _api_map
|
|
26
|
-
@source = source
|
|
27
|
-
require_rubocop(rubocop_version)
|
|
28
|
-
options, paths = generate_options(source.filename, source.code)
|
|
29
|
-
store = RuboCop::ConfigStore.new
|
|
30
|
-
runner = RuboCop::Runner.new(options, store)
|
|
31
|
-
# Ensure only one instance of RuboCop::Runner is running at
|
|
32
|
-
# a time - it uses 'chdir' to read config files with ERB,
|
|
33
|
-
# which can conflict with other chdirs.
|
|
34
|
-
result = Solargraph::CHDIR_MUTEX.synchronize do
|
|
35
|
-
redirect_stdout{ runner.run(paths) }
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
return [] if result.empty?
|
|
39
|
-
|
|
40
|
-
make_array JSON.parse(result)
|
|
41
|
-
rescue RuboCop::ValidationError, RuboCop::ConfigNotFoundError => e
|
|
42
|
-
raise DiagnosticsError, "Error in RuboCop configuration: #{e.message}"
|
|
43
|
-
rescue JSON::ParserError => e
|
|
44
|
-
raise DiagnosticsError, "RuboCop returned invalid data: #{e.message}"
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
# Extracts the rubocop version from _args_
|
|
50
|
-
#
|
|
51
|
-
# @return [String]
|
|
52
|
-
def rubocop_version
|
|
53
|
-
args.find { |a| a =~ /version=/ }.to_s.split('=').last
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# @param resp [Hash{String => Array<Hash{String => Array<Hash{String => undefined}>}>}]
|
|
57
|
-
# @return [Array<Hash>]
|
|
58
|
-
def make_array resp
|
|
59
|
-
diagnostics = []
|
|
60
|
-
resp['files'].each do |file|
|
|
61
|
-
file['offenses'].each do |off|
|
|
62
|
-
diagnostics.push offense_to_diagnostic(off)
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
diagnostics
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Convert a RuboCop offense to an LSP diagnostic
|
|
69
|
-
#
|
|
70
|
-
# @param off [Hash{String => unknown}] Offense received from Rubocop
|
|
71
|
-
# @return [Hash{Symbol => Hash, String, Integer}] LSP diagnostic
|
|
72
|
-
def offense_to_diagnostic off
|
|
73
|
-
{
|
|
74
|
-
range: offense_range(off).to_hash,
|
|
75
|
-
# 1 = Error, 2 = Warning, 3 = Information, 4 = Hint
|
|
76
|
-
severity: SEVERITIES[off['severity']],
|
|
77
|
-
source: 'rubocop',
|
|
78
|
-
code: off['cop_name'],
|
|
79
|
-
message: off['message'].gsub(/^#{off['cop_name']}\:/, '')
|
|
80
|
-
}
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# @param off [Hash]
|
|
84
|
-
# @return [Range]
|
|
85
|
-
def offense_range off
|
|
86
|
-
Range.new(offense_start_position(off), offense_ending_position(off))
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
# @param off [Hash{String => Hash{String => Integer}}]
|
|
90
|
-
# @return [Position]
|
|
91
|
-
def offense_start_position off
|
|
92
|
-
Position.new(off['location']['start_line'] - 1, off['location']['start_column'] - 1)
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# @param off [Hash{String => Hash{String => Integer}}]
|
|
96
|
-
# @return [Position]
|
|
97
|
-
def offense_ending_position off
|
|
98
|
-
if off['location']['start_line'] != off['location']['last_line']
|
|
99
|
-
Position.new(off['location']['start_line'], 0)
|
|
100
|
-
else
|
|
101
|
-
start_line = off['location']['start_line'] - 1
|
|
102
|
-
# @type [Integer]
|
|
103
|
-
last_column = off['location']['last_column']
|
|
104
|
-
line = @source.code.lines[start_line]
|
|
105
|
-
col_off = if line.nil? || line.empty?
|
|
106
|
-
1
|
|
107
|
-
else
|
|
108
|
-
0
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
Position.new(
|
|
112
|
-
start_line, last_column - col_off
|
|
113
|
-
)
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'stringio'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
module Diagnostics
|
|
7
|
+
# This reporter provides linting through RuboCop.
|
|
8
|
+
#
|
|
9
|
+
class Rubocop < Base
|
|
10
|
+
include RubocopHelpers
|
|
11
|
+
|
|
12
|
+
# Conversion of RuboCop severity names to LSP constants
|
|
13
|
+
SEVERITIES = {
|
|
14
|
+
'info' => Severities::HINT,
|
|
15
|
+
'refactor' => Severities::HINT,
|
|
16
|
+
'convention' => Severities::INFORMATION,
|
|
17
|
+
'warning' => Severities::WARNING,
|
|
18
|
+
'error' => Severities::ERROR,
|
|
19
|
+
'fatal' => Severities::ERROR
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
# @param source [Solargraph::Source]
|
|
23
|
+
# @param _api_map [Solargraph::ApiMap]
|
|
24
|
+
# @return [Array<Hash>]
|
|
25
|
+
def diagnose source, _api_map
|
|
26
|
+
@source = source
|
|
27
|
+
require_rubocop(rubocop_version)
|
|
28
|
+
options, paths = generate_options(source.filename, source.code)
|
|
29
|
+
store = RuboCop::ConfigStore.new
|
|
30
|
+
runner = RuboCop::Runner.new(options, store)
|
|
31
|
+
# Ensure only one instance of RuboCop::Runner is running at
|
|
32
|
+
# a time - it uses 'chdir' to read config files with ERB,
|
|
33
|
+
# which can conflict with other chdirs.
|
|
34
|
+
result = Solargraph::CHDIR_MUTEX.synchronize do
|
|
35
|
+
redirect_stdout{ runner.run(paths) }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
return [] if result.empty?
|
|
39
|
+
|
|
40
|
+
make_array JSON.parse(result)
|
|
41
|
+
rescue RuboCop::ValidationError, RuboCop::ConfigNotFoundError => e
|
|
42
|
+
raise DiagnosticsError, "Error in RuboCop configuration: #{e.message}"
|
|
43
|
+
rescue JSON::ParserError => e
|
|
44
|
+
raise DiagnosticsError, "RuboCop returned invalid data: #{e.message}"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
# Extracts the rubocop version from _args_
|
|
50
|
+
#
|
|
51
|
+
# @return [String]
|
|
52
|
+
def rubocop_version
|
|
53
|
+
args.find { |a| a =~ /version=/ }.to_s.split('=').last
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# @param resp [Hash{String => Array<Hash{String => Array<Hash{String => undefined}>}>}]
|
|
57
|
+
# @return [Array<Hash>]
|
|
58
|
+
def make_array resp
|
|
59
|
+
diagnostics = []
|
|
60
|
+
resp['files'].each do |file|
|
|
61
|
+
file['offenses'].each do |off|
|
|
62
|
+
diagnostics.push offense_to_diagnostic(off)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
diagnostics
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Convert a RuboCop offense to an LSP diagnostic
|
|
69
|
+
#
|
|
70
|
+
# @param off [Hash{String => unknown}] Offense received from Rubocop
|
|
71
|
+
# @return [Hash{Symbol => Hash, String, Integer}] LSP diagnostic
|
|
72
|
+
def offense_to_diagnostic off
|
|
73
|
+
{
|
|
74
|
+
range: offense_range(off).to_hash,
|
|
75
|
+
# 1 = Error, 2 = Warning, 3 = Information, 4 = Hint
|
|
76
|
+
severity: SEVERITIES[off['severity']],
|
|
77
|
+
source: 'rubocop',
|
|
78
|
+
code: off['cop_name'],
|
|
79
|
+
message: off['message'].gsub(/^#{off['cop_name']}\:/, '')
|
|
80
|
+
}
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# @param off [Hash]
|
|
84
|
+
# @return [Range]
|
|
85
|
+
def offense_range off
|
|
86
|
+
Range.new(offense_start_position(off), offense_ending_position(off))
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# @param off [Hash{String => Hash{String => Integer}}]
|
|
90
|
+
# @return [Position]
|
|
91
|
+
def offense_start_position off
|
|
92
|
+
Position.new(off['location']['start_line'] - 1, off['location']['start_column'] - 1)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# @param off [Hash{String => Hash{String => Integer}}]
|
|
96
|
+
# @return [Position]
|
|
97
|
+
def offense_ending_position off
|
|
98
|
+
if off['location']['start_line'] != off['location']['last_line']
|
|
99
|
+
Position.new(off['location']['start_line'], 0)
|
|
100
|
+
else
|
|
101
|
+
start_line = off['location']['start_line'] - 1
|
|
102
|
+
# @type [Integer]
|
|
103
|
+
last_column = off['location']['last_column']
|
|
104
|
+
line = @source.code.lines[start_line]
|
|
105
|
+
col_off = if line.nil? || line.empty?
|
|
106
|
+
1
|
|
107
|
+
else
|
|
108
|
+
0
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
Position.new(
|
|
112
|
+
start_line, last_column - col_off
|
|
113
|
+
)
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|