diff options
| author | DivisionByZero <[email protected]> | 2024-06-30 19:06:31 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-06-30 19:06:31 +0200 |
| commit | e21fcaf2398dfd9aed54136524fabd39866dfca4 (patch) | |
| tree | 1c91c07cfd517f935540becee692b2dae70304e0 /src/definitions | |
| parent | 92a2f178343f4413bd6d782a7957eda86aa1b7b8 (diff) | |
| download | faker-e21fcaf2398dfd9aed54136524fabd39866dfca4.tar.xz faker-e21fcaf2398dfd9aed54136524fabd39866dfca4.zip | |
refactor(locale): group person entries by gender (#2938)
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[]; |
