diff options
Diffstat (limited to 'src/definitions')
| -rw-r--r-- | src/definitions/index.ts | 2 | ||||
| -rw-r--r-- | src/definitions/person.ts | 41 |
2 files changed, 24 insertions, 19 deletions
diff --git a/src/definitions/index.ts b/src/definitions/index.ts index 2d979971..367892b7 100644 --- a/src/definitions/index.ts +++ b/src/definitions/index.ts @@ -17,7 +17,7 @@ export type { LocationDefinition } from './location'; export type { LoremDefinition } from './lorem'; export type { MetadataDefinition } from './metadata'; export type { MusicDefinition } from './music'; -export type { PersonDefinition } from './person'; +export type { PersonDefinition, PersonEntryDefinition } from './person'; export type { PhoneNumberDefinition } from './phone_number'; export type { ScienceDefinition } from './science'; export type { SystemDefinition, SystemMimeTypeEntryDefinition } from './system'; diff --git a/src/definitions/person.ts b/src/definitions/person.ts index 87250ed9..c761b9a3 100644 --- a/src/definitions/person.ts +++ b/src/definitions/person.ts @@ -1,5 +1,23 @@ import type { LocaleEntry } from './definitions'; +export type PersonEntryDefinition<T> = + | { + generic?: T[]; + male: T[]; + female: T[]; + } + | { + generic: T[]; + male?: never; + female?: never; + }; + +type SimplePersonEntryDefinition = PersonEntryDefinition<string>; +type WeightedPersonEntryDefinition = PersonEntryDefinition<{ + value: string; + weight: number; +}>; + /** * The possible definitions related to people's names. */ @@ -7,21 +25,10 @@ export type PersonDefinition = LocaleEntry<{ gender: string[]; sex: string[]; - prefix: string[]; - female_prefix: string[]; - male_prefix: string[]; - - first_name: string[]; - female_first_name: string[]; - male_first_name: string[]; - - middle_name: string[]; - female_middle_name: string[]; - male_middle_name: string[]; - - last_name: string[]; - female_last_name: string[]; - male_last_name: string[]; + prefix: SimplePersonEntryDefinition; + first_name: SimplePersonEntryDefinition; + middle_name: SimplePersonEntryDefinition; + last_name: SimplePersonEntryDefinition; suffix: string[]; @@ -33,9 +40,7 @@ export type PersonDefinition = LocaleEntry<{ /** * A weighted list of patterns used to generate last names. */ - last_name_pattern: Array<{ value: string; weight: number }>; - male_last_name_pattern: Array<{ value: string; weight: number }>; - female_last_name_pattern: Array<{ value: string; weight: number }>; + last_name_pattern: WeightedPersonEntryDefinition; bio_pattern: string[]; |
