UNPKG

shevchenko

Version:

JavaScript library for declension of Ukrainian anthroponyms

44 lines (41 loc) 1.44 kB
/** * @file JavaScript library for declension of Ukrainian anthroponyms * @module shevchenko * @version 3.2.2 * @author Oleksandr Tolochko <shevchenko-js@tooleks.com> * @license MIT * @copyright 2017-2026 Oleksandr Tolochko <shevchenko-js@tooleks.com> * @see {@link git+https://github.com/tooleks/shevchenko-js.git} */ import '../../language/alphabet.js'; import { WordClass } from '../../language/word-class.js'; import '../../language/grammatical-case.js'; import '../../language/grammatical-gender.js'; class FamilyNameClassTransformer { encode(familyNameClass) { const values = new Uint8Array(1); switch (familyNameClass.wordClass) { case WordClass.NOUN: values[0] = 1; break; case 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 = value >= 0.5 ? WordClass.NOUN : WordClass.ADJECTIVE; return { wordClass }; } } export { FamilyNameClassTransformer };