
Markdown HTML-iks ja tagasi: konverter reaalajas eelvaatega
Kleebi Markdown — näed valmis lehte ja kõrval puhast HTML-i. Kleebi HTML — saad Markdowni, mis sobib README või blogiartikli jaoks. Mõlemad suunad töötavad sinu brauseris: teksti ei saadeta kuhugi ega salvestata kusagil.
.md — fail loetakse lokaalselt. Toetatud on CommonMark tavapärases mahus pluss GFM-i laiendused: tabelid, läbikriipsutus, ülesandeloendid.
Kleebi Markdown ülal — HTML ilmub siia.
.html — fail loetakse lokaalselt. Sõelumine käib DOMParser-i kaudu, seega töötab nii fragmendi kui terve lehega.
Kleebi HTML ülal — Markdown ilmub siia.
Tekst ei lahku sinu brauserist — teisendus toimub lokaalselt, midagi serverisse ei saadeta.
Mida täpselt toetatakse
Markdowni poolelt — CommonMark tavapärases mahus pluss GFM-i laiendused: pealkirjad trellidega ja allajoonimisega, lõigud, horisontaaljooned; täpp-, nummerdatud ja pesastatud loendid nii tihedas kui hõredas vormis; ülesandeloendid nurksulgudes; tsitaadid, sealhulgas laisa reajätkuga; aiaga kood keelenimega ja taandega kood; GFM-i tabelid veergude joondusega; lingid, pildid, automaatlingid, viitelingid dokumendi lõpus; rasvane, kursiiv, läbikriipsutus, kood reas, paojadaga märgid, kõva reavahetus. HTML-i poolelt käib sõelumine brauseri enda DOMParser-i kaudu, seega töötab nii fragment kui terve lehekülg koos head-osaga. Ühendatud lahtritega tabelid Markdowni ei kandu — sellist süntaksit seal pole, seega jäävad need siltideks ja tööriist ütleb seda. Mida teadlikult pole: süntaksi esiletõstet koodiplokkides, allmärkusi, valemeid ega konkreetsete staatiliste generaatorite direktiive. See pole enam Markdown, vaid ühe kindla tööriista murre.
Üks reavahetus: kaks erinevat Markdowni
Kõige sagedasem lahknevuse allikas konverterite vahel on just üksik reavahetus lõigu sees. CommonMarki järgi on see tavaline tühik: kaks rida liidetakse üheks lõiguks. Nii käituvad Pandoc, dokumentatsiooni generaatorid ja enamik staatilisi saite. GitHub teeb kommentaarides, ülesannete kirjeldustes ja retsensioonides vastupidi: iga reavahetus muutub br-sildiks. Just seepärast kleepub tekst, mis nägi ülesandes hea välja, README-sse tõstetuna üheks tervikuks lõiguks. Märkeruut «Üksik reavahetus on br» lülitab nende kahe harjumuse vahel. Vaikimisi kehtib CommonMarki reegel.
Miks eelvaade ei näita kõike, mis HTML-is on
Spetsifikatsiooni järgi lubab Markdown enda sees HTML-i. See on mugav ja tähendab samal ajal, et iga kleebitud tekst võib sisaldada käivitatavat koodi. Populaarsed veebivaaturid panevad tulemuse innerHTML-i sellisena, nagu on. Teek marked, millele nad on ehitatud, ei oma alates neljandast versioonist üldse sisseehitatud puhastust — võõra Markdowni script-silt lihtsalt käivitub seal. Siin ehitatakse eelvaade DOM-sõlmedest valge nimekirja alusel: script, iframe, object, sündmusekäsitlejad nagu onclick ja javascript:-skeemiga lingid sinna ei jõua ning väljalõigatu loend kuvatakse tulemuse all. Vahekaardil «HTML-kood» näed täielikku väljundit ilma kärbeteta — see on tekst, mitte lehekülg, ja seda käivitada pole võimalik. Lähtekoodi HTML pääseb eelvaatesse ainult siis, kui oled ise vastava märkeruudu sisse lülitanud. Vaikimisi saavad sildid paojada ja neid näidatakse tekstina.
