solargraph 0.44.2 → 0.46.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 +4 -4
- data/.github/workflows/rspec.yml +41 -0
- data/.gitignore +9 -9
- data/.rspec +2 -2
- data/.travis.yml +19 -19
- data/CHANGELOG.md +1115 -1088
- data/Gemfile +0 -0
- data/LICENSE +0 -0
- data/README.md +128 -120
- data/Rakefile +0 -0
- data/SPONSORS.md +18 -15
- 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 -21
- 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 -140
- 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 -155
- 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 -62
- 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 -206
- 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 -510
- 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 -203
- 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 -443
- data/lib/solargraph.rb +69 -69
- data/lib/yard-solargraph.rb +33 -33
- data/solargraph.gemspec +0 -0
- metadata +14 -12
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class YardMap
|
|
5
|
-
class Mapper
|
|
6
|
-
module ToMethod
|
|
7
|
-
extend YardMap::Helpers
|
|
8
|
-
|
|
9
|
-
def self.make code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
|
|
10
|
-
closure ||= Solargraph::Pin::Namespace.new(
|
|
11
|
-
name: code_object.namespace.to_s,
|
|
12
|
-
gates: [code_object.namespace.to_s]
|
|
13
|
-
)
|
|
14
|
-
location = object_location(code_object, spec)
|
|
15
|
-
comments = code_object.docstring ? code_object.docstring.all.to_s : ''
|
|
16
|
-
Pin::Method.new(
|
|
17
|
-
location: location,
|
|
18
|
-
closure: closure,
|
|
19
|
-
name: name || code_object.name.to_s,
|
|
20
|
-
comments: comments,
|
|
21
|
-
scope: scope || code_object.scope,
|
|
22
|
-
visibility: visibility || code_object.visibility,
|
|
23
|
-
parameters: get_parameters(code_object, location, comments),
|
|
24
|
-
explicit: code_object.is_explicit?
|
|
25
|
-
)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
class << self
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
# @param code_object [YARD::CodeObjects::Base]
|
|
32
|
-
# @return [Array<Solargraph::Pin::Parameter>]
|
|
33
|
-
def get_parameters code_object, location, comments
|
|
34
|
-
return [] unless code_object.is_a?(YARD::CodeObjects::MethodObject)
|
|
35
|
-
# HACK: Skip `nil` and `self` parameters that are sometimes emitted
|
|
36
|
-
# for methods defined in C
|
|
37
|
-
# See https://github.com/castwide/solargraph/issues/345
|
|
38
|
-
code_object.parameters.select { |a| a[0] && a[0] != 'self' }.map do |a|
|
|
39
|
-
Solargraph::Pin::Parameter.new(
|
|
40
|
-
location: location,
|
|
41
|
-
closure: self,
|
|
42
|
-
comments: comments,
|
|
43
|
-
name: arg_name(a),
|
|
44
|
-
presence: nil,
|
|
45
|
-
decl: arg_type(a),
|
|
46
|
-
asgn_code: a[1]
|
|
47
|
-
)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# @param a [Array]
|
|
52
|
-
# @return [String]
|
|
53
|
-
def arg_name a
|
|
54
|
-
a[0].gsub(/[^a-z0-9_]/i, '')
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# @param a [Array]
|
|
58
|
-
# @return [::Symbol]
|
|
59
|
-
def arg_type a
|
|
60
|
-
if a[0].start_with?('**')
|
|
61
|
-
:kwrestarg
|
|
62
|
-
elsif a[0].start_with?('*')
|
|
63
|
-
:restarg
|
|
64
|
-
elsif a[0].start_with?('&')
|
|
65
|
-
:blockarg
|
|
66
|
-
elsif a[0].end_with?(':')
|
|
67
|
-
a[1] ? :kwoptarg : :kwarg
|
|
68
|
-
elsif a[1]
|
|
69
|
-
:optarg
|
|
70
|
-
else
|
|
71
|
-
:arg
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class YardMap
|
|
5
|
+
class Mapper
|
|
6
|
+
module ToMethod
|
|
7
|
+
extend YardMap::Helpers
|
|
8
|
+
|
|
9
|
+
def self.make code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
|
|
10
|
+
closure ||= Solargraph::Pin::Namespace.new(
|
|
11
|
+
name: code_object.namespace.to_s,
|
|
12
|
+
gates: [code_object.namespace.to_s]
|
|
13
|
+
)
|
|
14
|
+
location = object_location(code_object, spec)
|
|
15
|
+
comments = code_object.docstring ? code_object.docstring.all.to_s : ''
|
|
16
|
+
Pin::Method.new(
|
|
17
|
+
location: location,
|
|
18
|
+
closure: closure,
|
|
19
|
+
name: name || code_object.name.to_s,
|
|
20
|
+
comments: comments,
|
|
21
|
+
scope: scope || code_object.scope,
|
|
22
|
+
visibility: visibility || code_object.visibility,
|
|
23
|
+
parameters: get_parameters(code_object, location, comments),
|
|
24
|
+
explicit: code_object.is_explicit?
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class << self
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
# @param code_object [YARD::CodeObjects::Base]
|
|
32
|
+
# @return [Array<Solargraph::Pin::Parameter>]
|
|
33
|
+
def get_parameters code_object, location, comments
|
|
34
|
+
return [] unless code_object.is_a?(YARD::CodeObjects::MethodObject)
|
|
35
|
+
# HACK: Skip `nil` and `self` parameters that are sometimes emitted
|
|
36
|
+
# for methods defined in C
|
|
37
|
+
# See https://github.com/castwide/solargraph/issues/345
|
|
38
|
+
code_object.parameters.select { |a| a[0] && a[0] != 'self' }.map do |a|
|
|
39
|
+
Solargraph::Pin::Parameter.new(
|
|
40
|
+
location: location,
|
|
41
|
+
closure: self,
|
|
42
|
+
comments: comments,
|
|
43
|
+
name: arg_name(a),
|
|
44
|
+
presence: nil,
|
|
45
|
+
decl: arg_type(a),
|
|
46
|
+
asgn_code: a[1]
|
|
47
|
+
)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# @param a [Array]
|
|
52
|
+
# @return [String]
|
|
53
|
+
def arg_name a
|
|
54
|
+
a[0].gsub(/[^a-z0-9_]/i, '')
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# @param a [Array]
|
|
58
|
+
# @return [::Symbol]
|
|
59
|
+
def arg_type a
|
|
60
|
+
if a[0].start_with?('**')
|
|
61
|
+
:kwrestarg
|
|
62
|
+
elsif a[0].start_with?('*')
|
|
63
|
+
:restarg
|
|
64
|
+
elsif a[0].start_with?('&')
|
|
65
|
+
:blockarg
|
|
66
|
+
elsif a[0].end_with?(':')
|
|
67
|
+
a[1] ? :kwoptarg : :kwarg
|
|
68
|
+
elsif a[1]
|
|
69
|
+
:optarg
|
|
70
|
+
else
|
|
71
|
+
:arg
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class YardMap
|
|
5
|
-
class Mapper
|
|
6
|
-
module ToNamespace
|
|
7
|
-
extend YardMap::Helpers
|
|
8
|
-
|
|
9
|
-
def self.make code_object, spec, closure = nil
|
|
10
|
-
closure ||= Solargraph::Pin::Namespace.new(
|
|
11
|
-
name: code_object.namespace.to_s,
|
|
12
|
-
closure: Pin::ROOT_PIN,
|
|
13
|
-
gates: [code_object.namespace.to_s]
|
|
14
|
-
)
|
|
15
|
-
Pin::Namespace.new(
|
|
16
|
-
location: object_location(code_object, spec),
|
|
17
|
-
name: code_object.name.to_s,
|
|
18
|
-
comments: code_object.docstring ? code_object.docstring.all.to_s : '',
|
|
19
|
-
type: code_object.is_a?(YARD::CodeObjects::ClassObject) ? :class : :module,
|
|
20
|
-
visibility: code_object.visibility,
|
|
21
|
-
closure: closure
|
|
22
|
-
)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class YardMap
|
|
5
|
+
class Mapper
|
|
6
|
+
module ToNamespace
|
|
7
|
+
extend YardMap::Helpers
|
|
8
|
+
|
|
9
|
+
def self.make code_object, spec, closure = nil
|
|
10
|
+
closure ||= Solargraph::Pin::Namespace.new(
|
|
11
|
+
name: code_object.namespace.to_s,
|
|
12
|
+
closure: Pin::ROOT_PIN,
|
|
13
|
+
gates: [code_object.namespace.to_s]
|
|
14
|
+
)
|
|
15
|
+
Pin::Namespace.new(
|
|
16
|
+
location: object_location(code_object, spec),
|
|
17
|
+
name: code_object.name.to_s,
|
|
18
|
+
comments: code_object.docstring ? code_object.docstring.all.to_s : '',
|
|
19
|
+
type: code_object.is_a?(YARD::CodeObjects::ClassObject) ? :class : :module,
|
|
20
|
+
visibility: code_object.visibility,
|
|
21
|
+
closure: closure
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
class YardMap
|
|
5
|
-
class Mapper
|
|
6
|
-
autoload :ToMethod, 'solargraph/yard_map/mapper/to_method'
|
|
7
|
-
autoload :ToNamespace, 'solargraph/yard_map/mapper/to_namespace'
|
|
8
|
-
autoload :ToConstant, 'solargraph/yard_map/mapper/to_constant'
|
|
9
|
-
|
|
10
|
-
# @param code_objects [Array<YARD::CodeObjects::Base>]
|
|
11
|
-
# @param spec [Gem::Specification]
|
|
12
|
-
def initialize code_objects, spec = nil
|
|
13
|
-
@code_objects = code_objects
|
|
14
|
-
@spec = spec
|
|
15
|
-
@pins = []
|
|
16
|
-
@namespace_pins = {}
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# @return [Array<Pin::Base>]
|
|
20
|
-
def map
|
|
21
|
-
@code_objects.each do |co|
|
|
22
|
-
@pins.concat generate_pins co
|
|
23
|
-
end
|
|
24
|
-
# Some yardocs contain documentation for dependencies that can be
|
|
25
|
-
# ignored here. The YardMap will load dependencies separately.
|
|
26
|
-
@pins.keep_if { |pin| pin.location.nil? || File.file?(pin.location.filename) } if @spec
|
|
27
|
-
@pins
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
# @param code_object [YARD::CodeObjects::Base]
|
|
33
|
-
# @return [Array<Pin::Base>]
|
|
34
|
-
def generate_pins code_object
|
|
35
|
-
result = []
|
|
36
|
-
if code_object.is_a?(YARD::CodeObjects::NamespaceObject)
|
|
37
|
-
nspin = ToNamespace.make(code_object, @spec, @namespace_pins[code_object.namespace.to_s])
|
|
38
|
-
@namespace_pins[code_object.path] = nspin
|
|
39
|
-
result.push nspin
|
|
40
|
-
if code_object.is_a?(YARD::CodeObjects::ClassObject) and !code_object.superclass.nil?
|
|
41
|
-
# This method of superclass detection is a bit of a hack. If
|
|
42
|
-
# the superclass is a Proxy, it is assumed to be undefined in its
|
|
43
|
-
# yardoc and converted to a fully qualified namespace.
|
|
44
|
-
superclass = if code_object.superclass.is_a?(YARD::CodeObjects::Proxy)
|
|
45
|
-
"::#{code_object.superclass}"
|
|
46
|
-
else
|
|
47
|
-
code_object.superclass.to_s
|
|
48
|
-
end
|
|
49
|
-
result.push Solargraph::Pin::Reference::Superclass.new(name: superclass, closure: nspin)
|
|
50
|
-
end
|
|
51
|
-
code_object.class_mixins.each do |m|
|
|
52
|
-
result.push Solargraph::Pin::Reference::Extend.new(closure: nspin, name: m.path)
|
|
53
|
-
end
|
|
54
|
-
code_object.instance_mixins.each do |m|
|
|
55
|
-
result.push Solargraph::Pin::Reference::Include.new(
|
|
56
|
-
closure: nspin, # @todo Fix this
|
|
57
|
-
name: m.path
|
|
58
|
-
)
|
|
59
|
-
end
|
|
60
|
-
elsif code_object.is_a?(YARD::CodeObjects::MethodObject)
|
|
61
|
-
closure = @namespace_pins[code_object.namespace.to_s]
|
|
62
|
-
if code_object.name == :initialize && code_object.scope == :instance
|
|
63
|
-
# @todo Check the visibility of <Class>.new
|
|
64
|
-
result.push ToMethod.make(code_object, 'new', :class, :public, closure, @spec)
|
|
65
|
-
result.push ToMethod.make(code_object, 'initialize', :instance, :private, closure, @spec)
|
|
66
|
-
else
|
|
67
|
-
result.push ToMethod.make(code_object, nil, nil, nil, closure, @spec)
|
|
68
|
-
end
|
|
69
|
-
elsif code_object.is_a?(YARD::CodeObjects::ConstantObject)
|
|
70
|
-
closure = @namespace_pins[code_object.namespace]
|
|
71
|
-
result.push ToConstant.make(code_object, closure, @spec)
|
|
72
|
-
end
|
|
73
|
-
result
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
class YardMap
|
|
5
|
+
class Mapper
|
|
6
|
+
autoload :ToMethod, 'solargraph/yard_map/mapper/to_method'
|
|
7
|
+
autoload :ToNamespace, 'solargraph/yard_map/mapper/to_namespace'
|
|
8
|
+
autoload :ToConstant, 'solargraph/yard_map/mapper/to_constant'
|
|
9
|
+
|
|
10
|
+
# @param code_objects [Array<YARD::CodeObjects::Base>]
|
|
11
|
+
# @param spec [Gem::Specification]
|
|
12
|
+
def initialize code_objects, spec = nil
|
|
13
|
+
@code_objects = code_objects
|
|
14
|
+
@spec = spec
|
|
15
|
+
@pins = []
|
|
16
|
+
@namespace_pins = {}
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# @return [Array<Pin::Base>]
|
|
20
|
+
def map
|
|
21
|
+
@code_objects.each do |co|
|
|
22
|
+
@pins.concat generate_pins co
|
|
23
|
+
end
|
|
24
|
+
# Some yardocs contain documentation for dependencies that can be
|
|
25
|
+
# ignored here. The YardMap will load dependencies separately.
|
|
26
|
+
@pins.keep_if { |pin| pin.location.nil? || File.file?(pin.location.filename) } if @spec
|
|
27
|
+
@pins
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
# @param code_object [YARD::CodeObjects::Base]
|
|
33
|
+
# @return [Array<Pin::Base>]
|
|
34
|
+
def generate_pins code_object
|
|
35
|
+
result = []
|
|
36
|
+
if code_object.is_a?(YARD::CodeObjects::NamespaceObject)
|
|
37
|
+
nspin = ToNamespace.make(code_object, @spec, @namespace_pins[code_object.namespace.to_s])
|
|
38
|
+
@namespace_pins[code_object.path] = nspin
|
|
39
|
+
result.push nspin
|
|
40
|
+
if code_object.is_a?(YARD::CodeObjects::ClassObject) and !code_object.superclass.nil?
|
|
41
|
+
# This method of superclass detection is a bit of a hack. If
|
|
42
|
+
# the superclass is a Proxy, it is assumed to be undefined in its
|
|
43
|
+
# yardoc and converted to a fully qualified namespace.
|
|
44
|
+
superclass = if code_object.superclass.is_a?(YARD::CodeObjects::Proxy)
|
|
45
|
+
"::#{code_object.superclass}"
|
|
46
|
+
else
|
|
47
|
+
code_object.superclass.to_s
|
|
48
|
+
end
|
|
49
|
+
result.push Solargraph::Pin::Reference::Superclass.new(name: superclass, closure: nspin)
|
|
50
|
+
end
|
|
51
|
+
code_object.class_mixins.each do |m|
|
|
52
|
+
result.push Solargraph::Pin::Reference::Extend.new(closure: nspin, name: m.path)
|
|
53
|
+
end
|
|
54
|
+
code_object.instance_mixins.each do |m|
|
|
55
|
+
result.push Solargraph::Pin::Reference::Include.new(
|
|
56
|
+
closure: nspin, # @todo Fix this
|
|
57
|
+
name: m.path
|
|
58
|
+
)
|
|
59
|
+
end
|
|
60
|
+
elsif code_object.is_a?(YARD::CodeObjects::MethodObject)
|
|
61
|
+
closure = @namespace_pins[code_object.namespace.to_s]
|
|
62
|
+
if code_object.name == :initialize && code_object.scope == :instance
|
|
63
|
+
# @todo Check the visibility of <Class>.new
|
|
64
|
+
result.push ToMethod.make(code_object, 'new', :class, :public, closure, @spec)
|
|
65
|
+
result.push ToMethod.make(code_object, 'initialize', :instance, :private, closure, @spec)
|
|
66
|
+
else
|
|
67
|
+
result.push ToMethod.make(code_object, nil, nil, nil, closure, @spec)
|
|
68
|
+
end
|
|
69
|
+
elsif code_object.is_a?(YARD::CodeObjects::ConstantObject)
|
|
70
|
+
closure = @namespace_pins[code_object.namespace]
|
|
71
|
+
result.push ToConstant.make(code_object, closure, @spec)
|
|
72
|
+
end
|
|
73
|
+
result
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'rdoc'
|
|
4
|
-
require 'rdoc/rdoc'
|
|
5
|
-
require 'tmpdir'
|
|
6
|
-
require 'fileutils'
|
|
7
|
-
|
|
8
|
-
module Solargraph
|
|
9
|
-
class YardMap
|
|
10
|
-
module RdocToYard
|
|
11
|
-
extend ApiMap::SourceToYard
|
|
12
|
-
|
|
13
|
-
# @param spec [Gem::Specification]
|
|
14
|
-
# @param cache_dir [String]
|
|
15
|
-
# @return [void]
|
|
16
|
-
def self.run spec, cache_dir: nil
|
|
17
|
-
Dir.mktmpdir do |tmpdir|
|
|
18
|
-
rdir = File.join(tmpdir, 'sg_tmp_rdoc')
|
|
19
|
-
FileUtils.cp_r Dir.glob(File.join(spec.full_gem_path, '*')), tmpdir
|
|
20
|
-
Dir.chdir tmpdir do
|
|
21
|
-
pins = []
|
|
22
|
-
pins.push Solargraph::Pin::ROOT_PIN
|
|
23
|
-
name_hash = {}
|
|
24
|
-
|
|
25
|
-
argv = ['-q', '-r', '-N', '-o', rdir]
|
|
26
|
-
spec.load_paths.each do |path|
|
|
27
|
-
argv.concat ['-i', path]
|
|
28
|
-
end
|
|
29
|
-
rdoc = RDoc::RDoc.new
|
|
30
|
-
rdoc.document argv
|
|
31
|
-
# @type [RDoc::Store]
|
|
32
|
-
store = rdoc.store
|
|
33
|
-
store.path = rdir
|
|
34
|
-
store.cache[:modules].each do |mod|
|
|
35
|
-
# @type [RDoc::NormalClass]
|
|
36
|
-
mod = store.find_class_or_module(mod)
|
|
37
|
-
closure = pins.select { |pin| pin.path == mod.full_name.split('::')[0..-2].join('::') }.first || pins.first
|
|
38
|
-
namepin = Solargraph::Pin::Namespace.new(
|
|
39
|
-
type: (mod.module? ? :module : :class),
|
|
40
|
-
name: mod.name,
|
|
41
|
-
comments: commentary(mod.comment),
|
|
42
|
-
closure: closure,
|
|
43
|
-
location: locate(mod)
|
|
44
|
-
)
|
|
45
|
-
mod.parse(mod.comment_location)
|
|
46
|
-
# @param inc [RDoc::Include]
|
|
47
|
-
mod.includes.each do |inc|
|
|
48
|
-
pins.push Solargraph::Pin::Reference::Include.new(
|
|
49
|
-
location: locate(inc),
|
|
50
|
-
name: inc.name,
|
|
51
|
-
closure: namepin
|
|
52
|
-
)
|
|
53
|
-
end
|
|
54
|
-
# @param ext [RDoc::Extend]
|
|
55
|
-
mod.extends.each do |ext|
|
|
56
|
-
pins.push Solargraph::Pin::Reference::Extend.new(
|
|
57
|
-
location: locate(ext),
|
|
58
|
-
name: ext.name,
|
|
59
|
-
closure: namepin
|
|
60
|
-
)
|
|
61
|
-
end
|
|
62
|
-
pins.push namepin
|
|
63
|
-
name_hash[mod.full_name] = namepin
|
|
64
|
-
# @param met [RDoc::AnyMethod]
|
|
65
|
-
mod.each_method do |met|
|
|
66
|
-
pin = Solargraph::SourceMap.load_string("def Object.tmp#{met.param_seq};end").first_pin('Object.tmp') || Solargraph::Pin::Method.new
|
|
67
|
-
pins.push Solargraph::Pin::Method.new(
|
|
68
|
-
name: met.name,
|
|
69
|
-
closure: namepin,
|
|
70
|
-
comments: commentary(met.comment),
|
|
71
|
-
scope: met.type.to_sym,
|
|
72
|
-
parameters: pin.parameters,
|
|
73
|
-
visibility: met.visibility,
|
|
74
|
-
location: locate(met)
|
|
75
|
-
)
|
|
76
|
-
end
|
|
77
|
-
# @param const [RDoc::Constant]
|
|
78
|
-
mod.each_constant do |const|
|
|
79
|
-
pins.push Solargraph::Pin::Constant.new(
|
|
80
|
-
name: const.name,
|
|
81
|
-
closure: namepin,
|
|
82
|
-
comments: commentary(const.comment),
|
|
83
|
-
location: locate(const)
|
|
84
|
-
)
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
mapstore = Solargraph::ApiMap::Store.new(pins)
|
|
88
|
-
rake_yard(mapstore)
|
|
89
|
-
YARD::Registry.clear
|
|
90
|
-
code_object_map.values.each do |co|
|
|
91
|
-
YARD::Registry.register(co)
|
|
92
|
-
end
|
|
93
|
-
cache_dir ||= File.join(Solargraph::YardMap::CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}", "yardoc")
|
|
94
|
-
FileUtils.remove_entry_secure cache_dir if File.exist?(cache_dir)
|
|
95
|
-
FileUtils.mkdir_p cache_dir
|
|
96
|
-
# @todo Should merge be true?
|
|
97
|
-
YARD::Registry.save true, cache_dir
|
|
98
|
-
# Clear the serialized cache if it exists
|
|
99
|
-
FileUtils.safe_unlink File.join(CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}.ser")
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def self.base_name mod
|
|
105
|
-
mod.full_name.split('::')[0..-2].join('::')
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# @param cmnt [RDoc::Comment]
|
|
109
|
-
# @return [String]
|
|
110
|
-
def self.commentary cmnt
|
|
111
|
-
return cmnt if cmnt.is_a?(String)
|
|
112
|
-
return cmnt.text if cmnt.is_a?(RDoc::Comment)
|
|
113
|
-
result = []
|
|
114
|
-
cmnt.parts.each do |part|
|
|
115
|
-
result.push RDoc::Markup::ToHtml.new({}).to_html(part.text) if part.respond_to?(:text)
|
|
116
|
-
end
|
|
117
|
-
result.join("\n\n")
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
# @param obj [RDoc::Context]
|
|
121
|
-
def self.locate obj
|
|
122
|
-
# @todo line is always nil for some reason
|
|
123
|
-
file, line = find_file(obj)
|
|
124
|
-
return nil if file.nil?
|
|
125
|
-
Location.new(
|
|
126
|
-
file,
|
|
127
|
-
Range.from_to(line || 1, 0, line || 1, 0)
|
|
128
|
-
)
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def self.find_file obj
|
|
132
|
-
if obj.respond_to?(:in_files) && !obj.in_files.empty?
|
|
133
|
-
[obj.in_files.first.to_s.sub(/^file /, ''), obj.line]
|
|
134
|
-
else
|
|
135
|
-
[obj.file, obj.line]
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rdoc'
|
|
4
|
+
require 'rdoc/rdoc'
|
|
5
|
+
require 'tmpdir'
|
|
6
|
+
require 'fileutils'
|
|
7
|
+
|
|
8
|
+
module Solargraph
|
|
9
|
+
class YardMap
|
|
10
|
+
module RdocToYard
|
|
11
|
+
extend ApiMap::SourceToYard
|
|
12
|
+
|
|
13
|
+
# @param spec [Gem::Specification]
|
|
14
|
+
# @param cache_dir [String]
|
|
15
|
+
# @return [void]
|
|
16
|
+
def self.run spec, cache_dir: nil
|
|
17
|
+
Dir.mktmpdir do |tmpdir|
|
|
18
|
+
rdir = File.join(tmpdir, 'sg_tmp_rdoc')
|
|
19
|
+
FileUtils.cp_r Dir.glob(File.join(spec.full_gem_path, '*')), tmpdir
|
|
20
|
+
Dir.chdir tmpdir do
|
|
21
|
+
pins = []
|
|
22
|
+
pins.push Solargraph::Pin::ROOT_PIN
|
|
23
|
+
name_hash = {}
|
|
24
|
+
|
|
25
|
+
argv = ['-q', '-r', '-N', '-o', rdir]
|
|
26
|
+
spec.load_paths.each do |path|
|
|
27
|
+
argv.concat ['-i', path]
|
|
28
|
+
end
|
|
29
|
+
rdoc = RDoc::RDoc.new
|
|
30
|
+
rdoc.document argv
|
|
31
|
+
# @type [RDoc::Store]
|
|
32
|
+
store = rdoc.store
|
|
33
|
+
store.path = rdir
|
|
34
|
+
store.cache[:modules].each do |mod|
|
|
35
|
+
# @type [RDoc::NormalClass]
|
|
36
|
+
mod = store.find_class_or_module(mod)
|
|
37
|
+
closure = pins.select { |pin| pin.path == mod.full_name.split('::')[0..-2].join('::') }.first || pins.first
|
|
38
|
+
namepin = Solargraph::Pin::Namespace.new(
|
|
39
|
+
type: (mod.module? ? :module : :class),
|
|
40
|
+
name: mod.name,
|
|
41
|
+
comments: commentary(mod.comment),
|
|
42
|
+
closure: closure,
|
|
43
|
+
location: locate(mod)
|
|
44
|
+
)
|
|
45
|
+
mod.parse(mod.comment_location)
|
|
46
|
+
# @param inc [RDoc::Include]
|
|
47
|
+
mod.includes.each do |inc|
|
|
48
|
+
pins.push Solargraph::Pin::Reference::Include.new(
|
|
49
|
+
location: locate(inc),
|
|
50
|
+
name: inc.name,
|
|
51
|
+
closure: namepin
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
# @param ext [RDoc::Extend]
|
|
55
|
+
mod.extends.each do |ext|
|
|
56
|
+
pins.push Solargraph::Pin::Reference::Extend.new(
|
|
57
|
+
location: locate(ext),
|
|
58
|
+
name: ext.name,
|
|
59
|
+
closure: namepin
|
|
60
|
+
)
|
|
61
|
+
end
|
|
62
|
+
pins.push namepin
|
|
63
|
+
name_hash[mod.full_name] = namepin
|
|
64
|
+
# @param met [RDoc::AnyMethod]
|
|
65
|
+
mod.each_method do |met|
|
|
66
|
+
pin = Solargraph::SourceMap.load_string("def Object.tmp#{met.param_seq};end").first_pin('Object.tmp') || Solargraph::Pin::Method.new
|
|
67
|
+
pins.push Solargraph::Pin::Method.new(
|
|
68
|
+
name: met.name,
|
|
69
|
+
closure: namepin,
|
|
70
|
+
comments: commentary(met.comment),
|
|
71
|
+
scope: met.type.to_sym,
|
|
72
|
+
parameters: pin.parameters,
|
|
73
|
+
visibility: met.visibility,
|
|
74
|
+
location: locate(met)
|
|
75
|
+
)
|
|
76
|
+
end
|
|
77
|
+
# @param const [RDoc::Constant]
|
|
78
|
+
mod.each_constant do |const|
|
|
79
|
+
pins.push Solargraph::Pin::Constant.new(
|
|
80
|
+
name: const.name,
|
|
81
|
+
closure: namepin,
|
|
82
|
+
comments: commentary(const.comment),
|
|
83
|
+
location: locate(const)
|
|
84
|
+
)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
mapstore = Solargraph::ApiMap::Store.new(pins)
|
|
88
|
+
rake_yard(mapstore)
|
|
89
|
+
YARD::Registry.clear
|
|
90
|
+
code_object_map.values.each do |co|
|
|
91
|
+
YARD::Registry.register(co)
|
|
92
|
+
end
|
|
93
|
+
cache_dir ||= File.join(Solargraph::YardMap::CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}", "yardoc")
|
|
94
|
+
FileUtils.remove_entry_secure cache_dir if File.exist?(cache_dir)
|
|
95
|
+
FileUtils.mkdir_p cache_dir
|
|
96
|
+
# @todo Should merge be true?
|
|
97
|
+
YARD::Registry.save true, cache_dir
|
|
98
|
+
# Clear the serialized cache if it exists
|
|
99
|
+
FileUtils.safe_unlink File.join(CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}.ser")
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def self.base_name mod
|
|
105
|
+
mod.full_name.split('::')[0..-2].join('::')
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# @param cmnt [RDoc::Comment]
|
|
109
|
+
# @return [String]
|
|
110
|
+
def self.commentary cmnt
|
|
111
|
+
return cmnt if cmnt.is_a?(String)
|
|
112
|
+
return cmnt.text if cmnt.is_a?(RDoc::Comment)
|
|
113
|
+
result = []
|
|
114
|
+
cmnt.parts.each do |part|
|
|
115
|
+
result.push RDoc::Markup::ToHtml.new({}).to_html(part.text) if part.respond_to?(:text)
|
|
116
|
+
end
|
|
117
|
+
result.join("\n\n")
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# @param obj [RDoc::Context]
|
|
121
|
+
def self.locate obj
|
|
122
|
+
# @todo line is always nil for some reason
|
|
123
|
+
file, line = find_file(obj)
|
|
124
|
+
return nil if file.nil?
|
|
125
|
+
Location.new(
|
|
126
|
+
file,
|
|
127
|
+
Range.from_to(line || 1, 0, line || 1, 0)
|
|
128
|
+
)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def self.find_file obj
|
|
132
|
+
if obj.respond_to?(:in_files) && !obj.in_files.empty?
|
|
133
|
+
[obj.in_files.first.to_s.sub(/^file /, ''), obj.line]
|
|
134
|
+
else
|
|
135
|
+
[obj.file, obj.line]
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|