rbs-inline 0.2.0 → 0.3.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/lib/rbs/inline/ast/declarations.rb +2 -12
- data/lib/rbs/inline/cli.rb +17 -4
- data/lib/rbs/inline/parser.rb +13 -7
- data/lib/rbs/inline/version.rb +1 -1
- data/rbs_collection.lock.yaml +2 -2
- data/sig/generated/rbs/inline/parser.rbs +3 -2
- metadata +12 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44afba2006b4ffed3719716d5ac515d474dc7ba9ee18c4f9b3298c9925441284
|
4
|
+
data.tar.gz: 2c008cd99c1de1a2cb80945eed727b74fe9450af07fd3d20299775d5ee728978
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7d02d3e07d295c00890ac95bad4c2f7f49700a0cdddb9885dcc3c194d272ef5b387c168f675a46f2b5dc3f49aaeb5230603dbe7ebcea20087952aebb7516b66
|
7
|
+
data.tar.gz: 6e476d54d6db64e42cdc7a6bfe9dfb5b1454f290e2746836cc17fe77ca41db5dac2b1a01d311877af189ee7ad2bd06207f1db2aaac86e1e494dd5855e921254d
|
@@ -9,18 +9,8 @@ module RBS
|
|
9
9
|
# @rbs returns TypeName?
|
10
10
|
def type_name(node)
|
11
11
|
case node
|
12
|
-
when Prism::ConstantReadNode
|
13
|
-
TypeName(node.
|
14
|
-
when Prism::ConstantPathNode
|
15
|
-
if node.parent
|
16
|
-
if parent = type_name(node.parent)
|
17
|
-
if child = type_name(node.child)
|
18
|
-
return parent + child
|
19
|
-
end
|
20
|
-
end
|
21
|
-
else
|
22
|
-
type_name(node.child)&.absolute!
|
23
|
-
end
|
12
|
+
when Prism::ConstantReadNode, Prism::ConstantPathNode
|
13
|
+
TypeName(node.full_name)
|
24
14
|
end
|
25
15
|
end
|
26
16
|
end
|
data/lib/rbs/inline/cli.rb
CHANGED
@@ -72,15 +72,28 @@ module RBS
|
|
72
72
|
def run(args)
|
73
73
|
base_paths = [Pathname("lib"), Pathname("app")]
|
74
74
|
output_path = nil #: Pathname?
|
75
|
+
opt_in = true
|
75
76
|
|
76
77
|
OptionParser.new do |opts|
|
77
|
-
opts.on("--base=
|
78
|
+
opts.on("--base=BASE", "The path to calculate relative path of files (defaults to #{base_paths.join(File::PATH_SEPARATOR)})") do |str|
|
78
79
|
# @type var str: String
|
79
80
|
base_paths = str.split(File::PATH_SEPARATOR).map {|path| Pathname(path) }
|
80
81
|
end
|
81
82
|
|
82
|
-
opts.on("--output=
|
83
|
-
|
83
|
+
opts.on("--output[=DEST]", "Save the generated RBS files under `sig/generated` or DEST if specified (defaults to output to STDOUT)") do
|
84
|
+
if _1
|
85
|
+
output_path = Pathname(_1)
|
86
|
+
else
|
87
|
+
output_path = Pathname("sig/generated")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
opts.on("--opt-out", "Generates RBS files by default. Opt-out with `# rbs_inline: disabled` comment") do
|
92
|
+
opt_in = false
|
93
|
+
end
|
94
|
+
|
95
|
+
opts.on("--opt-in", "Generates RBS files only for files with `# rbs_inline: enabled` comment (default)") do
|
96
|
+
opt_in = true
|
84
97
|
end
|
85
98
|
|
86
99
|
opts.on("--verbose") do
|
@@ -126,7 +139,7 @@ module RBS
|
|
126
139
|
|
127
140
|
logger.debug { "Parsing ruby file #{target}..." }
|
128
141
|
|
129
|
-
if (uses, decls = Parser.parse(Prism.parse_file(target.to_s)))
|
142
|
+
if (uses, decls = Parser.parse(Prism.parse_file(target.to_s), opt_in: opt_in))
|
130
143
|
writer = Writer.new()
|
131
144
|
writer.header("Generated from #{target.relative? ? target : target.relative_path_from(Pathname.pwd)} with RBS::Inline")
|
132
145
|
writer.write(uses, decls)
|
data/lib/rbs/inline/parser.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# rbs_inline: enabled
|
2
|
+
|
1
3
|
# @rbs use Prism::*
|
2
4
|
|
3
5
|
module RBS
|
@@ -36,22 +38,26 @@ module RBS
|
|
36
38
|
@comments = {}
|
37
39
|
end
|
38
40
|
|
39
|
-
# @rbs result: ParseResult
|
41
|
+
# @rbs result: ParseResult
|
42
|
+
# @rbs opt_in: bool -- `true` for *opt-out* mode, `false` for *opt-in* mode.
|
40
43
|
# @rbs returns [Array[AST::Annotations::Use], Array[AST::Declarations::t]]?
|
41
|
-
def self.parse(result)
|
44
|
+
def self.parse(result, opt_in:)
|
42
45
|
instance = Parser.new()
|
43
46
|
|
44
|
-
# pp result
|
45
|
-
|
46
47
|
annots = AnnotationParser.parse(result.comments)
|
47
48
|
annots.each do |result|
|
48
49
|
instance.comments[result.line_range.end] = result
|
49
50
|
end
|
50
51
|
|
51
|
-
|
52
|
-
|
52
|
+
with_enable_magic_comment = result.comments.any? {|comment| comment.location.slice =~ /\A# rbs_inline: enabled\Z/}
|
53
|
+
with_disable_magic_comment = result.comments.any? {|comment| comment.location.slice =~ /\A# rbs_inline: disabled\Z/}
|
53
54
|
|
54
|
-
return
|
55
|
+
return if with_disable_magic_comment # Skips if `rbs_inline: disabled`
|
56
|
+
|
57
|
+
if opt_in
|
58
|
+
# opt-in means the `rbs_inline: enable` is required.
|
59
|
+
return unless with_enable_magic_comment
|
60
|
+
end
|
55
61
|
|
56
62
|
uses = [] #: Array[AST::Annotations::Use]
|
57
63
|
annots.each do |annot|
|
data/lib/rbs/inline/version.rb
CHANGED
data/rbs_collection.lock.yaml
CHANGED
@@ -38,7 +38,7 @@ gems:
|
|
38
38
|
source:
|
39
39
|
type: stdlib
|
40
40
|
- name: prism
|
41
|
-
version: 0.
|
41
|
+
version: 0.29.0
|
42
42
|
source:
|
43
43
|
type: rubygems
|
44
44
|
- name: rake
|
@@ -46,7 +46,7 @@ gems:
|
|
46
46
|
source:
|
47
47
|
type: git
|
48
48
|
name: ruby/gem_rbs_collection
|
49
|
-
revision:
|
49
|
+
revision: 7a105f52053ce1c708b605dfa9c1ab8473424036
|
50
50
|
remote: https://github.com/ruby/gem_rbs_collection.git
|
51
51
|
repo_dir: gems
|
52
52
|
- name: rbs
|
@@ -30,9 +30,10 @@ module RBS
|
|
30
30
|
|
31
31
|
def initialize: () -> void
|
32
32
|
|
33
|
-
# @rbs result: ParseResult
|
33
|
+
# @rbs result: ParseResult
|
34
|
+
# @rbs opt_in: bool -- `true` for *opt-out* mode, `false` for *opt-in* mode.
|
34
35
|
# @rbs returns [Array[AST::Annotations::Use], Array[AST::Declarations::t]]?
|
35
|
-
def self.parse: (ParseResult
|
36
|
+
def self.parse: (ParseResult result, opt_in: bool) -> [ Array[AST::Annotations::Use], Array[AST::Declarations::t] ]?
|
36
37
|
|
37
38
|
# @rbs returns AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl | nil
|
38
39
|
def current_class_module_decl: () -> (AST::Declarations::ModuleDecl | AST::Declarations::ClassDecl | nil)
|
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbs-inline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: prism
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.29'
|
20
|
+
- - "<"
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
22
|
+
version: '0.30'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.29'
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
32
|
+
version: '0.30'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rbs
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|