aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-21 20:23:04 +0900
committernsfisis <nsfisis@gmail.com>2026-06-21 20:23:04 +0900
commite4402e52c08b8b28497151302c994793ce885cc3 (patch)
treeb1a12dd3941c95d1b64ed4f38a38902eecf2ff18 /crates/shirabe-external-packages
parentaa270b53045cc1ce779447f4f19448236e9c4c67 (diff)
downloadphp-shirabe-e4402e52c08b8b28497151302c994793ce885cc3.tar.gz
php-shirabe-e4402e52c08b8b28497151302c994793ce885cc3.tar.zst
php-shirabe-e4402e52c08b8b28497151302c994793ce885cc3.zip
refactor(php-shim): drop current()/key()/end() array helpers
PHP's internal array pointer (current/key/end) has no clean Rust equivalent. Remove these todo!() shim stubs and replace each call site with direct first/last element access matching Composer's original behavior. Unblocks Config::merge of anonymous {name: false} disable entries, re-enabling test_add_packagist_repository. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages')
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/question/choice_question.rs7
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs28
2 files changed, 29 insertions, 6 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/question/choice_question.rs b/crates/shirabe-external-packages/src/symfony/console/question/choice_question.rs
index 64f0687..24d434d 100644
--- a/crates/shirabe-external-packages/src/symfony/console/question/choice_question.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/question/choice_question.rs
@@ -221,9 +221,10 @@ impl ChoiceQuestion {
return Ok(PhpMixed::List(multiselect_choices));
}
- Ok(shirabe_php_shim::current(PhpMixed::List(
- multiselect_choices,
- )))
+ Ok(multiselect_choices
+ .into_iter()
+ .next()
+ .unwrap_or(PhpMixed::Bool(false)))
})
}
}
diff --git a/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs b/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs
index 83229a9..4b945b0 100644
--- a/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs
+++ b/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs
@@ -171,9 +171,31 @@ impl SymfonyStyle {
todo!()
}
// $headers[] = key($value); $row[] = current($value);
- let _ = shirabe_php_shim::key(value.clone());
- headers.push(todo!());
- row.push(shirabe_php_shim::current(value));
+ let (first_key, first_value) = match &value {
+ PhpMixed::Array(entries) => (
+ entries
+ .keys()
+ .next()
+ .map(|k| PhpMixed::String(k.clone()))
+ .unwrap_or(PhpMixed::Null),
+ entries
+ .values()
+ .next()
+ .cloned()
+ .unwrap_or(PhpMixed::Bool(false)),
+ ),
+ PhpMixed::List(items) => (
+ if items.is_empty() {
+ PhpMixed::Null
+ } else {
+ PhpMixed::Int(0)
+ },
+ items.first().cloned().unwrap_or(PhpMixed::Bool(false)),
+ ),
+ _ => unreachable!("value is an array past the is_array guard"),
+ };
+ headers.push(first_key);
+ row.push(first_value);
}
self.horizontal_table(headers, vec![PhpMixed::List(row.into_iter().collect())]);