@yar.ua/numerals
Version:
Number to text - Inflector for Ukrainian numerals
51 lines (50 loc) • 1.34 kB
JavaScript
import { NumeralLexeme } from "./lexeme/numeral/numeral.js";
import { Relation } from "./syntax/relation.js";
export function pop_triplet(digits) {
if (digits.length < 3) {
digits.unshift("0", "0");
const a = digits.pop();
const b = digits.pop();
const c = digits.pop();
digits.length = 0;
return [a, b, c];
}
else {
const a = digits.pop();
const b = digits.pop();
const c = digits.pop();
return [a, b, c];
}
}
export function triplet_into_lexemes(hundreds, tens, ones) {
const result = [];
if (tens == "1") {
result.push(NumeralLexeme.cardinal(tens + ones));
}
else {
if (ones != "0") {
result.push(NumeralLexeme.cardinal(ones));
}
if (tens != "0") {
result.push(NumeralLexeme.cardinal(tens + "0"));
}
}
if (hundreds != "0") {
result.push(NumeralLexeme.cardinal(hundreds + "00"));
}
return result;
}
export function get_relation_type(lexeme, is_first) {
if (!is_first) {
return Relation.nummod;
}
if (lexeme.value == "1") {
return Relation.nummod_govsg;
}
if (["2", "3", "4"].includes(lexeme.value)) {
return Relation.nummod_govpc;
}
else {
return Relation.nummod_govpl;
}
}