cscg24-guacamole

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

uk.js (6935B)


      1//! moment.js locale configuration
      2//! locale : Ukrainian [uk]
      3//! author : zemlanin : https://github.com/zemlanin
      4//! Author : Menelion Elensúle : https://github.com/Oire
      5
      6;(function (global, factory) {
      7   typeof exports === 'object' && typeof module !== 'undefined'
      8       && typeof require === 'function' ? factory(require('../moment')) :
      9   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
     10   factory(global.moment)
     11}(this, (function (moment) { 'use strict';
     12
     13    //! moment.js locale configuration
     14
     15    function plural(word, num) {
     16        var forms = word.split('_');
     17        return num % 10 === 1 && num % 100 !== 11
     18            ? forms[0]
     19            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
     20              ? forms[1]
     21              : forms[2];
     22    }
     23    function relativeTimeWithPlural(number, withoutSuffix, key) {
     24        var format = {
     25            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
     26            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
     27            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
     28            dd: 'день_дні_днів',
     29            MM: 'місяць_місяці_місяців',
     30            yy: 'рік_роки_років',
     31        };
     32        if (key === 'm') {
     33            return withoutSuffix ? 'хвилина' : 'хвилину';
     34        } else if (key === 'h') {
     35            return withoutSuffix ? 'година' : 'годину';
     36        } else {
     37            return number + ' ' + plural(format[key], +number);
     38        }
     39    }
     40    function weekdaysCaseReplace(m, format) {
     41        var weekdays = {
     42                nominative:
     43                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
     44                        '_'
     45                    ),
     46                accusative:
     47                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
     48                        '_'
     49                    ),
     50                genitive:
     51                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
     52                        '_'
     53                    ),
     54            },
     55            nounCase;
     56
     57        if (m === true) {
     58            return weekdays['nominative']
     59                .slice(1, 7)
     60                .concat(weekdays['nominative'].slice(0, 1));
     61        }
     62        if (!m) {
     63            return weekdays['nominative'];
     64        }
     65
     66        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
     67            ? 'accusative'
     68            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
     69              ? 'genitive'
     70              : 'nominative';
     71        return weekdays[nounCase][m.day()];
     72    }
     73    function processHoursFunction(str) {
     74        return function () {
     75            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
     76        };
     77    }
     78
     79    var uk = moment.defineLocale('uk', {
     80        months: {
     81            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
     82                '_'
     83            ),
     84            standalone:
     85                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
     86                    '_'
     87                ),
     88        },
     89        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
     90            '_'
     91        ),
     92        weekdays: weekdaysCaseReplace,
     93        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
     94        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
     95        longDateFormat: {
     96            LT: 'HH:mm',
     97            LTS: 'HH:mm:ss',
     98            L: 'DD.MM.YYYY',
     99            LL: 'D MMMM YYYY р.',
    100            LLL: 'D MMMM YYYY р., HH:mm',
    101            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
    102        },
    103        calendar: {
    104            sameDay: processHoursFunction('[Сьогодні '),
    105            nextDay: processHoursFunction('[Завтра '),
    106            lastDay: processHoursFunction('[Вчора '),
    107            nextWeek: processHoursFunction('[У] dddd ['),
    108            lastWeek: function () {
    109                switch (this.day()) {
    110                    case 0:
    111                    case 3:
    112                    case 5:
    113                    case 6:
    114                        return processHoursFunction('[Минулої] dddd [').call(this);
    115                    case 1:
    116                    case 2:
    117                    case 4:
    118                        return processHoursFunction('[Минулого] dddd [').call(this);
    119                }
    120            },
    121            sameElse: 'L',
    122        },
    123        relativeTime: {
    124            future: 'за %s',
    125            past: '%s тому',
    126            s: 'декілька секунд',
    127            ss: relativeTimeWithPlural,
    128            m: relativeTimeWithPlural,
    129            mm: relativeTimeWithPlural,
    130            h: 'годину',
    131            hh: relativeTimeWithPlural,
    132            d: 'день',
    133            dd: relativeTimeWithPlural,
    134            M: 'місяць',
    135            MM: relativeTimeWithPlural,
    136            y: 'рік',
    137            yy: relativeTimeWithPlural,
    138        },
    139        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
    140        meridiemParse: /ночі|ранку|дня|вечора/,
    141        isPM: function (input) {
    142            return /^(дня|вечора)$/.test(input);
    143        },
    144        meridiem: function (hour, minute, isLower) {
    145            if (hour < 4) {
    146                return 'ночі';
    147            } else if (hour < 12) {
    148                return 'ранку';
    149            } else if (hour < 17) {
    150                return 'дня';
    151            } else {
    152                return 'вечора';
    153            }
    154        },
    155        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
    156        ordinal: function (number, period) {
    157            switch (period) {
    158                case 'M':
    159                case 'd':
    160                case 'DDD':
    161                case 'w':
    162                case 'W':
    163                    return number + '-й';
    164                case 'D':
    165                    return number + '-го';
    166                default:
    167                    return number;
    168            }
    169        },
    170        week: {
    171            dow: 1, // Monday is the first day of the week.
    172            doy: 7, // The week that contains Jan 7th is the first week of the year.
    173        },
    174    });
    175
    176    return uk;
    177
    178})));