JSFiddle - React, Tailwind, and code Playground
by ruslanchek
HTML
<ul id="result"></ul>
JavaScript
function parseNumber(number, gender, postfix) {
var gender_one = 'один';
switch (gender) {
case 'neuter' : {
gender_one = 'одно';
} break;
case 'feminine' : {
gender_one = 'одна';
} break;
case 'masculine' : {
gender_one = 'один';
} break;
}
if(number == 1){
return gender_one;
}
var dictionary = [
["", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять",
"десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать",
"шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"],
["", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"],
["", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"],
["тысяч|а|и|", "миллион||а|ов", "миллиард||а|ов", "триллион||а|ов"]
];
function getNumber(number, limit) {
var temp = number.match(/^\d{1,3}([,|\s]\d{3})+/);
if (temp) return temp[0].replace(/[,|\s]/g, "");
temp = Math.abs(parseInt(number, 10));
if (temp !== temp || temp > limit) return null;
return String(temp);
}
function setEnding(variants, number) {
variants = variants.split("|");
number = number.charAt(number.length - 2) === "1" ? null : number.charAt(number.length - 1);
switch (number) {
case "1":
return variants[0] + variants[1];
case "2":
case "3":
case "4":
return variants[0] + variants[2];
default:
return variants[0] + variants[3];
}
}
function getPostfix(postfix, number) {
if (typeof postfix === "string" || postfix instanceof String) {
if (postfix.split("|").length < 3) return " " + postfix;
return " " +...