Markdown-naar-HTML-omzetter

Zet Markdown om in schone HTML met live voorbeeld — koppen, lijsten, links, codeblokken en meer, allemaal in je browser.

1.120 weergaven

Hoe het werkt

Deze omzetter volgt de CommonMark-specificatie — een nauwkeurig gedefinieerde versie van Markdown die de dubbelzinnigheden oplost die de oorspronkelijke Markdown-beschrijving uit 2004 open liet (hoe geneste lijsten zich verhouden tot losse alinea's, wat er gebeurt als een lijstmarkering binnen een blockquote staat, enzovoort). Het parseren verloopt in twee afzonderlijke fasen. De eerste fase werkt op blokniveau: de ruwe tekst wordt, puur op basis van regelstructuur en inspringing, opgesplitst in structurele eenheden — alinea's, ATX-koppen (# tot en met ######), codeblokken tussen backticks, blockquotes, geordende en ongeordende lijsten, horizontale lijnen — zonder dat er al gekeken wordt naar wat er ín elk blok staat. De tweede fase werkt op inline-niveau: binnen elk blok zoekt de parser naar nadrukmarkeringen (*cursief*, **vet**), inline codefragmenten (`code`) en link- of afbeeldingssyntax ([tekst](url)), en zet die om in de bijbehorende HTML-tags. Dit ontwerp in twee fasen verklaart waarom een sterretje binnen een codeblok ongemoeid blijft — codeblokken zijn al volledig afgehandeld in de eerste fase, voordat de inline-nadrukregels hun inhoud ooit bereiken.

Voorbeeld: bij ## Release Notes gevolgd door een lege regel en - **v2.1**: fixes, herkent de blokniveau-parsing eerst een kop en een lijst met één item; de inline-parsing zet daarna **v2.1** om in <strong>v2.1</strong> binnen het <li>-element. Tabellen volgen de GFM-uitbreiding (GitHub Flavored Markdown) bovenop CommonMark: een kopregel, een ----scheidingsregel waarvan de plaatsing van dubbele punten (:--, :-:, --:) de uitlijning van een kolom bepaalt, en daaronder een willekeurig aantal datarijen.

Wat u moet weten

  • Ruwe HTML wordt geëscaped, niet uitgevoerd — het plakken van een script-tag of een inline event-handler wordt weergegeven als zichtbare tekst in plaats van uitgevoerd, een bewuste veiligheidskeuze voor geplakte of niet-vertrouwde inhoud.
  • Losse versus strakke lijsten veranderen de uitvoer — een lege regel tussen lijstitems dwingt CommonMark om elk item in zijn eigen <p> te wikkelen (een "losse" lijst); geen lege regels houdt items als platte inline-inhoud (een "strakke" lijst), wat de verticale ruimte in de gerenderde HTML verandert.
  • Zeer diepe nesting heeft een praktisch plafond — vier of meer niveaus van geneste lijsten of referentiestijl-linkdefinities zijn geldige CommonMark, maar zijn randgevallen die beter passen bij een speciale build-time parser dan bij een browsergebaseerde live preview.

Veelgestelde vragen

Worden tabellen ondersteund?

Pipe-tabellen worden omgezet (| a | b | met een --- scheidingsregel). Uitlijning-dubbele punten worden herkend voor links/midden/rechts.

Waarom wordt mijn HTML-tag als tekst weergegeven?

Met opzet — ruwe HTML wordt voor de veiligheid geëscaped. Schrijf het equivalent in Markdown, of ontsnap het handmatig als je de bron vertrouwt.

Volgt de regelafstand de Markdown-regels?

Ja: een lege regel scheidt paragrafen, en een regeleinde met dubbele spatie produceert een <br>. Enkele regeleinden binnen een paragraaf worden samengevoegd, zoals CommonMark voorschrijft.

Waarom ziet opmaak in een geneste lijst of codeblok er soms onverwacht uit?

Omdat het parseren in twee fasen verloopt: de blokstructuur (lijsten, codeblokken, citaten) wordt eerst bepaald, puur op basis van inspringing en regelmarkeringen, voordat er binnen elk blok inline-opmaak (vet, cursief, links) wordt toegepast. Inhoud binnen een codeblok wordt nooit door de inline-fase aangeraakt, dus **dit** blijft daar platte tekst in plaats van vet te worden — dat is verwacht CommonMark-gedrag, geen fout.

Wat is het verschil tussen kern-CommonMark en "GitHub Flavored"-functies?

Kern-CommonMark definieert koppen, nadruk, lijsten, blockquotes, codeblokken en links nauwkeurig. Tabellen, doorhalen (~~tekst~~) en taaklijst-selectievakjes ([ ] / [x]) zijn GFM-uitbreidingen daarbovenop — breed ondersteund door omzetters zoals deze, maar niet gegarandeerd in elke strikte CommonMark-only implementatie waar u de uitvoer later in plakt.

Reacties

Nog geen reacties — schrijf de eerste!

Vergelijkbare tools