Advertisement
Doomer3D

WordForm.js

Nov 8th, 2020
1,061
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. /** класс для формирования строк с числительными */
  3. export default class WordForm {
  4.     /**
  5.      * выбрать корректную форму слова для числительного
  6.      * @param {Number} count число
  7.      * @param {String} form0 форма 0 (ноль окон)
  8.      * @param {String} form1 форма 1 (одно окно)
  9.      * @param {String} form2 форма 2 (два окна)
  10.      * @return {String} результат
  11.      */
  12.     static get(count, form0, form1, form2) {
  13.         if (Array.isArray(form0)) {
  14.             // массив форм
  15.             if (form0.length == 1) {
  16.                 return WordForm.get(count, form0[0], form0[0], form0[0]);
  17.             } else if (form0.length == 3) {
  18.                 return WordForm.get(count, form0[0], form0[1], form0[2]);
  19.             } else {
  20.                 throw new Error('Передано неверное число форм слова');
  21.             }
  22.         } else {
  23.             // три формы
  24.             // eslint-disable-next-line no-bitwise
  25.             if ((count / 10 >> 0) % 10 == 1) {
  26.                 return form0;
  27.             } else {
  28.                 switch (count % 10) {
  29.                     case 1:
  30.                         return form1;
  31.                     case 2:
  32.                     case 3:
  33.                     case 4:
  34.                         return form2;
  35.                     default:
  36.                         return form0;
  37.                 }
  38.             }
  39.         }
  40.     }
  41.  
  42.     /**
  43.      * выбрать корректную форму слова для числительного и записать в виде числа с формой
  44.      * @param {Number} count число
  45.      * @param {String} form0 форма 0 (ноль окон)
  46.      * @param {String} form1 форма 1 (одно окно)
  47.      * @param {String} form2 форма 2 (два окна)
  48.      * @return {String} результат
  49.      */
  50.     static getAsCount(count, form0, form1, form2) {
  51.         return `${count} ${WordForm.get(count, form0, form1, form2)}`;
  52.     }
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement