re2 2.5.0-arm64-darwin → 2.6.0.rc1-arm64-darwin
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/README.md +15 -2
- data/Rakefile +1 -1
- data/ext/re2/re2.cc +4 -4
- data/lib/2.6/re2.bundle +0 -0
- data/lib/2.7/re2.bundle +0 -0
- data/lib/3.0/re2.bundle +0 -0
- data/lib/3.1/re2.bundle +0 -0
- data/lib/3.2/re2.bundle +0 -0
- data/lib/3.3/re2.bundle +0 -0
- data/lib/re2/regexp.rb +1 -0
- data/lib/re2/scanner.rb +1 -0
- data/lib/re2/string.rb +1 -0
- data/lib/re2/version.rb +2 -1
- data/re2.gemspec +2 -2
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aeea11fe983c4a111eca8d593e830e47fbc88b7f8b6f2d1d1a58c0a45c72b363
|
4
|
+
data.tar.gz: a4e3841f0d06601371e045814e8c3f4381a70dc3a74e6431eb5d308678866f1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91b75520402ee70ef82cba9ccf654e356526588a476a4a2d527b8e71c61e160abc63f4a9840f11a61fc14b9f50d8387948fe46cd2831c41dc7f3fe3c2db44b98
|
7
|
+
data.tar.gz: b962af565015eabf353839cc9f7ced89f33fd9bb7abf1a61aebc1f3752c0b484f7f2e8d932773786c80b0bf473ca2dd13757e9f101b71dbc38a081109e15c4dd
|
data/README.md
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
-
# re2
|
1
|
+
# re2 - safer regular expressions in Ruby
|
2
2
|
|
3
3
|
Ruby bindings to [RE2][], a "fast, safe, thread-friendly alternative to
|
4
4
|
backtracking regular expression engines like those used in PCRE, Perl, and
|
5
5
|
Python".
|
6
6
|
|
7
|
+
[](https://github.com/mudge/re2/actions)
|
8
|
+
|
7
9
|
**Current version:** 2.5.0
|
8
10
|
**Bundled RE2 version:** libre2.11 (2023-11-01)
|
9
11
|
|
@@ -37,6 +39,17 @@ RE2('(\w+):(\d+)').full_match("ruby:1234")
|
|
37
39
|
|
38
40
|
## Why RE2?
|
39
41
|
|
42
|
+
While [recent
|
43
|
+
versions](https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/) of
|
44
|
+
Ruby have improved defences against [regular expression denial of service
|
45
|
+
(ReDoS) attacks](https://en.wikipedia.org/wiki/ReDoS), it is still possible for
|
46
|
+
users to craft malicious patterns that take a long time to process by using
|
47
|
+
syntactic features such as [back-references, lookaheads and possessive
|
48
|
+
quantifiers](https://bugs.ruby-lang.org/issues/19104#note-3). RE2 aims to
|
49
|
+
eliminate ReDoS by design:
|
50
|
+
|
51
|
+
> **_Safety is RE2's raison d'être._**
|
52
|
+
>
|
40
53
|
> RE2 was designed and implemented with an explicit goal of being able to
|
41
54
|
> handle regular expressions from untrusted users without risk. One of its
|
42
55
|
> primary guarantees is that the match time is linear in the length of the
|
@@ -110,7 +123,7 @@ See the API documentation for [`RE2::Regexp#initialize`](https://mudge.name/re2/
|
|
110
123
|
|
111
124
|
### Matching interface
|
112
125
|
|
113
|
-
There are two main methods for matching: [`RE2::Regexp#full_match?`](https://mudge.name/re2/RE2/Regexp.html#full_match%3F-instance_method) requires the regular expression to match the entire input text, and [`RE2::Regexp#partial_match?`](https://mudge.name/re2/RE2/Regexp.html#
|
126
|
+
There are two main methods for matching: [`RE2::Regexp#full_match?`](https://mudge.name/re2/RE2/Regexp.html#full_match%3F-instance_method) requires the regular expression to match the entire input text, and [`RE2::Regexp#partial_match?`](https://mudge.name/re2/RE2/Regexp.html#partial_match%3F-instance_method) looks for a match for a substring of the input text, returning a boolean to indicate whether a match was successful or not.
|
114
127
|
|
115
128
|
```ruby
|
116
129
|
RE2('h.*o').full_match?("hello") #=> true
|
data/Rakefile
CHANGED
@@ -33,7 +33,7 @@ Gem::PackageTask.new(RE2_GEM_SPEC) do |p|
|
|
33
33
|
p.need_tar = false
|
34
34
|
end
|
35
35
|
|
36
|
-
CROSS_RUBY_VERSIONS = %w[3.2.0 3.1.0 3.0.0 2.7.0 2.6.0].join(':')
|
36
|
+
CROSS_RUBY_VERSIONS = %w[3.3.0 3.2.0 3.1.0 3.0.0 2.7.0 2.6.0].join(':')
|
37
37
|
CROSS_RUBY_PLATFORMS = %w[
|
38
38
|
aarch64-linux
|
39
39
|
arm-linux
|
data/ext/re2/re2.cc
CHANGED
@@ -1588,7 +1588,7 @@ static VALUE re2_regexp_full_match_p(const VALUE self, VALUE text) {
|
|
1588
1588
|
*
|
1589
1589
|
* @param [text] text the text to scan incrementally
|
1590
1590
|
* @return [RE2::Scanner] an `Enumerable` {RE2::Scanner} object
|
1591
|
-
* @
|
1591
|
+
* @raise [TypeError] if `text` cannot be coerced to a `String`
|
1592
1592
|
* @example
|
1593
1593
|
* c = RE2::Regexp.new('(\w+)').scan("Foo bar baz")
|
1594
1594
|
* #=> #<RE2::Scanner:0x0000000000000001>
|
@@ -1652,7 +1652,7 @@ static VALUE re2_regexp_match_has_endpos_argument_p(VALUE) {
|
|
1652
1652
|
* @param [String, RE2::Regexp] pattern a regexp matching text to be replaced
|
1653
1653
|
* @param [String] rewrite the string to replace with
|
1654
1654
|
* @return [String] the resulting string
|
1655
|
-
* @
|
1655
|
+
* @raise [TypeError] if the given rewrite or pattern (if not provided as a
|
1656
1656
|
* {RE2::Regexp}) cannot be coerced to `String`s
|
1657
1657
|
* @example
|
1658
1658
|
* RE2.Replace("hello there", "hello", "howdy") #=> "howdy there"
|
@@ -1700,7 +1700,7 @@ static VALUE re2_Replace(VALUE, VALUE str, VALUE pattern,
|
|
1700
1700
|
* @param [String] str the string to modify
|
1701
1701
|
* @param [String, RE2::Regexp] pattern a regexp matching text to be replaced
|
1702
1702
|
* @param [String] rewrite the string to replace with
|
1703
|
-
* @
|
1703
|
+
* @raise [TypeError] if the given rewrite or pattern (if not provided as a
|
1704
1704
|
* {RE2::Regexp}) cannot be coerced to `String`s
|
1705
1705
|
* @return [String] the resulting string
|
1706
1706
|
* @example
|
@@ -1745,7 +1745,7 @@ static VALUE re2_GlobalReplace(VALUE, VALUE str, VALUE pattern,
|
|
1745
1745
|
* exactly match the original string.
|
1746
1746
|
*
|
1747
1747
|
* @param [String] unquoted the unquoted string
|
1748
|
-
* @
|
1748
|
+
* @raise [TypeError] if the given unquoted string cannot be coerced to a `String`
|
1749
1749
|
* @return [String] the escaped string
|
1750
1750
|
* @example
|
1751
1751
|
* RE2::Regexp.escape("1.5-2.0?") #=> "1\.5\-2\.0\?"
|
data/lib/2.6/re2.bundle
CHANGED
Binary file
|
data/lib/2.7/re2.bundle
CHANGED
Binary file
|
data/lib/3.0/re2.bundle
CHANGED
Binary file
|
data/lib/3.1/re2.bundle
CHANGED
Binary file
|
data/lib/3.2/re2.bundle
CHANGED
Binary file
|
data/lib/3.3/re2.bundle
ADDED
Binary file
|
data/lib/re2/regexp.rb
CHANGED
data/lib/re2/scanner.rb
CHANGED
data/lib/re2/string.rb
CHANGED
data/lib/re2/version.rb
CHANGED
data/re2.gemspec
CHANGED
@@ -38,8 +38,8 @@ Gem::Specification.new do |s|
|
|
38
38
|
"spec/re2/set_spec.rb",
|
39
39
|
"spec/re2/scanner_spec.rb"
|
40
40
|
]
|
41
|
-
s.add_development_dependency("rake-compiler", "~> 1.2.
|
42
|
-
s.add_development_dependency("rake-compiler-dock", "~> 1.
|
41
|
+
s.add_development_dependency("rake-compiler", "~> 1.2.5")
|
42
|
+
s.add_development_dependency("rake-compiler-dock", "~> 1.4.0.rc2")
|
43
43
|
s.add_development_dependency("rspec", "~> 3.2")
|
44
44
|
s.add_runtime_dependency("mini_portile2", "~> 2.8.5") # keep version in sync with extconf.rb
|
45
45
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: re2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0.rc1
|
5
5
|
platform: arm64-darwin
|
6
6
|
authors:
|
7
7
|
- Paul Mucur
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-12-
|
12
|
+
date: 2023-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake-compiler
|
@@ -17,28 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 1.2.
|
20
|
+
version: 1.2.5
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 1.2.
|
27
|
+
version: 1.2.5
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake-compiler-dock
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.
|
34
|
+
version: 1.4.0.rc2
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.
|
41
|
+
version: 1.4.0.rc2
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rspec
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- lib/3.0/re2.bundle
|
76
76
|
- lib/3.1/re2.bundle
|
77
77
|
- lib/3.2/re2.bundle
|
78
|
+
- lib/3.3/re2.bundle
|
78
79
|
- lib/re2.rb
|
79
80
|
- lib/re2/regexp.rb
|
80
81
|
- lib/re2/scanner.rb
|
@@ -104,12 +105,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
105
|
version: '2.6'
|
105
106
|
- - "<"
|
106
107
|
- !ruby/object:Gem::Version
|
107
|
-
version: 3.
|
108
|
+
version: 3.4.dev
|
108
109
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
110
|
requirements:
|
110
|
-
- - "
|
111
|
+
- - ">"
|
111
112
|
- !ruby/object:Gem::Version
|
112
|
-
version:
|
113
|
+
version: 1.3.1
|
113
114
|
requirements: []
|
114
115
|
rubygems_version: 3.3.26
|
115
116
|
signing_key:
|