ruby-next-core 0.13.0 → 0.14.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/CHANGELOG.md +40 -0
- data/README.md +31 -5
- data/bin/transform +5 -1
- data/lib/.rbnext/2.1/ruby-next/core.rb +7 -1
- data/lib/.rbnext/2.1/ruby-next/language.rb +41 -23
- data/lib/.rbnext/2.3/ruby-next/commands/nextify.rb +2 -2
- data/lib/.rbnext/2.3/ruby-next/language/eval.rb +1 -0
- data/lib/.rbnext/2.3/ruby-next/language/rewriters/{endless_range.rb → 2.6/endless_range.rb} +0 -0
- data/lib/.rbnext/2.3/ruby-next/language/rewriters/{pattern_matching.rb → 2.7/pattern_matching.rb} +53 -7
- data/lib/.rbnext/2.3/ruby-next/language/rewriters/3.1/anonymous_block.rb +68 -0
- data/lib/.rbnext/2.3/ruby-next/language/rewriters/base.rb +13 -1
- data/lib/.rbnext/2.7/ruby-next/core.rb +7 -1
- data/lib/ruby-next/commands/nextify.rb +2 -2
- data/lib/ruby-next/config.rb +2 -2
- data/lib/ruby-next/core/enumerable/compact.rb +22 -0
- data/lib/ruby-next/core/integer/try_convert.rb +16 -0
- data/lib/ruby-next/core/matchdata/match.rb +9 -0
- data/lib/ruby-next/core/refinement/import.rb +60 -0
- data/lib/ruby-next/core.rb +7 -1
- data/lib/ruby-next/language/eval.rb +1 -0
- data/lib/ruby-next/language/rewriters/{numeric_literals.rb → 2.1/numeric_literals.rb} +0 -0
- data/lib/ruby-next/language/rewriters/{required_kwargs.rb → 2.1/required_kwargs.rb} +0 -0
- data/lib/ruby-next/language/rewriters/{safe_navigation.rb → 2.3/safe_navigation.rb} +0 -0
- data/lib/ruby-next/language/rewriters/{squiggly_heredoc.rb → 2.3/squiggly_heredoc.rb} +0 -0
- data/lib/ruby-next/language/rewriters/{runtime → 2.4}/dir.rb +0 -0
- data/lib/ruby-next/language/rewriters/{endless_range.rb → 2.6/endless_range.rb} +0 -0
- data/lib/ruby-next/language/rewriters/{args_forward.rb → 2.7/args_forward.rb} +0 -0
- data/lib/ruby-next/language/rewriters/{numbered_params.rb → 2.7/numbered_params.rb} +0 -0
- data/lib/ruby-next/language/rewriters/{pattern_matching.rb → 2.7/pattern_matching.rb} +53 -7
- data/lib/ruby-next/language/rewriters/{args_forward_leading.rb → 3.0/args_forward_leading.rb} +0 -0
- data/lib/ruby-next/language/rewriters/{endless_method.rb → 3.0/endless_method.rb} +15 -12
- data/lib/ruby-next/language/rewriters/{find_pattern.rb → 3.0/find_pattern.rb} +1 -3
- data/lib/ruby-next/language/rewriters/3.0/in_pattern.rb +22 -0
- data/lib/ruby-next/language/rewriters/3.1/anonymous_block.rb +68 -0
- data/lib/ruby-next/language/rewriters/3.1/endless_method_command.rb +46 -0
- data/lib/ruby-next/language/rewriters/3.1/oneline_pattern_parensless.rb +41 -0
- data/lib/ruby-next/language/rewriters/3.1/pin_vars_pattern.rb +50 -0
- data/lib/ruby-next/language/rewriters/3.1/refinement_import_methods.rb +60 -0
- data/lib/ruby-next/language/rewriters/{shorthand_hash.rb → 3.1/shorthand_hash.rb} +6 -4
- data/lib/ruby-next/language/rewriters/base.rb +13 -1
- data/lib/ruby-next/language/{edge.rb → rewriters/edge.rb} +0 -0
- data/lib/ruby-next/language/rewriters/proposed/bind_vars_pattern.rb +50 -0
- data/lib/ruby-next/language/rewriters/{method_reference.rb → proposed/method_reference.rb} +0 -0
- data/lib/ruby-next/language/rewriters/proposed.rb +9 -0
- data/lib/ruby-next/language/rewriters/runtime.rb +1 -2
- data/lib/ruby-next/language/setup.rb +2 -1
- data/lib/ruby-next/language.rb +41 -23
- data/lib/ruby-next/rubocop.rb +24 -4
- data/lib/ruby-next/version.rb +1 -1
- metadata +35 -24
- data/lib/ruby-next/language/proposed.rb +0 -9
- data/lib/ruby-next/language/rewriters/in_pattern.rb +0 -56
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RubyNext
|
|
4
|
+
module Language
|
|
5
|
+
module Rewriters
|
|
6
|
+
using RubyNext
|
|
7
|
+
|
|
8
|
+
# Separate pattern matching rewriter for Ruby <3.2 to
|
|
9
|
+
# transpile patterns with variable (instance, class, global) binding
|
|
10
|
+
class BindVarsPattern < PatternMatching
|
|
11
|
+
NAME = "pattern-matching-find-pattern"
|
|
12
|
+
SYNTAX_PROBE = "case 0; in @a; true; else; 1; end"
|
|
13
|
+
MIN_SUPPORTED_VERSION = Gem::Version.new(RubyNext::NEXT_VERSION)
|
|
14
|
+
|
|
15
|
+
def on_case_match(node)
|
|
16
|
+
@has_vars_pattern = false
|
|
17
|
+
process_regular_node(node).then do |new_node|
|
|
18
|
+
return new_node unless has_vars_pattern
|
|
19
|
+
super(node)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def on_match_pattern(node)
|
|
24
|
+
@has_vars_pattern = false
|
|
25
|
+
process_regular_node(node).then do |new_node|
|
|
26
|
+
return new_node unless has_vars_pattern
|
|
27
|
+
super(node)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def on_match_pattern_p(node)
|
|
32
|
+
@has_vars_pattern = false
|
|
33
|
+
process_regular_node(node).then do |new_node|
|
|
34
|
+
return new_node unless has_vars_pattern
|
|
35
|
+
super(node)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def on_match_var(node)
|
|
40
|
+
@has_vars_pattern = true if node.children[0].is_a?(::Parser::AST::Node)
|
|
41
|
+
super(node)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
attr_reader :has_vars_pattern
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Load experimental, proposed etc. Ruby features
|
|
4
|
+
|
|
5
|
+
require "ruby-next/language/rewriters/proposed/method_reference"
|
|
6
|
+
RubyNext::Language.rewriters << RubyNext::Language::Rewriters::MethodReference
|
|
7
|
+
|
|
8
|
+
require "ruby-next/language/rewriters/proposed/bind_vars_pattern"
|
|
9
|
+
RubyNext::Language.rewriters << RubyNext::Language::Rewriters::BindVarsPattern
|
|
@@ -50,7 +50,8 @@ module RubyNext
|
|
|
50
50
|
GemTranspiler.maybe_transpile(File.dirname(dirname), lib_dir, next_dirname) if transpile
|
|
51
51
|
|
|
52
52
|
current_index = $LOAD_PATH.find_index do |load_path|
|
|
53
|
-
Pathname.new(load_path)
|
|
53
|
+
pn = Pathname.new(load_path)
|
|
54
|
+
pn.exist? && pn.realpath.to_s == dirname
|
|
54
55
|
end
|
|
55
56
|
|
|
56
57
|
raise "Gem's lib is not in the $LOAD_PATH: #{dirname}" if current_index.nil?
|
data/lib/ruby-next/language.rb
CHANGED
|
@@ -174,54 +174,72 @@ module RubyNext
|
|
|
174
174
|
|
|
175
175
|
require "ruby-next/language/rewriters/base"
|
|
176
176
|
|
|
177
|
-
require "ruby-next/language/rewriters/
|
|
177
|
+
require "ruby-next/language/rewriters/2.1/numeric_literals"
|
|
178
|
+
rewriters << Rewriters::NumericLiterals
|
|
179
|
+
|
|
180
|
+
require "ruby-next/language/rewriters/2.1/required_kwargs"
|
|
181
|
+
rewriters << Rewriters::RequiredKwargs
|
|
182
|
+
|
|
183
|
+
require "ruby-next/language/rewriters/2.3/squiggly_heredoc"
|
|
178
184
|
rewriters << Rewriters::SquigglyHeredoc
|
|
179
185
|
|
|
180
|
-
require "ruby-next/language/rewriters/safe_navigation"
|
|
186
|
+
require "ruby-next/language/rewriters/2.3/safe_navigation"
|
|
181
187
|
rewriters << Rewriters::SafeNavigation
|
|
182
188
|
|
|
183
|
-
require "ruby-next/language/rewriters/
|
|
184
|
-
rewriters << Rewriters::
|
|
189
|
+
require "ruby-next/language/rewriters/2.7/args_forward"
|
|
190
|
+
rewriters << Rewriters::ArgsForward
|
|
185
191
|
|
|
186
|
-
require "ruby-next/language/rewriters/
|
|
187
|
-
rewriters << Rewriters::
|
|
192
|
+
require "ruby-next/language/rewriters/2.7/numbered_params"
|
|
193
|
+
rewriters << Rewriters::NumberedParams
|
|
188
194
|
|
|
189
|
-
require "ruby-next/language/rewriters/
|
|
190
|
-
rewriters << Rewriters::
|
|
195
|
+
require "ruby-next/language/rewriters/2.7/pattern_matching"
|
|
196
|
+
rewriters << Rewriters::PatternMatching
|
|
191
197
|
|
|
192
198
|
# Must be added after general args forward rewriter to become
|
|
193
199
|
# no-op in Ruby <2.7
|
|
194
|
-
require "ruby-next/language/rewriters/args_forward_leading"
|
|
200
|
+
require "ruby-next/language/rewriters/3.0/args_forward_leading"
|
|
195
201
|
rewriters << Rewriters::ArgsForwardLeading
|
|
196
202
|
|
|
197
|
-
require "ruby-next/language/rewriters/numbered_params"
|
|
198
|
-
rewriters << Rewriters::NumberedParams
|
|
199
|
-
|
|
200
|
-
require "ruby-next/language/rewriters/pattern_matching"
|
|
201
|
-
rewriters << Rewriters::PatternMatching
|
|
202
|
-
|
|
203
203
|
# Must be added after general pattern matching rewriter to become
|
|
204
204
|
# no-op in Ruby <2.7
|
|
205
|
-
require "ruby-next/language/rewriters/find_pattern"
|
|
205
|
+
require "ruby-next/language/rewriters/3.0/find_pattern"
|
|
206
206
|
rewriters << Rewriters::FindPattern
|
|
207
207
|
|
|
208
|
-
require "ruby-next/language/rewriters/in_pattern"
|
|
208
|
+
require "ruby-next/language/rewriters/3.0/in_pattern"
|
|
209
209
|
rewriters << Rewriters::InPattern
|
|
210
210
|
|
|
211
|
+
require "ruby-next/language/rewriters/3.0/endless_method"
|
|
212
|
+
RubyNext::Language.rewriters << RubyNext::Language::Rewriters::EndlessMethod
|
|
213
|
+
|
|
214
|
+
require "ruby-next/language/rewriters/3.1/oneline_pattern_parensless"
|
|
215
|
+
rewriters << Rewriters::OnelinePatternParensless
|
|
216
|
+
|
|
217
|
+
require "ruby-next/language/rewriters/3.1/pin_vars_pattern"
|
|
218
|
+
rewriters << Rewriters::PinVarsPattern
|
|
219
|
+
|
|
220
|
+
require "ruby-next/language/rewriters/3.1/anonymous_block"
|
|
221
|
+
rewriters << Rewriters::AnonymousBlock
|
|
222
|
+
|
|
223
|
+
require "ruby-next/language/rewriters/3.1/refinement_import_methods"
|
|
224
|
+
rewriters << Rewriters::RefinementImportMethods
|
|
225
|
+
|
|
226
|
+
require "ruby-next/language/rewriters/3.1/endless_method_command"
|
|
227
|
+
rewriters << Rewriters::EndlessMethodCommand
|
|
228
|
+
|
|
229
|
+
require "ruby-next/language/rewriters/3.1/shorthand_hash"
|
|
230
|
+
rewriters << RubyNext::Language::Rewriters::ShorthandHash
|
|
231
|
+
|
|
211
232
|
# Put endless range in the end, 'cause Parser fails to parse it in
|
|
212
233
|
# pattern matching
|
|
213
|
-
require "ruby-next/language/rewriters/endless_range"
|
|
234
|
+
require "ruby-next/language/rewriters/2.6/endless_range"
|
|
214
235
|
rewriters << Rewriters::EndlessRange
|
|
215
236
|
|
|
216
|
-
require "ruby-next/language/rewriters/endless_method"
|
|
217
|
-
RubyNext::Language.rewriters << RubyNext::Language::Rewriters::EndlessMethod
|
|
218
|
-
|
|
219
237
|
if ENV["RUBY_NEXT_EDGE"] == "1"
|
|
220
|
-
require "ruby-next/language/edge"
|
|
238
|
+
require "ruby-next/language/rewriters/edge"
|
|
221
239
|
end
|
|
222
240
|
|
|
223
241
|
if ENV["RUBY_NEXT_PROPOSED"] == "1"
|
|
224
|
-
require "ruby-next/language/proposed"
|
|
242
|
+
require "ruby-next/language/rewriters/proposed"
|
|
225
243
|
end
|
|
226
244
|
end
|
|
227
245
|
end
|
data/lib/ruby-next/rubocop.rb
CHANGED
|
@@ -79,10 +79,6 @@ module RuboCop
|
|
|
79
79
|
trigger_responding_cops(:on_meth_ref, node)
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
def on_ipair(node)
|
|
83
|
-
trigger_responding_cops(:on_ipair, node)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
82
|
unless method_defined?(:on_numblock)
|
|
87
83
|
def on_numblock(node)
|
|
88
84
|
children = node.children
|
|
@@ -108,6 +104,21 @@ module RuboCop
|
|
|
108
104
|
end
|
|
109
105
|
end
|
|
110
106
|
|
|
107
|
+
Commissioner.prepend(Module.new do
|
|
108
|
+
# Ignore anonymous blocks
|
|
109
|
+
def on_block_pass(node)
|
|
110
|
+
return if node.children == [nil]
|
|
111
|
+
|
|
112
|
+
super
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def on_blockarg(node)
|
|
116
|
+
return if node.children == [nil]
|
|
117
|
+
|
|
118
|
+
super
|
|
119
|
+
end
|
|
120
|
+
end)
|
|
121
|
+
|
|
111
122
|
module Layout
|
|
112
123
|
require "rubocop/cop/layout/assignment_indentation"
|
|
113
124
|
|
|
@@ -147,6 +158,15 @@ module RuboCop
|
|
|
147
158
|
node.loc.expression.line
|
|
148
159
|
end
|
|
149
160
|
end)
|
|
161
|
+
|
|
162
|
+
require "rubocop/cop/layout/space_after_colon"
|
|
163
|
+
SpaceAfterColon.prepend(Module.new do
|
|
164
|
+
def on_pair(node)
|
|
165
|
+
return if node.children[0].loc.last_column == node.children[1].loc.last_column
|
|
166
|
+
|
|
167
|
+
super(node)
|
|
168
|
+
end
|
|
169
|
+
end)
|
|
150
170
|
end
|
|
151
171
|
|
|
152
172
|
module Style
|
data/lib/ruby-next/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby-next-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.14.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vladimir Dementyev
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-12-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ruby-next-parser
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 3.
|
|
19
|
+
version: 3.1.1.0
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 3.
|
|
26
|
+
version: 3.1.1.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: unparser
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -61,9 +61,10 @@ files:
|
|
|
61
61
|
- lib/.rbnext/2.3/ruby-next/commands/core_ext.rb
|
|
62
62
|
- lib/.rbnext/2.3/ruby-next/commands/nextify.rb
|
|
63
63
|
- lib/.rbnext/2.3/ruby-next/language/eval.rb
|
|
64
|
+
- lib/.rbnext/2.3/ruby-next/language/rewriters/2.6/endless_range.rb
|
|
65
|
+
- lib/.rbnext/2.3/ruby-next/language/rewriters/2.7/pattern_matching.rb
|
|
66
|
+
- lib/.rbnext/2.3/ruby-next/language/rewriters/3.1/anonymous_block.rb
|
|
64
67
|
- lib/.rbnext/2.3/ruby-next/language/rewriters/base.rb
|
|
65
|
-
- lib/.rbnext/2.3/ruby-next/language/rewriters/endless_range.rb
|
|
66
|
-
- lib/.rbnext/2.3/ruby-next/language/rewriters/pattern_matching.rb
|
|
67
68
|
- lib/.rbnext/2.3/ruby-next/utils.rb
|
|
68
69
|
- lib/.rbnext/2.7/ruby-next/core.rb
|
|
69
70
|
- lib/ruby-next.rb
|
|
@@ -78,6 +79,7 @@ files:
|
|
|
78
79
|
- lib/ruby-next/core/array/intersect.rb
|
|
79
80
|
- lib/ruby-next/core/constants/frozen_error.rb
|
|
80
81
|
- lib/ruby-next/core/constants/no_matching_pattern_error.rb
|
|
82
|
+
- lib/ruby-next/core/enumerable/compact.rb
|
|
81
83
|
- lib/ruby-next/core/enumerable/filter.rb
|
|
82
84
|
- lib/ruby-next/core/enumerable/filter_map.rb
|
|
83
85
|
- lib/ruby-next/core/enumerable/tally.rb
|
|
@@ -85,8 +87,11 @@ files:
|
|
|
85
87
|
- lib/ruby-next/core/hash/deconstruct_keys.rb
|
|
86
88
|
- lib/ruby-next/core/hash/except.rb
|
|
87
89
|
- lib/ruby-next/core/hash/merge.rb
|
|
90
|
+
- lib/ruby-next/core/integer/try_convert.rb
|
|
88
91
|
- lib/ruby-next/core/kernel/then.rb
|
|
92
|
+
- lib/ruby-next/core/matchdata/match.rb
|
|
89
93
|
- lib/ruby-next/core/proc/compose.rb
|
|
94
|
+
- lib/ruby-next/core/refinement/import.rb
|
|
90
95
|
- lib/ruby-next/core/runtime.rb
|
|
91
96
|
- lib/ruby-next/core/string/split.rb
|
|
92
97
|
- lib/ruby-next/core/struct/deconstruct.rb
|
|
@@ -99,27 +104,33 @@ files:
|
|
|
99
104
|
- lib/ruby-next/core_ext.rb
|
|
100
105
|
- lib/ruby-next/language.rb
|
|
101
106
|
- lib/ruby-next/language/bootsnap.rb
|
|
102
|
-
- lib/ruby-next/language/edge.rb
|
|
103
107
|
- lib/ruby-next/language/eval.rb
|
|
104
108
|
- lib/ruby-next/language/parser.rb
|
|
105
|
-
- lib/ruby-next/language/
|
|
106
|
-
- lib/ruby-next/language/rewriters/
|
|
107
|
-
- lib/ruby-next/language/rewriters/
|
|
109
|
+
- lib/ruby-next/language/rewriters/2.1/numeric_literals.rb
|
|
110
|
+
- lib/ruby-next/language/rewriters/2.1/required_kwargs.rb
|
|
111
|
+
- lib/ruby-next/language/rewriters/2.3/safe_navigation.rb
|
|
112
|
+
- lib/ruby-next/language/rewriters/2.3/squiggly_heredoc.rb
|
|
113
|
+
- lib/ruby-next/language/rewriters/2.4/dir.rb
|
|
114
|
+
- lib/ruby-next/language/rewriters/2.6/endless_range.rb
|
|
115
|
+
- lib/ruby-next/language/rewriters/2.7/args_forward.rb
|
|
116
|
+
- lib/ruby-next/language/rewriters/2.7/numbered_params.rb
|
|
117
|
+
- lib/ruby-next/language/rewriters/2.7/pattern_matching.rb
|
|
118
|
+
- lib/ruby-next/language/rewriters/3.0/args_forward_leading.rb
|
|
119
|
+
- lib/ruby-next/language/rewriters/3.0/endless_method.rb
|
|
120
|
+
- lib/ruby-next/language/rewriters/3.0/find_pattern.rb
|
|
121
|
+
- lib/ruby-next/language/rewriters/3.0/in_pattern.rb
|
|
122
|
+
- lib/ruby-next/language/rewriters/3.1/anonymous_block.rb
|
|
123
|
+
- lib/ruby-next/language/rewriters/3.1/endless_method_command.rb
|
|
124
|
+
- lib/ruby-next/language/rewriters/3.1/oneline_pattern_parensless.rb
|
|
125
|
+
- lib/ruby-next/language/rewriters/3.1/pin_vars_pattern.rb
|
|
126
|
+
- lib/ruby-next/language/rewriters/3.1/refinement_import_methods.rb
|
|
127
|
+
- lib/ruby-next/language/rewriters/3.1/shorthand_hash.rb
|
|
108
128
|
- lib/ruby-next/language/rewriters/base.rb
|
|
109
|
-
- lib/ruby-next/language/rewriters/
|
|
110
|
-
- lib/ruby-next/language/rewriters/
|
|
111
|
-
- lib/ruby-next/language/rewriters/
|
|
112
|
-
- lib/ruby-next/language/rewriters/
|
|
113
|
-
- lib/ruby-next/language/rewriters/method_reference.rb
|
|
114
|
-
- lib/ruby-next/language/rewriters/numbered_params.rb
|
|
115
|
-
- lib/ruby-next/language/rewriters/numeric_literals.rb
|
|
116
|
-
- lib/ruby-next/language/rewriters/pattern_matching.rb
|
|
117
|
-
- lib/ruby-next/language/rewriters/required_kwargs.rb
|
|
129
|
+
- lib/ruby-next/language/rewriters/edge.rb
|
|
130
|
+
- lib/ruby-next/language/rewriters/proposed.rb
|
|
131
|
+
- lib/ruby-next/language/rewriters/proposed/bind_vars_pattern.rb
|
|
132
|
+
- lib/ruby-next/language/rewriters/proposed/method_reference.rb
|
|
118
133
|
- lib/ruby-next/language/rewriters/runtime.rb
|
|
119
|
-
- lib/ruby-next/language/rewriters/runtime/dir.rb
|
|
120
|
-
- lib/ruby-next/language/rewriters/safe_navigation.rb
|
|
121
|
-
- lib/ruby-next/language/rewriters/shorthand_hash.rb
|
|
122
|
-
- lib/ruby-next/language/rewriters/squiggly_heredoc.rb
|
|
123
134
|
- lib/ruby-next/language/runtime.rb
|
|
124
135
|
- lib/ruby-next/language/setup.rb
|
|
125
136
|
- lib/ruby-next/language/unparser.rb
|
|
@@ -153,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
153
164
|
- !ruby/object:Gem::Version
|
|
154
165
|
version: '0'
|
|
155
166
|
requirements: []
|
|
156
|
-
rubygems_version: 3.2.
|
|
167
|
+
rubygems_version: 3.2.22
|
|
157
168
|
signing_key:
|
|
158
169
|
specification_version: 4
|
|
159
170
|
summary: Ruby Next core functionality
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# Load experimental, proposed etc. Ruby features
|
|
4
|
-
|
|
5
|
-
require "ruby-next/language/rewriters/method_reference"
|
|
6
|
-
RubyNext::Language.rewriters << RubyNext::Language::Rewriters::MethodReference
|
|
7
|
-
|
|
8
|
-
require "ruby-next/language/rewriters/shorthand_hash"
|
|
9
|
-
RubyNext::Language.rewriters << RubyNext::Language::Rewriters::ShorthandHash
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "ruby-next/language/rewriters/pattern_matching"
|
|
4
|
-
|
|
5
|
-
module RubyNext
|
|
6
|
-
module Language
|
|
7
|
-
module Rewriters
|
|
8
|
-
using RubyNext
|
|
9
|
-
|
|
10
|
-
# Separate pattern matching rewriter for Ruby 2.7 to
|
|
11
|
-
# transpile only `in` patterns
|
|
12
|
-
class InPattern < PatternMatching
|
|
13
|
-
NAME = "pattern-matching-in"
|
|
14
|
-
SYNTAX_PROBE = "1 in 2"
|
|
15
|
-
MIN_SUPPORTED_VERSION = Gem::Version.new("3.0.0")
|
|
16
|
-
|
|
17
|
-
# Make case-match no-op
|
|
18
|
-
def on_case_match(node)
|
|
19
|
-
node
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def on_match_pattern_p(node)
|
|
23
|
-
context.track! self
|
|
24
|
-
|
|
25
|
-
@deconstructed_keys = {}
|
|
26
|
-
@predicates = Predicates::Noop.new
|
|
27
|
-
|
|
28
|
-
matchee =
|
|
29
|
-
s(:begin, s(:lvasgn, MATCHEE, node.children[0]))
|
|
30
|
-
|
|
31
|
-
pattern =
|
|
32
|
-
locals.with(
|
|
33
|
-
matchee: MATCHEE,
|
|
34
|
-
arr: MATCHEE_ARR,
|
|
35
|
-
hash: MATCHEE_HASH
|
|
36
|
-
) do
|
|
37
|
-
send(
|
|
38
|
-
:"#{node.children[1].type}_clause",
|
|
39
|
-
node.children[1]
|
|
40
|
-
)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
node.updated(
|
|
44
|
-
:and,
|
|
45
|
-
[
|
|
46
|
-
matchee,
|
|
47
|
-
pattern
|
|
48
|
-
]
|
|
49
|
-
).tap do |new_node|
|
|
50
|
-
replace(node.loc.expression, inline_blocks(unparse(new_node)))
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|