From 37e7e67518e49b689a7671f8b57e6f6b5da76062 Mon Sep 17 00:00:00 2001 From: Emile Bangma Date: Sat, 22 Mar 2025 00:48:11 +0000 Subject: [PATCH] Simplify duplicate slug checks --- quartz/plugins/transformers/frontmatter.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/quartz/plugins/transformers/frontmatter.ts b/quartz/plugins/transformers/frontmatter.ts index a43b3b566..296a6c56b 100644 --- a/quartz/plugins/transformers/frontmatter.ts +++ b/quartz/plugins/transformers/frontmatter.ts @@ -46,18 +46,12 @@ function getAliasSlugs(aliases: string[]): FullSlug[] { const isMd = getFileExtension(alias) === "md" const mockFp = isMd ? alias : alias + ".md" const slug = slugifyFilePath(mockFp as FilePath) - pushSlugs(res, slug) + res.push(slug) } return res } -function pushSlugs(arr: T[], ...items: T[]) { - for (const item of items) { - if (!arr.includes(item)) arr.push(item) - } -} - export const FrontMatter: QuartzTransformerPlugin> = (userOpts) => { const opts = { ...defaultOptions, ...userOpts } return { @@ -90,15 +84,15 @@ export const FrontMatter: QuartzTransformerPlugin> = (userOpts) if (aliases) { data.aliases = aliases // frontmatter file.data.aliases = getAliasSlugs(aliases) - pushSlugs(allSlugs, ...file.data.aliases) + allSlugs.push(...file.data.aliases) } if (data.permalink != null && data.permalink.toString() !== "") { data.permalink = data.permalink.toString() as FullSlug const aliases = file.data.aliases ?? [] - pushSlugs(aliases, data.permalink) + aliases.push(data.permalink) file.data.aliases = aliases - pushSlugs(allSlugs, data.permalink) + allSlugs.push(data.permalink) } const cssclasses = coerceToArray(coalesceAliases(data, ["cssclasses", "cssclass"])) @@ -120,6 +114,11 @@ export const FrontMatter: QuartzTransformerPlugin> = (userOpts) if (socialImage) data.socialImage = socialImage + // Remove duplicate slugs + const uniqueSlugs = [...new Set(allSlugs)] + allSlugs.length = 0 + uniqueSlugs.forEach((slug) => allSlugs.push(slug)) + // fill in frontmatter file.data.frontmatter = data as QuartzPluginData["frontmatter"] }