ruby3-backward-compatibility 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d727adf8f484386c84adf5f03c83b8b8e237d072e9755e34770f4c37c87c3f27
|
4
|
+
data.tar.gz: ccb5329f49247817fbc12f9b72d1a893a57ed53f2c71b7c769d7c397d2e074ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c92cb15cc48cf8c4c78c73ebad18e980a73cdd889993d68de2a4873666a1f81a6a2715140bddb8a14f8e8b6cfd3270eb7481d9bb33c74c702495606d623ca300
|
7
|
+
data.tar.gz: b8c56baf3948241066277afc1289d9421df3cb8854a11b38f35b5cd18155a51180f1935418e8ed294b82900e14a8e9d33d48452fe226c3eea8be0d6afc237470
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -142,6 +142,17 @@ To add them back as no-ops, use
|
|
142
142
|
require 'ruby3_backward_compatibility/compatibility/object'
|
143
143
|
```
|
144
144
|
|
145
|
+
### Regexp (Ruby 3.2+)
|
146
|
+
|
147
|
+
It was possible to instantiate a Regexp with `Regexp.new('foo', Regexp::IGNORECASE, 'n')`. The last argument used to indicate the encoding in Ruby 1.8. Up to Ruby 3.2 an argument of "n" or "N" indicated a regexp that ignores encoding (same as the Regexp::NOENCODING flag).
|
148
|
+
|
149
|
+
In Ruby 3 this raises an `ArgumentError`.
|
150
|
+
|
151
|
+
To bring back the old behavior, use
|
152
|
+
|
153
|
+
```
|
154
|
+
require 'ruby3_backward_compatibility/compatibility/regexp'
|
155
|
+
```
|
145
156
|
|
146
157
|
### YAML (Psych)
|
147
158
|
|
@@ -7,5 +7,6 @@ require 'ruby3_backward_compatibility/compatibility/fixnum'
|
|
7
7
|
require 'ruby3_backward_compatibility/compatibility/i18n' if defined?(I18n)
|
8
8
|
require 'ruby3_backward_compatibility/compatibility/object'
|
9
9
|
require 'ruby3_backward_compatibility/compatibility/psych' if defined?(Psych)
|
10
|
+
require 'ruby3_backward_compatibility/compatibility/regexp'
|
10
11
|
require 'ruby3_backward_compatibility/compatibility/string'
|
11
12
|
require 'ruby3_backward_compatibility/compatibility/uri' if defined?(URI)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
if RUBY_VERSION >= '3.2'
|
2
|
+
# on 3.2 exactly, we get deprecation errors
|
3
|
+
# however, this is somewhat hard to fix, since 3.2 added some different ways to pass "options" that we do not want to rebuild
|
4
|
+
|
5
|
+
module Ruby3BackwardCompatibility
|
6
|
+
module RegexpCompatibility
|
7
|
+
LEGITIMATE_FLAGS = /\A[mix]+\z/
|
8
|
+
|
9
|
+
def self.prepended(by)
|
10
|
+
by.singleton_class.prepend ClassMethods
|
11
|
+
end
|
12
|
+
|
13
|
+
module ClassMethods
|
14
|
+
def new(regexp_or_string, options = NOT_GIVEN, n_flag = NOT_GIVEN, **kwargs)
|
15
|
+
if options == NOT_GIVEN
|
16
|
+
super(regexp_or_string, **kwargs)
|
17
|
+
elsif n_flag == 'n' || n_flag == 'N'
|
18
|
+
unless options.is_a?(Integer)
|
19
|
+
if RUBY_VERSION < '3.3' && options.is_a?(String) && options =~ LEGITIMATE_FLAGS
|
20
|
+
# on Ruby 3.2 we can legitimately have options "mix" treated as flags, so parse them
|
21
|
+
# on Ruby 3.3 this would never have been legitimate, since a third argument would not have been allowed
|
22
|
+
new_options = 0
|
23
|
+
new_options |= Regexp::MULTILINE if options.include?('m')
|
24
|
+
new_options |= Regexp::IGNORECASE if options.include?('i')
|
25
|
+
new_options |= Regexp::EXTENDED if options.include?('x')
|
26
|
+
options = new_options
|
27
|
+
else
|
28
|
+
# on all other Ruby, truish is IGNORECASE
|
29
|
+
options = options ? Regexp::IGNORECASE : 0
|
30
|
+
end
|
31
|
+
end
|
32
|
+
super(regexp_or_string, options | Regexp::NOENCODING, **kwargs)
|
33
|
+
elsif options.is_a?(String)
|
34
|
+
if options =~ LEGITIMATE_FLAGS && n_flag == NOT_GIVEN
|
35
|
+
# this (like any trueish value) would have been "ignore case" in Ruby < 3.2, but now is not
|
36
|
+
# we have to assume this is Ruby 3.2 syntax
|
37
|
+
super(regexp_or_string, options, **kwargs)
|
38
|
+
else
|
39
|
+
# this crashes on Ruby 3.2, so assume it is < 3.2 syntax
|
40
|
+
super(regexp_or_string, true, **kwargs)
|
41
|
+
end
|
42
|
+
else
|
43
|
+
super(regexp_or_string, options, **kwargs)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
Regexp.prepend Ruby3BackwardCompatibility::RegexpCompatibility
|
51
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby3-backward-compatibility
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Kraze
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-04-
|
11
|
+
date: 2024-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -52,6 +52,7 @@ files:
|
|
52
52
|
- lib/ruby3_backward_compatibility/compatibility/i18n.rb
|
53
53
|
- lib/ruby3_backward_compatibility/compatibility/object.rb
|
54
54
|
- lib/ruby3_backward_compatibility/compatibility/psych.rb
|
55
|
+
- lib/ruby3_backward_compatibility/compatibility/regexp.rb
|
55
56
|
- lib/ruby3_backward_compatibility/compatibility/string.rb
|
56
57
|
- lib/ruby3_backward_compatibility/compatibility/uri.rb
|
57
58
|
- lib/ruby3_backward_compatibility/version.rb
|