Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- const THOUSANDS_SUFFIX = ["тысяча", "тысячи", "тысяч"];
- const HUNDERS = ["", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"];
- const TENS = ["", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"];
- const TEENS = ["десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"];
- const ONES = ["ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"];
- const ONE_ONES = [""].concat(ONES.slice(1))
- const THOUSAND_ONES = ["", "одна", "две"].concat(ONES.slice(3));
- function calcSuffix(x, suffix=false) {
- if (!suffix) {
- return "";
- }
- else if (x % 100 >= 10 && x % 100 < 20) {
- return suffix[2];
- }
- else if (x % 10 === 0) {
- return suffix[2];
- }
- else if (x % 10 === 1) {
- return suffix[0];
- }
- else if (x % 10 < 5) {
- return suffix[1];
- }
- else {
- return suffix[2];
- }
- }
- function foo(x, obj={}) {
- const suffix = obj.suffix;
- const ones = obj.ones || ONES;
- const teens = obj.teens || TEENS;
- const tens = obj.tens || TENS;
- const hundreds = obj.hundreds || HUNDERS;
- let result;
- if (x >= 10 && x < 20) {
- result = teens[x - 10];
- }
- else {
- let h = Math.floor(x / 100);
- let t = Math.floor(x / 10) % 10;
- let o = x % 10;
- h = hundreds[h];
- t = tens[t];
- o = ones[o];
- result = [h, t, o].filter(x => x !== "").join(" ");
- }
- if (result === "") {
- return "";
- }
- else if (!suffix) {
- return result;
- }
- else {
- return result + " " + calcSuffix(x, suffix);
- }
- }
- function parseIntToRu(x) {
- if (x < 0 || x > 1000000) {
- throw new Error(`parseIntToRu argumentError ${x}`);
- }
- else if (x < 10) {
- return ONES[x];
- }
- else {
- const t = foo(Math.floor(x / 1000), {ones: THOUSAND_ONES, suffix: THOUSANDS_SUFFIX});
- const o = foo(x % 1000, {ones: ONE_ONES});
- return [t, o].filter(e => e !== "").join(" ");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement