aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-pcre/src
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-16 20:20:15 +0900
committernsfisis <nsfisis@gmail.com>2026-08-16 20:20:15 +0900
commit1dfd1ae32b9b27573b9ee4439674091b792bcce0 (patch)
treed715462a35a4b5e59f828e2c18865a1b322e9abc /crates/shirabe-pcre/src
parentb6604e1395f003748fe40a44e1190470632a40ce (diff)
downloadphp-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-pcre/src')
-rw-r--r--crates/shirabe-pcre/src/preg.rs13
1 files changed, 6 insertions, 7 deletions
diff --git a/crates/shirabe-pcre/src/preg.rs b/crates/shirabe-pcre/src/preg.rs
index 0ebc0ff2..e197c874 100644
--- a/crates/shirabe-pcre/src/preg.rs
+++ b/crates/shirabe-pcre/src/preg.rs
@@ -15,7 +15,7 @@ use indexmap::IndexMap;
pub use shirabe_php_shim::CaptureKey;
use shirabe_php_shim::{
PREG_OFFSET_CAPTURE, PREG_SET_ORDER, PREG_SPLIT_OFFSET_CAPTURE, PREG_UNMATCHED_AS_NULL,
- PregPattern, preg_grep2, preg_match_all_offset_capture2, preg_match_all2, preg_match2,
+ PregPattern, preg_grep, preg_match_all_offset_capture2, preg_match_all2, preg_match2,
preg_replace_callback, preg_replace2, preg_split2,
};
@@ -180,12 +180,11 @@ impl Preg {
preg_split2(pattern, subject, limit, flags)
}
- pub fn grep(pattern: impl PregPattern, array: &[&str]) -> Vec<String> {
- Self::grep3(pattern, array, 0)
- }
-
- pub fn grep3(pattern: impl PregPattern, array: &[&str], flags: i64) -> Vec<String> {
- preg_grep2(pattern, array, flags)
+ pub fn grep<T: AsRef<str>>(
+ pattern: impl PregPattern,
+ array: impl IntoIterator<Item = T>,
+ ) -> impl Iterator<Item = T> {
+ preg_grep(pattern, array)
}
pub fn is_match(pattern: impl PregPattern, subject: &str) -> bool {