diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-18 01:56:31 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-18 01:56:32 +0900 |
| commit | 5114a8199a87c9e5584d92848e95deba22b73e98 (patch) | |
| tree | 596b422e5a37ad72e522978b6d456c0ff686d1cc /crates/shirabe/src/console | |
| parent | 79b504e55cd4c4d1da102c3a076dc2a2e1edcd65 (diff) | |
| download | php-shirabe-5114a8199a87c9e5584d92848e95deba22b73e98.tar.gz php-shirabe-5114a8199a87c9e5584d92848e95deba22b73e98.tar.zst php-shirabe-5114a8199a87c9e5584d92848e95deba22b73e98.zip | |
refactor(preg): back PregMatches with regex::Captures
PregMatches was an IndexMap of owned Strings copied out of the match, so
every preg_match2/preg_replace_callback call allocated a String per
capture group (twice over for a named group) whether or not the caller
read it. It now wraps the regex::Captures itself, held alongside the
pattern it came from so groups stay reachable by both their named and
their numbered form, and hands out &str borrowed from the subject. The
subject's lifetime becomes a parameter of the type.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/console')
| -rw-r--r-- | crates/shirabe/src/console/application.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/crates/shirabe/src/console/application.rs b/crates/shirabe/src/console/application.rs index 5385f790..ca645635 100644 --- a/crates/shirabe/src/console/application.rs +++ b/crates/shirabe/src/console/application.rs @@ -1792,8 +1792,8 @@ impl Application { let mut offset = 0i64; while let Some(m) = preg_match2(php_regex!(r"/.{1,10000}/u"), &utf8_string, offset as usize) { - let m0 = m[&shirabe_php_shim::CaptureKey::ByIndex(0)] - .as_deref() + let m0 = m + .get(&shirabe_php_shim::CaptureKey::ByIndex(0)) .unwrap_or(""); offset += shirabe_php_shim::strlen(m0); |
