shevchenko
Version:
JavaScript library for declension of Ukrainian anthroponyms
41 lines (38 loc) • 1.5 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}
*/
import '../language/alphabet.js';
import '../language/word-class.js';
import '../language/grammatical-case.js';
import { GrammaticalGender } from '../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.MASCULINE;
}
else if (masculineResult == null && feminineResult != null) {
return GrammaticalGender.FEMININE;
}
else if (masculineResult != null && feminineResult != null) {
const [masculineMatch] = masculineResult;
const [feminineMatch] = feminineResult;
return masculineMatch.length > feminineMatch.length
? GrammaticalGender.MASCULINE
: GrammaticalGender.FEMININE;
}
return null;
}
}
export { GrammaticalGenderDetector };