ruby-next-core 1.2.0 → 1.2.1
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 +7 -0
- data/README.md +4 -2
- data/bin/mspec +1 -0
- data/lib/.rbnext/2.1/ruby-next/language.rb +1 -1
- data/lib/.rbnext/2.3/ruby-next/commands/core_ext.rb +3 -3
- data/lib/.rbnext/2.3/ruby-next/language/eval.rb +3 -2
- data/lib/.rbnext/2.7/ruby-next/language/rewriters/text.rb +1 -1
- data/lib/.rbnext/3.2/ruby-next/rubocop.rb +6 -0
- data/lib/ruby-next/commands/core_ext.rb +3 -3
- data/lib/ruby-next/language/eval.rb +3 -2
- data/lib/ruby-next/language/rewriters/3.4/it_param.rb +8 -3
- data/lib/ruby-next/language/rewriters/text.rb +1 -1
- data/lib/ruby-next/language.rb +1 -1
- data/lib/ruby-next/rubocop.rb +6 -0
- data/lib/ruby-next/version.rb +1 -1
- data/lib/uby-next.rb +3 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 225718809b7794c42a4bfabdf5d8a942f38d4e80928aae28d869c0319548e0aa
|
|
4
|
+
data.tar.gz: b15f0597110048b50a9ec6f01513534bed2982916b3428537a752a23910c3d71
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 07f683b7b44abdfa39edd48d3523f24c620a96bae2e525fb072163420fb66ff84834a196e9b868145328047ac0ae254eb0452cb44d48206b4e97b6b0ce30508f
|
|
7
|
+
data.tar.gz: f47fcd02ea37d94dbc79b142c29b9ae4742fb643d5a418bdd434fe6a0f57ed25ea0ce006c758406794a6b3f65e3f7fe3a94b2c13c1229086424a4902b85aa8b6
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## master
|
|
4
4
|
|
|
5
|
+
## 1.2.1 (2026-07-22)
|
|
6
|
+
|
|
7
|
+
- Fix RuboCop integration (enforce `:parser_whitequark` mode when using `next` version). ([@palkan][])
|
|
8
|
+
|
|
9
|
+
- Fix `it-param` rewriter to treat an explicit `it` parameter as a fixed point. ([@viralpraxis][])
|
|
10
|
+
|
|
5
11
|
## 1.2.0 (2026-01-13)
|
|
6
12
|
|
|
7
13
|
- Add `String#strip` etc w/ selectors.
|
|
@@ -428,3 +434,4 @@ p a #=> 1
|
|
|
428
434
|
[@skryukov]: https://github.com/skryukov
|
|
429
435
|
[@prog-supdex]: https://github.com/prog-supdex
|
|
430
436
|
[@saturnflyer]: https://github.com/saturnflyer
|
|
437
|
+
[@viralpraxis]: https://github.com/viralpraxis
|
data/README.md
CHANGED
|
@@ -32,8 +32,8 @@ Read more about the motivation behind the Ruby Next in this post: [Ruby Next: Ma
|
|
|
32
32
|
</a>
|
|
33
33
|
</td>
|
|
34
34
|
<td>
|
|
35
|
-
<a href="
|
|
36
|
-
<img src="
|
|
35
|
+
<a href="https://web.archive.org/web/20220501094423/https://digitalfukuoka.jp/topics/169">
|
|
36
|
+
<img src="./assets/images/fukuoka_ruby_award_2022.png" width="200">
|
|
37
37
|
</a>
|
|
38
38
|
</td>
|
|
39
39
|
</tr>
|
|
@@ -392,8 +392,10 @@ Runtime mode is backed by [require-hooks][require-hooks]—a standalone gem whic
|
|
|
392
392
|
You can customize target files via the `include_patterns` and `exclude_patterns` configuration options:
|
|
393
393
|
|
|
394
394
|
```ruby
|
|
395
|
+
requre "ruby-next/language"
|
|
395
396
|
RubyNext::Language.include_patterns << "path/to/other/dir/*.rb"
|
|
396
397
|
RubyNext::Language.exclude_patterns << "path/to/other/dir/subdir/*"
|
|
398
|
+
requre "ruby-next/language/runtime"
|
|
397
399
|
```
|
|
398
400
|
|
|
399
401
|
**NOTE:** Directories MUST be configured before requiring `ruby-next/language/runtime`.
|
data/bin/mspec
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
unless File.directory?('mspec/lib')
|
|
4
4
|
$stdout.puts "Cloning mspec..."
|
|
5
5
|
system("git clone https://github.com/ruby/mspec.git mspec")
|
|
6
|
+
system("git -C mspec checkout 9f83eeadf2311394d7809e60842f0026bd8e137d")
|
|
6
7
|
end
|
|
7
8
|
|
|
8
9
|
$:.unshift File.expand_path(File.join(__dir__, '..', 'mspec', 'lib'))
|
|
@@ -70,9 +70,9 @@ module RubyNext
|
|
|
70
70
|
.values
|
|
71
71
|
.flatten
|
|
72
72
|
.select do |patch|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
next if min_version && Gem::Version.new(patch.version) <= min_version
|
|
74
|
+
next if filter && !filter.match?(patch.name)
|
|
75
|
+
true
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
|
|
@@ -5,10 +5,11 @@ module RubyNext
|
|
|
5
5
|
module KernelEval
|
|
6
6
|
if Utils.refine_modules?
|
|
7
7
|
refine Kernel do
|
|
8
|
-
def eval(source, bind = nil, *args)
|
|
8
|
+
def eval(source, bind = nil, *args, **kwargs)
|
|
9
9
|
new_source = ::RubyNext::Language::Runtime.transform(
|
|
10
10
|
source,
|
|
11
|
-
using: ((((__safe_lvar__ = bind) || true) && (!__safe_lvar__.nil? || nil)) && __safe_lvar__.receiver) == TOPLEVEL_BINDING.receiver || ((((__safe_lvar__ = ((((__safe_lvar__ = bind) || true) && (!__safe_lvar__.nil? || nil)) && __safe_lvar__.receiver)) || true) && (!__safe_lvar__.nil? || nil)) && __safe_lvar__.is_a?(Module))
|
|
11
|
+
using: ((((__safe_lvar__ = bind) || true) && (!__safe_lvar__.nil? || nil)) && __safe_lvar__.receiver) == TOPLEVEL_BINDING.receiver || ((((__safe_lvar__ = ((((__safe_lvar__ = bind) || true) && (!__safe_lvar__.nil? || nil)) && __safe_lvar__.receiver)) || true) && (!__safe_lvar__.nil? || nil)) && __safe_lvar__.is_a?(Module)),
|
|
12
|
+
**kwargs
|
|
12
13
|
)
|
|
13
14
|
RubyNext.debug_source(new_source, "(#{caller_locations(1, 1).first})")
|
|
14
15
|
super(new_source, bind, *args)
|
|
@@ -70,9 +70,9 @@ module RubyNext
|
|
|
70
70
|
.values
|
|
71
71
|
.flatten
|
|
72
72
|
.select do |patch|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
next if min_version && Gem::Version.new(patch.version) <= min_version
|
|
74
|
+
next if filter && !filter.match?(patch.name)
|
|
75
|
+
true
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
|
|
@@ -5,10 +5,11 @@ module RubyNext
|
|
|
5
5
|
module KernelEval
|
|
6
6
|
if Utils.refine_modules?
|
|
7
7
|
refine Kernel do
|
|
8
|
-
def eval(source, bind = nil, *args)
|
|
8
|
+
def eval(source, bind = nil, *args, **kwargs)
|
|
9
9
|
new_source = ::RubyNext::Language::Runtime.transform(
|
|
10
10
|
source,
|
|
11
|
-
using: bind&.receiver == TOPLEVEL_BINDING.receiver || bind&.receiver&.is_a?(Module)
|
|
11
|
+
using: bind&.receiver == TOPLEVEL_BINDING.receiver || bind&.receiver&.is_a?(Module),
|
|
12
|
+
**kwargs
|
|
12
13
|
)
|
|
13
14
|
RubyNext.debug_source(new_source, "(#{caller_locations(1, 1).first})")
|
|
14
15
|
super(new_source, bind, *args)
|
|
@@ -13,7 +13,8 @@ module RubyNext
|
|
|
13
13
|
def on_block(node)
|
|
14
14
|
_proc_or_lambda, _args, body = *node.children
|
|
15
15
|
|
|
16
|
-
return super
|
|
16
|
+
return super if block_has_it_argument?(node)
|
|
17
|
+
return super unless block_has_it_reference?(body)
|
|
17
18
|
|
|
18
19
|
process_block(node)
|
|
19
20
|
end
|
|
@@ -21,7 +22,7 @@ module RubyNext
|
|
|
21
22
|
def on_itblock(node)
|
|
22
23
|
_proc_or_lambda, _args, body = *node.children
|
|
23
24
|
|
|
24
|
-
return super unless
|
|
25
|
+
return super unless block_has_it_reference?(body)
|
|
25
26
|
|
|
26
27
|
process_block(node)
|
|
27
28
|
end
|
|
@@ -46,9 +47,13 @@ module RubyNext
|
|
|
46
47
|
])
|
|
47
48
|
end
|
|
48
49
|
|
|
50
|
+
def block_has_it_argument?(node)
|
|
51
|
+
node.children[1] == s(:args, s(:procarg0, s(:arg, :it)))
|
|
52
|
+
end
|
|
53
|
+
|
|
49
54
|
# It's important to check if the current block refers to `it` variable somewhere
|
|
50
55
|
# (and not within a nested block), so we don't declare numbered params
|
|
51
|
-
def
|
|
56
|
+
def block_has_it_reference?(node)
|
|
52
57
|
# traverse node children deeply
|
|
53
58
|
tree = [node]
|
|
54
59
|
|
data/lib/ruby-next/language.rb
CHANGED
data/lib/ruby-next/rubocop.rb
CHANGED
data/lib/ruby-next/version.rb
CHANGED
data/lib/uby-next.rb
CHANGED
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
ENV["RUBY_NEXT_EDGE"] = "1"
|
|
5
5
|
ENV["RUBY_NEXT_PROPOSED"] = "1"
|
|
6
6
|
|
|
7
|
+
require "ruby-next/language"
|
|
8
|
+
RubyNext::Language.include_patterns << File.join(Dir.pwd, ".rb")
|
|
7
9
|
require "ruby-next/language/runtime"
|
|
10
|
+
|
|
8
11
|
require "ruby-next/core/runtime"
|
|
9
12
|
|
|
10
13
|
using RubyNext
|
|
11
14
|
|
|
12
|
-
RubyNext::Language.include_patterns << File.join(Dir.pwd, ".rb")
|
|
13
|
-
|
|
14
15
|
require "stringio"
|
|
15
16
|
|
|
16
17
|
# Hijack stderr to avoid printing exceptions while executing ruby files
|