aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs')
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/style/symfony_style.rs28
1 files changed, 25 insertions, 3 deletions
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())]);