diff --git a/basic/index.js b/basic/index.js index b5eefa0..1f71bc0 100755 --- a/basic/index.js +++ b/basic/index.js @@ -3,8 +3,8 @@ import {dirname, relative, join} from 'node:path'; import {getPages, allPages, writeFile} from '@sphido/core'; import slugify from '@sindresorhus/slugify'; -import {marked} from 'marked'; import {frontmatter} from '@sphido/frontmatter'; +import {markdown} from '@sphido/markdown'; function getHtml({title, content, path, date}) { return ` @@ -23,15 +23,14 @@ function getHtml({title, content, path, date}) { `; } -const pages = await getPages({path: 'content'}, frontmatter); +// frontmatter loads page.content and reads the YAML block, markdown() renders +// the rest to HTML — it goes last, after every extender that wants markdown +const pages = await getPages({path: 'content'}, frontmatter, markdown()); for (const page of allPages(pages)) { page.slug = slugify(page.name) + '.html'; page.output = join('public', relative('content', dirname(page.path)), page.slug); - // process markdown (PS: frontmatter already loads page.content) - page.content = marked(page.content); - // save HTML file await writeFile(page.output, getHtml(page)); } \ No newline at end of file diff --git a/basic/package.json b/basic/package.json index fd99e58..d46beef 100644 --- a/basic/package.json +++ b/basic/package.json @@ -13,7 +13,7 @@ "@sindresorhus/slugify": "2.2.1", "@sphido/core": "^3.1.0", "@sphido/frontmatter": "^3.1.0", - "marked": "^18.0.0" + "@sphido/markdown": "^1.0.0" }, "devDependencies": { "serve": "14.2.4" diff --git a/extenders/index.js b/extenders/index.js index 5fe1b1c..9cbfc59 100755 --- a/extenders/index.js +++ b/extenders/index.js @@ -1,9 +1,9 @@ #!/usr/bin/env node import {dirname, relative, join} from 'node:path'; -import {getPages, allPages, writeFile, readFile} from '@sphido/core'; +import {getPages, allPages, writeFile} from '@sphido/core'; import slugify from '@sindresorhus/slugify'; -import {marked} from 'marked'; +import {markdown} from '@sphido/markdown'; function metadata(page, dirent) { @@ -17,10 +17,6 @@ function author(page) { page.author = 'Roman Ožana'; } -async function getContent() { - return marked(await readFile(this.path)); -} - const pages = await getPages({path: 'content'}, // callback extender @@ -30,9 +26,11 @@ const pages = await getPages({path: 'content'}, page.date = new Date(); }, + // extender package: renders page.content from markdown to HTML + markdown(), + // Object extenders { - getContent, getFooter: function () { return ``; }, @@ -51,7 +49,7 @@ const pages = await getPages({path: 'content'},
Sphido Example website
-
${await this.getContent()}
+
${this.content}
${this.getFooter()} `; diff --git a/extenders/package.json b/extenders/package.json index 206b185..ce1870b 100644 --- a/extenders/package.json +++ b/extenders/package.json @@ -12,7 +12,7 @@ "dependencies": { "@sindresorhus/slugify": "latest", "@sphido/core": "^3.1.0", - "marked": "^18.0.0" + "@sphido/markdown": "^1.0.0" }, "devDependencies": { "serve": "latest" diff --git a/json/index.js b/json/index.js index 8ec0317..e5c164d 100755 --- a/json/index.js +++ b/json/index.js @@ -3,16 +3,15 @@ import {dirname, relative, join} from 'node:path'; import {getPages, allPages, writeFile} from '@sphido/core'; import slugify from '@sindresorhus/slugify'; -import {marked} from 'marked'; import {frontmatter} from '@sphido/frontmatter'; +import {markdown} from '@sphido/markdown'; -const pages = await getPages({path: 'content'}, frontmatter); +const pages = await getPages({path: 'content'}, frontmatter, markdown()); for (const page of allPages(pages)) { page.slug = slugify(page.name) + '.json'; const output = join('public', relative('content', dirname(page.path)), page.slug); - page.content = marked(page.content); - // save JSON file + // save JSON file with the rendered HTML in page.content await writeFile(output, JSON.stringify(page)); } \ No newline at end of file diff --git a/json/package.json b/json/package.json index 0674595..bf774c1 100644 --- a/json/package.json +++ b/json/package.json @@ -12,6 +12,6 @@ "@sindresorhus/slugify": "2.2.1", "@sphido/core": "^3.1.0", "@sphido/frontmatter": "^3.1.0", - "marked": "^18.0.0" + "@sphido/markdown": "^1.0.0" } } diff --git a/readme.md b/readme.md index f51d76e..398efb2 100644 --- a/readme.md +++ b/readme.md @@ -5,7 +5,8 @@ Here are some examples of how to use [Sphido](https://sphido.org/), a rocket ## [Basic usage](https://github.com/sphido/examples/tree/main/basic) -This example shows how to use Sphido for processing Markdown files to HTML. +This example shows how to use Sphido for processing Markdown files to HTML with the +[`@sphido/markdown`](https://github.com/sphido/sphido/tree/main/packages/sphido-markdown) extender. ## [Extenders](https://github.com/sphido/examples/tree/main/extenders) diff --git a/rss/index.js b/rss/index.js index 648086c..4b37212 100755 --- a/rss/index.js +++ b/rss/index.js @@ -1,9 +1,9 @@ #!/usr/bin/env node import {dirname, relative, join} from 'node:path'; -import {getPages, allPages, writeFile, readFile} from '@sphido/core'; +import {getPages, allPages, writeFile} from '@sphido/core'; import slugify from '@sindresorhus/slugify'; -import {marked} from 'marked'; +import {markdown} from '@sphido/markdown'; import {renderFeed, writeFeed} from '@sphido/feed'; function getHtml({title, content, path, date}) { @@ -21,14 +21,14 @@ function getHtml({title, content, path, date}) { const items = []; -const pages = await getPages({path: 'content'}); +// markdown() loads each file and renders page.content to HTML +const pages = await getPages({path: 'content'}, markdown()); for (const page of allPages(pages)) { page.slug = join('/', relative('content', dirname(page.path)), slugify(page.name) + '.html'); page.output = join('public', page.slug); page.url = new URL(page.slug, 'https://sphido.org/').toString(); - page.content = marked(await readFile(page.path)); page.title = page.content.match(/(?<=]*?>)([^<>]+?)(?=<\/h[12]>)/i)?.pop(); page.date = new Date(); diff --git a/rss/package.json b/rss/package.json index 4aa0a7d..a94dbc6 100644 --- a/rss/package.json +++ b/rss/package.json @@ -12,7 +12,7 @@ "@sindresorhus/slugify": "2.2.1", "@sphido/core": "^3.1.0", "@sphido/feed": "^3.1.0", - "marked": "^18.0.0" + "@sphido/markdown": "^1.0.0" }, "devDependencies": { "serve": "14.2.4" diff --git a/sitemap/package.json b/sitemap/package.json index 352e8b3..f040892 100644 --- a/sitemap/package.json +++ b/sitemap/package.json @@ -11,8 +11,7 @@ "dependencies": { "@sindresorhus/slugify": "latest", "@sphido/core": "^3.1.0", - "@sphido/sitemap": "^4.0.0", - "marked": "^18.0.0" + "@sphido/sitemap": "^4.0.0" }, "devDependencies": { "serve": "latest"