diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-18 01:57:02 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-18 01:57:02 +0900 |
| commit | cb77f7c7076aa4bac3e6aaa1c164cf9c1d449ddc (patch) | |
| tree | 1402c6cb393dd760dc240532119ee3df1e1be1ec /crates/shirabe-symfony-console/src/terminal.rs | |
| parent | 530d085d4f3e19f94ac3cf8f8ac3b17000214b2e (diff) | |
| download | php-shirabe-cb77f7c7076aa4bac3e6aaa1c164cf9c1d449ddc.tar.gz php-shirabe-cb77f7c7076aa4bac3e6aaa1c164cf9c1d449ddc.tar.zst php-shirabe-cb77f7c7076aa4bac3e6aaa1c164cf9c1d449ddc.zip | |
refactor(preg): fold preg_match into preg_match2
preg_match copied every group into a Vec<Option<String>> while
preg_match2 handed back the borrowed captures. They now differ only in
the offset argument, so preg_match delegates with offset 0 and its
callers read groups through PregMatches::get.
Going through preg_match2 also makes preg_match honour the PCRE A
modifier, which it used to ignore; no caller passes such a pattern.
VersionParser::manipulate_version_string takes an index accessor instead
of a slice, and VersionParser::normalize matches against a copy of the
subject because the captures outlive the assignments to $version.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-symfony-console/src/terminal.rs')
| -rw-r--r-- | crates/shirabe-symfony-console/src/terminal.rs | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/crates/shirabe-symfony-console/src/terminal.rs b/crates/shirabe-symfony-console/src/terminal.rs index 8db6fd93..492d8fe2 100644 --- a/crates/shirabe-symfony-console/src/terminal.rs +++ b/crates/shirabe-symfony-console/src/terminal.rs @@ -89,17 +89,17 @@ impl Terminal { // or [w, h] from "wxh" WIDTH.with(|w| { w.set(Some(shirabe_php_shim::intval(&PhpMixed::String( - matches[1].clone().unwrap_or_default(), + matches.get(1).unwrap_or_default().to_string(), )))) }); HEIGHT.with(|h| { - let value = if matches.get(4).map(|m| m.is_some()).unwrap_or(false) { + let value = if matches.get(4).is_some() { shirabe_php_shim::intval(&PhpMixed::String( - matches[4].clone().unwrap_or_default(), + matches.get(4).unwrap_or_default().to_string(), )) } else { shirabe_php_shim::intval(&PhpMixed::String( - matches[2].clone().unwrap_or_default(), + matches.get(2).unwrap_or_default().to_string(), )) }; h.set(Some(value)); @@ -141,12 +141,12 @@ impl Terminal { // extract [w, h] from "rows h; columns w;" WIDTH.with(|w| { w.set(Some(shirabe_php_shim::intval(&PhpMixed::String( - matches[2].clone().unwrap_or_default(), + matches.get(2).unwrap_or_default().to_string(), )))) }); HEIGHT.with(|h| { h.set(Some(shirabe_php_shim::intval(&PhpMixed::String( - matches[1].clone().unwrap_or_default(), + matches.get(1).unwrap_or_default().to_string(), )))) }); } else if let Some(matches) = @@ -155,12 +155,12 @@ impl Terminal { // extract [w, h] from "; h rows; w columns" WIDTH.with(|w| { w.set(Some(shirabe_php_shim::intval(&PhpMixed::String( - matches[2].clone().unwrap_or_default(), + matches.get(2).unwrap_or_default().to_string(), )))) }); HEIGHT.with(|h| { h.set(Some(shirabe_php_shim::intval(&PhpMixed::String( - matches[1].clone().unwrap_or_default(), + matches.get(1).unwrap_or_default().to_string(), )))) }); } @@ -180,8 +180,12 @@ impl Terminal { )?; Some(vec![ - shirabe_php_shim::intval(&PhpMixed::String(matches[2].clone().unwrap_or_default())), - shirabe_php_shim::intval(&PhpMixed::String(matches[1].clone().unwrap_or_default())), + shirabe_php_shim::intval(&PhpMixed::String( + matches.get(2).unwrap_or_default().to_string(), + )), + shirabe_php_shim::intval(&PhpMixed::String( + matches.get(1).unwrap_or_default().to_string(), + )), ]) } |
