feat: render md files using gfm

This commit is contained in:
Julien Oculi 2024-06-04 18:30:12 +02:00
parent eed2f5e971
commit 027db0f7d0
12 changed files with 482 additions and 23 deletions

View file

@ -12,6 +12,7 @@
"useTabs": true "useTabs": true
}, },
"imports": { "imports": {
"@deno/gfm": "jsr:@deno/gfm@^0.8.2",
"@std/media-types": "jsr:@std/media-types@^0.224.1", "@std/media-types": "jsr:@std/media-types@^0.224.1",
"@std/path": "jsr:@std/path@^0.225.2" "@std/path": "jsr:@std/path@^0.225.2"
} }

View file

@ -24,6 +24,7 @@
"remote": {}, "remote": {},
"workspace": { "workspace": {
"dependencies": [ "dependencies": [
"jsr:@deno/gfm@^0.8.2",
"jsr:@std/media-types@^0.224.1", "jsr:@std/media-types@^0.224.1",
"jsr:@std/path@^0.225.2" "jsr:@std/path@^0.225.2"
] ]

View file

@ -35,7 +35,39 @@
</div> </div>
</nav> </nav>
<div id="content"> <div id="content">
<main><div class="space-y-7" id=""><section class="section" id="serve_file.ts"> <main><div class="space-y-7" id=""><section class="section" id="render_gfm.ts">
<div>
<h2 class="anchorable mb-1"><a href="#render_gfm.ts" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
width="16"
height="16"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g clip-path="url(#clip0_1081_1237)">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
fill="currentColor"
/>
</g>
<defs>
<clipPath id="clip0_1081_1237">
<rect width="14" height="14" fill="white" />
</clipPath>
</defs>
</svg>
</a>
<a href=".&#x2F;.&#x2F;render_gfm.ts&#x2F;~&#x2F;index.html" class="contextLink">render_gfm.ts</a></h2></div><div class="namespaceSection"><div class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<div class="namespaceItemContent">
<a href=".&#x2F;.&#x2F;render_gfm.ts&#x2F;~&#x2F;renderGfm.html" title="renderGfm">renderGfm</a>
<div><span class="italic">No documentation available</span></div>
</div>
</div></div>
</section>
<section class="section" id="serve_file.ts">
<div> <div>
<h2 class="anchorable mb-1"><a href="#serve_file.ts" class="anchor" aria-label="Anchor" tabIndex="-1"><svg <h2 class="anchorable mb-1"><a href="#serve_file.ts" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
width="16" width="16"

View file

@ -31,6 +31,10 @@
<div><nav class="topSymbols"> <div><nav class="topSymbols">
<h3>Symbols</h3> <h3>Symbols</h3>
<ul><li> <ul><li>
<a href=".&#x2F;render_gfm.ts&#x2F;~&#x2F;renderGfm.html" title="renderGfm"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">renderGfm</span>
</a>
</li><li>
<a href=".&#x2F;serve_file.ts&#x2F;~&#x2F;serveFile.html" title="serveFile"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div> <a href=".&#x2F;serve_file.ts&#x2F;~&#x2F;serveFile.html" title="serveFile"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">serveFile</span> <span class="hover:bg-Function/15">serveFile</span>
</a> </a>
@ -46,12 +50,8 @@
<a href=".&#x2F;url_utils.ts&#x2F;~&#x2F;getRepoUrl.html" title="getRepoUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div> <a href=".&#x2F;url_utils.ts&#x2F;~&#x2F;getRepoUrl.html" title="getRepoUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getRepoUrl</span> <span class="hover:bg-Function/15">getRepoUrl</span>
</a> </a>
</li><li>
<a href=".&#x2F;url_utils.ts&#x2F;~&#x2F;getSourceUrl.html" title="getSourceUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getSourceUrl</span>
</a>
</li></ul><a class="flex items-center gap-0.5" href=".&#x2F;all_symbols.html"> </li></ul><a class="flex items-center gap-0.5" href=".&#x2F;all_symbols.html">
<span class="leading-none">view all 9 symbols</span><svg <span class="leading-none">view all 10 symbols</span><svg
width="16" width="16"
height="16" height="16"
viewBox="0 0 16 16" viewBox="0 0 16 16"

View file

@ -0,0 +1,119 @@
<!DOCTYPE html>
<html>
<head>
<title>Index - Portfolio Sever documentation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="doc-current-file" content="">
<link rel="stylesheet" href="..&#x2F;..&#x2F;styles.css">
<link rel="stylesheet" href="..&#x2F;..&#x2F;page.css">
<script src="..&#x2F;..&#x2F;search_index.js" defer></script>
<script src="..&#x2F;..&#x2F;script.js" defer></script>
<script src="..&#x2F;..&#x2F;fuse.js" defer></script>
<script src="..&#x2F;..&#x2F;search.js" defer></script>
</head>
<body class="ddoc">
<nav class="top-0 sticky bg-white z-50 py-3">
<div class="max-lg:flex md:items-center justify-between gap-4 max-md:flex-col-reverse lg:grid lg:grid-cols-4 lg:gap-12">
<div class="lg:col-span-3"><ul class="breadcrumbs"><li><a href="..&#x2F;..&#x2F;" class="contextLink">Portfolio Sever</a></li><span class="text-[#0F172A]"><svg
width="16"
height="16"
viewBox="0 0 16 16"
fill="none"
xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.76748 11.8159C5.5378 11.577 5.54525 11.1972 5.78411 10.9675L8.93431 8L5.78411 5.0325C5.54525 4.80282 5.5378 4.423 5.76748 4.18413C5.99715 3.94527 6.37698 3.93782 6.61584 4.1675L10.2158 7.5675C10.3335 7.68062 10.4 7.83679 10.4 8C10.4 8.16321 10.3335 8.31938 10.2158 8.4325L6.61584 11.8325C6.37698 12.0622 5.99715 12.0547 5.76748 11.8159Z" fill="currentColor" />
</svg>
</span><li>render_gfm.ts</li></ul>
</div>
<input
type="text"
id="searchbar"
style="display: none;"
class="lg:col-[span_1_/_-1] flex-1 py-2 px-2.5 rounded text-sm border border-gray-300 bg-transparent" />
</div>
</nav>
<div id="content">
<main><section >
<div class="space-y-2 flex-1 "><div class="space-y-7" id="module_doc"><section class="section" id="Functions">
<div>
<h2 class="anchorable mb-1"><a href="#Functions" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
width="16"
height="16"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g clip-path="url(#clip0_1081_1237)">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
fill="currentColor"
/>
</g>
<defs>
<clipPath id="clip0_1081_1237">
<rect width="14" height="14" fill="white" />
</clipPath>
</defs>
</svg>
</a>
Functions</h2></div><div class="namespaceSection"><div class="namespaceItem" ><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<div class="namespaceItemContent">
<a href="..&#x2F;..&#x2F;.&#x2F;render_gfm.ts&#x2F;~&#x2F;renderGfm.html" title="renderGfm">renderGfm</a>
<div><span class="italic">No documentation available</span></div>
</div>
</div></div>
</section>
</div>
</div>
</section>
</main><div class="toc">
<div><div class="usageContent">
<h3>Usage</h3><div class="markdown"><pre class="highlight"><code><span style="font-weight:bold;color:#a71d5d;">import </span><span style="color:#0086b3;">* </span><span style="font-weight:bold;color:#a71d5d;">as </span><span style="color:#323232;">mod </span><span style="font-weight:bold;color:#a71d5d;">from </span><span style="color:#183691;">"render_gfm.ts"</span><span style="color:#323232;">;
</span></code><button class="context_button" data-copy="import * as mod from &quot;render_gfm.ts&quot;;
"><svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="2" y="2" width="7" height="7" fill="none"></rect>
<rect x="6" y="6" width="7" height="7" fill="none"></rect>
<path d="M1.55566 2.7C1.55566 2.03726 2.09292 1.5 2.75566 1.5H8.75566C9.41841 1.5 9.95566 2.03726 9.95566 2.7V5.1H12.3557C13.0184 5.1 13.5557 5.63726 13.5557 6.3V12.3C13.5557 12.9627 13.0184 13.5 12.3557 13.5H6.35566C5.69292 13.5 5.15566 12.9627 5.15566 12.3V9.9H2.75566C2.09292 9.9 1.55566 9.36274 1.55566 8.7V2.7ZM6.35566 9.9V12.3H12.3557V6.3H9.95566V8.7C9.95566 9.36274 9.41841 9.9 8.75566 9.9H6.35566ZM8.75566 8.7V2.7H2.75566V8.7H8.75566Z" fill="#232323"></path>
</svg>
</button><code></code></pre>
</div></div><nav class="topSymbols">
<h3>Symbols</h3>
<ul><li>
<a href="..&#x2F;..&#x2F;.&#x2F;render_gfm.ts&#x2F;~&#x2F;renderGfm.html" title="renderGfm"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">renderGfm</span>
</a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;serve_file.ts&#x2F;~&#x2F;serveFile.html" title="serveFile"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">serveFile</span>
</a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getBaseUrl.html" title="getBaseUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getBaseUrl</span>
</a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getIndexUrl.html" title="getIndexUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getIndexUrl</span>
</a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getRepoUrl.html" title="getRepoUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getRepoUrl</span>
</a>
</li></ul><a class="flex items-center gap-0.5" href="..&#x2F;..&#x2F;.&#x2F;all_symbols.html">
<span class="leading-none">view all 10 symbols</span><svg
width="16"
height="16"
viewBox="0 0 16 16"
fill="none"
xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.76748 11.8159C5.5378 11.577 5.54525 11.1972 5.78411 10.9675L8.93431 8L5.78411 5.0325C5.54525 4.80282 5.5378 4.423 5.76748 4.18413C5.99715 3.94527 6.37698 3.93782 6.61584 4.1675L10.2158 7.5675C10.3335 7.68062 10.4 7.83679 10.4 8C10.4 8.16321 10.3335 8.31938 10.2158 8.4325L6.61584 11.8325C6.37698 12.0622 5.99715 12.0547 5.76748 11.8159Z" fill="currentColor" />
</svg>
</a></nav></div>
</div>
<div id="searchResults"></div></div>
</body>
</html>

View file

@ -0,0 +1,264 @@
<!DOCTYPE html>
<html>
<head>
<title>renderGfm - Portfolio Sever documentation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="doc-current-file" content="render_gfm.ts">
<link rel="stylesheet" href="..&#x2F;..&#x2F;styles.css">
<link rel="stylesheet" href="..&#x2F;..&#x2F;page.css">
<script src="..&#x2F;..&#x2F;search_index.js" defer></script>
<script src="..&#x2F;..&#x2F;script.js" defer></script>
<script src="..&#x2F;..&#x2F;fuse.js" defer></script>
<script src="..&#x2F;..&#x2F;search.js" defer></script>
</head>
<body class="ddoc">
<nav class="top-0 sticky bg-white z-50 py-3">
<div class="max-lg:flex md:items-center justify-between gap-4 max-md:flex-col-reverse lg:grid lg:grid-cols-4 lg:gap-12">
<div class="lg:col-span-3"><ul class="breadcrumbs"><li><a href="..&#x2F;..&#x2F;" class="contextLink">Portfolio Sever</a></li><span class="text-[#0F172A]"><svg
width="16"
height="16"
viewBox="0 0 16 16"
fill="none"
xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.76748 11.8159C5.5378 11.577 5.54525 11.1972 5.78411 10.9675L8.93431 8L5.78411 5.0325C5.54525 4.80282 5.5378 4.423 5.76748 4.18413C5.99715 3.94527 6.37698 3.93782 6.61584 4.1675L10.2158 7.5675C10.3335 7.68062 10.4 7.83679 10.4 8C10.4 8.16321 10.3335 8.31938 10.2158 8.4325L6.61584 11.8325C6.37698 12.0622 5.99715 12.0547 5.76748 11.8159Z" fill="currentColor" />
</svg>
</span><li><a href="..&#x2F;..&#x2F;.&#x2F;render_gfm.ts&#x2F;~&#x2F;index.html" class="contextLink">render_gfm.ts</a></li><span class="text-[#0F172A]"><svg
width="16"
height="16"
viewBox="0 0 16 16"
fill="none"
xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.76748 11.8159C5.5378 11.577 5.54525 11.1972 5.78411 10.9675L8.93431 8L5.78411 5.0325C5.54525 4.80282 5.5378 4.423 5.76748 4.18413C5.99715 3.94527 6.37698 3.93782 6.61584 4.1675L10.2158 7.5675C10.3335 7.68062 10.4 7.83679 10.4 8C10.4 8.16321 10.3335 8.31938 10.2158 8.4325L6.61584 11.8325C6.37698 12.0622 5.99715 12.0547 5.76748 11.8159Z" fill="currentColor" />
</svg>
</span><ul><li>renderGfm</li></ul></ul>
</div>
<input
type="text"
id="searchbar"
style="display: none;"
class="lg:col-[span_1_/_-1] flex-1 py-2 px-2.5 rounded text-sm border border-gray-300 bg-transparent" />
</div>
</nav>
<div id="content"><main class="symbolGroup" id="symbol_renderGfm"><article>
<div>
<div>
<div class="text-xl leading-none break-all">
<span class="text-Function">function</span>&nbsp;<span class="font-bold">renderGfm</span>
</div></div><a
class="context_button relative mr-2"
href="file:&#x2F;&#x2F;&#x2F;E:&#x2F;git.cohabit.fr&#x2F;cohabit&#x2F;portfolio_server&#x2F;src&#x2F;render_gfm.ts"><svg
width="14"
height="14"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M3.16675 12.6667H11.3334C11.6428 12.6667 11.9396 12.5438 12.1584 12.325C12.3772 12.1062 12.5001 11.8094 12.5001 11.5V4.20834L9.29175 1H4.33342C4.024 1 3.72725 1.12292 3.50846 1.34171C3.28966 1.5605 3.16675 1.85725 3.16675 2.16667V4.5"
stroke="currentColor"
stroke-width="1.4"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M6.08334 10.3333L7.83334 8.58334L6.08334 6.83334M3.75 6.83334L2 8.58334L3.75 10.3333M9.00001 1V4.5H12.5L9.00001 1Z"
stroke="currentColor"
stroke-width="1.4"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</a>
</div><div><style scoped>
#function_renderGfm_0 {
display: none;
}
#function_renderGfm_0:checked ~ *:last-child > :not(#function_renderGfm_0_div) {
display: none;
}
#function_renderGfm_0:checked ~ div:first-of-type > label[for='function_renderGfm_0'] {
background-color: var(--ddoc-selection-selected-bg);
border: solid var(--ddoc-selection-border-width) var(--ddoc-selection-selected-border-color);
cursor: unset;
padding: var(--ddoc-selection-padding); /* 1px less to counter the increased border */
}
</style>
<input type="radio" name="function_renderGfm" id="function_renderGfm_0" checked /><div class="space-y-2"><label for="function_renderGfm_0" class="functionOverload"><code class="text-sm break-words">
<span class="font-bold">renderGfm</span><span class="font-medium">(<span><span>md<span>: <span>string</span></span></span></span>)<span>: <span>string</span></span> </span>
</code></label></div>
<div class="mt-3"><div class="space-y-7" id="function_renderGfm_0_div"><section class="section" id="parameters">
<div>
<h2 class="anchorable mb-1"><a href="#parameters" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
width="16"
height="16"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g clip-path="url(#clip0_1081_1237)">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
fill="currentColor"
/>
</g>
<defs>
<clipPath id="clip0_1081_1237">
<rect width="14" height="14" fill="white" />
</clipPath>
</defs>
</svg>
</a>
Parameters</h2></div><div class="mt-2 space-y-2"><div class="anchorable docEntry" id="function_renderGfm_0_parameters_md"><a href="#function_renderGfm_0_parameters_md" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
width="16"
height="16"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g clip-path="url(#clip0_1081_1237)">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
fill="currentColor"
/>
</g>
<defs>
<clipPath id="clip0_1081_1237">
<rect width="14" height="14" fill="white" />
</clipPath>
</defs>
</svg>
</a>
<div class="docEntryHeader">
<span><code><span class="font-bold">md</span><span class="font-medium"><span>: <span>string</span></span></span>
</code>
</span><a
class="context_button relative mr-2"
href="file:&#x2F;&#x2F;&#x2F;E:&#x2F;git.cohabit.fr&#x2F;cohabit&#x2F;portfolio_server&#x2F;src&#x2F;render_gfm.ts"><svg
width="14"
height="14"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M3.16675 12.6667H11.3334C11.6428 12.6667 11.9396 12.5438 12.1584 12.325C12.3772 12.1062 12.5001 11.8094 12.5001 11.5V4.20834L9.29175 1H4.33342C4.024 1 3.72725 1.12292 3.50846 1.34171C3.28966 1.5605 3.16675 1.85725 3.16675 2.16667V4.5"
stroke="currentColor"
stroke-width="1.4"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M6.08334 10.3333L7.83334 8.58334L6.08334 6.83334M3.75 6.83334L2 8.58334L3.75 10.3333M9.00001 1V4.5H12.5L9.00001 1Z"
stroke="currentColor"
stroke-width="1.4"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</a>
</div></div>
</div></section>
<section class="section" id="return-type">
<div>
<h2 class="anchorable mb-1"><a href="#return-type" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
width="16"
height="16"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g clip-path="url(#clip0_1081_1237)">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
fill="currentColor"
/>
</g>
<defs>
<clipPath id="clip0_1081_1237">
<rect width="14" height="14" fill="white" />
</clipPath>
</defs>
</svg>
</a>
Return Type</h2></div><div class="mt-2 space-y-2"><div class="anchorable docEntry" id="function_renderGfm_0_return"><a href="#function_renderGfm_0_return" class="anchor" aria-label="Anchor" tabIndex="-1"><svg
width="16"
height="16"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g clip-path="url(#clip0_1081_1237)">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M6.80328 2.8656C6.68736 2.99 6.62425 3.15454 6.62725 3.32456C6.63025 3.49457 6.69913 3.65678 6.81936 3.77702C6.9396 3.89725 7.10181 3.96613 7.27182 3.96913C7.44184 3.97213 7.60638 3.90902 7.73078 3.7931L8.82453 2.69935C8.98712 2.53676 9.18015 2.40778 9.39259 2.31978C9.60503 2.23179 9.83272 2.1865 10.0627 2.1865C10.2926 2.1865 10.5203 2.23179 10.7327 2.31978C10.9452 2.40778 11.1382 2.53676 11.3008 2.69935C11.4634 2.86194 11.5923 3.05497 11.6803 3.2674C11.7683 3.47984 11.8136 3.70753 11.8136 3.93747C11.8136 4.16741 11.7683 4.3951 11.6803 4.60754C11.5923 4.81998 11.4634 5.013 11.3008 5.1756L9.11328 7.3631C8.95075 7.52581 8.75775 7.65488 8.5453 7.74295C8.33285 7.83102 8.10513 7.87635 7.87516 7.87635C7.64518 7.87635 7.41746 7.83102 7.20501 7.74295C6.99256 7.65488 6.79956 7.52581 6.63703 7.3631C6.51263 7.24718 6.34809 7.18407 6.17807 7.18707C6.00806 7.19007 5.84585 7.25894 5.72561 7.37918C5.60538 7.49942 5.5365 7.66163 5.5335 7.83164C5.5305 8.00165 5.59361 8.1662 5.70953 8.2906C5.99391 8.57501 6.33154 8.80062 6.70312 8.95455C7.0747 9.10847 7.47296 9.18769 7.87516 9.18769C8.27736 9.18769 8.67562 9.10847 9.0472 8.95455C9.41878 8.80062 9.7564 8.57501 10.0408 8.2906L12.2283 6.1031C12.8026 5.52874 13.1253 4.74974 13.1253 3.93747C13.1253 3.12521 12.8026 2.34621 12.2283 1.77185C11.6539 1.19749 10.8749 0.874817 10.0627 0.874817C9.25039 0.874817 8.47139 1.19749 7.89703 1.77185L6.80328 2.8656ZM2.69953 11.3006C2.53682 11.1381 2.40774 10.9451 2.31968 10.7326C2.23161 10.5202 2.18628 10.2924 2.18628 10.0625C2.18628 9.8325 2.23161 9.60477 2.31968 9.39233C2.40774 9.17988 2.53682 8.98688 2.69953 8.82435L4.88703 6.63685C5.04956 6.47414 5.24256 6.34506 5.45501 6.25699C5.66746 6.16893 5.89518 6.1236 6.12516 6.1236C6.35513 6.1236 6.58285 6.16893 6.7953 6.25699C7.00775 6.34506 7.20075 6.47414 7.36328 6.63685C7.48768 6.75277 7.65223 6.81588 7.82224 6.81288C7.99225 6.80988 8.15446 6.741 8.2747 6.62077C8.39494 6.50053 8.46381 6.33832 8.46681 6.1683C8.46981 5.99829 8.4067 5.83375 8.29078 5.70935C8.0064 5.42494 7.66878 5.19933 7.2972 5.0454C6.92562 4.89148 6.52736 4.81225 6.12516 4.81225C5.72296 4.81225 5.3247 4.89148 4.95312 5.0454C4.58154 5.19933 4.24391 5.42494 3.95953 5.70935L1.77203 7.89685C1.19767 8.47121 0.875 9.25021 0.875 10.0625C0.875 10.8747 1.19767 11.6537 1.77203 12.2281C2.34639 12.8025 3.12539 13.1251 3.93766 13.1251C4.74992 13.1251 5.52892 12.8025 6.10328 12.2281L7.19703 11.1343C7.31295 11.0099 7.37606 10.8454 7.37306 10.6754C7.37006 10.5054 7.30119 10.3432 7.18095 10.2229C7.06071 10.1027 6.8985 10.0338 6.72849 10.0308C6.55848 10.0278 6.39393 10.0909 6.26953 10.2068L5.17578 11.3006C5.01325 11.4633 4.82025 11.5924 4.6078 11.6805C4.39535 11.7685 4.16763 11.8138 3.93766 11.8138C3.70768 11.8138 3.47996 11.7685 3.26751 11.6805C3.05506 11.5924 2.86206 11.4633 2.69953 11.3006Z"
fill="currentColor"
/>
</g>
<defs>
<clipPath id="clip0_1081_1237">
<rect width="14" height="14" fill="white" />
</clipPath>
</defs>
</svg>
</a>
<div class="docEntryHeader">
<span><code><span class="font-bold"></span><span class="font-medium"><span>string</span></span>
</code>
</span><a
class="context_button relative mr-2"
href="file:&#x2F;&#x2F;&#x2F;E:&#x2F;git.cohabit.fr&#x2F;cohabit&#x2F;portfolio_server&#x2F;src&#x2F;render_gfm.ts"><svg
width="14"
height="14"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M3.16675 12.6667H11.3334C11.6428 12.6667 11.9396 12.5438 12.1584 12.325C12.3772 12.1062 12.5001 11.8094 12.5001 11.5V4.20834L9.29175 1H4.33342C4.024 1 3.72725 1.12292 3.50846 1.34171C3.28966 1.5605 3.16675 1.85725 3.16675 2.16667V4.5"
stroke="currentColor"
stroke-width="1.4"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M6.08334 10.3333L7.83334 8.58334L6.08334 6.83334M3.75 6.83334L2 8.58334L3.75 10.3333M9.00001 1V4.5H12.5L9.00001 1Z"
stroke="currentColor"
stroke-width="1.4"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</a>
</div></div>
</div></section>
</div>
</div>
</div>
</article></main>
<div class="toc">
<div><div class="usageContent">
<h3>Usage</h3><div class="markdown"><pre class="highlight"><code><span style="font-weight:bold;color:#a71d5d;">import </span><span style="color:#323232;">{ renderGfm } </span><span style="font-weight:bold;color:#a71d5d;">from </span><span style="color:#183691;">"render_gfm.ts"</span><span style="color:#323232;">;
</span></code><button class="context_button" data-copy="import { renderGfm } from &quot;render_gfm.ts&quot;;
"><svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="2" y="2" width="7" height="7" fill="none"></rect>
<rect x="6" y="6" width="7" height="7" fill="none"></rect>
<path d="M1.55566 2.7C1.55566 2.03726 2.09292 1.5 2.75566 1.5H8.75566C9.41841 1.5 9.95566 2.03726 9.95566 2.7V5.1H12.3557C13.0184 5.1 13.5557 5.63726 13.5557 6.3V12.3C13.5557 12.9627 13.0184 13.5 12.3557 13.5H6.35566C5.69292 13.5 5.15566 12.9627 5.15566 12.3V9.9H2.75566C2.09292 9.9 1.55566 9.36274 1.55566 8.7V2.7ZM6.35566 9.9V12.3H12.3557V6.3H9.95566V8.7C9.95566 9.36274 9.41841 9.9 8.75566 9.9H6.35566ZM8.75566 8.7V2.7H2.75566V8.7H8.75566Z" fill="#232323"></path>
</svg>
</button><code></code></pre>
</div></div><nav class="documentNavigation">
<h3>Document Navigation</h3><ul><li><a href="#parameters" title="Parameters">Parameters</a></li><li><a href="#return-type" title="Return Type">Return Type</a></li></ul></nav></div>
</div>
<div id="searchResults"></div></div>
</body>
</html>

View file

@ -1,3 +1,3 @@
(function () { (function () {
window.DENO_DOC_SEARCH_INDEX = {"nodes":[{"kind":["function"],"name":"serveFile","file":"serve_file.ts","location":{"filename":"serve_file.ts","line":4,"col":0,"byteIndex":84},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"getBaseUrl","file":"url_utils.ts","location":{"filename":"url_utils.ts","line":146,"col":0,"byteIndex":3773},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"getIndexUrl","file":"url_utils.ts","location":{"filename":"url_utils.ts","line":50,"col":0,"byteIndex":1404},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"getRepoUrl","file":"url_utils.ts","location":{"filename":"url_utils.ts","line":18,"col":0,"byteIndex":459},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"getSourceUrl","file":"url_utils.ts","location":{"filename":"url_utils.ts","line":89,"col":0,"byteIndex":2647},"declarationKind":"export","deprecated":false},{"kind":["typeAlias"],"name":"User","file":"user_utils.ts","location":{"filename":"user_utils.ts","line":2,"col":0,"byteIndex":60},"declarationKind":"export","deprecated":false},{"kind":["typeAlias"],"name":"UserDomain","file":"user_utils.ts","location":{"filename":"user_utils.ts","line":27,"col":0,"byteIndex":699},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"toUser","file":"user_utils.ts","location":{"filename":"user_utils.ts","line":18,"col":0,"byteIndex":442},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"toUserDomain","file":"user_utils.ts","location":{"filename":"user_utils.ts","line":53,"col":0,"byteIndex":1310},"declarationKind":"export","deprecated":false}]}; window.DENO_DOC_SEARCH_INDEX = {"nodes":[{"kind":["function"],"name":"renderGfm","file":"render_gfm.ts","location":{"filename":"render_gfm.ts","line":3,"col":0,"byteIndex":52},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"serveFile","file":"serve_file.ts","location":{"filename":"serve_file.ts","line":5,"col":0,"byteIndex":128},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"getBaseUrl","file":"url_utils.ts","location":{"filename":"url_utils.ts","line":146,"col":0,"byteIndex":3773},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"getIndexUrl","file":"url_utils.ts","location":{"filename":"url_utils.ts","line":50,"col":0,"byteIndex":1404},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"getRepoUrl","file":"url_utils.ts","location":{"filename":"url_utils.ts","line":18,"col":0,"byteIndex":459},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"getSourceUrl","file":"url_utils.ts","location":{"filename":"url_utils.ts","line":89,"col":0,"byteIndex":2647},"declarationKind":"export","deprecated":false},{"kind":["typeAlias"],"name":"User","file":"user_utils.ts","location":{"filename":"user_utils.ts","line":2,"col":0,"byteIndex":60},"declarationKind":"export","deprecated":false},{"kind":["typeAlias"],"name":"UserDomain","file":"user_utils.ts","location":{"filename":"user_utils.ts","line":27,"col":0,"byteIndex":699},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"toUser","file":"user_utils.ts","location":{"filename":"user_utils.ts","line":18,"col":0,"byteIndex":442},"declarationKind":"export","deprecated":false},{"kind":["function"],"name":"toUserDomain","file":"user_utils.ts","location":{"filename":"user_utils.ts","line":53,"col":0,"byteIndex":1310},"declarationKind":"export","deprecated":false}]};
})() })()

View file

@ -84,6 +84,10 @@ Functions</h2></div><div class="namespaceSection"><div class="namespaceItem" ><d
</div></div><nav class="topSymbols"> </div></div><nav class="topSymbols">
<h3>Symbols</h3> <h3>Symbols</h3>
<ul><li> <ul><li>
<a href="..&#x2F;..&#x2F;.&#x2F;render_gfm.ts&#x2F;~&#x2F;renderGfm.html" title="renderGfm"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">renderGfm</span>
</a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;serve_file.ts&#x2F;~&#x2F;serveFile.html" title="serveFile"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div> <a href="..&#x2F;..&#x2F;.&#x2F;serve_file.ts&#x2F;~&#x2F;serveFile.html" title="serveFile"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">serveFile</span> <span class="hover:bg-Function/15">serveFile</span>
</a> </a>
@ -99,12 +103,8 @@ Functions</h2></div><div class="namespaceSection"><div class="namespaceItem" ><d
<a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getRepoUrl.html" title="getRepoUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div> <a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getRepoUrl.html" title="getRepoUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getRepoUrl</span> <span class="hover:bg-Function/15">getRepoUrl</span>
</a> </a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getSourceUrl.html" title="getSourceUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getSourceUrl</span>
</a>
</li></ul><a class="flex items-center gap-0.5" href="..&#x2F;..&#x2F;.&#x2F;all_symbols.html"> </li></ul><a class="flex items-center gap-0.5" href="..&#x2F;..&#x2F;.&#x2F;all_symbols.html">
<span class="leading-none">view all 9 symbols</span><svg <span class="leading-none">view all 10 symbols</span><svg
width="16" width="16"
height="16" height="16"
viewBox="0 0 16 16" viewBox="0 0 16 16"

View file

@ -107,6 +107,10 @@ Check the presence of <code>./dist/index.html</code> to return either <code>./di
</div></div><nav class="topSymbols"> </div></div><nav class="topSymbols">
<h3>Symbols</h3> <h3>Symbols</h3>
<ul><li> <ul><li>
<a href="..&#x2F;..&#x2F;.&#x2F;render_gfm.ts&#x2F;~&#x2F;renderGfm.html" title="renderGfm"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">renderGfm</span>
</a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;serve_file.ts&#x2F;~&#x2F;serveFile.html" title="serveFile"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div> <a href="..&#x2F;..&#x2F;.&#x2F;serve_file.ts&#x2F;~&#x2F;serveFile.html" title="serveFile"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">serveFile</span> <span class="hover:bg-Function/15">serveFile</span>
</a> </a>
@ -122,12 +126,8 @@ Check the presence of <code>./dist/index.html</code> to return either <code>./di
<a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getRepoUrl.html" title="getRepoUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div> <a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getRepoUrl.html" title="getRepoUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getRepoUrl</span> <span class="hover:bg-Function/15">getRepoUrl</span>
</a> </a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getSourceUrl.html" title="getSourceUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getSourceUrl</span>
</a>
</li></ul><a class="flex items-center gap-0.5" href="..&#x2F;..&#x2F;.&#x2F;all_symbols.html"> </li></ul><a class="flex items-center gap-0.5" href="..&#x2F;..&#x2F;.&#x2F;all_symbols.html">
<span class="leading-none">view all 9 symbols</span><svg <span class="leading-none">view all 10 symbols</span><svg
width="16" width="16"
height="16" height="16"
viewBox="0 0 16 16" viewBox="0 0 16 16"

View file

@ -133,6 +133,10 @@ as <code>firstname</code>-<code>lastname</code>.</p>
</div></div><nav class="topSymbols"> </div></div><nav class="topSymbols">
<h3>Symbols</h3> <h3>Symbols</h3>
<ul><li> <ul><li>
<a href="..&#x2F;..&#x2F;.&#x2F;render_gfm.ts&#x2F;~&#x2F;renderGfm.html" title="renderGfm"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">renderGfm</span>
</a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;serve_file.ts&#x2F;~&#x2F;serveFile.html" title="serveFile"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div> <a href="..&#x2F;..&#x2F;.&#x2F;serve_file.ts&#x2F;~&#x2F;serveFile.html" title="serveFile"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">serveFile</span> <span class="hover:bg-Function/15">serveFile</span>
</a> </a>
@ -148,12 +152,8 @@ as <code>firstname</code>-<code>lastname</code>.</p>
<a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getRepoUrl.html" title="getRepoUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div> <a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getRepoUrl.html" title="getRepoUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getRepoUrl</span> <span class="hover:bg-Function/15">getRepoUrl</span>
</a> </a>
</li><li>
<a href="..&#x2F;..&#x2F;.&#x2F;url_utils.ts&#x2F;~&#x2F;getSourceUrl.html" title="getSourceUrl"><div class="docNodeKindIcon"><div class="text-Function bg-Function/15" title="Function">f</div></div>
<span class="hover:bg-Function/15">getSourceUrl</span>
</a>
</li></ul><a class="flex items-center gap-0.5" href="..&#x2F;..&#x2F;.&#x2F;all_symbols.html"> </li></ul><a class="flex items-center gap-0.5" href="..&#x2F;..&#x2F;.&#x2F;all_symbols.html">
<span class="leading-none">view all 9 symbols</span><svg <span class="leading-none">view all 10 symbols</span><svg
width="16" width="16"
height="16" height="16"
viewBox="0 0 16 16" viewBox="0 0 16 16"

28
src/render_gfm.ts Normal file
View file

@ -0,0 +1,28 @@
import { CSS, KATEX_CSS, render } from '@deno/gfm'
export function renderGfm(md: string): string {
const body = render(md, { allowMath: true })
return `
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
main {
max-width: 800px;
margin: 0 auto;
}
${CSS}
${KATEX_CSS}
</style>
</head>
<body>
<main data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" class="markdown-body">
${body}
</main>
</body>
</html>
`
}

View file

@ -1,5 +1,6 @@
import { extname } from '@std/path' import { extname } from '@std/path'
import { contentType } from '@std/media-types' import { contentType } from '@std/media-types'
import { renderGfm } from './render_gfm.ts'
export async function serveFile(fileUrl: URL): Promise<Response> { export async function serveFile(fileUrl: URL): Promise<Response> {
// Get source and mime type // Get source and mime type
@ -13,7 +14,20 @@ export async function serveFile(fileUrl: URL): Promise<Response> {
if (headers.get('Content-Type') !== 'application/octet-stream') { if (headers.get('Content-Type') !== 'application/octet-stream') {
headers.set('Content-Type', mimeType) headers.set('Content-Type', mimeType)
} }
// Stream original file to user
if (headers.get('Content-Type') === 'text/markdown; charset=UTF-8') {
// Update content-type to render
headers.set('Content-Type', 'text/html; charset=UTF-8')
// Render GitHub Flavored Markdown to HTML
const md = await response.text()
const html = renderGfm(md)
// Return rendered markdown
return new Response(html, { headers })
}
// Else stream original file to user
return new Response(response.body, { headers }) return new Response(response.body, { headers })
} }