1 |
|
2 |
|
3 |
|
4 |
|
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 |
|
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 |
|
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,
|
172 | doy: 7,
|
173 | },
|
174 | });
|
175 |
|
176 | return uk;
|
177 |
|
178 | })));
|