aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/autoload/autoload_generator.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-17 06:43:52 +0900
committernsfisis <nsfisis@gmail.com>2026-08-17 06:43:52 +0900
commit52a0665acbbe5bf5b8c6875118fb9cdf7952453b (patch)
tree7302b0b87f7b0d406126da734ef82c80abf64204 /crates/shirabe/src/autoload/autoload_generator.rs
parentc81e9f89d9e4388f36a4427bbaa95eced659d2ce (diff)
downloadphp-shirabe-52a0665acbbe5bf5b8c6875118fb9cdf7952453b.tar.gz
php-shirabe-52a0665acbbe5bf5b8c6875118fb9cdf7952453b.tar.zst
php-shirabe-52a0665acbbe5bf5b8c6875118fb9cdf7952453b.zip
refactor(preg): wrap the preg_* $matches maps in newtypes
The five IndexMap shapes that the preg_* functions and Preg fill in are now distinct types generated by preg_match_map!, so a matches map no longer interchanges with any other map of the same key and value type. Index<usize> is kept alongside Index<&Q> because call sites such as config_command and event_dispatcher reach for a group by its position in the map rather than by its capture key.
Diffstat (limited to 'crates/shirabe/src/autoload/autoload_generator.rs')
-rw-r--r--crates/shirabe/src/autoload/autoload_generator.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/crates/shirabe/src/autoload/autoload_generator.rs b/crates/shirabe/src/autoload/autoload_generator.rs
index 91df1749..9a4a4c26 100644
--- a/crates/shirabe/src/autoload/autoload_generator.rs
+++ b/crates/shirabe/src/autoload/autoload_generator.rs
@@ -23,7 +23,7 @@ use crate::util::Platform;
use indexmap::IndexMap;
use shirabe_class_map_generator::class_map::ClassMap;
use shirabe_class_map_generator::class_map_generator::ClassMapGenerator;
-use shirabe_pcre::{CaptureKey, Preg};
+use shirabe_pcre::{CaptureKey, Preg, PregMatchedGroups};
use shirabe_php_shim::{
InvalidArgumentException, PhpMixed, array_keys, array_map, array_merge_map,
array_merge_recursive, array_shift, array_slice_strs, array_unique, bin2hex, explode,
@@ -559,7 +559,7 @@ return array(
{
let content =
file_get_contents(format!("{}/autoload.php", vendor_path)).unwrap_or_default();
- let mut matches: IndexMap<CaptureKey, String> = IndexMap::new();
+ let mut matches = PregMatchedGroups::new();
if Preg::match3(
php_regex!("{ComposerAutoloaderInit([^:\\s]+)::}"),
&content,
@@ -1155,7 +1155,7 @@ return array(
let package = &item.0;
let links = array_merge_map(package.get_replaces(), package.get_provides());
for (_k, link) in &links {
- let mut matches: IndexMap<CaptureKey, String> = IndexMap::new();
+ let mut matches = PregMatchedGroups::new();
if Preg::match3(
php_regex!("{^ext-(.+)$}iD"),
link.get_target(),
@@ -1201,7 +1201,7 @@ return array(
required_php_64bit = true;
}
- let mut matches: IndexMap<CaptureKey, String> = IndexMap::new();
+ let mut matches = PregMatchedGroups::new();
if check_platform.as_bool() == Some(true)
&& Preg::match3(
php_regex!("{^ext-(.+)$}iD"),
@@ -1950,7 +1950,7 @@ class ComposerStaticInit{}
std::cell::RefCell::new(None);
let p = Preg::replace_callback(
php_regex!("{^((?:(?:\\\\\\.){1,2}+/)+)}"),
- |matches: &IndexMap<CaptureKey, String>| -> String {
+ |matches: &PregMatchedGroups| -> String {
// undo preg_quote for the matched string
*updir_cell.borrow_mut() = Some(str_replace(
"\\.",