From ff74d1ac20464d4be59bf4f6641eeb63b861b691 Mon Sep 17 00:00:00 2001 From: devdatt Date: Tue, 23 Dec 2025 00:38:41 +0530 Subject: [PATCH] netplan_yaml --- encoder/static.php | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/encoder/static.php b/encoder/static.php index e68cd90..ce4a139 100755 --- a/encoder/static.php +++ b/encoder/static.php @@ -81,26 +81,33 @@ function netplan_yaml(array $data, int $indent = 0): string $pad = str_repeat(' ', $indent); foreach ($data as $key => $value) { - if (is_array($value)) { - $is_list = array_keys($value) === range(0, count($value) - 1); - if ($is_list) { - foreach ($value as $item) { - if (is_array($item)) { - $yaml .= "{$pad}-\n" . netplan_yaml($item, $indent + 1); - } else { - $yaml .= "{$pad}- {$item}\n"; - } + // List (numeric keys) + if (is_array($value) && array_keys($value) === range(0, count($value) - 1)) { + foreach ($value as $item) { + if (is_array($item)) { + $yaml .= "{$pad}-\n"; + $yaml .= netplan_yaml($item, $indent + 1); + } else { + $yaml .= "{$pad}- {$item}\n"; } - } else { - $yaml .= "{$pad}{$key}:\n" . netplan_yaml($value, $indent + 1); } - } else { - if (is_bool($value)) { - $value = $value ? 'true' : 'false'; - } - $yaml .= "{$pad}{$key}: {$value}\n"; + continue; } + + // 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;