solargraph 0.39.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +28 -0
  5. data/.yardopts +2 -0
  6. data/Gemfile +7 -0
  7. data/LICENSE +21 -0
  8. data/README.md +104 -0
  9. data/Rakefile +14 -0
  10. data/SPONSORS.md +9 -0
  11. data/bin/solargraph +5 -0
  12. data/lib/.rubocop.yml +21 -0
  13. data/lib/solargraph.rb +66 -0
  14. data/lib/solargraph/api_map.rb +745 -0
  15. data/lib/solargraph/api_map/bundler_methods.rb +27 -0
  16. data/lib/solargraph/api_map/cache.rb +66 -0
  17. data/lib/solargraph/api_map/source_to_yard.rb +81 -0
  18. data/lib/solargraph/api_map/store.rb +267 -0
  19. data/lib/solargraph/bundle.rb +26 -0
  20. data/lib/solargraph/complex_type.rb +213 -0
  21. data/lib/solargraph/complex_type/type_methods.rb +127 -0
  22. data/lib/solargraph/complex_type/unique_type.rb +75 -0
  23. data/lib/solargraph/convention.rb +38 -0
  24. data/lib/solargraph/convention/base.rb +25 -0
  25. data/lib/solargraph/convention/gemfile.rb +18 -0
  26. data/lib/solargraph/convention/gemspec.rb +25 -0
  27. data/lib/solargraph/convention/rspec.rb +24 -0
  28. data/lib/solargraph/converters/dd.rb +12 -0
  29. data/lib/solargraph/converters/dl.rb +12 -0
  30. data/lib/solargraph/converters/dt.rb +12 -0
  31. data/lib/solargraph/converters/misc.rb +1 -0
  32. data/lib/solargraph/core_fills.rb +159 -0
  33. data/lib/solargraph/diagnostics.rb +55 -0
  34. data/lib/solargraph/diagnostics/base.rb +29 -0
  35. data/lib/solargraph/diagnostics/require_not_found.rb +37 -0
  36. data/lib/solargraph/diagnostics/rubocop.rb +90 -0
  37. data/lib/solargraph/diagnostics/rubocop_helpers.rb +64 -0
  38. data/lib/solargraph/diagnostics/severities.rb +15 -0
  39. data/lib/solargraph/diagnostics/type_check.rb +54 -0
  40. data/lib/solargraph/diagnostics/update_errors.rb +41 -0
  41. data/lib/solargraph/documentor.rb +76 -0
  42. data/lib/solargraph/environ.rb +40 -0
  43. data/lib/solargraph/language_server.rb +19 -0
  44. data/lib/solargraph/language_server/completion_item_kinds.rb +35 -0
  45. data/lib/solargraph/language_server/error_codes.rb +20 -0
  46. data/lib/solargraph/language_server/host.rb +741 -0
  47. data/lib/solargraph/language_server/host/cataloger.rb +56 -0
  48. data/lib/solargraph/language_server/host/diagnoser.rb +81 -0
  49. data/lib/solargraph/language_server/host/dispatch.rb +112 -0
  50. data/lib/solargraph/language_server/host/sources.rb +156 -0
  51. data/lib/solargraph/language_server/message.rb +92 -0
  52. data/lib/solargraph/language_server/message/base.rb +85 -0
  53. data/lib/solargraph/language_server/message/cancel_request.rb +13 -0
  54. data/lib/solargraph/language_server/message/client.rb +11 -0
  55. data/lib/solargraph/language_server/message/client/register_capability.rb +15 -0
  56. data/lib/solargraph/language_server/message/completion_item.rb +11 -0
  57. data/lib/solargraph/language_server/message/completion_item/resolve.rb +57 -0
  58. data/lib/solargraph/language_server/message/exit_notification.rb +13 -0
  59. data/lib/solargraph/language_server/message/extended.rb +21 -0
  60. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +95 -0
  61. data/lib/solargraph/language_server/message/extended/document.rb +20 -0
  62. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -0
  63. data/lib/solargraph/language_server/message/extended/download_core.rb +23 -0
  64. data/lib/solargraph/language_server/message/extended/environment.rb +25 -0
  65. data/lib/solargraph/language_server/message/extended/search.rb +20 -0
  66. data/lib/solargraph/language_server/message/initialize.rb +153 -0
  67. data/lib/solargraph/language_server/message/initialized.rb +26 -0
  68. data/lib/solargraph/language_server/message/method_not_found.rb +16 -0
  69. data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -0
  70. data/lib/solargraph/language_server/message/shutdown.rb +13 -0
  71. data/lib/solargraph/language_server/message/text_document.rb +28 -0
  72. data/lib/solargraph/language_server/message/text_document/base.rb +19 -0
  73. data/lib/solargraph/language_server/message/text_document/code_action.rb +17 -0
  74. data/lib/solargraph/language_server/message/text_document/completion.rb +57 -0
  75. data/lib/solargraph/language_server/message/text_document/definition.rb +38 -0
  76. data/lib/solargraph/language_server/message/text_document/did_change.rb +15 -0
  77. data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -0
  78. data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -0
  79. data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -0
  80. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +23 -0
  81. data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -0
  82. data/lib/solargraph/language_server/message/text_document/formatting.rb +78 -0
  83. data/lib/solargraph/language_server/message/text_document/hover.rb +44 -0
  84. data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +34 -0
  85. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -0
  86. data/lib/solargraph/language_server/message/text_document/references.rb +16 -0
  87. data/lib/solargraph/language_server/message/text_document/rename.rb +19 -0
  88. data/lib/solargraph/language_server/message/text_document/signature_help.rb +29 -0
  89. data/lib/solargraph/language_server/message/workspace.rb +14 -0
  90. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +29 -0
  91. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +33 -0
  92. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -0
  93. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -0
  94. data/lib/solargraph/language_server/message_types.rb +14 -0
  95. data/lib/solargraph/language_server/request.rb +24 -0
  96. data/lib/solargraph/language_server/symbol_kinds.rb +36 -0
  97. data/lib/solargraph/language_server/transport.rb +13 -0
  98. data/lib/solargraph/language_server/transport/adapter.rb +56 -0
  99. data/lib/solargraph/language_server/transport/data_reader.rb +72 -0
  100. data/lib/solargraph/language_server/uri_helpers.rb +49 -0
  101. data/lib/solargraph/library.rb +414 -0
  102. data/lib/solargraph/location.rb +37 -0
  103. data/lib/solargraph/logging.rb +27 -0
  104. data/lib/solargraph/page.rb +83 -0
  105. data/lib/solargraph/parser.rb +26 -0
  106. data/lib/solargraph/parser/comment_ripper.rb +52 -0
  107. data/lib/solargraph/parser/legacy.rb +12 -0
  108. data/lib/solargraph/parser/legacy/class_methods.rb +109 -0
  109. data/lib/solargraph/parser/legacy/flawed_builder.rb +16 -0
  110. data/lib/solargraph/parser/legacy/node_chainer.rb +118 -0
  111. data/lib/solargraph/parser/legacy/node_methods.rb +300 -0
  112. data/lib/solargraph/parser/legacy/node_processors.rb +54 -0
  113. data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +23 -0
  114. data/lib/solargraph/parser/legacy/node_processors/args_node.rb +35 -0
  115. data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +15 -0
  116. data/lib/solargraph/parser/legacy/node_processors/block_node.rb +22 -0
  117. data/lib/solargraph/parser/legacy/node_processors/casgn_node.rb +25 -0
  118. data/lib/solargraph/parser/legacy/node_processors/cvasgn_node.rb +23 -0
  119. data/lib/solargraph/parser/legacy/node_processors/def_node.rb +63 -0
  120. data/lib/solargraph/parser/legacy/node_processors/defs_node.rb +36 -0
  121. data/lib/solargraph/parser/legacy/node_processors/gvasgn_node.rb +23 -0
  122. data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +38 -0
  123. data/lib/solargraph/parser/legacy/node_processors/lvasgn_node.rb +28 -0
  124. data/lib/solargraph/parser/legacy/node_processors/namespace_node.rb +39 -0
  125. data/lib/solargraph/parser/legacy/node_processors/orasgn_node.rb +16 -0
  126. data/lib/solargraph/parser/legacy/node_processors/resbody_node.rb +36 -0
  127. data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +21 -0
  128. data/lib/solargraph/parser/legacy/node_processors/send_node.rb +234 -0
  129. data/lib/solargraph/parser/legacy/node_processors/sym_node.rb +18 -0
  130. data/lib/solargraph/parser/node_methods.rb +43 -0
  131. data/lib/solargraph/parser/node_processor.rb +43 -0
  132. data/lib/solargraph/parser/node_processor/base.rb +77 -0
  133. data/lib/solargraph/parser/region.rb +66 -0
  134. data/lib/solargraph/parser/rubyvm.rb +40 -0
  135. data/lib/solargraph/parser/rubyvm/class_methods.rb +150 -0
  136. data/lib/solargraph/parser/rubyvm/node_chainer.rb +135 -0
  137. data/lib/solargraph/parser/rubyvm/node_methods.rb +284 -0
  138. data/lib/solargraph/parser/rubyvm/node_processors.rb +61 -0
  139. data/lib/solargraph/parser/rubyvm/node_processors/alias_node.rb +23 -0
  140. data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +62 -0
  141. data/lib/solargraph/parser/rubyvm/node_processors/begin_node.rb +15 -0
  142. data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +22 -0
  143. data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +22 -0
  144. data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +23 -0
  145. data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +64 -0
  146. data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +57 -0
  147. data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +23 -0
  148. data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +38 -0
  149. data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +39 -0
  150. data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +20 -0
  151. data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +27 -0
  152. data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +39 -0
  153. data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +31 -0
  154. data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +15 -0
  155. data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +45 -0
  156. data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +21 -0
  157. data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +15 -0
  158. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +255 -0
  159. data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +18 -0
  160. data/lib/solargraph/parser/snippet.rb +13 -0
  161. data/lib/solargraph/pin.rb +39 -0
  162. data/lib/solargraph/pin/attribute.rb +49 -0
  163. data/lib/solargraph/pin/base.rb +296 -0
  164. data/lib/solargraph/pin/base_method.rb +141 -0
  165. data/lib/solargraph/pin/base_variable.rb +84 -0
  166. data/lib/solargraph/pin/block.rb +48 -0
  167. data/lib/solargraph/pin/class_variable.rb +8 -0
  168. data/lib/solargraph/pin/closure.rb +37 -0
  169. data/lib/solargraph/pin/common.rb +70 -0
  170. data/lib/solargraph/pin/constant.rb +43 -0
  171. data/lib/solargraph/pin/conversions.rb +97 -0
  172. data/lib/solargraph/pin/documenting.rb +110 -0
  173. data/lib/solargraph/pin/duck_method.rb +16 -0
  174. data/lib/solargraph/pin/global_variable.rb +8 -0
  175. data/lib/solargraph/pin/instance_variable.rb +30 -0
  176. data/lib/solargraph/pin/keyword.rb +15 -0
  177. data/lib/solargraph/pin/keyword_param.rb +8 -0
  178. data/lib/solargraph/pin/local_variable.rb +21 -0
  179. data/lib/solargraph/pin/localized.rb +43 -0
  180. data/lib/solargraph/pin/method.rb +111 -0
  181. data/lib/solargraph/pin/method_alias.rb +31 -0
  182. data/lib/solargraph/pin/namespace.rb +85 -0
  183. data/lib/solargraph/pin/parameter.rb +206 -0
  184. data/lib/solargraph/pin/proxy_type.rb +29 -0
  185. data/lib/solargraph/pin/reference.rb +14 -0
  186. data/lib/solargraph/pin/reference/extend.rb +10 -0
  187. data/lib/solargraph/pin/reference/include.rb +10 -0
  188. data/lib/solargraph/pin/reference/override.rb +29 -0
  189. data/lib/solargraph/pin/reference/prepend.rb +10 -0
  190. data/lib/solargraph/pin/reference/require.rb +14 -0
  191. data/lib/solargraph/pin/reference/superclass.rb +10 -0
  192. data/lib/solargraph/pin/singleton.rb +11 -0
  193. data/lib/solargraph/pin/symbol.rb +47 -0
  194. data/lib/solargraph/pin/yard_pin.rb +12 -0
  195. data/lib/solargraph/pin/yard_pin/constant.rb +25 -0
  196. data/lib/solargraph/pin/yard_pin/method.rb +65 -0
  197. data/lib/solargraph/pin/yard_pin/namespace.rb +27 -0
  198. data/lib/solargraph/pin/yard_pin/yard_mixin.rb +26 -0
  199. data/lib/solargraph/position.rb +112 -0
  200. data/lib/solargraph/range.rb +95 -0
  201. data/lib/solargraph/server_methods.rb +16 -0
  202. data/lib/solargraph/shell.rb +221 -0
  203. data/lib/solargraph/source.rb +533 -0
  204. data/lib/solargraph/source/chain.rb +172 -0
  205. data/lib/solargraph/source/chain/block_variable.rb +13 -0
  206. data/lib/solargraph/source/chain/call.rb +203 -0
  207. data/lib/solargraph/source/chain/class_variable.rb +13 -0
  208. data/lib/solargraph/source/chain/constant.rb +75 -0
  209. data/lib/solargraph/source/chain/global_variable.rb +13 -0
  210. data/lib/solargraph/source/chain/head.rb +35 -0
  211. data/lib/solargraph/source/chain/instance_variable.rb +13 -0
  212. data/lib/solargraph/source/chain/link.rb +67 -0
  213. data/lib/solargraph/source/chain/literal.rb +23 -0
  214. data/lib/solargraph/source/chain/or.rb +23 -0
  215. data/lib/solargraph/source/chain/variable.rb +13 -0
  216. data/lib/solargraph/source/chain/z_super.rb +184 -0
  217. data/lib/solargraph/source/change.rb +79 -0
  218. data/lib/solargraph/source/cursor.rb +164 -0
  219. data/lib/solargraph/source/encoding_fixes.rb +23 -0
  220. data/lib/solargraph/source/source_chainer.rb +189 -0
  221. data/lib/solargraph/source/updater.rb +54 -0
  222. data/lib/solargraph/source_map.rb +170 -0
  223. data/lib/solargraph/source_map/clip.rb +190 -0
  224. data/lib/solargraph/source_map/completion.rb +23 -0
  225. data/lib/solargraph/source_map/mapper.rb +199 -0
  226. data/lib/solargraph/stdlib_fills.rb +32 -0
  227. data/lib/solargraph/type_checker.rb +498 -0
  228. data/lib/solargraph/type_checker/checks.rb +95 -0
  229. data/lib/solargraph/type_checker/param_def.rb +35 -0
  230. data/lib/solargraph/type_checker/problem.rb +32 -0
  231. data/lib/solargraph/type_checker/rules.rb +53 -0
  232. data/lib/solargraph/version.rb +5 -0
  233. data/lib/solargraph/views/_method.erb +62 -0
  234. data/lib/solargraph/views/_name_type_tag.erb +10 -0
  235. data/lib/solargraph/views/_namespace.erb +24 -0
  236. data/lib/solargraph/views/document.erb +23 -0
  237. data/lib/solargraph/views/environment.erb +58 -0
  238. data/lib/solargraph/views/layout.erb +44 -0
  239. data/lib/solargraph/views/search.erb +11 -0
  240. data/lib/solargraph/workspace.rb +209 -0
  241. data/lib/solargraph/workspace/config.rb +215 -0
  242. data/lib/solargraph/yard_map.rb +420 -0
  243. data/lib/solargraph/yard_map/cache.rb +19 -0
  244. data/lib/solargraph/yard_map/core_docs.rb +170 -0
  245. data/lib/solargraph/yard_map/core_gen.rb +76 -0
  246. data/lib/solargraph/yard_map/mapper.rb +71 -0
  247. data/lib/solargraph/yard_map/rdoc_to_yard.rb +136 -0
  248. data/lib/yard-solargraph.rb +30 -0
  249. data/solargraph.gemspec +41 -0
  250. data/travis-bundler.rb +11 -0
  251. data/yardoc/2.2.2.tar.gz +0 -0
  252. metadata +575 -0
@@ -0,0 +1,95 @@
1
+ module Solargraph
2
+ class TypeChecker
3
+ module Checks
4
+ module_function
5
+
6
+ # Compare an expected type with an inferred type. Common usage is to
7
+ # check if the type declared in a method's @return tag matches the type
8
+ # inferred from static analysis of the code.
9
+ #
10
+ # @param api_map [ApiMap]
11
+ # @param expected [ComplexType]
12
+ # @param inferred [ComplexType]
13
+ # @return [Boolean]
14
+ def types_match? api_map, expected, inferred
15
+ return true if expected.to_s == inferred.to_s
16
+ matches = []
17
+ expected.each do |exp|
18
+ found = false
19
+ inferred.each do |inf|
20
+ # if api_map.super_and_sub?(fuzz(inf), fuzz(exp))
21
+ if either_way?(api_map, inf, exp)
22
+ found = true
23
+ matches.push inf
24
+ break
25
+ end
26
+ end
27
+ return false unless found
28
+ end
29
+ inferred.each do |inf|
30
+ next if matches.include?(inf)
31
+ found = false
32
+ expected.each do |exp|
33
+ # if api_map.super_and_sub?(fuzz(inf), fuzz(exp))
34
+ if either_way?(api_map, inf, exp)
35
+ found = true
36
+ break
37
+ end
38
+ end
39
+ return false unless found
40
+ end
41
+ true
42
+ end
43
+
44
+ # @param api_map [ApiMap]
45
+ # @param expected [ComplexType]
46
+ # @param inferred [ComplexType]
47
+ # @return [Boolean]
48
+ def any_types_match? api_map, expected, inferred
49
+ return duck_types_match?(api_map, expected, inferred) if expected.duck_type?
50
+ expected.each do |exp|
51
+ next if exp.duck_type?
52
+ inferred.each do |inf|
53
+ # return true if exp == inf || api_map.super_and_sub?(fuzz(inf), fuzz(exp))
54
+ return true if exp == inf || either_way?(api_map, inf, exp)
55
+ end
56
+ end
57
+ false
58
+ end
59
+
60
+ # @param api_map [ApiMap]
61
+ # @param expected [ComplexType]
62
+ # @param inferred [ComplexType]
63
+ # @return [Boolean]
64
+ def duck_types_match? api_map, expected, inferred
65
+ raise ArgumentError, "Expected type must be duck type" unless expected.duck_type?
66
+ expected.each do |exp|
67
+ next unless exp.duck_type?
68
+ quack = exp.to_s[1..-1]
69
+ return false if api_map.get_method_stack(inferred.namespace, quack, scope: inferred.scope).empty?
70
+ end
71
+ true
72
+ end
73
+
74
+ # @param type [ComplexType]
75
+ # @return [String]
76
+ def fuzz type
77
+ if type.parameters?
78
+ type.name
79
+ else
80
+ type.tag
81
+ end
82
+ end
83
+
84
+ # @param api_map [ApiMap]
85
+ # @param cls1 [ComplexType]
86
+ # @param cls2 [ComplexType]
87
+ # @return [Boolean]
88
+ def either_way?(api_map, cls1, cls2)
89
+ f1 = fuzz(cls1)
90
+ f2 = fuzz(cls2)
91
+ api_map.super_and_sub?(f1, f2) || api_map.super_and_sub?(f2, f1)
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class TypeChecker
5
+ # Data about a method parameter definition. This is the information from
6
+ # the args list in the def call, not the `@param` tags.
7
+ #
8
+ class ParamDef
9
+ # @return [String]
10
+ attr_reader :name
11
+
12
+ # @return [Symbol]
13
+ attr_reader :type
14
+
15
+ def initialize name, type
16
+ @name = name
17
+ @type = type
18
+ end
19
+
20
+ class << self
21
+ # Get an array of ParamDefs from a method pin.
22
+ #
23
+ # @param pin [Solargraph::Pin::BaseMethod]
24
+ # @return [Array<ParamDef>]
25
+ def from pin
26
+ result = []
27
+ pin.parameters.each do |par|
28
+ result.push ParamDef.new(par.name, par.decl)
29
+ end
30
+ result
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class TypeChecker
5
+ # A problem reported by TypeChecker.
6
+ #
7
+ class Problem
8
+ # @return [Solargraph::Location]
9
+ attr_reader :location
10
+
11
+ # @return [String]
12
+ attr_reader :message
13
+
14
+ # @return [Pin::Base]
15
+ attr_reader :pin
16
+
17
+ # @return [String, nil]
18
+ attr_reader :suggestion
19
+
20
+ # @param location [Solargraph::Location]
21
+ # @param message [String]
22
+ # @param pin [Solargraph::Pin::Base, nil]
23
+ # @param suggestion [String, nil]
24
+ def initialize location, message, pin: nil, suggestion: nil
25
+ @location = location
26
+ @message = message
27
+ @pin = pin
28
+ @suggestion = suggestion
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,53 @@
1
+ module Solargraph
2
+ class TypeChecker
3
+ class Rules
4
+ LEVELS = {
5
+ normal: 0,
6
+ typed: 1,
7
+ strict: 2,
8
+ strong: 3
9
+ }
10
+
11
+ # @return [Symbol]
12
+ attr_reader :level
13
+
14
+ # @return [Integer]
15
+ attr_reader :rank
16
+
17
+ # @param level [Symbol]
18
+ def initialize level
19
+ @rank = if LEVELS.key?(level)
20
+ LEVELS[level]
21
+ else
22
+ Solargraph.logger.warn "Unrecognized TypeChecker level #{level}, assuming normal"
23
+ 0
24
+ end
25
+ @level = LEVELS[LEVELS.values.index(@rank)]
26
+ end
27
+
28
+ def ignore_all_undefined?
29
+ rank < LEVELS[:strict]
30
+ end
31
+
32
+ def validate_consts?
33
+ rank >= LEVELS[:strict]
34
+ end
35
+
36
+ def validate_calls?
37
+ rank >= LEVELS[:strict]
38
+ end
39
+
40
+ def require_type_tags?
41
+ rank >= LEVELS[:strong]
42
+ end
43
+
44
+ def must_tag_or_infer?
45
+ rank > LEVELS[:typed]
46
+ end
47
+
48
+ def validate_tags?
49
+ rank > LEVELS[:normal]
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ VERSION = '0.39.7'
5
+ end
@@ -0,0 +1,62 @@
1
+ <h2>
2
+ Namespace:
3
+ </h2>
4
+ <p>
5
+ <a href="command:solargraph._openDocument?<%= CGI.escape "\"solargraph:/document?query=#{object.namespace}\"" %>"><%= object.namespace %></a>
6
+ </p>
7
+ <h2>
8
+ Overview:
9
+ </h2>
10
+ <%= htmlify object.docstring %>
11
+ <p class="document-section">
12
+ <big><strong>Visibility:</strong></big> <%= object.visibility %>
13
+ </p>
14
+ <% unless object.tags(:param).empty? %>
15
+ <h2>
16
+ Parameters:
17
+ </h2>
18
+ <ul>
19
+ <% object.tags(:param).each do |tag| %>
20
+ <li>
21
+ <%= erb :_name_type_tag, layout: false, locals: {tag: tag} %>
22
+ </li>
23
+ <% end %>
24
+ </ul>
25
+ <% end %>
26
+ <% unless object.tags(:raise).empty? %>
27
+ <h2>
28
+ Raises:
29
+ </h2>
30
+ <ul>
31
+ <% object.tags(:raise).each do |tag| %>
32
+ <li>
33
+ <%= erb :_name_type_tag, layout: false, locals: {tag: tag} %>
34
+ </li>
35
+ <% end %>
36
+ </ul>
37
+ <% end %>
38
+ <h2>
39
+ Returns:
40
+ </h2>
41
+ <% if object.tag(:return).nil? %>
42
+ <p>
43
+ Undefined/unknown
44
+ </p>
45
+ <% else %>
46
+ <ul>
47
+ <% object.tags(:return).each do |tag| %>
48
+ <li>
49
+ <%= erb :_name_type_tag, layout: false, locals: {tag: tag} %>
50
+ </li>
51
+ <% end %>
52
+ </ul>
53
+ <% end %>
54
+ <% examples = object.tags(:example) %>
55
+ <% unless examples.nil? %>
56
+ <% examples.each do |example| %>
57
+ <h2>
58
+ Example: <%= example.name %>
59
+ </h2>
60
+ <%= ruby_to_html example.text.strip %>
61
+ <% end %>
62
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <%= tag.name %>
2
+ <% unless tag.types.nil? or tag.types.empty? %>
3
+ [<%= escape(tag.types.join(', ')) %>]
4
+ <% end %>
5
+ <% unless tag.text.nil? || tag.text.empty? %>
6
+ <% unless (tag.name.nil? or tag.name.empty?) and (tag.types.nil? or tag.types.empty?) %>
7
+ -
8
+ <% end %>
9
+ <%= tag.text %>
10
+ <% end %>
@@ -0,0 +1,24 @@
1
+ <h2>
2
+ Overview:
3
+ </h2>
4
+ <%= htmlify object.docstring %>
5
+ <h2>
6
+ Class Methods
7
+ </h2>
8
+ <ul class="doc-list">
9
+ <% object.meths(scope: :class).sort{|a, b| a.name <=> b.name}.each do |meth| %>
10
+ <li>
11
+ <a href="solargraph:/document?query=<%= CGI.escape(meth.path) %>"><%= meth.name %></a>
12
+ </li>
13
+ <% end %>
14
+ </ul>
15
+ <h2>
16
+ Instance Methods
17
+ </h2>
18
+ <ul class="doc-list">
19
+ <% object.meths(scope: :instance).sort{|a, b| a.name <=> b.name}.each do |meth| %>
20
+ <li>
21
+ <a href="solargraph:/document?query=<%= CGI.escape(meth.path) %>"><%= meth.name %></a>
22
+ </li>
23
+ <% end %>
24
+ </ul>
@@ -0,0 +1,23 @@
1
+ <% objects.reverse.each do |object| %>
2
+ <h1>
3
+ <%= object.name %>
4
+ <% if object.is_a?(YARD::CodeObjects::MethodObject) and !object.parameters.empty? %>
5
+ <small>(<%= object.parameters.map {|p| "#{p[0]}#{p[1] and p[0].end_with?(':') ? ' ' : (p[1] ? ' = ' : '')}#{p[1]}"}.join(', ') %>)</small>
6
+ <% end %>
7
+ </h1>
8
+ <% unless object.files.empty? %>
9
+ <h2>
10
+ Defined in:
11
+ </h2>
12
+ <ul>
13
+ <% object.files.each do |f| %>
14
+ <li><%= f %></li>
15
+ <% end %>
16
+ </ul>
17
+ <% end %>
18
+ <% if object.is_a?(YARD::CodeObjects::NamespaceObject) %>
19
+ <%= erb :_namespace, layout: false, locals: {object: object} %>
20
+ <% elsif object.is_a?(YARD::CodeObjects::MethodObject) %>
21
+ <%= erb :_method, layout: false, locals: {object: object} %>
22
+ <% end %>
23
+ <% end %>
@@ -0,0 +1,58 @@
1
+ <html>
2
+ <head>
3
+ <title>Solargraph Environment</title>
4
+ </head>
5
+ <h1>
6
+ Solargraph Environment Info
7
+ </h1>
8
+ <h2>
9
+ System
10
+ </h2>
11
+ <ul>
12
+ <li>
13
+ Platform: <%= RUBY_PLATFORM %>
14
+ </li>
15
+ <li>
16
+ Shell: <%= ENV['SHELL'] %>
17
+ </li>
18
+ <li>
19
+ Ruby Version: <%= RUBY_VERSION %>
20
+ </li>
21
+ <li>
22
+ RuboCop Version: <%= RuboCop::Version::STRING %>
23
+ </li>
24
+ </ul>
25
+ <h2>
26
+ Solargraph
27
+ </h2>
28
+ <ul>
29
+ <li>
30
+ Solargraph Version: <%= Solargraph::VERSION %>
31
+ </li>
32
+ <li>
33
+ Core Documentation Version: <%= Solargraph::YardMap::CoreDocs.best_match %>
34
+ </li>
35
+ <li>
36
+ Core Cache Directory: <%= Solargraph::YardMap::CoreDocs.cache_dir %>
37
+ </li>
38
+ <% unless Solargraph::Parser.rubyvm? %>
39
+ <li>
40
+ Parser Target Version: <%= Solargraph::Parser.version %>
41
+ </li>
42
+ <% end %>
43
+ <li>
44
+ Using Bundler: <%= ENV.key?('BUNDLE_BIN_PATH') %>
45
+ </li>
46
+ </ul>
47
+ <h2>
48
+ Project
49
+ </h2>
50
+ <ul>
51
+ <li>
52
+ Config: <%= config %>
53
+ </li>
54
+ <li>
55
+ Workspace folders: <%= folders %>
56
+ </li>
57
+ </ul>
58
+ </html>
@@ -0,0 +1,44 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Solargraph</title>
5
+ <style>
6
+ a {
7
+ color: inherit;
8
+ text-decoration: underline;
9
+ }
10
+ h2 {
11
+ font-size: 110%;
12
+ margin: 1.5em 0 1em 0;
13
+ }
14
+ big {
15
+ font-size: 110%;
16
+ }
17
+ pre {
18
+ margin: 1em;
19
+ padding: 0.5em;
20
+ overflow: auto;
21
+ border: 1px solid gray;
22
+ }
23
+ ul.doc-list {
24
+ margin: 1em 0 1em 0.5em;
25
+ padding: 0;
26
+ }
27
+ ul.doc-list li {
28
+ list-style: none;
29
+ margin: 0.25em 0 0.25em 0;
30
+ padding: 0;
31
+ }
32
+ h1 small {
33
+ font-size: 75%;
34
+ font-weight: normal;
35
+ }
36
+ .document-section {
37
+ margin: 1.5em 0 1em 0;
38
+ }
39
+ </style>
40
+ </head>
41
+ <body>
42
+ <%= yield %>
43
+ </body>
44
+ </html>