<!DOCTYPE html> <!-- NOTE: Styling is based on the CommonMark specification template: --> <!-- - https://github.com/commonmark/commonmark-spec/blob/master/tools/make_spec.lua --> <!-- - https://github.com/commonmark/commonmark-spec/blob/master/tools/template.html --> <!-- --> <!-- NOTE: 'TODO:' comments will be followed up as task(s) on this issue: --> <!-- - https://gitlab.com/gitlab-org/gitlab/-/issues/361241 --> <html lang="en"> <head> <meta charset="UTF-8"> <title><%= title %></title> <style type="text/css"> body { font-family: Helvetica, arial, freesans, clean, sans-serif; line-height: 1.4; max-width: 48em; margin: auto; padding: 0 0.5em 4em; color: #333333; background-color: #ffffff; font-size: 13pt; } div#TOC ul { list-style: none; } h1 { font-size: 140%; font-weight: bold; border-top: 1px solid gray; padding-top: 0.5em; } h2 { font-size: 120%; font-weight: bold; } h3 { font-size: 110%; font-weight: bold; } h4 { font-size: 100%; font-weight: bold; } /* NOTE: "font-weight: bold" was applied to "a.definition" class in original CommonMark */ /* template, but in practice it was applied to all anchors */ a { font-weight: bold; } /* TODO: Format whitespace in examples. This will require preprocessing to insert spans around them. */ /*span.space { position: relative; }*/ /*span.space:after {*/ /* content: "·";*/ /* position: absolute;*/ /* !* create a mark that indicates a space (trick from D. Greenspan) *!*/ /* top: 0; bottom: 7px; left: 1px; right: 1px;*/ /* color: #aaaaaa;*/ /*}*/ /*@media print {*/ /* a.dingus { display: none; }*/ /*}*/ div.example { overflow: hidden; } p { text-align: justify; } pre { padding: 0.5em; margin: 0.2em 0 0.5em; font-size: 88%; } pre { white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ } code { font-family: monospace; background-color: #d3e1e4; } pre > code { background-color: transparent; } .example { font-size: 0; /* hack to get width: 50% to work on inline-block */ padding-bottom: 6pt; } .column pre { font-size: 11pt; padding: 2pt 6pt; } div.examplenum { font-size: 11pt; text-align: left; margin-bottom: 10px; } div.column { display: inline-block; width: 50%; vertical-align: top; } div.example > div:nth-child(2) { clear: left; background-color: #d3e1e4; } div.example > div:nth-child(3) { clear: right; background-color: #c9cace; } @media print { @page { size: auto; margin: 1.2in 1.2in 1.2in 1.2in; } body { margin: 0; line-height: 1.2; font-size: 10pt; } .column pre { font-size: 9pt; } div.examplenum { font-size: 9pt; } } </style> <!-- TODO: Extract this javascript out to a separate file and unit test it --> <script type="text/javascript"> /* NOTE: The following code performs many of the pre-processing steps originally handled */ /* in https://github.com/commonmark/commonmark-spec/blob/master/tools/make_spec.lua */ /* Adds a div.example wrapper around each pair of example code blocks. */ function addAttributesToExampleWrapperDivs() { const exampleAnchorTags = document.querySelectorAll("a[href^=\"#example-\"]"); for (const exampleAnchorTag of exampleAnchorTags) { const examplenumDiv = exampleAnchorTag.parentElement; examplenumDiv.classList.add("examplenum"); const exampleDiv = examplenumDiv.parentElement; exampleDiv.classList.add("example"); exampleDiv.id = exampleAnchorTag.getAttribute("href").substring(1); } } function addColumnClassToMarkdownDivs() { const markdownCodeBlockDivs = document.querySelectorAll("div.markdown-code-block"); for (const markdownCodeBlockDiv of markdownCodeBlockDivs) { markdownCodeBlockDiv.classList.add("column"); } } function addNumbersToHeaders() { const headers = document.querySelectorAll('h1,h2,h3'); let h1Index = -1; // NOTE: -1 because we don't assign a number to the title let h2Index = 0; let h3Index = 0; const tocEntries = []; for (const header of headers) { if (h1Index === -1) { h1Index++; continue; } const originalHeaderTextContent = header.textContent.trim(); const headerAnchor = originalHeaderTextContent.toLowerCase().replaceAll(' ', '-'); header.id = headerAnchor; let indent; let headerTextContent; if (header.tagName === 'H1') { h1Index++; h2Index = 0; h3Index = 0; header.textContent = headerTextContent = h1Index + ' ' + originalHeaderTextContent; indent = 0; } else if (header.tagName === 'H2') { h2Index++; h3Index = 0; header.textContent = headerTextContent = h1Index + '.' + h2Index + ' ' + originalHeaderTextContent; indent = 1; } else if (header.tagName === 'H3') { h3Index++; header.textContent = headerTextContent = h1Index + '.' + h2Index + '.' + h3Index + ' ' + originalHeaderTextContent; indent = 2; } tocEntries.push({headerAnchor, headerTextContent, indent}); } } document.addEventListener("DOMContentLoaded", function(_event) { addAttributesToExampleWrapperDivs(); addColumnClassToMarkdownDivs(); const tocEntries = addNumbersToHeaders(); addToc(tocEntries); }); /* NOTE: The following code is to support the "Try it" interactive "dingus", which */ /* we do not yet support. But it is being left here for comparison context with the */ /* original CommonMark template. */ // $$(document).ready(function() { // $$("div.example").each(function(e) { // var t = $$(this).find('code.language-markdown').text(); // $$(this).find('a.dingus').click(function(f) { // window.open('/dingus/?text=' + // encodeURIComponent(t.replace(/→/g,"\t"))); // }); // }); // $$("code.language-markdown").dblclick(function(e) { window.open('/dingus/?text=' + // encodeURIComponent($$(this).text())); // }); // }); </script> </head> <body> <h1 class="title"><%= title %></h1> <div class="version">Version <%= version %></div> <%= body %> </body> </html>