Skip to content

Commit e21fcaf

Browse files
refactor(locale): group person entries by gender (#2938)
1 parent 92a2f17 commit e21fcaf

File tree

615 files changed

+102906
-79850
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

615 files changed

+102906
-79850
lines changed

docs/guide/upgrading.md

+22-7
Original file line numberDiff line numberDiff line change
@@ -486,13 +486,28 @@ Removed deprecated number parameter
486486

487487
#### Changed Definitions
488488

489-
The locale definitions used by `faker.person.jobTitle()`, `faker.person.jobDescriptor()`, `faker.person.jobArea()` and `faker.person.jobType()` have been reorganized and are no longer nested under `definitions.person.title`. If you are using the public methods, no changes are required. You only need to change your code if you are accessing the raw definitions e.g. in `faker.helpers.fake()`.
490-
491-
| Before | After |
492-
| ------------------------- | ----------------------- |
493-
| `person.title.descriptor` | `person.job_descriptor` |
494-
| `person.title.level` | `person.job_area` |
495-
| `person.title.job` | `person.job_type` |
489+
The locale definitions used by `faker.person.jobTitle()`, `faker.person.jobDescriptor()`, `faker.person.jobArea()` and `faker.person.jobType()` have been reorganized and are no longer nested under `definitions.person.title`. Conversely, the gendered locale definitions used by `faker.person.firstName()`, `faker.person.lastName()`, `faker.person.middleName()` and `faker.person.prefix()` are now consolidated under a single definition property. If you are using the public methods, no changes are required. You only need to change your code if you are accessing the raw definitions e.g. in `faker.helpers.fake()`.
490+
491+
| Before | After |
492+
| --------------------------------- | ---------------------------------- |
493+
| `person.female_first_name` | `person.first_name.female` |
494+
| `person.female_last_name_pattern` | `person.last_name_pattern.female` |
495+
| `person.female_last_name` | `person.last_name.female` |
496+
| `person.female_middle_name` | `person.middle_name.female` |
497+
| `person.female_prefix` | `person.prefix.female` |
498+
| `person.first_name` | `person.first_name.generic` |
499+
| `person.last_name_pattern` | `person.last_name_pattern.generic` |
500+
| `person.last_name` | `person.last_name.generic` |
501+
| `person.male_first_name` | `person.first_name.male` |
502+
| `person.male_last_name_pattern` | `person.last_name_pattern.male` |
503+
| `person.male_last_name` | `person.last_name.male` |
504+
| `person.male_middle_name` | `person.middle_name.male` |
505+
| `person.male_prefix` | `person.prefix.male` |
506+
| `person.middle_name` | `person.middle_name.generic` |
507+
| `person.prefix` | `person.prefix.generic` |
508+
| `person.title.descriptor` | `person.job_descriptor` |
509+
| `person.title.job` | `person.job_type` |
510+
| `person.title.level` | `person.job_area` |
496511

497512
### Phone Module
498513

src/definitions/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export type { LocationDefinition } from './location';
1717
export type { LoremDefinition } from './lorem';
1818
export type { MetadataDefinition } from './metadata';
1919
export type { MusicDefinition } from './music';
20-
export type { PersonDefinition } from './person';
20+
export type { PersonDefinition, PersonEntryDefinition } from './person';
2121
export type { PhoneNumberDefinition } from './phone_number';
2222
export type { ScienceDefinition } from './science';
2323
export type { SystemDefinition, SystemMimeTypeEntryDefinition } from './system';

src/definitions/person.ts

+23-18
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,34 @@
11
import type { LocaleEntry } from './definitions';
22

3+
export type PersonEntryDefinition<T> =
4+
| {
5+
generic?: T[];
6+
male: T[];
7+
female: T[];
8+
}
9+
| {
10+
generic: T[];
11+
male?: never;
12+
female?: never;
13+
};
14+
15+
type SimplePersonEntryDefinition = PersonEntryDefinition<string>;
16+
type WeightedPersonEntryDefinition = PersonEntryDefinition<{
17+
value: string;
18+
weight: number;
19+
}>;
20+
321
/**
422
* The possible definitions related to people's names.
523
*/
624
export type PersonDefinition = LocaleEntry<{
725
gender: string[];
826
sex: string[];
927

10-
prefix: string[];
11-
female_prefix: string[];
12-
male_prefix: string[];
13-
14-
first_name: string[];
15-
female_first_name: string[];
16-
male_first_name: string[];
17-
18-
middle_name: string[];
19-
female_middle_name: string[];
20-
male_middle_name: string[];
21-
22-
last_name: string[];
23-
female_last_name: string[];
24-
male_last_name: string[];
28+
prefix: SimplePersonEntryDefinition;
29+
first_name: SimplePersonEntryDefinition;
30+
middle_name: SimplePersonEntryDefinition;
31+
last_name: SimplePersonEntryDefinition;
2532

2633
suffix: string[];
2734

@@ -33,9 +40,7 @@ export type PersonDefinition = LocaleEntry<{
3340
/**
3441
* A weighted list of patterns used to generate last names.
3542
*/
36-
last_name_pattern: Array<{ value: string; weight: number }>;
37-
male_last_name_pattern: Array<{ value: string; weight: number }>;
38-
female_last_name_pattern: Array<{ value: string; weight: number }>;
43+
last_name_pattern: WeightedPersonEntryDefinition;
3944

4045
bio_pattern: string[];
4146

src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export type {
1919
MetadataDefinition,
2020
MusicDefinition,
2121
PersonDefinition,
22+
PersonEntryDefinition,
2223
PhoneNumberDefinition,
2324
ScienceDefinition,
2425
SystemDefinition,

src/locales/af_ZA/person/female_first_name.ts

-109
This file was deleted.

0 commit comments

Comments
 (0)