mirror of
https://github.com/avinal/avinal.github.io.git
synced 2026-07-04 07:40:09 +05:30
3840e00bec
Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com>
80 lines
3.0 KiB
HTML
80 lines
3.0 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<link rel="stylesheet" href="/mdn-style.min.css">
|
|
<link rel="stylesheet" href="/foo-style.min.css">
|
|
|
|
<title>Document</title>
|
|
<script src="/redirect.js"></script>
|
|
<script src="https://kit.fontawesome.com/7a57741988.js" crossorigin="anonymous"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="app"></div>
|
|
|
|
<script src="/app.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
<script src="/prism.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js"></script>
|
|
<script>
|
|
var app = Elm.Main.init({ node: document.getElementById("app") });
|
|
var renderSuccess = false;
|
|
app.ports.sendString.subscribe(function (markdowndata) {
|
|
|
|
var numberOfHeadings = 0;
|
|
let toc = '';
|
|
const renderer = new marked.Renderer();
|
|
const sections = [];
|
|
renderer.heading = (text, level) => {
|
|
if (level === 1) {
|
|
return `<h${level}>${text}</h${level}>`
|
|
}
|
|
const escapedText = text.trim().toLowerCase().replace(/[^\w]+/g, '-');
|
|
const endSection = `</div></section>`;
|
|
const sectionContent = `
|
|
<section aria-labelledby="${escapedText}">
|
|
<h${level} id="${escapedText}">
|
|
<a title="Permalink to ${text}" href="#${escapedText}">
|
|
${text}
|
|
</a>
|
|
</h${level}>
|
|
<div class="section-content">`;
|
|
toc += `<li class="document-toc-item"><a class="document-toc-link" href="#${escapedText}">${text}</a></li>`;
|
|
if (numberOfHeadings === 0) {
|
|
numberOfHeadings++;
|
|
return sectionContent;
|
|
} else {
|
|
return endSection + sectionContent;
|
|
}
|
|
};
|
|
|
|
renderer.blockquote = (text) => {
|
|
return `<div id="sect3" class="notecard note">${text}</div>`;
|
|
};
|
|
|
|
marked.setOptions({
|
|
renderer: renderer,
|
|
highlight: function (code, lang) {
|
|
const grammar = Prism.languages[lang];
|
|
if (!grammar) {
|
|
console.warn(
|
|
`Unable to find a Prism grammar for '${lang}'`
|
|
);
|
|
return; // bail!
|
|
}
|
|
return Prism.highlight(code, grammar, lang);
|
|
}
|
|
})
|
|
document.getElementById("insert-here").innerHTML = marked.parse(markdowndata);
|
|
// document.getElementById("toc-entries").innerHTML = toc;
|
|
});
|
|
|
|
// app.ports.isRenderComplete.send(renderSuccess);
|
|
</script>
|
|
</body>
|
|
|
|
</html> |