typeprof 0.21.11 → 0.30.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -31
- data/bin/typeprof +5 -0
- data/doc/doc.ja.md +134 -0
- data/doc/doc.md +136 -0
- data/lib/typeprof/cli/cli.rb +178 -0
- data/lib/typeprof/cli.rb +3 -133
- data/lib/typeprof/code_range.rb +112 -0
- data/lib/typeprof/core/ast/base.rb +263 -0
- data/lib/typeprof/core/ast/call.rb +259 -0
- data/lib/typeprof/core/ast/const.rb +126 -0
- data/lib/typeprof/core/ast/control.rb +433 -0
- data/lib/typeprof/core/ast/meta.rb +150 -0
- data/lib/typeprof/core/ast/method.rb +339 -0
- data/lib/typeprof/core/ast/misc.rb +263 -0
- data/lib/typeprof/core/ast/module.rb +123 -0
- data/lib/typeprof/core/ast/pattern.rb +140 -0
- data/lib/typeprof/core/ast/sig_decl.rb +471 -0
- data/lib/typeprof/core/ast/sig_type.rb +663 -0
- data/lib/typeprof/core/ast/value.rb +319 -0
- data/lib/typeprof/core/ast/variable.rb +315 -0
- data/lib/typeprof/core/ast.rb +472 -0
- data/lib/typeprof/core/builtin.rb +146 -0
- data/lib/typeprof/core/env/method.rb +137 -0
- data/lib/typeprof/core/env/method_entity.rb +55 -0
- data/lib/typeprof/core/env/module_entity.rb +408 -0
- data/lib/typeprof/core/env/static_read.rb +155 -0
- data/lib/typeprof/core/env/type_alias_entity.rb +27 -0
- data/lib/typeprof/core/env/value_entity.rb +32 -0
- data/lib/typeprof/core/env.rb +366 -0
- data/lib/typeprof/core/graph/box.rb +998 -0
- data/lib/typeprof/core/graph/change_set.rb +224 -0
- data/lib/typeprof/core/graph/filter.rb +155 -0
- data/lib/typeprof/core/graph/vertex.rb +225 -0
- data/lib/typeprof/core/service.rb +514 -0
- data/lib/typeprof/core/type.rb +352 -0
- data/lib/typeprof/core/util.rb +81 -0
- data/lib/typeprof/core.rb +31 -0
- data/lib/typeprof/diagnostic.rb +35 -0
- data/lib/typeprof/lsp/messages.rb +415 -0
- data/lib/typeprof/lsp/server.rb +203 -0
- data/lib/typeprof/lsp/text.rb +69 -0
- data/lib/typeprof/lsp/util.rb +51 -0
- data/lib/typeprof/lsp.rb +4 -907
- data/lib/typeprof/version.rb +1 -1
- data/lib/typeprof.rb +4 -18
- data/typeprof.gemspec +5 -7
- metadata +47 -33
- data/.github/dependabot.yml +0 -6
- data/.github/workflows/main.yml +0 -39
- data/.gitignore +0 -9
- data/Gemfile +0 -17
- data/Gemfile.lock +0 -41
- data/Rakefile +0 -10
- data/exe/typeprof +0 -10
- data/lib/typeprof/analyzer.rb +0 -2598
- data/lib/typeprof/arguments.rb +0 -414
- data/lib/typeprof/block.rb +0 -176
- data/lib/typeprof/builtin.rb +0 -893
- data/lib/typeprof/code-range.rb +0 -177
- data/lib/typeprof/config.rb +0 -158
- data/lib/typeprof/container-type.rb +0 -912
- data/lib/typeprof/export.rb +0 -589
- data/lib/typeprof/import.rb +0 -852
- data/lib/typeprof/insns-def.rb +0 -65
- data/lib/typeprof/iseq.rb +0 -864
- data/lib/typeprof/method.rb +0 -355
- data/lib/typeprof/type.rb +0 -1140
- data/lib/typeprof/utils.rb +0 -212
- data/tools/coverage.rb +0 -14
- data/tools/setup-insns-def.rb +0 -30
- data/typeprof-lsp +0 -3
@@ -0,0 +1,51 @@
|
|
1
|
+
module TypeProf::LSP
|
2
|
+
def self.load_json_with_comments(path, **opts)
|
3
|
+
json = File.read(path)
|
4
|
+
|
5
|
+
state = :normal
|
6
|
+
last_comma_index = nil
|
7
|
+
trailing_commas = []
|
8
|
+
json = json.gsub(%r(\\.|//|/\*|\*/|[",\n/}\]*]|(\s+)|[^\s\\"*/,]+)) do
|
9
|
+
case $&
|
10
|
+
when "//"
|
11
|
+
state = :single_line_comment if state == :normal
|
12
|
+
when "\n"
|
13
|
+
state = :normal if state == :single_line_comment
|
14
|
+
next "\n"
|
15
|
+
when "/*"
|
16
|
+
state = :multi_line_comment if state == :normal
|
17
|
+
when "*/"
|
18
|
+
state = :normal if state == :multi_line_comment
|
19
|
+
next " " if state == :normal
|
20
|
+
when "\""
|
21
|
+
case state
|
22
|
+
when :normal
|
23
|
+
last_comma_index = nil
|
24
|
+
state = :string_literal
|
25
|
+
when :string_literal
|
26
|
+
state = :normal
|
27
|
+
end
|
28
|
+
when ","
|
29
|
+
last_comma_index = $~.begin(0) if state == :normal
|
30
|
+
when "}", "]"
|
31
|
+
if state == :normal && last_comma_index
|
32
|
+
trailing_commas << last_comma_index
|
33
|
+
last_comma_index = nil
|
34
|
+
end
|
35
|
+
when $1
|
36
|
+
else
|
37
|
+
last_comma_index = nil if state == :normal
|
38
|
+
end
|
39
|
+
if state == :normal || state == :string_literal
|
40
|
+
$&
|
41
|
+
else
|
42
|
+
" " * $&.size
|
43
|
+
end
|
44
|
+
end
|
45
|
+
trailing_commas.each do |i|
|
46
|
+
json[i] = " "
|
47
|
+
end
|
48
|
+
|
49
|
+
JSON.parse(json, **opts)
|
50
|
+
end
|
51
|
+
end
|