{"version":3,"file":"getGender.mjs","names":[],"sources":["../../../src/interpreter/getGender.ts"],"sourcesContent":["import type { Gender, GenderContentStates } from '../transpiler';\n\ntype GenderEntry = Gender | 'm' | 'f';\n\nconst getGenderEntry = (gender: GenderEntry): Gender => {\n  if (gender === 'm' || gender === 'male') return 'male';\n  if (gender === 'f' || gender === 'female') return 'female';\n  return 'fallback';\n};\n\n/**\n * Allow to pick a content based on a gender.\n *\n * Usage:\n *\n * ```ts\n * const content = getGender({\n *  'true': 'The gender is validated',\n *  'false': 'The gender is not validated',\n * }, true);\n * // 'The gender is validated'\n * ```\n *\n * The last key provided will be used as the fallback value.\n *\n * ```ts\n * const content = getGender({\n *  'false': 'The gender is not validated',\n *  'true': 'The gender is validated',\n * }, undefined);\n * // 'The gender is validated'\n */\nexport const getGender = <const Content>(\n  genderContent: GenderContentStates<Content>,\n  gender: GenderEntry\n): Content => {\n  const stateList = Object.keys(genderContent);\n\n  const fallbackState = stateList[\n    stateList.length - 1\n  ] as keyof typeof genderContent;\n\n  const genderEntry = getGenderEntry(gender);\n\n  // Default or error handling if no keys match\n  return (\n    genderContent[genderEntry as keyof typeof genderContent] ??\n    genderContent.fallback ??\n    (genderContent[fallbackState] as Content)\n  );\n};\n"],"mappings":";AAIA,MAAM,kBAAkB,WAAgC;AACtD,KAAI,WAAW,OAAO,WAAW,OAAQ,QAAO;AAChD,KAAI,WAAW,OAAO,WAAW,SAAU,QAAO;AAClD,QAAO;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,MAAa,aACX,eACA,WACY;CACZ,MAAM,YAAY,OAAO,KAAK,cAAc;CAE5C,MAAM,gBAAgB,UACpB,UAAU,SAAS;AAMrB,QACE,cAJkB,eAAe,OAIR,KACzB,cAAc,YACb,cAAc"}