2025-10-08 01:28:46 +08:00

36 lines
1.3 KiB
TypeScript

import type { ThemeCollectionItem, ThemeOptions } from '../../shared/index.js'
import { normalizePath } from '../utils/index.js'
export function completeCollections(options: ThemeOptions): void {
if (options.collections?.length) {
for (const collection of options.collections) {
completeCollectionItems(collection)
}
}
for (const [, opt] of Object.entries(options.locales || {})) {
if (opt.collections?.length) {
for (const collection of opt.collections) {
completeCollectionItems(collection)
}
}
}
}
function completeCollectionItems(collection: ThemeCollectionItem): void {
collection.title ||= collection.dir.split('/').filter(Boolean).pop()!
if (collection.type === 'post') {
collection.link ||= normalizePath(`/${collection.dir}/`)
collection.linkPrefix ||= collection.link
collection.tags ??= true
collection.tags && (collection.tagsLink ||= `${collection.linkPrefix}tags/`)
collection.archives ??= true
collection.archives && (collection.archivesLink ||= `${collection.linkPrefix}archives/`)
collection.categories ??= true
collection.categories && (collection.categoriesLink ||= `${collection.linkPrefix}categories/`)
}
else {
collection.linkPrefix ||= normalizePath(`/${collection.dir}/`)
}
}