initial COmmit: Add KB Antora Importer plugin files

This commit is contained in:
Sven Steinert
2026-05-12 14:37:09 +02:00
parent cf253c1367
commit 6abf6f9c3d
39 changed files with 2945 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
<?php
declare(strict_types=1);
namespace KbAntoraImporter\Antora;
final class AntoraYamlReader
{
public function parse(string $yaml): array
{
$data = [
'name' => '',
'title' => '',
'version' => '',
'nav' => [],
];
$inNav = false;
foreach (preg_split('/\R/', $yaml) ?: [] as $line) {
$trimmed = trim($line);
if ('' === $trimmed || str_starts_with($trimmed, '#')) {
continue;
}
if (preg_match('/^([a-zA-Z0-9_-]+):\s*(.*)$/', $trimmed, $matches)) {
$key = $matches[1];
$value = trim($matches[2], " \"'");
$inNav = 'nav' === $key;
if (array_key_exists($key, $data) && 'nav' !== $key) {
$data[$key] = $value;
}
continue;
}
if ($inNav && preg_match('/^-\s*(.+)$/', $trimmed, $matches)) {
$data['nav'][] = trim($matches[1], " \"'");
}
}
return $data;
}
}