netplan_yaml

This commit is contained in:
devdatt 2025-12-23 00:38:41 +05:30
parent 17e6b1ee2b
commit ff74d1ac20
1 changed files with 23 additions and 16 deletions

View File

@ -81,26 +81,33 @@ function netplan_yaml(array $data, int $indent = 0): string
$pad = str_repeat(' ', $indent); $pad = str_repeat(' ', $indent);
foreach ($data as $key => $value) { foreach ($data as $key => $value) {
if (is_array($value)) {
$is_list = array_keys($value) === range(0, count($value) - 1);
if ($is_list) { // List (numeric keys)
foreach ($value as $item) { if (is_array($value) && array_keys($value) === range(0, count($value) - 1)) {
if (is_array($item)) { foreach ($value as $item) {
$yaml .= "{$pad}-\n" . netplan_yaml($item, $indent + 1); if (is_array($item)) {
} else { $yaml .= "{$pad}-\n";
$yaml .= "{$pad}- {$item}\n"; $yaml .= netplan_yaml($item, $indent + 1);
} } else {
$yaml .= "{$pad}- {$item}\n";
} }
} else {
$yaml .= "{$pad}{$key}:\n" . netplan_yaml($value, $indent + 1);
} }
} else { continue;
if (is_bool($value)) {
$value = $value ? 'true' : 'false';
}
$yaml .= "{$pad}{$key}: {$value}\n";
} }
// Mapping
if (is_array($value)) {
$yaml .= "{$pad}{$key}:\n";
$yaml .= netplan_yaml($value, $indent + 1);
continue;
}
// Scalar
if (is_bool($value)) {
$value = $value ? 'true' : 'false';
}
$yaml .= "{$pad}{$key}: {$value}\n";
} }
return $yaml; return $yaml;