Spaces:
Running
Running
// Common parsing and grouping utilities for galleries | |
import { ExamplesData } from './Examples' | |
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 getExampleName(name: string, variant: string): string { | |
if (variant in VARIANT_PREFIX_MAP) { | |
return name.replace(VARIANT_PREFIX_MAP[variant], '') | |
} | |
return name | |
} | |
export function groupByNameAndVariant(examples: ExamplesData[]): { | |
[name: string]: { [variant: string]: ExamplesData } | |
} { | |
const grouped: { [name: string]: { [variant: string]: ExamplesData } } = {} | |
examples.forEach((example) => { | |
const variant = getVariant(example.name) | |
const imageName = getExampleName(example.name, variant) | |
if (!grouped[imageName]) { | |
grouped[imageName] = {} | |
} | |
grouped[imageName][variant] = example | |
}) | |
return grouped | |
} | |