File size: 1,083 Bytes
503a577
 
eb27538
 
503a577
 
 
 
 
 
 
 
 
 
 
 
 
eb27538
 
503a577
 
 
 
 
eb27538
 
503a577
eb27538
 
 
 
 
 
 
 
503a577
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 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
}