UNPKG

@yar.ua/numerals

Version:

Number to text - Inflector for Ukrainian numerals

51 lines (50 loc) 1.34 kB
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; } }