ronin-support 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog.md +9 -0
- data/lib/ronin/support/encoding/js.rb +15 -9
- data/lib/ronin/support/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 780803451e208e445bd91de1151b5eb486f0cd0ff1b43a683b0a84af631bbeae
|
4
|
+
data.tar.gz: 2c9fdafcb627bd9dface2d37aaf980a087642d94ea3c33807917c38c0ce174ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 666cffd23c7725aa75d02d89ddeb14ad7e7f1ae012758f9dc14031f5c3bf147a61921dd25b870be45b680abb1a24b9bba4ae5f78957459762a8cd77f97153bdd
|
7
|
+
data.tar.gz: 88713bb5dc755570e73a4466a055953adf30979c3a3d83f6d829b780a398655101cdd88ebbf7639691d159640c4cd13554df23368f9d881cfc62e55b96ebf6f8
|
data/ChangeLog.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
### 1.0.7 / 2024-07-13
|
2
|
+
|
3
|
+
* Improved the performance of {Ronin::Support::Encoding::JS.unescape} and
|
4
|
+
{String#js_unescape} by 2x.
|
5
|
+
* Correctly parse Unicode surrogate character pairs in JavaScript
|
6
|
+
strings (ex: `"\uD83D\uDE80"`) in {Ronin::Support::Encoding::JS.unescape},
|
7
|
+
{String#js_unescape}, {Ronin::Support::Encoding::JS.unquote}, and
|
8
|
+
{String#js_unquote}.
|
9
|
+
|
1
10
|
### 1.0.6 / 2024-06-19
|
2
11
|
|
3
12
|
* Fixed error messages in {Ronin::Support::Encoding::Base64.encode} and
|
@@ -183,16 +183,22 @@ module Ronin
|
|
183
183
|
#
|
184
184
|
def self.unescape(data)
|
185
185
|
unescaped = String.new(encoding: Encoding::UTF_8)
|
186
|
+
scanner = StringScanner.new(data)
|
186
187
|
|
187
|
-
|
188
|
-
unescaped <<
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
188
|
+
until scanner.eos?
|
189
|
+
unescaped << if (backslash_escape = scanner.scan(/\\[btnfr'"\\]/))
|
190
|
+
BACKSLASHED_CHARS[backslash_escape]
|
191
|
+
elsif (surrogate_pair = scanner.scan(/\\u[dD][890abAB][0-9a-fA-F]{2}\\u[dD][cdefCDEF][0-9a-fA-F]{2}/))
|
192
|
+
hi = surrogate_pair[2..6].to_i(16)
|
193
|
+
lo = surrogate_pair[8..12].to_i(16)
|
194
|
+
|
195
|
+
(0x1_0000 + ((hi - 0xd800) * 0x400) + (lo - 0xdc00))
|
196
|
+
elsif (unicode_escape = scanner.scan(/[\\%]u[0-9a-fA-F]{1,4}/))
|
197
|
+
unicode_escape[2..].to_i(16)
|
198
|
+
elsif (hex_escape = scanner.scan(/[\\%][0-9a-fA-F]{1,2}/))
|
199
|
+
hex_escape[1..].to_i(16)
|
200
|
+
else
|
201
|
+
scanner.getch
|
196
202
|
end
|
197
203
|
end
|
198
204
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ronin-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Postmodern
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chars
|