36 lines
1.3 KiB
TypeScript
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}/`)
|
|
}
|
|
}
|