diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-16 20:20:15 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-16 20:20:15 +0900 |
| commit | 1dfd1ae32b9b27573b9ee4439674091b792bcce0 (patch) | |
| tree | d715462a35a4b5e59f828e2c18865a1b322e9abc /crates/shirabe/src/console/application.rs | |
| parent | b6604e1395f003748fe40a44e1190470632a40ce (diff) | |
| download | php-shirabe-1dfd1ae32b9b27573b9ee4439674091b792bcce0.tar.gz php-shirabe-1dfd1ae32b9b27573b9ee4439674091b792bcce0.tar.zst php-shirabe-1dfd1ae32b9b27573b9ee4439674091b792bcce0.zip | |
refactor(preg): make preg_grep() return an iterator
Callers had to build a temporary Vec<&str> at every call site to satisfy
the &[&str] parameter. Taking IntoIterator and yielding the matched items
lets them pass owned or borrowed strings directly.
The flags variant and PREG_GREP_INVERT go away with it: no caller passes
flags, and Composer's Preg::grep() has no such parameter either.
Diffstat (limited to 'crates/shirabe/src/console/application.rs')
| -rw-r--r-- | crates/shirabe/src/console/application.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/crates/shirabe/src/console/application.rs b/crates/shirabe/src/console/application.rs index 9033700b..b55b9e68 100644 --- a/crates/shirabe/src/console/application.rs +++ b/crates/shirabe/src/console/application.rs @@ -953,7 +953,8 @@ impl Application { .map(|p| preg_quote(&p, None)) .collect(); let expr = format!("{}{}", shirabe_php_shim::implode("[^:]*:", &parts), "[^:]*"); - let namespaces = preg_grep(format!("{{^{}}}", expr), &all_namespaces); + let namespaces: Vec<String> = + preg_grep(format!("{{^{}}}", expr), all_namespaces.iter().cloned()).collect(); if namespaces.is_empty() { let mut message = format!( @@ -1049,14 +1050,19 @@ impl Application { .map(|p| preg_quote(&p, None)) .collect(); let expr = format!("{}{}", shirabe_php_shim::implode("[^:]*:", &parts), "[^:]*"); - let mut commands = preg_grep(format!("{{^{}}}", expr), &all_commands); + let mut commands: Vec<String> = + preg_grep(format!("{{^{}}}", expr), all_commands.iter().cloned()).collect(); if commands.is_empty() { - commands = preg_grep(format!("{{^{}}}i", expr), &all_commands); + commands = preg_grep(format!("{{^{}}}i", expr), all_commands.iter().cloned()).collect(); } // if no commands matched or we just matched namespaces - if commands.is_empty() || preg_grep(format!("{{^{}$}}i", expr), &commands).is_empty() { + if commands.is_empty() + || preg_grep(format!("{{^{}$}}i", expr), commands.iter()) + .next() + .is_none() + { if let Some(pos) = shirabe_php_shim::strrpos(name, ":") { // check if a namespace exists and contains commands self.find_namespace(&name[..pos])?; |
