import { describe, it, expect } from "vitest"; import { markdownToIR } from "./ir.js";
/** * HR (Thematic Break) Spacing Analysis * ===================================== * * CommonMark Spec (0.31.2) Section 4.1 - Thematic Breaks: * - Thematic breaks (---, ***, ___) produce <hr /> in HTML * - "Thematic breaks do not need blank lines before or after" * - A thematic break can interrupt a paragraph * * HTML Output per spec: * Input: "Foo\n***\nbar" * HTML: "<p>Foo</p>\n<hr />\n<p>bar</p>" * * PLAIN TEXT OUTPUT DECISION: * * The HR element is a block-level thematic separator. In plain text output, * we render HRs as a visible separator "───" to maintain visual distinction.
*/
it("hr interrupting paragraph (setext heading case)", () => { // Note: "Para\n---" is a setext heading in CommonMark! // Using *** to test actual HR behavior const input = `Para 1
***
Para 2`; const result = markdownToIR(input); // HR interrupts para, renders visibly
expect(result.text).toContain("───");
});
});
describe("expected behavior (tests assert CORRECT behavior)", () => {
it("hr between paragraphs should render with separator", () => { const input = `Para 1
---
Para 2`; const result = markdownToIR(input);
expect(result.text).toBe("Para 1\n\n───\n\nPara 2");
});
it("hr between paragraphs using *** should render with separator", () => { const input = `Para 1
***
Para 2`; const result = markdownToIR(input);
expect(result.text).toBe("Para 1\n\n───\n\nPara 2");
});
it("hr between paragraphs using ___ should render with separator", () => { const input = `Para 1
___
Para 2`; const result = markdownToIR(input);
expect(result.text).toBe("Para 1\n\n───\n\nPara 2");
});
it("consecutive hrs should produce multiple separators", () => { const input = `---
---
---`; const result = markdownToIR(input); // Each HR renders as a separator
expect(result.text).toBe("───\n\n───\n\n───");
});
it("hr at document end renders separator", () => { const input = `Para
---`; const result = markdownToIR(input);
expect(result.text).toBe("Para\n\n───");
});
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.