diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-21 20:23:04 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-21 20:23:04 +0900 |
| commit | e4402e52c08b8b28497151302c994793ce885cc3 (patch) | |
| tree | b1a12dd3941c95d1b64ed4f38a38902eecf2ff18 /crates/shirabe-external-packages/src/symfony | |
| parent | aa270b53045cc1ce779447f4f19448236e9c4c67 (diff) | |
| download | php-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/src/symfony')
| -rw-r--r-- | crates/shirabe-external-packages/src/symfony/console/question/choice_question.rs | 7 | ||||
| -rw-r--r-- | crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs | 28 |
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())]); |
