Socket
Socket
Sign inDemoInstall

gender-detection-from-name

Package Overview
Dependencies
0
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.5.1 to 1.6.0

18

.eslintrc.json
{
"env": {
"es6": true,
"commonjs": true,
"es2021": true,
"node": true,
"mocha": true
},
"extends": "standard",
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"extends": "google",
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
"ecmaVersion": 12
},
"rules": {
"object-curly-spacing": [
"error", "always"
],
"space-infix-ops": "error"
}
}
}

@@ -1,3 +0,3 @@

const enMap = require('./names/en')
const itMap = require('./names/it')
const enMap = require('./names/en');
const itMap = require('./names/it');

@@ -8,23 +8,23 @@ /**

* @param {String} [lang] Language
* @returns {String} male, female, unknown
* @return {String} male, female, unknown
*/
function getGender (name, lang = 'all') {
function getGender(name, lang = 'all') {
if (!name) {
return 'unknown'
return 'unknown';
}
// Lowercase name and lang to make the match
name = name.toLowerCase()
lang = (lang || 'all').toLowerCase()
name = name.toLowerCase();
lang = (lang || 'all').toLowerCase();
const maps = {
en: enMap,
it: itMap,
all: new Map([...itMap, ...enMap])
}
all: new Map([...itMap, ...enMap]),
};
// Use the Map of input language, or use all
const mapToUse = maps[lang] || maps.all
// Get the gender from the input language Map, or try with all, otherwise is unknown
const result = mapToUse.get(name) || maps.all.get(name) || 'unknown'
return result
const mapToUse = maps[lang] || maps.all;
// Get the gender from the language Map or try with all, otherwise is unknown
const result = mapToUse.get(name) || maps.all.get(name) || 'unknown';
return result;
}
exports.getGender = getGender
exports.getGender = getGender;
{
"name": "gender-detection-from-name",
"version": "1.5.1",
"version": "1.6.0",
"description": "Gender detection from first name",

@@ -28,11 +28,7 @@ "main": "index.js",

"devDependencies": {
"eslint": "^7.29.0",
"eslint-config-standard": "^14.1.1",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.1.0",
"eslint-plugin-standard": "^5.0.0",
"mocha": "^9.0.1",
"eslint": "^8.0.1",
"eslint-config-google": "^0.14.0",
"mocha": "^9.1.3",
"nyc": "^15.1.0"
}
}
# Gender detection from name
[![](https://github.com/davideviolante/gender-detection-from-name/workflows/Node.js%20CI/badge.svg)](https://github.com/DavideViolante/gender-detection-from-name/actions?query=workflow%3A"Node.js+CI") [![Coverage Status](https://coveralls.io/repos/github/DavideViolante/gender-detection-from-name/badge.svg?branch=master)](https://coveralls.io/github/DavideViolante/gender-detection-from-name?branch=master) [![Maintainability](https://api.codeclimate.com/v1/badges/ded2c349739e4d87130b/maintainability)](https://codeclimate.com/github/DavideViolante/gender-detection-from-name/maintainability) [![Donate](https://img.shields.io/badge/paypal-donate-179BD7.svg)](https://www.paypal.me/dviolante)
[![NPM](https://nodei.co/npm/gender-detection-from-name.png)](https://nodei.co/npm/gender-detection-from-name/)
Library to detect the gender of a first name. An optional language parameter can be specified to improve the detection, for example: Andrea in EN is female, in IT is male. If no language is specified, EN has priority.

@@ -11,19 +13,19 @@

```js
const { getGender } = require('gender-detection-from-name')
const { getGender } = require('gender-detection-from-name');
const genderEN = getGender('Andrea', 'en')
const genderIT = getGender('Andrea', 'it')
const gender = getGender('Jennifer')
console.log(genderEN) // female
console.log(genderIT) // male
console.log(gender) // female
const genderEN = getGender('Andrea', 'en');
const genderIT = getGender('Andrea', 'it');
const gender = getGender('Jennifer');
console.log(genderEN); // female
console.log(genderIT); // male
console.log(gender); // female
```
### Run tests
- `npm test`
```npm test```
### Run lint
- `npm run lint`
```npm run lint```
### Author
- [Davide Violante](https://github.com/DavideViolante/)

@@ -1,81 +0,81 @@

const assert = require('assert')
const { getGender } = require('../index')
const assert = require('assert');
const { getGender } = require('../index');
describe('Tests for Gender detection from name', () => {
it('should return male for some english male names', () => {
const names = ['Dave', 'John', 'Jacob', 'George', 'Lucas']
const names = ['Dave', 'John', 'Jacob', 'George', 'Lucas'];
for (const name of names) {
assert.strictEqual(getGender(name, 'en'), 'male')
assert.strictEqual(getGender(name, 'en'), 'male');
}
})
});
it('should return female for some english female names', () => {
const names = ['Anna', 'Jennifer', 'Lisa', 'Susanne', 'Andrea']
const names = ['Anna', 'Jennifer', 'Lisa', 'Susanne', 'Andrea'];
for (const name of names) {
assert.strictEqual(getGender(name, 'en'), 'female')
assert.strictEqual(getGender(name, 'en'), 'female');
}
})
});
it('should return male for some italian male names', () => {
const names = ['Davide', 'Federico', 'Giacomo', 'Giorgio', 'Andrea']
const names = ['Davide', 'Federico', 'Giacomo', 'Giorgio', 'Andrea'];
for (const name of names) {
assert.strictEqual(getGender(name, 'it'), 'male')
assert.strictEqual(getGender(name, 'it'), 'male');
}
})
});
it('should return female for some italian female names', () => {
const names = ['Anna', 'Azzurra', 'Luisa', 'Marta', 'Caterina']
const names = ['Anna', 'Azzurra', 'Luisa', 'Marta', 'Caterina'];
for (const name of names) {
assert.strictEqual(getGender(name, 'it'), 'female')
assert.strictEqual(getGender(name, 'it'), 'female');
}
})
});
it('should return male for some names with wrong language', () => {
const names = ['Dave', 'John', 'Giacomo', 'George', 'Luca']
const names = ['Dave', 'John', 'Giacomo', 'George', 'Luca'];
for (const name of names) {
assert.strictEqual(getGender(name, 'de'), 'male')
assert.strictEqual(getGender(name, 'de'), 'male');
}
})
});
it('should return female for some names with wrong language', () => {
const names = ['Anna', 'Jennifer', 'Lisa', 'Marta', 'Catherine']
const names = ['Anna', 'Jennifer', 'Lisa', 'Marta', 'Catherine'];
for (const name of names) {
assert.strictEqual(getGender(name, 'de'), 'female')
assert.strictEqual(getGender(name, 'de'), 'female');
}
})
});
it('should return male for some names with no language', () => {
const names = ['Dave', 'John', 'Giacomo', 'George', 'Luca']
const names = ['Dave', 'John', 'Giacomo', 'George', 'Luca'];
for (const name of names) {
assert.strictEqual(getGender(name), 'male')
assert.strictEqual(getGender(name), 'male');
}
})
});
it('should return female for some names with no language', () => {
const names = ['Anna', 'Jennifer', 'Lisa', 'Marta', 'Catherine']
const names = ['Anna', 'Jennifer', 'Lisa', 'Marta', 'Catherine'];
for (const name of names) {
assert.strictEqual(getGender(name), 'female')
assert.strictEqual(getGender(name), 'female');
}
})
});
it('should return unknown for unknown names', () => {
const names = ['Asdfgh', 'I do not exist', 'None']
const names = ['Asdfgh', 'I do not exist', 'None'];
for (const name of names) {
assert.strictEqual(getGender(name), 'unknown')
assert.strictEqual(getGender(name), 'unknown');
}
})
});
it('should return unknown for null names', () => {
const names = ['', undefined, null]
const names = ['', undefined, null];
for (const name of names) {
assert.strictEqual(getGender(name), 'unknown')
assert.strictEqual(getGender(name), 'unknown');
}
})
});
it('should return male for known name with null lang', () => {
const langs = ['', undefined, null]
const langs = ['', undefined, null];
for (const lang of langs) {
assert.strictEqual(getGender('Dave', lang), 'male')
assert.strictEqual(getGender('Dave', lang), 'male');
}
})
});
it('should return unknown for null name and lang', () => {
assert.strictEqual(getGender(''), 'unknown')
assert.strictEqual(getGender('', ''), 'unknown')
assert.strictEqual(getGender('', null), 'unknown')
assert.strictEqual(getGender('', undefined), 'unknown')
assert.strictEqual(getGender(null, ''), 'unknown')
assert.strictEqual(getGender(undefined, ''), 'unknown')
assert.strictEqual(getGender(null, undefined), 'unknown')
assert.strictEqual(getGender(undefined, null), 'unknown')
})
})
assert.strictEqual(getGender(''), 'unknown');
assert.strictEqual(getGender('', ''), 'unknown');
assert.strictEqual(getGender('', null), 'unknown');
assert.strictEqual(getGender('', undefined), 'unknown');
assert.strictEqual(getGender(null, ''), 'unknown');
assert.strictEqual(getGender(undefined, ''), 'unknown');
assert.strictEqual(getGender(null, undefined), 'unknown');
assert.strictEqual(getGender(undefined, null), 'unknown');
});
});

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc