From 3f91a121b33151cd466de930d0e68bdf87f4d19e Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Mon, 20 Dec 2021 14:48:04 +0000 Subject: Convert to typescript --- app/directory.mjs | 116 ------------------------------------------------------ 1 file changed, 116 deletions(-) delete mode 100644 app/directory.mjs (limited to 'app/directory.mjs') diff --git a/app/directory.mjs b/app/directory.mjs deleted file mode 100644 index b470bc7..0000000 --- a/app/directory.mjs +++ /dev/null @@ -1,116 +0,0 @@ -'use strict'; - -import { PAGES_DIR, PURGE_COOLDOWN_MIN, REBUILD_COOLDOWN_MIN } from './constants.mjs'; -import { parse } from './wikiparser.mjs'; -import { readFileSync, readdirSync } from 'fs'; - -const pages = {}; -const metadata = {}; - -export function pageFor(path) { - path = path.replace(/[^a-z0-9]/gi, '_').toLowerCase(); - let page = pages[path]; - if (!page) { - return undefined; - } - - if (!page.html) { - buildPage(path); - return pages[path]; - } - - return page; -} - -function buildPage(path) { - let data; - try { - data = readFileSync(`${PAGES_DIR}/${path}.wiki`, 'utf-8'); - } catch { - return false; - } - let result = parse(data); - let title = result.metadata.displayTitle ?? 'Unnamed page'; - let content = `${result.metadata.notitle ? '' : `

${title}

`}${result.html}`; - - let page = { - html: content, - raw: data, - buildTime: result.metadata.buildTime, - primary: result.metadata.primary ?? false, - sortOrder: result.metadata.sortOrder ?? -1, - notitle: result.metadata.notitle ?? false, - displayTitle: title - }; - pages[path] = page; - return true; -} - -export function rebuild() { - if (metadata.fileTreeBuildTime + REBUILD_COOLDOWN_MIN * 60 * 1000 > Date.now()) { - return false; - } - for (var page in pages) { - delete pages[page]; - } - - readdirSync(PAGES_DIR).forEach(file => { - if (!file.endsWith('.wiki')) { - return; - } - file = file.replace('.wiki', ''); - buildPage(file); - }); - - let primaryPages = []; - for (const page of Object.keys(pages)) { - if (pages[page].primary) { - primaryPages.push(page); - } - } - primaryPages.sort((a, b) => { - return pages[a].sortOrder - pages[b].sortOrder; - }); - metadata.navbar = primaryPages; - metadata.fileTreeBuildTime = new Date(); - return true; -} - -export function exists(path) { - return !!pages[path]; -} - -export function rawDataFor(path) { - return pages[path]; -} - -export function purge(path) { - let page = pages[path]; - if (page) { - if (page.buildTime.getTime() + PURGE_COOLDOWN_MIN * 60 * 1000 > Date.now()) { - return false; - } else { - pages[path] = {}; - if (buildPage(path)) { - return true; - } - delete pages[path]; - } - } - return false; -} - -export function getPages() { - return pages; -} - -export function getNavbar(current = '') { - if (!metadata.navbar) { - return ''; - } - let navbar = ''; - for (const page of metadata.navbar) { - navbar = navbar + ``; - } - return navbar; -} -- cgit v1.2.3-70-g09d2