mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-24 21:34:06 -06:00
Simplify duplicate slug checks
This commit is contained in:
parent
036c309c4b
commit
37e7e67518
@ -46,18 +46,12 @@ function getAliasSlugs(aliases: string[]): FullSlug[] {
|
|||||||
const isMd = getFileExtension(alias) === "md"
|
const isMd = getFileExtension(alias) === "md"
|
||||||
const mockFp = isMd ? alias : alias + ".md"
|
const mockFp = isMd ? alias : alias + ".md"
|
||||||
const slug = slugifyFilePath(mockFp as FilePath)
|
const slug = slugifyFilePath(mockFp as FilePath)
|
||||||
pushSlugs(res, slug)
|
res.push(slug)
|
||||||
}
|
}
|
||||||
|
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
function pushSlugs<T>(arr: T[], ...items: T[]) {
|
|
||||||
for (const item of items) {
|
|
||||||
if (!arr.includes(item)) arr.push(item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const FrontMatter: QuartzTransformerPlugin<Partial<Options>> = (userOpts) => {
|
export const FrontMatter: QuartzTransformerPlugin<Partial<Options>> = (userOpts) => {
|
||||||
const opts = { ...defaultOptions, ...userOpts }
|
const opts = { ...defaultOptions, ...userOpts }
|
||||||
return {
|
return {
|
||||||
@ -90,15 +84,15 @@ export const FrontMatter: QuartzTransformerPlugin<Partial<Options>> = (userOpts)
|
|||||||
if (aliases) {
|
if (aliases) {
|
||||||
data.aliases = aliases // frontmatter
|
data.aliases = aliases // frontmatter
|
||||||
file.data.aliases = getAliasSlugs(aliases)
|
file.data.aliases = getAliasSlugs(aliases)
|
||||||
pushSlugs(allSlugs, ...file.data.aliases)
|
allSlugs.push(...file.data.aliases)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.permalink != null && data.permalink.toString() !== "") {
|
if (data.permalink != null && data.permalink.toString() !== "") {
|
||||||
data.permalink = data.permalink.toString() as FullSlug
|
data.permalink = data.permalink.toString() as FullSlug
|
||||||
const aliases = file.data.aliases ?? []
|
const aliases = file.data.aliases ?? []
|
||||||
pushSlugs(aliases, data.permalink)
|
aliases.push(data.permalink)
|
||||||
file.data.aliases = aliases
|
file.data.aliases = aliases
|
||||||
pushSlugs(allSlugs, data.permalink)
|
allSlugs.push(data.permalink)
|
||||||
}
|
}
|
||||||
|
|
||||||
const cssclasses = coerceToArray(coalesceAliases(data, ["cssclasses", "cssclass"]))
|
const cssclasses = coerceToArray(coalesceAliases(data, ["cssclasses", "cssclass"]))
|
||||||
@ -120,6 +114,11 @@ export const FrontMatter: QuartzTransformerPlugin<Partial<Options>> = (userOpts)
|
|||||||
|
|
||||||
if (socialImage) data.socialImage = socialImage
|
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
|
// fill in frontmatter
|
||||||
file.data.frontmatter = data as QuartzPluginData["frontmatter"]
|
file.data.frontmatter = data as QuartzPluginData["frontmatter"]
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user