diff options
| author | Marat Dyatko <[email protected]> | 2015-02-17 22:20:53 +0300 |
|---|---|---|
| committer | Marat Dyatko <[email protected]> | 2015-02-17 22:20:53 +0300 |
| commit | 282b1ea87b439ea32a09becb7ff2ecbbd98a6088 (patch) | |
| tree | c62038a593011b5d328dbcfbd8a216404bd2ec12 /lib/name.js | |
| parent | a39082f6f49fb326111bc2a0d9014c9dc65fe1fa (diff) | |
| download | faker-282b1ea87b439ea32a09becb7ff2ecbbd98a6088.tar.xz faker-282b1ea87b439ea32a09becb7ff2ecbbd98a6088.zip | |
Support gender in names
Diffstat (limited to 'lib/name.js')
| -rw-r--r-- | lib/name.js | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/lib/name.js b/lib/name.js index cb43e596..774d44f8 100644 --- a/lib/name.js +++ b/lib/name.js @@ -2,12 +2,12 @@ var faker = require('../index'); var _name = { - firstName: function () { + firstName: function (gender) { if (typeof faker.definitions.name.male_first_name !== "undefined" && typeof faker.definitions.name.female_first_name !== "undefined") { // some locale datasets ( like ru ) have first_name split by gender. since the name.first_name field does not exist in these datasets, // we must randomly pick a name from either gender array so faker.name.firstName will return the correct locale data ( and not fallback ) - var rand = faker.random.number(1); - if (rand === 0) { + gender = (typeof gender === 'number') ? gender : faker.random.number(1); + if (gender === 0) { return faker.random.array_element(faker.locales[faker.locale].name.male_first_name) } else { return faker.random.array_element(faker.locales[faker.locale].name.female_first_name) @@ -16,12 +16,12 @@ var _name = { return faker.random.array_element(faker.definitions.name.first_name) }, - lastName: function () { - if (typeof faker.definitions.name.male_last_name !== "undefined" && typeof faker.defintions.name.female_last_name !== "undefined") { + lastName: function (gender) { + if (typeof faker.definitions.name.male_last_name !== "undefined" && typeof faker.definitions.name.female_last_name !== "undefined") { // some locale datasets ( like ru ) have last_name split by gender. i have no idea how last names can have genders, but also i do not speak russian // see above comment of firstName method - var rand = faker.random.number(1); - if (rand === 0) { + gender = (typeof gender === 'number') ? gender : faker.random.number(1); + if (gender === 0) { return faker.random.array_element(faker.locales[faker.locale].name.male_last_name); } else { return faker.random.array_element(faker.locales[faker.locale].name.female_last_name); @@ -30,15 +30,25 @@ var _name = { return faker.random.array_element(faker.definitions.name.last_name); }, - findName: function (firstName, lastName) { + findName: function (firstName, lastName, gender) { var r = faker.random.number(8); - firstName = firstName || faker.name.firstName(); - lastName = lastName || faker.name.lastName(); + var prefix, suffix; + // in particular locales first and last names split by gender, + // thus we keep consistency by passing 0 as male and 1 as female + gender = (typeof gender === 'number') ? gender : faker.random.number(1); + firstName = firstName || faker.name.firstName(gender); + lastName = lastName || faker.name.lastName(gender); switch (r) { case 0: - return faker.name.prefix() + " " + firstName + " " + lastName; + prefix = faker.name.prefix(); + if (prefix) { + return prefix + " " + firstName + " " + lastName; + } case 1: - return firstName + " " + lastName + " " + faker.name.suffix(); + suffix = faker.name.prefix(); + if (suffix) { + return firstName + " " + lastName + " " + suffix; + } } return firstName + " " + lastName; |
