cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

ru.js (9566B)


      1//! moment.js locale configuration
      2//! locale : Russian [ru]
      3//! author : Viktorminator : https://github.com/Viktorminator
      4//! author : Menelion Elensúle : https://github.com/Oire
      5//! author : Коренберг Марк : https://github.com/socketpair
      6
      7;(function (global, factory) {
      8   typeof exports === 'object' && typeof module !== 'undefined'
      9       && typeof require === 'function' ? factory(require('../moment')) :
     10   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
     11   factory(global.moment)
     12}(this, (function (moment) { 'use strict';
     13
     14    //! moment.js locale configuration
     15
     16    function plural(word, num) {
     17        var forms = word.split('_');
     18        return num % 10 === 1 && num % 100 !== 11
     19            ? forms[0]
     20            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
     21              ? forms[1]
     22              : forms[2];
     23    }
     24    function relativeTimeWithPlural(number, withoutSuffix, key) {
     25        var format = {
     26            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
     27            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
     28            hh: 'час_часа_часов',
     29            dd: 'день_дня_дней',
     30            ww: 'неделя_недели_недель',
     31            MM: 'месяц_месяца_месяцев',
     32            yy: 'год_года_лет',
     33        };
     34        if (key === 'm') {
     35            return withoutSuffix ? 'минута' : 'минуту';
     36        } else {
     37            return number + ' ' + plural(format[key], +number);
     38        }
     39    }
     40    var monthsParse = [
     41        /^янв/i,
     42        /^фев/i,
     43        /^мар/i,
     44        /^апр/i,
     45        /^ма[йя]/i,
     46        /^июн/i,
     47        /^июл/i,
     48        /^авг/i,
     49        /^сен/i,
     50        /^окт/i,
     51        /^ноя/i,
     52        /^дек/i,
     53    ];
     54
     55    // http://new.gramota.ru/spravka/rules/139-prop : § 103
     56    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
     57    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
     58    var ru = moment.defineLocale('ru', {
     59        months: {
     60            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
     61                '_'
     62            ),
     63            standalone:
     64                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
     65                    '_'
     66                ),
     67        },
     68        monthsShort: {
     69            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
     70            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
     71                '_'
     72            ),
     73            standalone:
     74                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
     75                    '_'
     76                ),
     77        },
     78        weekdays: {
     79            standalone:
     80                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
     81                    '_'
     82                ),
     83            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
     84                '_'
     85            ),
     86            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
     87        },
     88        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
     89        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
     90        monthsParse: monthsParse,
     91        longMonthsParse: monthsParse,
     92        shortMonthsParse: monthsParse,
     93
     94        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
     95        monthsRegex:
     96            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
     97
     98        // копия предыдущего
     99        monthsShortRegex:
    100            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
    101
    102        // полные названия с падежами
    103        monthsStrictRegex:
    104            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
    105
    106        // Выражение, которое соответствует только сокращённым формам
    107        monthsShortStrictRegex:
    108            /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
    109        longDateFormat: {
    110            LT: 'H:mm',
    111            LTS: 'H:mm:ss',
    112            L: 'DD.MM.YYYY',
    113            LL: 'D MMMM YYYY г.',
    114            LLL: 'D MMMM YYYY г., H:mm',
    115            LLLL: 'dddd, D MMMM YYYY г., H:mm',
    116        },
    117        calendar: {
    118            sameDay: '[Сегодня, в] LT',
    119            nextDay: '[Завтра, в] LT',
    120            lastDay: '[Вчера, в] LT',
    121            nextWeek: function (now) {
    122                if (now.week() !== this.week()) {
    123                    switch (this.day()) {
    124                        case 0:
    125                            return '[В следующее] dddd, [в] LT';
    126                        case 1:
    127                        case 2:
    128                        case 4:
    129                            return '[В следующий] dddd, [в] LT';
    130                        case 3:
    131                        case 5:
    132                        case 6:
    133                            return '[В следующую] dddd, [в] LT';
    134                    }
    135                } else {
    136                    if (this.day() === 2) {
    137                        return '[Во] dddd, [в] LT';
    138                    } else {
    139                        return '[В] dddd, [в] LT';
    140                    }
    141                }
    142            },
    143            lastWeek: function (now) {
    144                if (now.week() !== this.week()) {
    145                    switch (this.day()) {
    146                        case 0:
    147                            return '[В прошлое] dddd, [в] LT';
    148                        case 1:
    149                        case 2:
    150                        case 4:
    151                            return '[В прошлый] dddd, [в] LT';
    152                        case 3:
    153                        case 5:
    154                        case 6:
    155                            return '[В прошлую] dddd, [в] LT';
    156                    }
    157                } else {
    158                    if (this.day() === 2) {
    159                        return '[Во] dddd, [в] LT';
    160                    } else {
    161                        return '[В] dddd, [в] LT';
    162                    }
    163                }
    164            },
    165            sameElse: 'L',
    166        },
    167        relativeTime: {
    168            future: 'через %s',
    169            past: '%s назад',
    170            s: 'несколько секунд',
    171            ss: relativeTimeWithPlural,
    172            m: relativeTimeWithPlural,
    173            mm: relativeTimeWithPlural,
    174            h: 'час',
    175            hh: relativeTimeWithPlural,
    176            d: 'день',
    177            dd: relativeTimeWithPlural,
    178            w: 'неделя',
    179            ww: relativeTimeWithPlural,
    180            M: 'месяц',
    181            MM: relativeTimeWithPlural,
    182            y: 'год',
    183            yy: relativeTimeWithPlural,
    184        },
    185        meridiemParse: /ночи|утра|дня|вечера/i,
    186        isPM: function (input) {
    187            return /^(дня|вечера)$/.test(input);
    188        },
    189        meridiem: function (hour, minute, isLower) {
    190            if (hour < 4) {
    191                return 'ночи';
    192            } else if (hour < 12) {
    193                return 'утра';
    194            } else if (hour < 17) {
    195                return 'дня';
    196            } else {
    197                return 'вечера';
    198            }
    199        },
    200        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
    201        ordinal: function (number, period) {
    202            switch (period) {
    203                case 'M':
    204                case 'd':
    205                case 'DDD':
    206                    return number + '-й';
    207                case 'D':
    208                    return number + '-го';
    209                case 'w':
    210                case 'W':
    211                    return number + '-я';
    212                default:
    213                    return number;
    214            }
    215        },
    216        week: {
    217            dow: 1, // Monday is the first day of the week.
    218            doy: 4, // The week that contains Jan 4th is the first week of the year.
    219        },
    220    });
    221
    222    return ru;
    223
    224})));