UNPKG

shevchenko

Version:

JavaScript library for declension of Ukrainian anthroponyms

43 lines (39 loc) 1.62 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'; require('../language/alphabet.js'); require('../language/word-class.js'); require('../language/grammatical-case.js'); var grammaticalGender = require('../language/grammatical-gender.js'); class GrammaticalGenderDetector { constructor(params) { this.masculinePattern = params.masculinePattern; this.femininePattern = params.femininePattern; } detect(word) { const masculineResult = word.match(this.masculinePattern); const feminineResult = word.match(this.femininePattern); if (masculineResult != null && feminineResult == null) { return grammaticalGender.GrammaticalGender.MASCULINE; } else if (masculineResult == null && feminineResult != null) { return grammaticalGender.GrammaticalGender.FEMININE; } else if (masculineResult != null && feminineResult != null) { const [masculineMatch] = masculineResult; const [feminineMatch] = feminineResult; return masculineMatch.length > feminineMatch.length ? grammaticalGender.GrammaticalGender.MASCULINE : grammaticalGender.GrammaticalGender.FEMININE; } return null; } } exports.GrammaticalGenderDetector = GrammaticalGenderDetector;