// I M P O R T S
import fm from "front-matter";
import fs from "fs";
import { html, raw } from 'hono/html'
// U T I L S
import markdown from "../components/markdown.js";
import page404 from "./404.js";
// E X P O R T
export default (context) => { // eslint-disable-line
const partialPath = /^\/resources\/.*/.test(context.req.path) ?
context.req.path :
context.req.path.slice(1);
const path = `./documents/${partialPath}.md`;
if (!fs.existsSync(path))
return page404();
const markdownFile = fs.readFileSync(path, "utf-8");
const markdownFileDetails = fm(markdownFile);
const title = markdownFileDetails.attributes.title;
const description = markdownFileDetails.attributes.description || "";
if (markdownFileDetails.attributes.meta) {
const customMetadata = {};
for (const key in markdownFileDetails.attributes.meta) {
if (Object.prototype.hasOwnProperty.call(markdownFileDetails.attributes.meta, key)) {
customMetadata[Object.keys(markdownFileDetails.attributes.meta[key])[0]] =
markdownFileDetails.attributes.meta[key][Object.keys(markdownFileDetails.attributes.meta[key])[0]];
}
}
context.var.lbry = customMetadata;
}
// below is evil, I just inherited it -- Jeremy
context.var.lbry = {
title: title,
description: description
};
// below should be refactored into components
let pageScript = "";
switch(true) {
case partialPath === "glossary":
pageScript = renderClientScript("glossary-scripts");
break;
case partialPath === "overview":
pageScript = renderClientScript("ecosystem-scripts");
break;
case partialPath === "playground":
pageScript = renderClientScript("playground-scripts");
break;
default:
break;
}
return html`
${title}
${markdown(path)}
${raw(pageScript)}
`;
};
// H E L P E R
function renderClientScript(clientScriptFileName) {
return `
`;
}