YAML: Listen aus Maps

`- titel: X` zerfiel in Zeichenketten wie "titel: X". Jede Kanalpunkt-
Belohnung in der Konfiguration war damit ohne jede Meldung unwirksam, auch
das Beispiel in config.example.yaml.

Ein Listeneintrag der Form `schluessel: wert` beginnt jetzt eine Map; die
folgenden, tiefer eingerueckten Zeilen gehoeren dazu. `- http://x` bleibt
Text, weil nach dem Doppelpunkt kein Leerzeichen steht.

layout.yaml, config.example.yaml und die Hub-Konfiguration werden
nachweislich gleich gelesen wie vorher.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
ZeasyAlexandClaude Opus 5.5 committed 2026-09-23 22:58:35 +02:00
1 parent 0a3d462854
commit b1cf0f8fab
2 files changed
+50 -3

No files matched your search

+34
View File
@@ -53,3 +53,37 @@ test('ein Byte Order Mark verstellt nicht den ersten Schluessel', () => {
assert.deepEqual(y, { channel: { login: 'abdulive_' } });
assert.ok(!Object.keys(y).some((k) => k.charCodeAt(0) === 0xfeff));
});
test('Listen aus Maps, wie in rewards.belohnungen', () => {
// Frueher zerfiel das in Zeichenketten wie "id: abc", und die Belohnung
// war ohne jede Meldung unwirksam.
const y = parseYaml([
'rewards:',
' enabled: true',
' belohnungen:',
' - id: abc-123',
' titel: Nachricht vorlesen',
' aktion: tts',
' - titel: Konfetti',
' aktion: konfetti',
' tts:',
' blockliste:',
' - sieg heil',
' - http',
' maxZeichen: 200',
].join('\n'));
assert.deepEqual(y, {
rewards: {
enabled: true,
belohnungen: [
{ id: 'abc-123', titel: 'Nachricht vorlesen', aktion: 'tts' },
{ titel: 'Konfetti', aktion: 'konfetti' },
],
tts: { blockliste: ['sieg heil', 'http'], maxZeichen: 200 },
},
});
});
test('Listeneintrag mit Doppelpunkt ohne Leerzeichen bleibt Text', () => {
assert.deepEqual(parseYaml('a:\n - http://x.de\n'), { a: ['http://x.de'] });
});