fix(diagram): Ticket-Refs im Label brechen nicht mehr am Bindestrich um (SPEC §9)

Der Browser bricht eine zu breit geratene Zeile an jedem Bindestrich —
aus #US-123 wurde #US-/123 über zwei Zeilen. Eine tref-Spanne mit
white-space:nowrap hält das Token zusammen; labelLines() (Export) misst
ihre Textknoten unverändert mit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-27 17:14:27 +02:00
co-authored by Claude Fable 5
parent 3f336db680
commit 83eb6ff77f
5 changed files with 44 additions and 2 deletions
+23
View File
@@ -182,3 +182,26 @@ describe('showIds — die ID in einer eigenen Zeile über dem Titel', () => {
expect(html).toContain('&lt;b: X');
});
});
/* Ticket-Referenzen im Label (SPEC §11) sind als Ganzes gehalten: eine
`tref`-Spanne mit `white-space:nowrap`, damit der Browser eine zu breit
geratene Zeile nicht am Bindestrich mitten im Token bricht. */
describe('renderTreeHtml — Ticket-Referenzen brechen nicht um', () => {
const one = text => renderTreeHtml(parse(text).roots, {t, cheapSet: new Set()}).html;
it('umspannt eine freistehende Ref im Label', () => {
expect(one('- Login bauen #auth #US-123'))
.toContain('<span class="tref">#US-123</span>');
expect(one('- #x: Detail #T-4567 klären'))
.toContain('<span class="tref">#T-4567</span>');
});
it('umspannt auch den D60-Knoten, dessen Label die Ref ist', () => {
expect(one('- #US-123')).toContain('<span class="tref">#US-123</span>');
});
it('lässt Zitier-Klammern und Nicht-Refs in Ruhe', () => {
expect(one('- Erwähnt (#US-123) nur #x')).not.toContain('tref');
expect(one('- #auth: Backend-US-123 Modul')).not.toContain('tref');
});
});