Mark Duppenthaler
Image examples cleanup
503a577
raw
history blame
1.03 kB
// Common parsing and grouping utilities for galleries
export const VARIANT_PREFIX_MAP: { [variant: string]: string } = {
attacked_wmd: 'attacked_wmd_',
attacked: 'attacked_',
wmd: 'wmd_',
}
export function getVariant(name: string): string {
return (
Object.entries(VARIANT_PREFIX_MAP).find(([, prefix]) => name.startsWith(prefix))?.[0] ||
'original'
)
}
export function getImageName(name: string, variant: string): string {
if (variant !== 'original' && variant in VARIANT_PREFIX_MAP) {
return name.replace(VARIANT_PREFIX_MAP[variant], '')
}
return name
}
export function groupByNameAndVariant<T extends { name: string }>(
items: T[]
): {
[name: string]: { [variant: string]: T }
} {
const grouped: { [name: string]: { [variant: string]: T } } = {}
items.forEach((item) => {
const variant = getVariant(item.name)
const imageName = getImageName(item.name, variant)
if (!grouped[imageName]) grouped[imageName] = {}
grouped[imageName][variant] = item
})
return grouped
}