UNPKG

shevchenko

Version:

JavaScript library for declension of Ukrainian anthroponyms

42 lines (38 loc) 1.65 kB
/** * @file JavaScript library for declension of Ukrainian anthroponyms * @module shevchenko * @version 3.1.4 * @author Oleksandr Tolochko <shevchenko-js@tooleks.com> * @license MIT * @copyright 2017-2025 Oleksandr Tolochko <shevchenko-js@tooleks.com> * @see {@link git+https://github.com/tooleks/shevchenko-js.git} */ 'use strict'; var givenNameRules = require('./artifacts/given-name-rules.json.js'); var patronymicNameRules = require('./artifacts/patronymic-name-rules.json.js'); var grammaticalGenderDetector = require('./grammatical-gender-detector.js'); const givenNameDetector = new grammaticalGenderDetector.GrammaticalGenderDetector({ masculinePattern: new RegExp(givenNameRules.default.masculine, 'i'), femininePattern: new RegExp(givenNameRules.default.feminine, 'i'), }); const patronymicNameDetector = new grammaticalGenderDetector.GrammaticalGenderDetector({ masculinePattern: new RegExp(patronymicNameRules.default.masculine, 'i'), femininePattern: new RegExp(patronymicNameRules.default.feminine, 'i'), }); /** * Detects the grammatical gender of the anthroponym using * patronymic name or given name endings. * * Returns the grammatical gender of the anthroponym. * Returns null if the grammatical gender of the anthroponym cannot be detected. */ function detectGender(anthroponym) { if (anthroponym.patronymicName) { return patronymicNameDetector.detect(anthroponym.patronymicName.toLocaleLowerCase()); } if (anthroponym.givenName) { return givenNameDetector.detect(anthroponym.givenName.toLocaleLowerCase()); } return null; } exports.detectGender = detectGender;