diff options
Diffstat (limited to 'app/builder/pages.ts')
| -rw-r--r-- | app/builder/pages.ts | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/app/builder/pages.ts b/app/builder/pages.ts index bc2c14a..1aed94e 100644 --- a/app/builder/pages.ts +++ b/app/builder/pages.ts @@ -2,13 +2,16 @@ import { readFileSync } from 'fs'; import glob from 'glob'; import { logger } from '../logger.js' import { marked } from 'marked'; +import { gfmHeadingId } from 'marked-gfm-heading-id'; import matter from 'gray-matter'; -export function parsePage(page: Page) { +marked.use(gfmHeadingId()); + +export async function parsePage(page: Page) { try { - const result = matter(page.raw); - const config = result.data; - const html = marked.parse(result.content, { mangle: false, headerIds: false }); + const frontmatter = matter(page.raw); + const config = frontmatter.data; + const html = marked.parse(frontmatter.content, { mangle: false }); page.html = html; page.config = config; @@ -35,21 +38,23 @@ export class PageDirectory { for (const page in this.pages) { delete this.pages[page]; } - + } + + public init = async (): Promise<void> => { const localPages = glob.sync(`**/*.{md,html}`, { cwd: this.pagesPath }) - - localPages.forEach(this.loadPage); - + for (const page in localPages) { + await this.loadPage(localPages[page]); + } this.lastFullBuild = Date.now(); } - public loadPage = (page: string): Page => { + public loadPage = async (page: string): Promise<Page> => { let route = `/${page.replace(/\.[^.]*$/,'')}`; let name = /[^/]*$/.exec(route)[0]; let originalPath = page; let fullPath = `${this.pagesPath}/${page}` let buildPath = `${process.env.OUTPUT_DIR}/${route}.html` - let view = `${route}.ejs` + let view = `${route}` let raw: string; try { raw = loadRaw(fullPath); @@ -70,7 +75,7 @@ export class PageDirectory { config: {} } - parsePage(this.pages[route]); + await parsePage(this.pages[route]); return this.pages[route]; } |
