UNPKG

shevchenko

Version:

JavaScript library for declension of Ukrainian anthroponyms

46 lines (42 loc) 1.54 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} */ 'use strict'; 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;