| | |
| | | import { Root } from "hast" |
| | | import { GlobalConfiguration } from "../../cfg" |
| | | import { getDate } from "../../components/Date" |
| | | import { escapeHTML } from "../../util/escape" |
| | | import { FilePath, FullSlug, SimpleSlug, simplifySlug } from "../../util/path" |
| | | import { QuartzEmitterPlugin } from "../types" |
| | | import { toHtml } from "hast-util-to-html" |
| | | import path from "path" |
| | | |
| | | export type ContentIndex = Map<FullSlug, ContentDetails> |
| | |
| | | enableSiteMap: boolean |
| | | enableRSS: boolean |
| | | rssLimit?: number |
| | | rssFullHtml: boolean |
| | | includeEmptyFiles: boolean |
| | | } |
| | | |
| | |
| | | enableSiteMap: true, |
| | | enableRSS: true, |
| | | rssLimit: 10, |
| | | rssFullHtml: false, |
| | | includeEmptyFiles: true, |
| | | } |
| | | |
| | |
| | | <title>${escapeHTML(content.title)}</title> |
| | | <link>${root}/${encodeURI(slug)}</link> |
| | | <guid>${root}/${encodeURI(slug)}</guid> |
| | | <description>${content.description}</description> |
| | | <description>${content.content}</description> |
| | | <pubDate>${content.date?.toUTCString()}</pubDate> |
| | | </item>` |
| | | |
| | |
| | | const cfg = ctx.cfg.configuration |
| | | const emitted: FilePath[] = [] |
| | | const linkIndex: ContentIndex = new Map() |
| | | for (const [_tree, file] of content) { |
| | | for (const [tree, file] of content) { |
| | | const slug = file.data.slug! |
| | | const date = getDate(ctx.cfg.configuration, file.data) ?? new Date() |
| | | if (opts?.includeEmptyFiles || (file.data.text && file.data.text !== "")) { |
| | |
| | | title: file.data.frontmatter?.title!, |
| | | links: file.data.links ?? [], |
| | | tags: file.data.frontmatter?.tags ?? [], |
| | | content: file.data.text ?? "", |
| | | content: opts?.rssFullHtml |
| | | ? escapeHTML(toHtml(tree as Root, { allowDangerousHtml: true })) |
| | | : file.data.description ?? "", |
| | | date: date, |
| | | description: file.data.description ?? "", |
| | | }) |