41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
![]() |
import fs from 'fs'
|
||
|
import path from 'path'
|
||
|
import { compileMdx } from './compile.mjs'
|
||
|
import { jargon } from 'shared/jargon/index.mjs'
|
||
|
|
||
|
/*
|
||
|
* Loads markdown/mdx from disk
|
||
|
*/
|
||
|
export const loadMdxFromDisk = async ({
|
||
|
language, // The language code of the markdown to load (like 'en')
|
||
|
site, // The site folder, one of 'dev' or 'org'
|
||
|
slug, // The slug below that folder, like 'guides/plugins'
|
||
|
}) =>
|
||
|
await fs.promises.readFile(path.resolve(`../../markdown/${site}/${slug}/${language}.md`), 'utf-8')
|
||
|
|
||
|
/*
|
||
|
* Loads markdown/mdx from disk and compiles it for use
|
||
|
* in static props.
|
||
|
*/
|
||
|
export const loadMdxAsStaticProps = async ({
|
||
|
language, // The language code of the markdown to load (like 'en')
|
||
|
site, // The site folder, one of 'dev' or 'org'
|
||
|
slug = false, // The slug below that folder, like 'guides/plugins'
|
||
|
slugs = [], // Or an array of slugs to load multiple files
|
||
|
}) => {
|
||
|
const result = []
|
||
|
if (slug) slugs = [slug]
|
||
|
for (const s of slugs) {
|
||
|
const md = await loadMdxFromDisk({ language, site, slug: s })
|
||
|
const mdx = await compileMdx({
|
||
|
md,
|
||
|
site,
|
||
|
slug: s,
|
||
|
jargon: jargon[language],
|
||
|
})
|
||
|
result.push(mdx)
|
||
|
}
|
||
|
|
||
|
return slugs.length === 1 ? result[0] : result
|
||
|
}
|