shevchenko
Version:
JavaScript library for declension of Ukrainian anthroponyms
43 lines (39 loc) • 1.62 kB
JavaScript
/**
* @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}
*/
;
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;