yoda-language-server 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +8 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +78 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +85 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/client/atom/main.js +27 -0
  13. data/client/vscode/.gitignore +4 -0
  14. data/client/vscode/.vscode/launch.json +28 -0
  15. data/client/vscode/.vscode/settings.json +9 -0
  16. data/client/vscode/.vscode/tasks.json +20 -0
  17. data/client/vscode/.vscodeignore +8 -0
  18. data/client/vscode/CHANGELOG.md +7 -0
  19. data/client/vscode/README.md +65 -0
  20. data/client/vscode/package-lock.json +2688 -0
  21. data/client/vscode/package.json +39 -0
  22. data/client/vscode/src/extension.ts +42 -0
  23. data/client/vscode/src/test/extension.test.ts +22 -0
  24. data/client/vscode/src/test/index.ts +22 -0
  25. data/client/vscode/tsconfig.json +16 -0
  26. data/client/vscode/vsc-extension-quickstart.md +33 -0
  27. data/exe/yoda +27 -0
  28. data/lib/yoda.rb +11 -0
  29. data/lib/yoda/evaluation.rb +9 -0
  30. data/lib/yoda/evaluation/code_completion.rb +65 -0
  31. data/lib/yoda/evaluation/code_completion/base_provider.rb +57 -0
  32. data/lib/yoda/evaluation/code_completion/const_provider.rb +90 -0
  33. data/lib/yoda/evaluation/code_completion/method_provider.rb +82 -0
  34. data/lib/yoda/evaluation/code_completion/variable_provider.rb +18 -0
  35. data/lib/yoda/evaluation/comment_completion.rb +70 -0
  36. data/lib/yoda/evaluation/comment_completion/base_provider.rb +64 -0
  37. data/lib/yoda/evaluation/comment_completion/param_provider.rb +18 -0
  38. data/lib/yoda/evaluation/comment_completion/tag_provider.rb +41 -0
  39. data/lib/yoda/evaluation/comment_completion/type_provider.rb +58 -0
  40. data/lib/yoda/evaluation/current_node_explain.rb +70 -0
  41. data/lib/yoda/evaluation/evaluator.rb +103 -0
  42. data/lib/yoda/evaluation/signature_discovery.rb +83 -0
  43. data/lib/yoda/model.rb +12 -0
  44. data/lib/yoda/model/completion_item.rb +56 -0
  45. data/lib/yoda/model/descriptions.rb +10 -0
  46. data/lib/yoda/model/descriptions/base.rb +26 -0
  47. data/lib/yoda/model/descriptions/function_description.rb +40 -0
  48. data/lib/yoda/model/descriptions/value_description.rb +33 -0
  49. data/lib/yoda/model/descriptions/word_description.rb +32 -0
  50. data/lib/yoda/model/function_signatures.rb +13 -0
  51. data/lib/yoda/model/function_signatures/base.rb +68 -0
  52. data/lib/yoda/model/function_signatures/constructor.rb +70 -0
  53. data/lib/yoda/model/function_signatures/formatter.rb +82 -0
  54. data/lib/yoda/model/function_signatures/method.rb +67 -0
  55. data/lib/yoda/model/function_signatures/overload.rb +79 -0
  56. data/lib/yoda/model/function_signatures/parameter_list.rb +108 -0
  57. data/lib/yoda/model/function_signatures/type_builder.rb +101 -0
  58. data/lib/yoda/model/node_signature.rb +28 -0
  59. data/lib/yoda/model/path.rb +96 -0
  60. data/lib/yoda/model/scoped_path.rb +44 -0
  61. data/lib/yoda/model/types.rb +84 -0
  62. data/lib/yoda/model/types/any_type.rb +32 -0
  63. data/lib/yoda/model/types/base.rb +37 -0
  64. data/lib/yoda/model/types/duck_type.rb +41 -0
  65. data/lib/yoda/model/types/function_type.rb +174 -0
  66. data/lib/yoda/model/types/generic_type.rb +66 -0
  67. data/lib/yoda/model/types/instance_type.rb +42 -0
  68. data/lib/yoda/model/types/module_type.rb +42 -0
  69. data/lib/yoda/model/types/sequence_type.rb +53 -0
  70. data/lib/yoda/model/types/union_type.rb +56 -0
  71. data/lib/yoda/model/types/unknown_type.rb +40 -0
  72. data/lib/yoda/model/types/value_type.rb +58 -0
  73. data/lib/yoda/model/values.rb +9 -0
  74. data/lib/yoda/model/values/base.rb +32 -0
  75. data/lib/yoda/model/values/instance_value.rb +65 -0
  76. data/lib/yoda/model/values/module_value.rb +72 -0
  77. data/lib/yoda/parsing.rb +15 -0
  78. data/lib/yoda/parsing/ast_traversable.rb +18 -0
  79. data/lib/yoda/parsing/comment_tokenizer.rb +59 -0
  80. data/lib/yoda/parsing/location.rb +101 -0
  81. data/lib/yoda/parsing/node_objects.rb +10 -0
  82. data/lib/yoda/parsing/node_objects/const_node.rb +52 -0
  83. data/lib/yoda/parsing/node_objects/method_definition.rb +46 -0
  84. data/lib/yoda/parsing/node_objects/namespace.rb +104 -0
  85. data/lib/yoda/parsing/node_objects/send_node.rb +72 -0
  86. data/lib/yoda/parsing/parser.rb +27 -0
  87. data/lib/yoda/parsing/query.rb +11 -0
  88. data/lib/yoda/parsing/query/current_comment_query.rb +80 -0
  89. data/lib/yoda/parsing/query/current_comment_token_query.rb +153 -0
  90. data/lib/yoda/parsing/query/current_commenting_node_query.rb +68 -0
  91. data/lib/yoda/parsing/query/current_location_node_query.rb +51 -0
  92. data/lib/yoda/parsing/query/current_node_comment_query.rb +40 -0
  93. data/lib/yoda/parsing/range.rb +41 -0
  94. data/lib/yoda/parsing/scopes.rb +15 -0
  95. data/lib/yoda/parsing/scopes/base.rb +78 -0
  96. data/lib/yoda/parsing/scopes/builder.rb +60 -0
  97. data/lib/yoda/parsing/scopes/class_definition.rb +47 -0
  98. data/lib/yoda/parsing/scopes/meta_class_definition.rb +44 -0
  99. data/lib/yoda/parsing/scopes/meta_method_definition.rb +70 -0
  100. data/lib/yoda/parsing/scopes/method_definition.rb +69 -0
  101. data/lib/yoda/parsing/scopes/module_definition.rb +36 -0
  102. data/lib/yoda/parsing/scopes/root.rb +25 -0
  103. data/lib/yoda/parsing/source_analyzer.rb +59 -0
  104. data/lib/yoda/parsing/source_cutter.rb +231 -0
  105. data/lib/yoda/parsing/type_parser.rb +141 -0
  106. data/lib/yoda/runner.rb +6 -0
  107. data/lib/yoda/runner/infer.rb +50 -0
  108. data/lib/yoda/runner/setup.rb +26 -0
  109. data/lib/yoda/server.rb +191 -0
  110. data/lib/yoda/server/client_info.rb +98 -0
  111. data/lib/yoda/server/completion_provider.rb +78 -0
  112. data/lib/yoda/server/definition_provider.rb +36 -0
  113. data/lib/yoda/server/deserializer.rb +27 -0
  114. data/lib/yoda/server/hover_provider.rb +38 -0
  115. data/lib/yoda/server/signature_provider.rb +46 -0
  116. data/lib/yoda/store.rb +13 -0
  117. data/lib/yoda/store/actions.rb +10 -0
  118. data/lib/yoda/store/actions/import_core_library.rb +30 -0
  119. data/lib/yoda/store/actions/import_gems.rb +91 -0
  120. data/lib/yoda/store/actions/read_file.rb +36 -0
  121. data/lib/yoda/store/actions/read_project_files.rb +29 -0
  122. data/lib/yoda/store/adapters.rb +14 -0
  123. data/lib/yoda/store/adapters/base.rb +58 -0
  124. data/lib/yoda/store/adapters/leveldb_adapter.rb +80 -0
  125. data/lib/yoda/store/adapters/lmdb_adapter.rb +113 -0
  126. data/lib/yoda/store/objects.rb +46 -0
  127. data/lib/yoda/store/objects/addressable.rb +25 -0
  128. data/lib/yoda/store/objects/base.rb +116 -0
  129. data/lib/yoda/store/objects/class_object.rb +51 -0
  130. data/lib/yoda/store/objects/merger.rb +94 -0
  131. data/lib/yoda/store/objects/meta_class_object.rb +41 -0
  132. data/lib/yoda/store/objects/method_object.rb +94 -0
  133. data/lib/yoda/store/objects/module_object.rb +11 -0
  134. data/lib/yoda/store/objects/namespace_object.rb +67 -0
  135. data/lib/yoda/store/objects/overload.rb +51 -0
  136. data/lib/yoda/store/objects/patch.rb +46 -0
  137. data/lib/yoda/store/objects/patch_set.rb +80 -0
  138. data/lib/yoda/store/objects/tag.rb +62 -0
  139. data/lib/yoda/store/objects/value_object.rb +45 -0
  140. data/lib/yoda/store/project.rb +159 -0
  141. data/lib/yoda/store/query.rb +12 -0
  142. data/lib/yoda/store/query/associators.rb +10 -0
  143. data/lib/yoda/store/query/associators/associate_ancestors.rb +103 -0
  144. data/lib/yoda/store/query/associators/associate_methods.rb +38 -0
  145. data/lib/yoda/store/query/base.rb +16 -0
  146. data/lib/yoda/store/query/find_constant.rb +150 -0
  147. data/lib/yoda/store/query/find_meta_class.rb +18 -0
  148. data/lib/yoda/store/query/find_method.rb +74 -0
  149. data/lib/yoda/store/query/find_signature.rb +43 -0
  150. data/lib/yoda/store/registry.rb +67 -0
  151. data/lib/yoda/store/yard_importer.rb +260 -0
  152. data/lib/yoda/typing.rb +10 -0
  153. data/lib/yoda/typing/context.rb +96 -0
  154. data/lib/yoda/typing/environment.rb +35 -0
  155. data/lib/yoda/typing/evaluator.rb +256 -0
  156. data/lib/yoda/typing/lexical_scope.rb +26 -0
  157. data/lib/yoda/typing/relation.rb +15 -0
  158. data/lib/yoda/typing/traces.rb +9 -0
  159. data/lib/yoda/typing/traces/base.rb +26 -0
  160. data/lib/yoda/typing/traces/normal.rb +22 -0
  161. data/lib/yoda/typing/traces/send.rb +26 -0
  162. data/lib/yoda/version.rb +3 -0
  163. data/lib/yoda/yard_extensions.rb +11 -0
  164. data/lib/yoda/yard_extensions/sig_directive.rb +40 -0
  165. data/lib/yoda/yard_extensions/type_tag.rb +10 -0
  166. data/package.json +76 -0
  167. data/scripts/benchmark.rb +6 -0
  168. data/scripts/build_core_index.sh +16 -0
  169. data/yarn.lock +13 -0
  170. data/yoda-language-server.gemspec +40 -0
  171. metadata +424 -0
@@ -0,0 +1,26 @@
1
+ module Yoda
2
+ module Typing
3
+ module Traces
4
+ # Store evaluation result for each ast node.
5
+ # @abstract
6
+ class Base
7
+ # @return [Array<Store::Objects::Base>]
8
+ def values
9
+ type.resolve(context.registry)
10
+ end
11
+
12
+ # @abstract
13
+ # @return [Model::Types::Base]
14
+ def type
15
+ fail NotImplementedError
16
+ end
17
+
18
+ # @abstract
19
+ # @return [Context]
20
+ def context
21
+ fail NotImplementedError
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ module Yoda
2
+ module Typing
3
+ module Traces
4
+ # Store evaluation result for each ast node.
5
+ class Normal < Base
6
+ attr_reader :context, :type
7
+
8
+ # @param context [Context]
9
+ # @param type [Model::Types::Base]
10
+ def initialize(context, type)
11
+ fail ArgumentError, type unless type.is_a?(Model::Types::Base)
12
+ @context = context
13
+ @type = type
14
+ end
15
+
16
+ def values
17
+ type.resolve(context.registry)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,26 @@
1
+ module Yoda
2
+ module Typing
3
+ module Traces
4
+ # Store evaluation result for each ast node.
5
+ class Send < Base
6
+ # @return [Context]
7
+ attr_reader :context
8
+
9
+ # @return [Array<Model::FunctionSignatures::Base>]
10
+ attr_reader :functions
11
+
12
+ # @return [Model::Types::Base]
13
+ attr_reader :type
14
+
15
+ # @param context [Context]
16
+ # @param functions [Array<Model::FunctionSignatures::Base>]
17
+ # @param type [Array<Model::Types::Base>]
18
+ def initialize(context, functions, type)
19
+ @context = context
20
+ @functions = functions
21
+ @type = type
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,3 @@
1
+ module Yoda
2
+ VERSION = "0.4.0"
3
+ end
@@ -0,0 +1,11 @@
1
+ require 'yard'
2
+
3
+ module Yoda
4
+ module YARDExtensions
5
+ require 'yoda/yard_extensions/sig_directive'
6
+ require 'yoda/yard_extensions/type_tag'
7
+
8
+ YARD::Tags::Library.define_directive(:sig, SigDirective)
9
+ YARD::Tags::Library.define_tag('Type', :type, TypeTag)
10
+ end
11
+ end
@@ -0,0 +1,40 @@
1
+ module Yoda
2
+ module YARDExtensions
3
+ class SigDirective < YARD::Tags::Directive
4
+ def call; end
5
+
6
+ def after_parse
7
+ return unless handler && handler.namespace
8
+ create_object
9
+ end
10
+
11
+ def create_object
12
+ method_name = name
13
+ scope = parser.state.scope || handler.scope
14
+ visibility = parser.state.visibility || handler.visibility
15
+
16
+ method_object = YARD::CodeObjects::MethodObject.new(handler.namespace, method_name, scope)
17
+ method_object.add_tag(TypeTag.new(:type, type_text))
18
+
19
+ unless method_object.files
20
+ # Already registered object
21
+ method_object.signature = "def #{method_name}"
22
+ method_object.dynamic = true
23
+ handler.register_file_info(method_object)
24
+ handler.register_source(method_object)
25
+ handler.register_visibility(method_object, visibility)
26
+ handler.register_group(method_object)
27
+ handler.register_module_function(method_object)
28
+ end
29
+ end
30
+
31
+ def name
32
+ tag.text.split(' ').first
33
+ end
34
+
35
+ def type_text
36
+ tag.text.gsub(/\A\w+\s+/, '')
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,10 @@
1
+ module Yoda
2
+ module YARDExtensions
3
+ class TypeTag < YARD::Tags::Tag
4
+ def parsed_type
5
+ return @parsed_type if instance_variable_defined?('@parsed_type')
6
+ @parsed_type = Parsing::TypeParser.new.safe_parse(text)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "yoda",
3
+ "main": "./client/atom/main.js",
4
+ "version": "0.0.0",
5
+ "description": "Ruby completion engine",
6
+ "keywords": [],
7
+ "repository": "https://github.com/tomoasleep/yoda",
8
+ "license": "MIT",
9
+ "engines": {
10
+ "atom": ">=1.0.0 <2.0.0"
11
+ },
12
+ "dependencies": {
13
+ "atom-languageclient": "^0.9.5"
14
+ },
15
+ "consumedServices": {
16
+ "linter-indie": {
17
+ "versions": {
18
+ "2.0.0": "consumeLinterV2"
19
+ }
20
+ },
21
+ "atom-ide-busy-signal": {
22
+ "versions": {
23
+ "0.1.0": "consumeBusySignal"
24
+ }
25
+ },
26
+ "datatip": {
27
+ "versions": {
28
+ "0.1.0": "consumeDatatip"
29
+ }
30
+ },
31
+ "signature-help": {
32
+ "versions": {
33
+ "0.1.0": "consumeSignatureHelp"
34
+ }
35
+ },
36
+ "consumedServices": {
37
+ "atom-ide-busy-signal": {
38
+ "versions": {
39
+ "0.1.0": "consumeBusySignal"
40
+ }
41
+ }
42
+ }
43
+ },
44
+ "providedServices": {
45
+ "autocomplete.provider": {
46
+ "versions": {
47
+ "2.0.0": "provideAutocomplete"
48
+ }
49
+ },
50
+ "code-format.range": {
51
+ "versions": {
52
+ "0.1.0": "provideCodeFormat"
53
+ }
54
+ },
55
+ "code-highlight": {
56
+ "versions": {
57
+ "0.1.0": "provideCodeHighlight"
58
+ }
59
+ },
60
+ "definitions": {
61
+ "versions": {
62
+ "0.1.0": "provideDefinitions"
63
+ }
64
+ },
65
+ "find-references": {
66
+ "versions": {
67
+ "0.1.0": "provideFindReferences"
68
+ }
69
+ },
70
+ "outline-view": {
71
+ "versions": {
72
+ "0.1.0": "provideOutlines"
73
+ }
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,6 @@
1
+ require 'yoda'
2
+ require 'benchmark'
3
+
4
+ Benchmark.bm do |b|
5
+ b.report { Yoda::Runner::Setup.run(File.expand_path('../spec/support/fixtures', __dir__)) }
6
+ end
@@ -0,0 +1,16 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ BASE_DIR=$(cd $(dirname $(dirname $0)) && pwd)
6
+ RUBY_VERSION=$(BUNDLE_GEMFILE=$BASE_DIR/Gemfile bundle exec ruby -e 'print RUBY_VERSION')
7
+
8
+ mkdir -p ~/.yoda/sources/
9
+ curl "https://cache.ruby-lang.org/pub/ruby/ruby-$RUBY_VERSION.tar.gz" > "/tmp/ruby-$RUBY_VERSION.tar.gz"
10
+ tar xvzf "/tmp/ruby-$RUBY_VERSION.tar.gz" -C ~/.yoda/sources > /dev/null
11
+
12
+ cd ~/.yoda/sources/ruby-$RUBY_VERSION
13
+ BUNDLE_GEMFILE=$BASE_DIR/Gemfile bundle exec yardoc -n *.c
14
+ BUNDLE_GEMFILE=$BASE_DIR/Gemfile bundle exec yardoc -b .yardoc-stdlib -o doc-stdlib -n
15
+
16
+ echo "Complete to build YARD indexes of the core library and standard libraries."
@@ -0,0 +1,13 @@
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ atom-languageclient@^0.7.3:
6
+ version "0.7.3"
7
+ resolved "https://registry.yarnpkg.com/atom-languageclient/-/atom-languageclient-0.7.3.tgz#4d5c859baab3f3394dc45129935b3037719542fb"
8
+ dependencies:
9
+ vscode-jsonrpc "^3.5.0"
10
+
11
+ vscode-jsonrpc@^3.5.0:
12
+ version "3.5.0"
13
+ resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.5.0.tgz#87239d9e166b2d7352245b8a813597804c1d63aa"
@@ -0,0 +1,40 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "yoda/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "yoda-language-server"
8
+ spec.version = Yoda::VERSION
9
+ spec.authors = ["Tomoya Chiba"]
10
+ spec.email = ["tomo.asleep@gmail.com"]
11
+
12
+ spec.summary = %q{Ruby completion engine}
13
+ spec.description = %q{Ruby completion engine inspired by jedi}
14
+ spec.homepage = "https://github.com/tomoasleep/yoda"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_dependency 'yard', '~> 0.9.11'
25
+ spec.add_dependency 'parslet', '~> 1.8'
26
+ spec.add_dependency 'parser', '~> 2.0'
27
+ spec.add_dependency 'language_server-protocol', '~> 3.7.0.0'
28
+ spec.add_dependency 'leveldb', '~> 0.1.9'
29
+ spec.add_dependency 'lmdb', '~> 0.4.8'
30
+ spec.add_dependency 'ruby-progressbar'
31
+
32
+ spec.add_development_dependency "bundler", "~> 1.16"
33
+ spec.add_development_dependency "rake", "~> 10.0"
34
+ spec.add_development_dependency "rspec", "~> 3.0"
35
+ spec.add_development_dependency "rspec-benchmark", "~> 0.3"
36
+ spec.add_development_dependency "pry", "~> 0.11"
37
+ spec.add_development_dependency "pry-rescue", "~> 1.4"
38
+ spec.add_development_dependency "pry-stack_explorer", "~> 0.4"
39
+ spec.add_development_dependency "stackprof"
40
+ end
metadata ADDED
@@ -0,0 +1,424 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yoda-language-server
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
+ platform: ruby
6
+ authors:
7
+ - Tomoya Chiba
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-06-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: yard
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.9.11
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.9.11
27
+ - !ruby/object:Gem::Dependency
28
+ name: parslet
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: parser
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: language_server-protocol
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 3.7.0.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 3.7.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: leveldb
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.9
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.9
83
+ - !ruby/object:Gem::Dependency
84
+ name: lmdb
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.4.8
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.4.8
97
+ - !ruby/object:Gem::Dependency
98
+ name: ruby-progressbar
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: bundler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.16'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.16'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '10.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '10.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rspec-benchmark
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.3'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.3'
167
+ - !ruby/object:Gem::Dependency
168
+ name: pry
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.11'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.11'
181
+ - !ruby/object:Gem::Dependency
182
+ name: pry-rescue
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '1.4'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '1.4'
195
+ - !ruby/object:Gem::Dependency
196
+ name: pry-stack_explorer
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '0.4'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '0.4'
209
+ - !ruby/object:Gem::Dependency
210
+ name: stackprof
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ description: Ruby completion engine inspired by jedi
224
+ email:
225
+ - tomo.asleep@gmail.com
226
+ executables:
227
+ - yoda
228
+ extensions: []
229
+ extra_rdoc_files: []
230
+ files:
231
+ - ".gitignore"
232
+ - ".rspec"
233
+ - ".travis.yml"
234
+ - Gemfile
235
+ - Gemfile.lock
236
+ - LICENSE.txt
237
+ - README.md
238
+ - Rakefile
239
+ - bin/console
240
+ - bin/setup
241
+ - client/atom/main.js
242
+ - client/vscode/.gitignore
243
+ - client/vscode/.vscode/launch.json
244
+ - client/vscode/.vscode/settings.json
245
+ - client/vscode/.vscode/tasks.json
246
+ - client/vscode/.vscodeignore
247
+ - client/vscode/CHANGELOG.md
248
+ - client/vscode/README.md
249
+ - client/vscode/package-lock.json
250
+ - client/vscode/package.json
251
+ - client/vscode/src/extension.ts
252
+ - client/vscode/src/test/extension.test.ts
253
+ - client/vscode/src/test/index.ts
254
+ - client/vscode/tsconfig.json
255
+ - client/vscode/vsc-extension-quickstart.md
256
+ - exe/yoda
257
+ - lib/yoda.rb
258
+ - lib/yoda/evaluation.rb
259
+ - lib/yoda/evaluation/code_completion.rb
260
+ - lib/yoda/evaluation/code_completion/base_provider.rb
261
+ - lib/yoda/evaluation/code_completion/const_provider.rb
262
+ - lib/yoda/evaluation/code_completion/method_provider.rb
263
+ - lib/yoda/evaluation/code_completion/variable_provider.rb
264
+ - lib/yoda/evaluation/comment_completion.rb
265
+ - lib/yoda/evaluation/comment_completion/base_provider.rb
266
+ - lib/yoda/evaluation/comment_completion/param_provider.rb
267
+ - lib/yoda/evaluation/comment_completion/tag_provider.rb
268
+ - lib/yoda/evaluation/comment_completion/type_provider.rb
269
+ - lib/yoda/evaluation/current_node_explain.rb
270
+ - lib/yoda/evaluation/evaluator.rb
271
+ - lib/yoda/evaluation/signature_discovery.rb
272
+ - lib/yoda/model.rb
273
+ - lib/yoda/model/completion_item.rb
274
+ - lib/yoda/model/descriptions.rb
275
+ - lib/yoda/model/descriptions/base.rb
276
+ - lib/yoda/model/descriptions/function_description.rb
277
+ - lib/yoda/model/descriptions/value_description.rb
278
+ - lib/yoda/model/descriptions/word_description.rb
279
+ - lib/yoda/model/function_signatures.rb
280
+ - lib/yoda/model/function_signatures/base.rb
281
+ - lib/yoda/model/function_signatures/constructor.rb
282
+ - lib/yoda/model/function_signatures/formatter.rb
283
+ - lib/yoda/model/function_signatures/method.rb
284
+ - lib/yoda/model/function_signatures/overload.rb
285
+ - lib/yoda/model/function_signatures/parameter_list.rb
286
+ - lib/yoda/model/function_signatures/type_builder.rb
287
+ - lib/yoda/model/node_signature.rb
288
+ - lib/yoda/model/path.rb
289
+ - lib/yoda/model/scoped_path.rb
290
+ - lib/yoda/model/types.rb
291
+ - lib/yoda/model/types/any_type.rb
292
+ - lib/yoda/model/types/base.rb
293
+ - lib/yoda/model/types/duck_type.rb
294
+ - lib/yoda/model/types/function_type.rb
295
+ - lib/yoda/model/types/generic_type.rb
296
+ - lib/yoda/model/types/instance_type.rb
297
+ - lib/yoda/model/types/module_type.rb
298
+ - lib/yoda/model/types/sequence_type.rb
299
+ - lib/yoda/model/types/union_type.rb
300
+ - lib/yoda/model/types/unknown_type.rb
301
+ - lib/yoda/model/types/value_type.rb
302
+ - lib/yoda/model/values.rb
303
+ - lib/yoda/model/values/base.rb
304
+ - lib/yoda/model/values/instance_value.rb
305
+ - lib/yoda/model/values/module_value.rb
306
+ - lib/yoda/parsing.rb
307
+ - lib/yoda/parsing/ast_traversable.rb
308
+ - lib/yoda/parsing/comment_tokenizer.rb
309
+ - lib/yoda/parsing/location.rb
310
+ - lib/yoda/parsing/node_objects.rb
311
+ - lib/yoda/parsing/node_objects/const_node.rb
312
+ - lib/yoda/parsing/node_objects/method_definition.rb
313
+ - lib/yoda/parsing/node_objects/namespace.rb
314
+ - lib/yoda/parsing/node_objects/send_node.rb
315
+ - lib/yoda/parsing/parser.rb
316
+ - lib/yoda/parsing/query.rb
317
+ - lib/yoda/parsing/query/current_comment_query.rb
318
+ - lib/yoda/parsing/query/current_comment_token_query.rb
319
+ - lib/yoda/parsing/query/current_commenting_node_query.rb
320
+ - lib/yoda/parsing/query/current_location_node_query.rb
321
+ - lib/yoda/parsing/query/current_node_comment_query.rb
322
+ - lib/yoda/parsing/range.rb
323
+ - lib/yoda/parsing/scopes.rb
324
+ - lib/yoda/parsing/scopes/base.rb
325
+ - lib/yoda/parsing/scopes/builder.rb
326
+ - lib/yoda/parsing/scopes/class_definition.rb
327
+ - lib/yoda/parsing/scopes/meta_class_definition.rb
328
+ - lib/yoda/parsing/scopes/meta_method_definition.rb
329
+ - lib/yoda/parsing/scopes/method_definition.rb
330
+ - lib/yoda/parsing/scopes/module_definition.rb
331
+ - lib/yoda/parsing/scopes/root.rb
332
+ - lib/yoda/parsing/source_analyzer.rb
333
+ - lib/yoda/parsing/source_cutter.rb
334
+ - lib/yoda/parsing/type_parser.rb
335
+ - lib/yoda/runner.rb
336
+ - lib/yoda/runner/infer.rb
337
+ - lib/yoda/runner/setup.rb
338
+ - lib/yoda/server.rb
339
+ - lib/yoda/server/client_info.rb
340
+ - lib/yoda/server/completion_provider.rb
341
+ - lib/yoda/server/definition_provider.rb
342
+ - lib/yoda/server/deserializer.rb
343
+ - lib/yoda/server/hover_provider.rb
344
+ - lib/yoda/server/signature_provider.rb
345
+ - lib/yoda/store.rb
346
+ - lib/yoda/store/actions.rb
347
+ - lib/yoda/store/actions/import_core_library.rb
348
+ - lib/yoda/store/actions/import_gems.rb
349
+ - lib/yoda/store/actions/read_file.rb
350
+ - lib/yoda/store/actions/read_project_files.rb
351
+ - lib/yoda/store/adapters.rb
352
+ - lib/yoda/store/adapters/base.rb
353
+ - lib/yoda/store/adapters/leveldb_adapter.rb
354
+ - lib/yoda/store/adapters/lmdb_adapter.rb
355
+ - lib/yoda/store/objects.rb
356
+ - lib/yoda/store/objects/addressable.rb
357
+ - lib/yoda/store/objects/base.rb
358
+ - lib/yoda/store/objects/class_object.rb
359
+ - lib/yoda/store/objects/merger.rb
360
+ - lib/yoda/store/objects/meta_class_object.rb
361
+ - lib/yoda/store/objects/method_object.rb
362
+ - lib/yoda/store/objects/module_object.rb
363
+ - lib/yoda/store/objects/namespace_object.rb
364
+ - lib/yoda/store/objects/overload.rb
365
+ - lib/yoda/store/objects/patch.rb
366
+ - lib/yoda/store/objects/patch_set.rb
367
+ - lib/yoda/store/objects/tag.rb
368
+ - lib/yoda/store/objects/value_object.rb
369
+ - lib/yoda/store/project.rb
370
+ - lib/yoda/store/query.rb
371
+ - lib/yoda/store/query/associators.rb
372
+ - lib/yoda/store/query/associators/associate_ancestors.rb
373
+ - lib/yoda/store/query/associators/associate_methods.rb
374
+ - lib/yoda/store/query/base.rb
375
+ - lib/yoda/store/query/find_constant.rb
376
+ - lib/yoda/store/query/find_meta_class.rb
377
+ - lib/yoda/store/query/find_method.rb
378
+ - lib/yoda/store/query/find_signature.rb
379
+ - lib/yoda/store/registry.rb
380
+ - lib/yoda/store/yard_importer.rb
381
+ - lib/yoda/typing.rb
382
+ - lib/yoda/typing/context.rb
383
+ - lib/yoda/typing/environment.rb
384
+ - lib/yoda/typing/evaluator.rb
385
+ - lib/yoda/typing/lexical_scope.rb
386
+ - lib/yoda/typing/relation.rb
387
+ - lib/yoda/typing/traces.rb
388
+ - lib/yoda/typing/traces/base.rb
389
+ - lib/yoda/typing/traces/normal.rb
390
+ - lib/yoda/typing/traces/send.rb
391
+ - lib/yoda/version.rb
392
+ - lib/yoda/yard_extensions.rb
393
+ - lib/yoda/yard_extensions/sig_directive.rb
394
+ - lib/yoda/yard_extensions/type_tag.rb
395
+ - package.json
396
+ - scripts/benchmark.rb
397
+ - scripts/build_core_index.sh
398
+ - yarn.lock
399
+ - yoda-language-server.gemspec
400
+ homepage: https://github.com/tomoasleep/yoda
401
+ licenses:
402
+ - MIT
403
+ metadata: {}
404
+ post_install_message:
405
+ rdoc_options: []
406
+ require_paths:
407
+ - lib
408
+ required_ruby_version: !ruby/object:Gem::Requirement
409
+ requirements:
410
+ - - ">="
411
+ - !ruby/object:Gem::Version
412
+ version: '0'
413
+ required_rubygems_version: !ruby/object:Gem::Requirement
414
+ requirements:
415
+ - - ">="
416
+ - !ruby/object:Gem::Version
417
+ version: '0'
418
+ requirements: []
419
+ rubyforge_project:
420
+ rubygems_version: 2.7.3
421
+ signing_key:
422
+ specification_version: 4
423
+ summary: Ruby completion engine
424
+ test_files: []