shevchenko
Version:
JavaScript library for declension of Ukrainian anthroponyms
46 lines (42 loc) • 1.54 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');
var wordClass = require('../../language/word-class.js');
require('../../language/grammatical-case.js');
require('../../language/grammatical-gender.js');
class FamilyNameClassTransformer {
encode(familyNameClass) {
const values = new Uint8Array(1);
switch (familyNameClass.wordClass) {
case wordClass.WordClass.NOUN:
values[0] = 1;
break;
case wordClass.WordClass.ADJECTIVE:
values[0] = 0;
break;
default:
throw new TypeError(`Invalid word class: "${familyNameClass.wordClass}".`);
}
return values;
}
decode(values) {
if (values.length < 1 || values.length > 1) {
throw new RangeError('Invalid vector length.');
}
const value = values[0];
if (value < 0 || value > 1) {
throw new RangeError('Invalid vector value.');
}
const wordClass$1 = value >= 0.5 ? wordClass.WordClass.NOUN : wordClass.WordClass.ADJECTIVE;
return { wordClass: wordClass$1 };
}
}
exports.FamilyNameClassTransformer = FamilyNameClassTransformer;