From: Iskren Chernev Date: Tue, 26 Dec 2023 19:15:14 +0000 (+0200) Subject: Build 2.30.0 X-Git-Tag: 2.30.0^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ddd680908c23797a3ed22007838634518bb14705;p=thirdparty%2Fmoment.git Build 2.30.0 --- diff --git a/component.json b/component.json index de20e6b7d..97cdc5941 100644 --- a/component.json +++ b/component.json @@ -10,6 +10,7 @@ "locale/ar-kw.js", "locale/ar-ly.js", "locale/ar-ma.js", + "locale/ar-ps.js", "locale/ar-sa.js", "locale/ar-tn.js", "locale/ar.js", @@ -77,6 +78,7 @@ "locale/km.js", "locale/kn.js", "locale/ko.js", + "locale/ku-kmr.js", "locale/ku.js", "locale/ky.js", "locale/lb.js", diff --git a/dist/locale/ar-dz.js b/dist/locale/ar-dz.js index 12687a6c5..61a41e724 100644 --- a/dist/locale/ar-dz.js +++ b/dist/locale/ar-dz.js @@ -12,14 +12,14 @@ var pluralForm = function (n) { return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals = { s: [ diff --git a/dist/locale/ar-ly.js b/dist/locale/ar-ly.js index a8d4056d1..88d5ef512 100644 --- a/dist/locale/ar-ly.js +++ b/dist/locale/ar-ly.js @@ -20,14 +20,14 @@ var symbolMap = { return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals = { s: [ diff --git a/dist/locale/ar-ps.js b/dist/locale/ar-ps.js new file mode 100644 index 000000000..143da7ddb --- /dev/null +++ b/dist/locale/ar-ps.js @@ -0,0 +1,112 @@ +//! moment.js locale configuration +//! locale : Arabic (Palestine) [ar-ps] +//! author : Majd Al-Shihabi : https://github.com/majdal + +import moment from '../moment'; + +var symbolMap = { + 1: '١', + 2: '٢', + 3: '٣', + 4: '٤', + 5: '٥', + 6: '٦', + 7: '٧', + 8: '٨', + 9: '٩', + 0: '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }; + +export default moment.defineLocale('ar-ps', { + months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split( + '_' + ), + monthsShort: + 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + meridiemParse: /ص|م/, + isPM: function (input) { + return 'م' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + preparse: function (string) { + return string + .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .split('') // reversed since negative lookbehind not supported everywhere + .reverse() + .join('') + .replace(/[١٢](?![\u062a\u0643])/g, function (match) { + return numberMap[match]; + }) + .split('') + .reverse() + .join('') + .replace(/،/g, ','); + }, + postformat: function (string) { + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, +}); diff --git a/dist/locale/ar.js b/dist/locale/ar.js index fb430b964..846e4910b 100644 --- a/dist/locale/ar.js +++ b/dist/locale/ar.js @@ -34,14 +34,14 @@ var symbolMap = { return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals = { s: [ diff --git a/dist/locale/be.js b/dist/locale/be.js index 4b4d1cb27..39e97a263 100644 --- a/dist/locale/be.js +++ b/dist/locale/be.js @@ -11,8 +11,8 @@ function plural(word, num) { return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { diff --git a/dist/locale/bs.js b/dist/locale/bs.js index 3d62945b8..5235fe9e6 100644 --- a/dist/locale/bs.js +++ b/dist/locale/bs.js @@ -1,10 +1,22 @@ //! moment.js locale configuration //! locale : Bosnian [bs] //! author : Nedim Cholich : https://github.com/frontyard +//! author : Rasid Redzic : https://github.com/rasidre //! based on (hr) translation by Bojan Marković import moment from '../moment'; +function processRelativeTime(number, withoutSuffix, key, isFuture) { + switch (key) { + case 'm': + return withoutSuffix + ? 'jedna minuta' + : isFuture + ? 'jednu minutu' + : 'jedne minute'; + } +} + function translate(number, withoutSuffix, key) { var result = number + ' '; switch (key) { @@ -17,8 +29,6 @@ function translate(number, withoutSuffix, key) { result += 'sekundi'; } return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; case 'mm': if (number === 1) { result += 'minuta'; @@ -29,7 +39,7 @@ function translate(number, withoutSuffix, key) { } return result; case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; + return withoutSuffix ? 'jedan sat' : 'jedan sat'; case 'hh': if (number === 1) { result += 'sat'; @@ -130,7 +140,7 @@ export default moment.defineLocale('bs', { past: 'prije %s', s: 'par sekundi', ss: translate, - m: translate, + m: processRelativeTime, mm: translate, h: translate, hh: translate, diff --git a/dist/locale/ca.js b/dist/locale/ca.js index 0fe9da472..c3562114a 100644 --- a/dist/locale/ca.js +++ b/dist/locale/ca.js @@ -82,12 +82,12 @@ export default moment.defineLocale('ca', { number === 1 ? 'r' : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } diff --git a/dist/locale/cs.js b/dist/locale/cs.js index 7a98abacc..bf5dd09bb 100644 --- a/dist/locale/cs.js +++ b/dist/locale/cs.js @@ -5,13 +5,14 @@ import moment from '../moment'; var months = { - format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( - '_' - ), standalone: - 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( + 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( '_' ), + format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( + '_' + ), + isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/, }, monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), monthsParse = [ diff --git a/dist/locale/cv.js b/dist/locale/cv.js index f349157db..06c196ab5 100644 --- a/dist/locale/cv.js +++ b/dist/locale/cv.js @@ -36,8 +36,8 @@ export default moment.defineLocale('cv', { var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) - ? 'тан' - : 'ран'; + ? 'тан' + : 'ран'; return output + affix; }, past: '%s каялла', diff --git a/dist/locale/en-au.js b/dist/locale/en-au.js index 8ee6197f2..301e9db57 100644 --- a/dist/locale/en-au.js +++ b/dist/locale/en-au.js @@ -53,12 +53,12 @@ export default moment.defineLocale('en-au', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/dist/locale/en-ca.js b/dist/locale/en-ca.js index bc4e9a532..8099e048c 100644 --- a/dist/locale/en-ca.js +++ b/dist/locale/en-ca.js @@ -53,12 +53,12 @@ export default moment.defineLocale('en-ca', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); diff --git a/dist/locale/en-gb.js b/dist/locale/en-gb.js index 9391cc943..acd544a01 100644 --- a/dist/locale/en-gb.js +++ b/dist/locale/en-gb.js @@ -53,12 +53,12 @@ export default moment.defineLocale('en-gb', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/dist/locale/en-ie.js b/dist/locale/en-ie.js index 8200e55fd..8e79f6372 100644 --- a/dist/locale/en-ie.js +++ b/dist/locale/en-ie.js @@ -53,12 +53,12 @@ export default moment.defineLocale('en-ie', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/dist/locale/en-il.js b/dist/locale/en-il.js index ba16f103c..94908df91 100644 --- a/dist/locale/en-il.js +++ b/dist/locale/en-il.js @@ -53,12 +53,12 @@ export default moment.defineLocale('en-il', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); diff --git a/dist/locale/en-in.js b/dist/locale/en-in.js index 7d940d2f0..f685176c7 100644 --- a/dist/locale/en-in.js +++ b/dist/locale/en-in.js @@ -53,12 +53,12 @@ export default moment.defineLocale('en-in', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/dist/locale/en-nz.js b/dist/locale/en-nz.js index dff324cc2..66c9bfc3b 100644 --- a/dist/locale/en-nz.js +++ b/dist/locale/en-nz.js @@ -53,12 +53,12 @@ export default moment.defineLocale('en-nz', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/dist/locale/en-sg.js b/dist/locale/en-sg.js index 433531e01..b36bda43a 100644 --- a/dist/locale/en-sg.js +++ b/dist/locale/en-sg.js @@ -53,12 +53,12 @@ export default moment.defineLocale('en-sg', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/dist/locale/it.js b/dist/locale/it.js index 46aaccfbe..0aa5721b4 100644 --- a/dist/locale/it.js +++ b/dist/locale/it.js @@ -61,8 +61,8 @@ export default moment.defineLocale('it', { (this.hours() > 1 ? 'lle ' : this.hours() === 0 - ? ' ' - : "ll'") + + ? ' ' + : "ll'") + ']LT' ); default: @@ -71,8 +71,8 @@ export default moment.defineLocale('it', { (this.hours() > 1 ? 'lle ' : this.hours() === 0 - ? ' ' - : "ll'") + + ? ' ' + : "ll'") + ']LT' ); } diff --git a/dist/locale/ku-kmr.js b/dist/locale/ku-kmr.js new file mode 100644 index 000000000..87ad603b8 --- /dev/null +++ b/dist/locale/ku-kmr.js @@ -0,0 +1,121 @@ +//! moment.js locale configuration +//! locale : Northern Kurdish [ku-kmr] +//! authors : Mazlum Özdogan : https://github.com/mergehez + +// All rules except for month names are according to +// the spelling rules which are defined in the book 'Rêbera Rastnivîsînê' from Komxebata Kurmancîyê. +// Komxebata Kurmancîyê is a work group that studied different uses in Kurdish language (Kurmanji/Northern Kurdish), +// chose one of alternatives as standard and publish them via their book. +// There are 18 Kurdish linguists in the group. +// The group was formed by Mesopotamia Foundation + +import moment from '../moment'; + +function processRelativeTime(num, withoutSuffix, key, isFuture) { + var format = { + s: ['çend sanîye', 'çend sanîyeyan'], + ss: [num + ' sanîye', num + ' sanîyeyan'], + m: ['deqîqeyek', 'deqîqeyekê'], + mm: [num + ' deqîqe', num + ' deqîqeyan'], + h: ['saetek', 'saetekê'], + hh: [num + ' saet', num + ' saetan'], + d: ['rojek', 'rojekê'], + dd: [num + ' roj', num + ' rojan'], + w: ['hefteyek', 'hefteyekê'], + ww: [num + ' hefte', num + ' hefteyan'], + M: ['mehek', 'mehekê'], + MM: [num + ' meh', num + ' mehan'], + y: ['salek', 'salekê'], + yy: [num + ' sal', num + ' salan'], + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} +// function obliqueNumSuffix(num) { +// if(num.includes(':')) +// num = parseInt(num.split(':')[0]); +// else +// num = parseInt(num); +// return num == 0 || num % 10 == 1 ? 'ê' +// : (num > 10 && num % 10 == 0 ? 'î' : 'an'); +// } +function ezafeNumSuffix(num) { + num = '' + num; + var l = num.substring(num.length - 1), + ll = num.length > 1 ? num.substring(num.length - 2) : ''; + if ( + !(ll == 12 || ll == 13) && + (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80') + ) + return 'yê'; + return 'ê'; +} + +export default moment.defineLocale('ku-kmr', { + // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation) + // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn' + // But the names below are more well known and handy + months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split( + '_' + ), + monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'), + monthsParseExact: true, + weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'), + weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'), + weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'), + meridiem: function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'bn' : 'BN'; + } else { + return isLower ? 'pn' : 'PN'; + } + }, + meridiemParse: /bn|BN|pn|PN/, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM[a] YYYY[an]', + LLL: 'Do MMMM[a] YYYY[an] HH:mm', + LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm', + ll: 'Do MMM[.] YYYY[an]', + lll: 'Do MMM[.] YYYY[an] HH:mm', + llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm', + }, + calendar: { + sameDay: '[Îro di saet] LT [de]', + nextDay: '[Sibê di saet] LT [de]', + nextWeek: 'dddd [di saet] LT [de]', + lastDay: '[Duh di saet] LT [de]', + lastWeek: 'dddd[a borî di saet] LT [de]', + sameElse: 'L', + }, + relativeTime: { + future: 'di %s de', + past: 'berî %s', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + w: processRelativeTime, + ww: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/, + ordinal: function (num, period) { + var p = period.toLowerCase(); + if (p.includes('w') || p.includes('m')) return num + '.'; + + return num + ezafeNumSuffix(num); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, +}); diff --git a/dist/locale/lt.js b/dist/locale/lt.js index f01126136..83c159566 100644 --- a/dist/locale/lt.js +++ b/dist/locale/lt.js @@ -28,8 +28,8 @@ function translateSingular(number, withoutSuffix, key, isFuture) { return withoutSuffix ? forms(key)[0] : isFuture - ? forms(key)[1] - : forms(key)[2]; + ? forms(key)[1] + : forms(key)[2]; } function special(number) { return number % 10 === 0 || (number > 10 && number < 20); diff --git a/dist/locale/me.js b/dist/locale/me.js index c0986df67..e22c8d906 100644 --- a/dist/locale/me.js +++ b/dist/locale/me.js @@ -20,8 +20,8 @@ var translator = { return number === 1 ? wordKey[0] : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; diff --git a/dist/locale/nb.js b/dist/locale/nb.js index c218f518f..cce3aaa9f 100644 --- a/dist/locale/nb.js +++ b/dist/locale/nb.js @@ -40,13 +40,13 @@ export default moment.defineLocale('nb', { ss: '%d sekunder', m: 'ett minutt', mm: '%d minutter', - h: 'en time', + h: 'én time', hh: '%d timer', - d: 'en dag', + d: 'én dag', dd: '%d dager', - w: 'en uke', + w: 'én uke', ww: '%d uker', - M: 'en måned', + M: 'én måned', MM: '%d måneder', y: 'ett år', yy: '%d år', diff --git a/dist/locale/nl-be.js b/dist/locale/nl-be.js index a1ab29586..e495ff14b 100644 --- a/dist/locale/nl-be.js +++ b/dist/locale/nl-be.js @@ -12,7 +12,7 @@ var monthsShortWithDots = monthsParse = [ /^jan/i, /^feb/i, - /^maart|mrt.?$/i, + /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, diff --git a/dist/locale/nl.js b/dist/locale/nl.js index 7d0711261..b6d83c353 100644 --- a/dist/locale/nl.js +++ b/dist/locale/nl.js @@ -12,7 +12,7 @@ var monthsShortWithDots = monthsParse = [ /^jan/i, /^feb/i, - /^maart|mrt.?$/i, + /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, diff --git a/dist/locale/oc-lnc.js b/dist/locale/oc-lnc.js index cc055613a..2e67d7394 100644 --- a/dist/locale/oc-lnc.js +++ b/dist/locale/oc-lnc.js @@ -67,12 +67,12 @@ export default moment.defineLocale('oc-lnc', { number === 1 ? 'r' : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } diff --git a/dist/locale/ru.js b/dist/locale/ru.js index 9f17e18ea..d214850c0 100644 --- a/dist/locale/ru.js +++ b/dist/locale/ru.js @@ -11,8 +11,8 @@ function plural(word, num) { return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { diff --git a/dist/locale/sv.js b/dist/locale/sv.js index 6f5c1d999..4a37cdb5b 100644 --- a/dist/locale/sv.js +++ b/dist/locale/sv.js @@ -53,12 +53,12 @@ export default moment.defineLocale('sv', { ~~((number % 100) / 10) === 1 ? ':e' : b === 1 - ? ':a' - : b === 2 - ? ':a' - : b === 3 - ? ':e' - : ':e'; + ? ':a' + : b === 2 + ? ':a' + : b === 3 + ? ':e' + : ':e'; return number + output; }, week: { diff --git a/dist/locale/tet.js b/dist/locale/tet.js index 8d834d71f..5f7d95c09 100644 --- a/dist/locale/tet.js +++ b/dist/locale/tet.js @@ -53,12 +53,12 @@ export default moment.defineLocale('tet', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/dist/locale/tlh.js b/dist/locale/tlh.js index 95b91513c..ccc5d295e 100644 --- a/dist/locale/tlh.js +++ b/dist/locale/tlh.js @@ -12,10 +12,10 @@ function translateFuture(output) { output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'waQ' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'nem' - : time + ' pIq'; + ? time.slice(0, -3) + 'waQ' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'nem' + : time + ' pIq'; return time; } @@ -25,10 +25,10 @@ function translatePast(output) { output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'wen' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'ben' - : time + ' ret'; + ? time.slice(0, -3) + 'wen' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'ben' + : time + ' ret'; return time; } diff --git a/dist/locale/tzl.js b/dist/locale/tzl.js index 62bfcdc5f..5447082a6 100644 --- a/dist/locale/tzl.js +++ b/dist/locale/tzl.js @@ -84,6 +84,6 @@ function processRelativeTime(number, withoutSuffix, key, isFuture) { return isFuture ? format[key][0] : withoutSuffix - ? format[key][0] - : format[key][1]; + ? format[key][0] + : format[key][1]; } diff --git a/dist/locale/uk.js b/dist/locale/uk.js index 8879b5e2a..670ffccff 100644 --- a/dist/locale/uk.js +++ b/dist/locale/uk.js @@ -10,8 +10,8 @@ function plural(word, num) { return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { @@ -59,8 +59,8 @@ function weekdaysCaseReplace(m, format) { nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) ? 'accusative' : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) - ? 'genitive' - : 'nominative'; + ? 'genitive' + : 'nominative'; return weekdays[nounCase][m.day()]; } function processHoursFunction(str) { diff --git a/dist/locale/x-pseudo.js b/dist/locale/x-pseudo.js index f8adbb8ff..90df555f6 100644 --- a/dist/locale/x-pseudo.js +++ b/dist/locale/x-pseudo.js @@ -58,12 +58,12 @@ export default moment.defineLocale('x-pseudo', { ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/dist/moment.js b/dist/moment.js index 0d696333b..c2fea62cb 100644 --- a/dist/moment.js +++ b/dist/moment.js @@ -1,5 +1,5 @@ //! moment.js -//! version : 2.29.4 +//! version : 2.30.0 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com @@ -149,24 +149,25 @@ if (Array.prototype.some) { } function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m), - parsedParts = some.call(flags.parsedDateParts, function (i) { - return i != null; - }), - isNowValid = - !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidEra && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); - + var flags = null, + parsedParts = false, + isNowValid = m._d && !isNaN(m._d.getTime()); + if (isNowValid) { + flags = getParsingFlags(m); + parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); + isNowValid = + flags.overflow < 0 && + !flags.empty && + !flags.invalidEra && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.weekdayMismatch && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); if (m._strict) { isNowValid = isNowValid && @@ -174,12 +175,11 @@ function isValid(m) { flags.unusedTokens.length === 0 && flags.bigHour === undefined; } - - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } else { - return isNowValid; - } + } + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } else { + return isNowValid; } return m._isValid; } @@ -624,12 +624,56 @@ function pastFuture(diff, output) { return isFunction(format) ? format(output) : format.replace(/%s/i, output); } -var aliases = {}; - -function addUnitAlias(unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; -} +var aliases = { + D: 'date', + dates: 'date', + date: 'date', + d: 'day', + days: 'day', + day: 'day', + e: 'weekday', + weekdays: 'weekday', + weekday: 'weekday', + E: 'isoWeekday', + isoweekdays: 'isoWeekday', + isoweekday: 'isoWeekday', + DDD: 'dayOfYear', + dayofyears: 'dayOfYear', + dayofyear: 'dayOfYear', + h: 'hour', + hours: 'hour', + hour: 'hour', + ms: 'millisecond', + milliseconds: 'millisecond', + millisecond: 'millisecond', + m: 'minute', + minutes: 'minute', + minute: 'minute', + M: 'month', + months: 'month', + month: 'month', + Q: 'quarter', + quarters: 'quarter', + quarter: 'quarter', + s: 'second', + seconds: 'second', + second: 'second', + gg: 'weekYear', + weekyears: 'weekYear', + weekyear: 'weekYear', + GG: 'isoWeekYear', + isoweekyears: 'isoWeekYear', + isoweekyear: 'isoWeekYear', + w: 'week', + weeks: 'week', + week: 'week', + W: 'isoWeek', + isoweeks: 'isoWeek', + isoweek: 'isoWeek', + y: 'year', + years: 'year', + year: 'year', +}; function normalizeUnits(units) { return typeof units === 'string' @@ -654,11 +698,24 @@ function normalizeObjectUnits(inputObject) { return normalizedInput; } -var priorities = {}; - -function addUnitPriority(unit, priority) { - priorities[unit] = priority; -} +var priorities = { + date: 9, + day: 11, + weekday: 11, + isoWeekday: 11, + dayOfYear: 4, + hour: 13, + millisecond: 16, + minute: 14, + month: 8, + quarter: 7, + second: 15, + weekYear: 1, + isoWeekYear: 1, + week: 5, + isoWeek: 5, + year: 1, +}; function getPrioritizedUnits(unitsObj) { var units = [], @@ -674,96 +731,6 @@ function getPrioritizedUnits(unitsObj) { return units; } -function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; -} - -function absFloor(number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } -} - -function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; -} - -function makeGetSet(unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; -} - -function get(mom, unit) { - return mom.isValid() - ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() - : NaN; -} - -function set$1(mom, unit, value) { - if (mom.isValid() && !isNaN(value)) { - if ( - unit === 'FullYear' && - isLeapYear(mom.year()) && - mom.month() === 1 && - mom.date() === 29 - ) { - value = toInt(value); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit]( - value, - mom.month(), - daysInMonth(value, mom.month()) - ); - } else { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } -} - -// MOMENTS - -function stringGet(units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; -} - -function stringSet(units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units), - i, - prioritizedLen = prioritized.length; - for (i = 0; i < prioritizedLen; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; -} - var match1 = /\d/, // 0 - 9 match2 = /\d\d/, // 00 - 99 match3 = /\d{3}/, // 000 - 999 @@ -784,6 +751,8 @@ var match1 = /\d/, // 0 - 9 // includes scottish gaelic two word and hyphenated months matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, + match1to2NoLeadingZero = /^[1-9]\d?/, // 1-99 + match1to2HasZero = /^([1-9]\d|\d)/, // 0-99 regexes; regexes = {}; @@ -822,6 +791,26 @@ function regexEscape(s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } +function absFloor(number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } +} + +function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; +} + var tokens = {}; function addParseToken(token, callback) { @@ -855,6 +844,10 @@ function addTimeToArrayFromToken(token, input, config) { } } +function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; +} + var YEAR = 0, MONTH = 1, DATE = 2, @@ -865,6 +858,173 @@ var YEAR = 0, WEEK = 7, WEEKDAY = 8; +// FORMATTING + +addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? zeroFill(y, 4) : '+' + y; +}); + +addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; +}); + +addFormatToken(0, ['YYYY', 4], 0, 'year'); +addFormatToken(0, ['YYYYY', 5], 0, 'year'); +addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + +// PARSING + +addRegexToken('Y', matchSigned); +addRegexToken('YY', match1to2, match2); +addRegexToken('YYYY', match1to4, match4); +addRegexToken('YYYYY', match1to6, match6); +addRegexToken('YYYYYY', match1to6, match6); + +addParseToken(['YYYYY', 'YYYYYY'], YEAR); +addParseToken('YYYY', function (input, array) { + array[YEAR] = + input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); +}); +addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); +}); +addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); +}); + +// HELPERS + +function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; +} + +// HOOKS + +hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); +}; + +// MOMENTS + +var getSetYear = makeGetSet('FullYear', true); + +function getIsLeapYear() { + return isLeapYear(this.year()); +} + +function makeGetSet(unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; +} + +function get(mom, unit) { + if (!mom.isValid()) { + return NaN; + } + + var d = mom._d, + isUTC = mom._isUTC; + + switch (unit) { + case 'Milliseconds': + return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds(); + case 'Seconds': + return isUTC ? d.getUTCSeconds() : d.getSeconds(); + case 'Minutes': + return isUTC ? d.getUTCMinutes() : d.getMinutes(); + case 'Hours': + return isUTC ? d.getUTCHours() : d.getHours(); + case 'Date': + return isUTC ? d.getUTCDate() : d.getDate(); + case 'Day': + return isUTC ? d.getUTCDay() : d.getDay(); + case 'Month': + return isUTC ? d.getUTCMonth() : d.getMonth(); + case 'FullYear': + return isUTC ? d.getUTCFullYear() : d.getFullYear(); + default: + return NaN; // Just in case + } +} + +function set$1(mom, unit, value) { + var d, isUTC, year, month, date; + + if (!mom.isValid() || isNaN(value)) { + return; + } + + d = mom._d; + isUTC = mom._isUTC; + + switch (unit) { + case 'Milliseconds': + return void (isUTC + ? d.setUTCMilliseconds(value) + : d.setMilliseconds(value)); + case 'Seconds': + return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value)); + case 'Minutes': + return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value)); + case 'Hours': + return void (isUTC ? d.setUTCHours(value) : d.setHours(value)); + case 'Date': + return void (isUTC ? d.setUTCDate(value) : d.setDate(value)); + // case 'Day': // Not real + // return void (isUTC ? d.setUTCDay(value) : d.setDay(value)); + // case 'Month': // Not used because we need to pass two variables + // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value)); + case 'FullYear': + break; // See below ... + default: + return; // Just in case + } + + year = value; + month = mom.month(); + date = mom.date(); + date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date; + void (isUTC + ? d.setUTCFullYear(year, month, date) + : d.setFullYear(year, month, date)); +} + +// MOMENTS + +function stringGet(units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; +} + +function stringSet(units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units), + i, + prioritizedLen = prioritized.length; + for (i = 0; i < prioritizedLen; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; +} + function mod(n, x) { return ((n % x) + x) % x; } @@ -913,17 +1073,9 @@ addFormatToken('MMMM', 0, 0, function (format) { return this.localeData().months(this, format); }); -// ALIASES - -addUnitAlias('month', 'M'); - -// PRIORITY - -addUnitPriority('month', 8); - // PARSING -addRegexToken('M', match1to2); +addRegexToken('M', match1to2, match1to2NoLeadingZero); addRegexToken('MM', match1to2, match2); addRegexToken('MMM', function (isStrict, locale) { return locale.monthsShortRegex(isStrict); @@ -1089,8 +1241,6 @@ function localeMonthsParse(monthName, format, strict) { // MOMENTS function setMonth(mom, value) { - var dayOfMonth; - if (!mom.isValid()) { // No op return mom; @@ -1108,8 +1258,13 @@ function setMonth(mom, value) { } } - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + var month = value, + date = mom.date(); + + date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month)); + void (mom._isUTC + ? mom._d.setUTCMonth(month, date) + : mom._d.setMonth(month, date)); return mom; } @@ -1176,27 +1331,24 @@ function computeMonthsParse() { longPieces = [], mixedPieces = [], i, - mom; + mom, + shortP, + longP; for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); + shortP = regexEscape(this.monthsShort(mom, '')); + longP = regexEscape(this.months(mom, '')); + shortPieces.push(shortP); + longPieces.push(longP); + mixedPieces.push(longP); + mixedPieces.push(shortP); } // Sorting makes sure if one month (or abbr) is a prefix of another it // will match the longer piece. shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._monthsShortRegex = this._monthsRegex; @@ -1210,69 +1362,6 @@ function computeMonthsParse() { ); } -// FORMATTING - -addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? zeroFill(y, 4) : '+' + y; -}); - -addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; -}); - -addFormatToken(0, ['YYYY', 4], 0, 'year'); -addFormatToken(0, ['YYYYY', 5], 0, 'year'); -addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - -// ALIASES - -addUnitAlias('year', 'y'); - -// PRIORITIES - -addUnitPriority('year', 1); - -// PARSING - -addRegexToken('Y', matchSigned); -addRegexToken('YY', match1to2, match2); -addRegexToken('YYYY', match1to4, match4); -addRegexToken('YYYYY', match1to6, match6); -addRegexToken('YYYYYY', match1to6, match6); - -addParseToken(['YYYYY', 'YYYYYY'], YEAR); -addParseToken('YYYY', function (input, array) { - array[YEAR] = - input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); -}); -addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); -}); -addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); -}); - -// HELPERS - -function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; -} - -// HOOKS - -hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); -}; - -// MOMENTS - -var getSetYear = makeGetSet('FullYear', true); - -function getIsLeapYear() { - return isLeapYear(this.year()); -} - function createDate(y, m, d, h, M, s, ms) { // can't just apply() to create a date: // https://stackoverflow.com/q/181348 @@ -1378,21 +1467,11 @@ function weeksInYear(year, dow, doy) { addFormatToken('w', ['ww', 2], 'wo', 'week'); addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); -// ALIASES - -addUnitAlias('week', 'w'); -addUnitAlias('isoWeek', 'W'); - -// PRIORITIES - -addUnitPriority('week', 5); -addUnitPriority('isoWeek', 5); - // PARSING -addRegexToken('w', match1to2); +addRegexToken('w', match1to2, match1to2NoLeadingZero); addRegexToken('ww', match1to2, match2); -addRegexToken('W', match1to2); +addRegexToken('W', match1to2, match1to2NoLeadingZero); addRegexToken('WW', match1to2, match2); addWeekParseToken( @@ -1454,17 +1533,6 @@ addFormatToken('dddd', 0, 0, function (format) { addFormatToken('e', 0, 0, 'weekday'); addFormatToken('E', 0, 0, 'isoWeekday'); -// ALIASES - -addUnitAlias('day', 'd'); -addUnitAlias('weekday', 'e'); -addUnitAlias('isoWeekday', 'E'); - -// PRIORITY -addUnitPriority('day', 11); -addUnitPriority('weekday', 11); -addUnitPriority('isoWeekday', 11); - // PARSING addRegexToken('d', match1to2); @@ -1544,24 +1612,24 @@ function localeWeekdays(m, format) { return m === true ? shiftWeekdays(weekdays, this._week.dow) : m - ? weekdays[m.day()] - : weekdays; + ? weekdays[m.day()] + : weekdays; } function localeWeekdaysShort(m) { return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m - ? this._weekdaysShort[m.day()] - : this._weekdaysShort; + ? this._weekdaysShort[m.day()] + : this._weekdaysShort; } function localeWeekdaysMin(m) { return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m - ? this._weekdaysMin[m.day()] - : this._weekdaysMin; + ? this._weekdaysMin[m.day()] + : this._weekdaysMin; } function handleStrictParse$1(weekdayName, format, strict) { @@ -1710,7 +1778,8 @@ function getSetDayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + + var day = get(this, 'Day'); if (input != null) { input = parseWeekday(input, this.localeData()); return this.add(input - day, 'd'); @@ -1909,13 +1978,6 @@ function meridiem(token, lowercase) { meridiem('a', true); meridiem('A', false); -// ALIASES - -addUnitAlias('hour', 'h'); - -// PRIORITY -addUnitPriority('hour', 13); - // PARSING function matchMeridiem(isStrict, locale) { @@ -1924,9 +1986,9 @@ function matchMeridiem(isStrict, locale) { addRegexToken('a', matchMeridiem); addRegexToken('A', matchMeridiem); -addRegexToken('H', match1to2); -addRegexToken('h', match1to2); -addRegexToken('k', match1to2); +addRegexToken('H', match1to2, match1to2HasZero); +addRegexToken('h', match1to2, match1to2NoLeadingZero); +addRegexToken('k', match1to2, match1to2NoLeadingZero); addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); addRegexToken('kk', match1to2, match2); @@ -2076,7 +2138,8 @@ function chooseLocale(names) { function isLocaleNameSane(name) { // Prevent names that look like filesystem paths, i.e contain '/' or '\' - return name.match('^[^/\\\\]*$') != null; + // Ensure name is available and function returns boolean + return !!(name && name.match('^[^/\\\\]*$')); } function loadLocale(name) { @@ -2268,21 +2331,21 @@ function checkOverflow(m) { a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) - ? DATE - : a[HOUR] < 0 || - a[HOUR] > 24 || - (a[HOUR] === 24 && - (a[MINUTE] !== 0 || - a[SECOND] !== 0 || - a[MILLISECOND] !== 0)) - ? HOUR - : a[MINUTE] < 0 || a[MINUTE] > 59 - ? MINUTE - : a[SECOND] < 0 || a[SECOND] > 59 - ? SECOND - : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 - ? MILLISECOND - : -1; + ? DATE + : a[HOUR] < 0 || + a[HOUR] > 24 || + (a[HOUR] === 24 && + (a[MINUTE] !== 0 || + a[SECOND] !== 0 || + a[MILLISECOND] !== 0)) + ? HOUR + : a[MINUTE] < 0 || a[MINUTE] > 59 + ? MINUTE + : a[SECOND] < 0 || a[SECOND] > 59 + ? SECOND + : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 + ? MILLISECOND + : -1; if ( getParsingFlags(m)._overflowDayOfYear && @@ -3723,16 +3786,16 @@ function getCalendarFormat(myMoment, now) { return diff < -6 ? 'sameElse' : diff < -1 - ? 'lastWeek' - : diff < 0 - ? 'lastDay' - : diff < 1 - ? 'sameDay' - : diff < 2 - ? 'nextDay' - : diff < 7 - ? 'nextWeek' - : 'sameElse'; + ? 'lastWeek' + : diff < 0 + ? 'lastDay' + : diff < 1 + ? 'sameDay' + : diff < 2 + ? 'nextDay' + : diff < 7 + ? 'nextWeek' + : 'sameElse'; } function calendar$1(time, formats) { @@ -4540,16 +4603,22 @@ function computeErasParse() { mixedPieces = [], i, l, + erasName, + erasAbbr, + erasNarrow, eras = this.eras(); for (i = 0, l = eras.length; i < l; ++i) { - namePieces.push(regexEscape(eras[i].name)); - abbrPieces.push(regexEscape(eras[i].abbr)); - narrowPieces.push(regexEscape(eras[i].narrow)); + erasName = regexEscape(eras[i].name); + erasAbbr = regexEscape(eras[i].abbr); + erasNarrow = regexEscape(eras[i].narrow); - mixedPieces.push(regexEscape(eras[i].name)); - mixedPieces.push(regexEscape(eras[i].abbr)); - mixedPieces.push(regexEscape(eras[i].narrow)); + namePieces.push(erasName); + abbrPieces.push(erasAbbr); + narrowPieces.push(erasNarrow); + mixedPieces.push(erasName); + mixedPieces.push(erasAbbr); + mixedPieces.push(erasNarrow); } this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); @@ -4582,14 +4651,6 @@ addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES -addUnitAlias('weekYear', 'gg'); -addUnitAlias('isoWeekYear', 'GG'); - -// PRIORITY - -addUnitPriority('weekYear', 1); -addUnitPriority('isoWeekYear', 1); - // PARSING addRegexToken('G', matchSigned); @@ -4619,7 +4680,7 @@ function getSetWeekYear(input) { this, input, this.week(), - this.weekday(), + this.weekday() + this.localeData()._week.dow, this.localeData()._week.dow, this.localeData()._week.doy ); @@ -4681,14 +4742,6 @@ function setWeekAll(weekYear, week, weekday, dow, doy) { addFormatToken('Q', 0, 'Qo', 'quarter'); -// ALIASES - -addUnitAlias('quarter', 'Q'); - -// PRIORITY - -addUnitPriority('quarter', 7); - // PARSING addRegexToken('Q', match1); @@ -4708,16 +4761,9 @@ function getSetQuarter(input) { addFormatToken('D', ['DD', 2], 'Do', 'date'); -// ALIASES - -addUnitAlias('date', 'D'); - -// PRIORITY -addUnitPriority('date', 9); - // PARSING -addRegexToken('D', match1to2); +addRegexToken('D', match1to2, match1to2NoLeadingZero); addRegexToken('DD', match1to2, match2); addRegexToken('Do', function (isStrict, locale) { // TODO: Remove "ordinalParse" fallback in next major release. @@ -4739,13 +4785,6 @@ var getSetDayOfMonth = makeGetSet('Date', true); addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); -// ALIASES - -addUnitAlias('dayOfYear', 'DDD'); - -// PRIORITY -addUnitPriority('dayOfYear', 4); - // PARSING addRegexToken('DDD', match1to3); @@ -4770,17 +4809,9 @@ function getSetDayOfYear(input) { addFormatToken('m', ['mm', 2], 0, 'minute'); -// ALIASES - -addUnitAlias('minute', 'm'); - -// PRIORITY - -addUnitPriority('minute', 14); - // PARSING -addRegexToken('m', match1to2); +addRegexToken('m', match1to2, match1to2HasZero); addRegexToken('mm', match1to2, match2); addParseToken(['m', 'mm'], MINUTE); @@ -4792,17 +4823,9 @@ var getSetMinute = makeGetSet('Minutes', false); addFormatToken('s', ['ss', 2], 0, 'second'); -// ALIASES - -addUnitAlias('second', 's'); - -// PRIORITY - -addUnitPriority('second', 15); - // PARSING -addRegexToken('s', match1to2); +addRegexToken('s', match1to2, match1to2HasZero); addRegexToken('ss', match1to2, match2); addParseToken(['s', 'ss'], SECOND); @@ -4840,14 +4863,6 @@ addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { return this.millisecond() * 1000000; }); -// ALIASES - -addUnitAlias('millisecond', 'ms'); - -// PRIORITY - -addUnitPriority('millisecond', 16); - // PARSING addRegexToken('S', match1to3, match1); @@ -5155,12 +5170,12 @@ getSetGlobalLocale('en', { toInt((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); @@ -5333,19 +5348,6 @@ function as(units) { } } -// TODO: Use this.as('ms')? -function valueOf$1() { - if (!this.isValid()) { - return NaN; - } - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); -} - function makeAs(alias) { return function () { return this.as(alias); @@ -5360,7 +5362,8 @@ var asMilliseconds = makeAs('ms'), asWeeks = makeAs('w'), asMonths = makeAs('M'), asQuarters = makeAs('Q'), - asYears = makeAs('y'); + asYears = makeAs('y'), + valueOf$1 = asMilliseconds; function clone$1() { return createDuration(this); @@ -5629,7 +5632,7 @@ addParseToken('x', function (input, array, config) { //! moment.js -hooks.version = '2.29.4'; +hooks.version = '2.30.0'; setHookCallback(createLocal); diff --git a/locale/ar-dz.js b/locale/ar-dz.js index 109f6158a..8f9e14916 100644 --- a/locale/ar-dz.js +++ b/locale/ar-dz.js @@ -19,14 +19,14 @@ return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals = { s: [ diff --git a/locale/ar-ly.js b/locale/ar-ly.js index 436b8f31b..0ec9ec8dd 100644 --- a/locale/ar-ly.js +++ b/locale/ar-ly.js @@ -27,14 +27,14 @@ return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals = { s: [ diff --git a/locale/ar-ps.js b/locale/ar-ps.js new file mode 100644 index 000000000..4533bfa60 --- /dev/null +++ b/locale/ar-ps.js @@ -0,0 +1,123 @@ +//! moment.js locale configuration +//! locale : Arabic (Palestine) [ar-ps] +//! author : Majd Al-Shihabi : https://github.com/majdal + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + var symbolMap = { + 1: '١', + 2: '٢', + 3: '٣', + 4: '٤', + 5: '٥', + 6: '٦', + 7: '٧', + 8: '٨', + 9: '٩', + 0: '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }; + + var arPs = moment.defineLocale('ar-ps', { + months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split( + '_' + ), + monthsShort: + 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + meridiemParse: /ص|م/, + isPM: function (input) { + return 'م' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + preparse: function (string) { + return string + .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .split('') // reversed since negative lookbehind not supported everywhere + .reverse() + .join('') + .replace(/[١٢](?![\u062a\u0643])/g, function (match) { + return numberMap[match]; + }) + .split('') + .reverse() + .join('') + .replace(/،/g, ','); + }, + postformat: function (string) { + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); + + return arPs; + +}))); diff --git a/locale/ar.js b/locale/ar.js index 7394244eb..5bfb05748 100644 --- a/locale/ar.js +++ b/locale/ar.js @@ -41,14 +41,14 @@ return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals = { s: [ diff --git a/locale/be.js b/locale/be.js index 363191221..fd7e772bb 100644 --- a/locale/be.js +++ b/locale/be.js @@ -18,8 +18,8 @@ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { diff --git a/locale/bs.js b/locale/bs.js index e0d6c8511..55a4d80c9 100644 --- a/locale/bs.js +++ b/locale/bs.js @@ -1,6 +1,7 @@ //! moment.js locale configuration //! locale : Bosnian [bs] //! author : Nedim Cholich : https://github.com/frontyard +//! author : Rasid Redzic : https://github.com/rasidre //! based on (hr) translation by Bojan Marković ;(function (global, factory) { @@ -12,6 +13,17 @@ //! moment.js locale configuration + function processRelativeTime(number, withoutSuffix, key, isFuture) { + switch (key) { + case 'm': + return withoutSuffix + ? 'jedna minuta' + : isFuture + ? 'jednu minutu' + : 'jedne minute'; + } + } + function translate(number, withoutSuffix, key) { var result = number + ' '; switch (key) { @@ -24,8 +36,6 @@ result += 'sekundi'; } return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; case 'mm': if (number === 1) { result += 'minuta'; @@ -36,7 +46,7 @@ } return result; case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; + return withoutSuffix ? 'jedan sat' : 'jedan sat'; case 'hh': if (number === 1) { result += 'sat'; @@ -137,7 +147,7 @@ past: 'prije %s', s: 'par sekundi', ss: translate, - m: translate, + m: processRelativeTime, mm: translate, h: translate, hh: translate, diff --git a/locale/ca.js b/locale/ca.js index 133071f06..50f264caf 100644 --- a/locale/ca.js +++ b/locale/ca.js @@ -89,12 +89,12 @@ number === 1 ? 'r' : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } diff --git a/locale/cs.js b/locale/cs.js index 43d0ebd3b..7cd88321c 100644 --- a/locale/cs.js +++ b/locale/cs.js @@ -12,13 +12,14 @@ //! moment.js locale configuration var months = { - format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( - '_' - ), standalone: - 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( + 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( '_' ), + format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( + '_' + ), + isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/, }, monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), monthsParse = [ diff --git a/locale/cv.js b/locale/cv.js index abb1d4f50..6749d4828 100644 --- a/locale/cv.js +++ b/locale/cv.js @@ -43,8 +43,8 @@ var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) - ? 'тан' - : 'ран'; + ? 'тан' + : 'ран'; return output + affix; }, past: '%s каялла', diff --git a/locale/en-au.js b/locale/en-au.js index 6e320ba59..869f51d1f 100644 --- a/locale/en-au.js +++ b/locale/en-au.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/locale/en-ca.js b/locale/en-ca.js index bc574f1a4..29a33906a 100644 --- a/locale/en-ca.js +++ b/locale/en-ca.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); diff --git a/locale/en-gb.js b/locale/en-gb.js index 828791e25..a159749de 100644 --- a/locale/en-gb.js +++ b/locale/en-gb.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/locale/en-ie.js b/locale/en-ie.js index 086cf395d..bbde28145 100644 --- a/locale/en-ie.js +++ b/locale/en-ie.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/locale/en-il.js b/locale/en-il.js index e52503ce8..c9c567a98 100644 --- a/locale/en-il.js +++ b/locale/en-il.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); diff --git a/locale/en-in.js b/locale/en-in.js index 06b9abc41..c10fb4bb9 100644 --- a/locale/en-in.js +++ b/locale/en-in.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/locale/en-nz.js b/locale/en-nz.js index 3bc7e9f60..3a9d88fc6 100644 --- a/locale/en-nz.js +++ b/locale/en-nz.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/locale/en-sg.js b/locale/en-sg.js index 4de803c13..f7805ad49 100644 --- a/locale/en-sg.js +++ b/locale/en-sg.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/locale/it.js b/locale/it.js index 2ac903775..910e00542 100644 --- a/locale/it.js +++ b/locale/it.js @@ -68,8 +68,8 @@ (this.hours() > 1 ? 'lle ' : this.hours() === 0 - ? ' ' - : "ll'") + + ? ' ' + : "ll'") + ']LT' ); default: @@ -78,8 +78,8 @@ (this.hours() > 1 ? 'lle ' : this.hours() === 0 - ? ' ' - : "ll'") + + ? ' ' + : "ll'") + ']LT' ); } diff --git a/locale/ku-kmr.js b/locale/ku-kmr.js new file mode 100644 index 000000000..8ba23ed56 --- /dev/null +++ b/locale/ku-kmr.js @@ -0,0 +1,125 @@ +//! moment.js locale configuration +//! locale : Northern Kurdish [ku-kmr] +//! authors : Mazlum Özdogan : https://github.com/mergehez + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + //! moment.js locale configuration + + function processRelativeTime(num, withoutSuffix, key, isFuture) { + var format = { + s: ['çend sanîye', 'çend sanîyeyan'], + ss: [num + ' sanîye', num + ' sanîyeyan'], + m: ['deqîqeyek', 'deqîqeyekê'], + mm: [num + ' deqîqe', num + ' deqîqeyan'], + h: ['saetek', 'saetekê'], + hh: [num + ' saet', num + ' saetan'], + d: ['rojek', 'rojekê'], + dd: [num + ' roj', num + ' rojan'], + w: ['hefteyek', 'hefteyekê'], + ww: [num + ' hefte', num + ' hefteyan'], + M: ['mehek', 'mehekê'], + MM: [num + ' meh', num + ' mehan'], + y: ['salek', 'salekê'], + yy: [num + ' sal', num + ' salan'], + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + // function obliqueNumSuffix(num) { + // if(num.includes(':')) + // num = parseInt(num.split(':')[0]); + // else + // num = parseInt(num); + // return num == 0 || num % 10 == 1 ? 'ê' + // : (num > 10 && num % 10 == 0 ? 'î' : 'an'); + // } + function ezafeNumSuffix(num) { + num = '' + num; + var l = num.substring(num.length - 1), + ll = num.length > 1 ? num.substring(num.length - 2) : ''; + if ( + !(ll == 12 || ll == 13) && + (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80') + ) + return 'yê'; + return 'ê'; + } + + var kuKmr = moment.defineLocale('ku-kmr', { + // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation) + // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn' + // But the names below are more well known and handy + months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split( + '_' + ), + monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'), + monthsParseExact: true, + weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'), + weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'), + weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'), + meridiem: function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'bn' : 'BN'; + } else { + return isLower ? 'pn' : 'PN'; + } + }, + meridiemParse: /bn|BN|pn|PN/, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM[a] YYYY[an]', + LLL: 'Do MMMM[a] YYYY[an] HH:mm', + LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm', + ll: 'Do MMM[.] YYYY[an]', + lll: 'Do MMM[.] YYYY[an] HH:mm', + llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm', + }, + calendar: { + sameDay: '[Îro di saet] LT [de]', + nextDay: '[Sibê di saet] LT [de]', + nextWeek: 'dddd [di saet] LT [de]', + lastDay: '[Duh di saet] LT [de]', + lastWeek: 'dddd[a borî di saet] LT [de]', + sameElse: 'L', + }, + relativeTime: { + future: 'di %s de', + past: 'berî %s', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + w: processRelativeTime, + ww: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/, + ordinal: function (num, period) { + var p = period.toLowerCase(); + if (p.includes('w') || p.includes('m')) return num + '.'; + + return num + ezafeNumSuffix(num); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); + + return kuKmr; + +}))); diff --git a/locale/lt.js b/locale/lt.js index e20d20801..4140cf861 100644 --- a/locale/lt.js +++ b/locale/lt.js @@ -35,8 +35,8 @@ return withoutSuffix ? forms(key)[0] : isFuture - ? forms(key)[1] - : forms(key)[2]; + ? forms(key)[1] + : forms(key)[2]; } function special(number) { return number % 10 === 0 || (number > 10 && number < 20); diff --git a/locale/me.js b/locale/me.js index 21b682689..9b2583d5b 100644 --- a/locale/me.js +++ b/locale/me.js @@ -27,8 +27,8 @@ return number === 1 ? wordKey[0] : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; diff --git a/locale/nb.js b/locale/nb.js index 74da7aff5..1f271aae2 100644 --- a/locale/nb.js +++ b/locale/nb.js @@ -47,13 +47,13 @@ ss: '%d sekunder', m: 'ett minutt', mm: '%d minutter', - h: 'en time', + h: 'én time', hh: '%d timer', - d: 'en dag', + d: 'én dag', dd: '%d dager', - w: 'en uke', + w: 'én uke', ww: '%d uker', - M: 'en måned', + M: 'én måned', MM: '%d måneder', y: 'ett år', yy: '%d år', diff --git a/locale/nl-be.js b/locale/nl-be.js index 207938394..a35546f8c 100644 --- a/locale/nl-be.js +++ b/locale/nl-be.js @@ -19,7 +19,7 @@ monthsParse = [ /^jan/i, /^feb/i, - /^maart|mrt.?$/i, + /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, diff --git a/locale/nl.js b/locale/nl.js index 770e90fe9..a285c040c 100644 --- a/locale/nl.js +++ b/locale/nl.js @@ -19,7 +19,7 @@ monthsParse = [ /^jan/i, /^feb/i, - /^maart|mrt.?$/i, + /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, diff --git a/locale/oc-lnc.js b/locale/oc-lnc.js index ba8f43324..a6a8c911b 100644 --- a/locale/oc-lnc.js +++ b/locale/oc-lnc.js @@ -74,12 +74,12 @@ number === 1 ? 'r' : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } diff --git a/locale/ru.js b/locale/ru.js index 918e9d5e0..d313eae8b 100644 --- a/locale/ru.js +++ b/locale/ru.js @@ -18,8 +18,8 @@ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { diff --git a/locale/sv.js b/locale/sv.js index 90fe441fc..5962e878d 100644 --- a/locale/sv.js +++ b/locale/sv.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? ':e' : b === 1 - ? ':a' - : b === 2 - ? ':a' - : b === 3 - ? ':e' - : ':e'; + ? ':a' + : b === 2 + ? ':a' + : b === 3 + ? ':e' + : ':e'; return number + output; }, week: { diff --git a/locale/tet.js b/locale/tet.js index 931384a60..5c62c6c9c 100644 --- a/locale/tet.js +++ b/locale/tet.js @@ -60,12 +60,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/locale/tlh.js b/locale/tlh.js index ee39f1eb6..ed61731a5 100644 --- a/locale/tlh.js +++ b/locale/tlh.js @@ -19,10 +19,10 @@ output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'waQ' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'nem' - : time + ' pIq'; + ? time.slice(0, -3) + 'waQ' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'nem' + : time + ' pIq'; return time; } @@ -32,10 +32,10 @@ output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'wen' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'ben' - : time + ' ret'; + ? time.slice(0, -3) + 'wen' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'ben' + : time + ' ret'; return time; } diff --git a/locale/tzl.js b/locale/tzl.js index 5eb1c067e..43ad139eb 100644 --- a/locale/tzl.js +++ b/locale/tzl.js @@ -91,8 +91,8 @@ return isFuture ? format[key][0] : withoutSuffix - ? format[key][0] - : format[key][1]; + ? format[key][0] + : format[key][1]; } return tzl; diff --git a/locale/uk.js b/locale/uk.js index 89e04316e..f5fd3528d 100644 --- a/locale/uk.js +++ b/locale/uk.js @@ -17,8 +17,8 @@ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { @@ -66,8 +66,8 @@ nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) ? 'accusative' : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) - ? 'genitive' - : 'nominative'; + ? 'genitive' + : 'nominative'; return weekdays[nounCase][m.day()]; } function processHoursFunction(str) { diff --git a/locale/x-pseudo.js b/locale/x-pseudo.js index f67a2bfb8..a46e1d7d4 100644 --- a/locale/x-pseudo.js +++ b/locale/x-pseudo.js @@ -65,12 +65,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/min/locales.js b/min/locales.js index b4d302c05..19ba0f9cc 100644 --- a/min/locales.js +++ b/min/locales.js @@ -79,14 +79,14 @@ return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals = { s: [ @@ -292,14 +292,14 @@ return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals$1 = { s: [ @@ -521,6 +521,115 @@ '٠': '0', }; + moment.defineLocale('ar-ps', { + months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split( + '_' + ), + monthsShort: + 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + meridiemParse: /ص|م/, + isPM: function (input) { + return 'م' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + preparse: function (string) { + return string + .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .split('') // reversed since negative lookbehind not supported everywhere + .reverse() + .join('') + .replace(/[١٢](?![\u062a\u0643])/g, function (match) { + return numberMap[match]; + }) + .split('') + .reverse() + .join('') + .replace(/،/g, ','); + }, + postformat: function (string) { + return string + .replace(/\d/g, function (match) { + return symbolMap$1[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); + + //! moment.js locale configuration + + var symbolMap$2 = { + 1: '١', + 2: '٢', + 3: '٣', + 4: '٤', + 5: '٥', + 6: '٦', + 7: '٧', + 8: '٨', + 9: '٩', + 0: '٠', + }, + numberMap$1 = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }; + moment.defineLocale('ar-sa', { months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( '_' @@ -579,14 +688,14 @@ preparse: function (string) { return string .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; + return numberMap$1[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { - return symbolMap$1[match]; + return symbolMap$2[match]; }) .replace(/,/g, '،'); }, @@ -650,7 +759,7 @@ //! moment.js locale configuration - var symbolMap$2 = { + var symbolMap$3 = { 1: '١', 2: '٢', 3: '٣', @@ -662,7 +771,7 @@ 9: '٩', 0: '٠', }, - numberMap$1 = { + numberMap$2 = { '١': '1', '٢': '2', '٣': '3', @@ -678,14 +787,14 @@ return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals$2 = { s: [ @@ -815,14 +924,14 @@ preparse: function (string) { return string .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap$1[match]; + return numberMap$2[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { - return symbolMap$2[match]; + return symbolMap$3[match]; }) .replace(/,/g, '،'); }, @@ -938,8 +1047,8 @@ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { @@ -1202,7 +1311,7 @@ //! moment.js locale configuration - var symbolMap$3 = { + var symbolMap$4 = { 1: '১', 2: '২', 3: '৩', @@ -1214,7 +1323,7 @@ 9: '৯', 0: '০', }, - numberMap$2 = { + numberMap$3 = { '১': '1', '২': '2', '৩': '3', @@ -1274,12 +1383,12 @@ }, preparse: function (string) { return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap$2[match]; + return numberMap$3[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$3[match]; + return symbolMap$4[match]; }); }, @@ -1328,7 +1437,7 @@ //! moment.js locale configuration - var symbolMap$4 = { + var symbolMap$5 = { 1: '১', 2: '২', 3: '৩', @@ -1340,7 +1449,7 @@ 9: '৯', 0: '০', }, - numberMap$3 = { + numberMap$4 = { '১': '1', '২': '2', '৩': '3', @@ -1400,12 +1509,12 @@ }, preparse: function (string) { return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap$3[match]; + return numberMap$4[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$4[match]; + return symbolMap$5[match]; }); }, meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, @@ -1444,7 +1553,7 @@ //! moment.js locale configuration - var symbolMap$5 = { + var symbolMap$6 = { 1: '༡', 2: '༢', 3: '༣', @@ -1456,7 +1565,7 @@ 9: '༩', 0: '༠', }, - numberMap$4 = { + numberMap$5 = { '༡': '1', '༢': '2', '༣': '3', @@ -1521,12 +1630,12 @@ }, preparse: function (string) { return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return numberMap$4[match]; + return numberMap$5[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$5[match]; + return symbolMap$6[match]; }); }, meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, @@ -1730,6 +1839,17 @@ //! moment.js locale configuration + function processRelativeTime(number, withoutSuffix, key, isFuture) { + switch (key) { + case 'm': + return withoutSuffix + ? 'jedna minuta' + : isFuture + ? 'jednu minutu' + : 'jedne minute'; + } + } + function translate(number, withoutSuffix, key) { var result = number + ' '; switch (key) { @@ -1742,8 +1862,6 @@ result += 'sekundi'; } return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; case 'mm': if (number === 1) { result += 'minuta'; @@ -1754,7 +1872,7 @@ } return result; case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; + return withoutSuffix ? 'jedan sat' : 'jedan sat'; case 'hh': if (number === 1) { result += 'sat'; @@ -1855,7 +1973,7 @@ past: 'prije %s', s: 'par sekundi', ss: translate, - m: translate, + m: processRelativeTime, mm: translate, h: translate, hh: translate, @@ -1954,12 +2072,12 @@ number === 1 ? 'r' : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } @@ -1974,13 +2092,14 @@ //! moment.js locale configuration var months$3 = { - format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( - '_' - ), standalone: - 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( + 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( '_' ), + format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( + '_' + ), + isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/, }, monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), monthsParse$1 = [ @@ -2182,8 +2301,8 @@ var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) - ? 'тан' - : 'ран'; + ? 'тан' + : 'ран'; return output + affix; }, past: '%s каялла', @@ -2354,7 +2473,7 @@ //! moment.js locale configuration - function processRelativeTime(number, withoutSuffix, key, isFuture) { + function processRelativeTime$1(number, withoutSuffix, key, isFuture) { var format = { m: ['eine Minute', 'einer Minute'], h: ['eine Stunde', 'einer Stunde'], @@ -2404,18 +2523,18 @@ past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', - m: processRelativeTime, + m: processRelativeTime$1, mm: '%d Minuten', - h: processRelativeTime, + h: processRelativeTime$1, hh: '%d Stunden', - d: processRelativeTime, - dd: processRelativeTime, - w: processRelativeTime, + d: processRelativeTime$1, + dd: processRelativeTime$1, + w: processRelativeTime$1, ww: '%d Wochen', - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, + M: processRelativeTime$1, + MM: processRelativeTime$1, + y: processRelativeTime$1, + yy: processRelativeTime$1, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -2427,7 +2546,7 @@ //! moment.js locale configuration - function processRelativeTime$1(number, withoutSuffix, key, isFuture) { + function processRelativeTime$2(number, withoutSuffix, key, isFuture) { var format = { m: ['eine Minute', 'einer Minute'], h: ['eine Stunde', 'einer Stunde'], @@ -2477,18 +2596,18 @@ past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', - m: processRelativeTime$1, + m: processRelativeTime$2, mm: '%d Minuten', - h: processRelativeTime$1, + h: processRelativeTime$2, hh: '%d Stunden', - d: processRelativeTime$1, - dd: processRelativeTime$1, - w: processRelativeTime$1, + d: processRelativeTime$2, + dd: processRelativeTime$2, + w: processRelativeTime$2, ww: '%d Wochen', - M: processRelativeTime$1, - MM: processRelativeTime$1, - y: processRelativeTime$1, - yy: processRelativeTime$1, + M: processRelativeTime$2, + MM: processRelativeTime$2, + y: processRelativeTime$2, + yy: processRelativeTime$2, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -2500,7 +2619,7 @@ //! moment.js locale configuration - function processRelativeTime$2(number, withoutSuffix, key, isFuture) { + function processRelativeTime$3(number, withoutSuffix, key, isFuture) { var format = { m: ['eine Minute', 'einer Minute'], h: ['eine Stunde', 'einer Stunde'], @@ -2550,18 +2669,18 @@ past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', - m: processRelativeTime$2, + m: processRelativeTime$3, mm: '%d Minuten', - h: processRelativeTime$2, + h: processRelativeTime$3, hh: '%d Stunden', - d: processRelativeTime$2, - dd: processRelativeTime$2, - w: processRelativeTime$2, + d: processRelativeTime$3, + dd: processRelativeTime$3, + w: processRelativeTime$3, ww: '%d Wochen', - M: processRelativeTime$2, - MM: processRelativeTime$2, - y: processRelativeTime$2, - yy: processRelativeTime$2, + M: processRelativeTime$3, + MM: processRelativeTime$3, + y: processRelativeTime$3, + yy: processRelativeTime$3, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -2812,12 +2931,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -2877,12 +2996,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); @@ -2938,12 +3057,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -3003,12 +3122,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -3068,12 +3187,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); @@ -3129,12 +3248,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -3194,12 +3313,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -3259,12 +3378,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -3763,7 +3882,7 @@ //! moment.js locale configuration - function processRelativeTime$3(number, withoutSuffix, key, isFuture) { + function processRelativeTime$4(number, withoutSuffix, key, isFuture) { var format = { s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], ss: [number + 'sekundi', number + 'sekundit'], @@ -3814,18 +3933,18 @@ relativeTime: { future: '%s pärast', past: '%s tagasi', - s: processRelativeTime$3, - ss: processRelativeTime$3, - m: processRelativeTime$3, - mm: processRelativeTime$3, - h: processRelativeTime$3, - hh: processRelativeTime$3, - d: processRelativeTime$3, + s: processRelativeTime$4, + ss: processRelativeTime$4, + m: processRelativeTime$4, + mm: processRelativeTime$4, + h: processRelativeTime$4, + hh: processRelativeTime$4, + d: processRelativeTime$4, dd: '%d päeva', - M: processRelativeTime$3, - MM: processRelativeTime$3, - y: processRelativeTime$3, - yy: processRelativeTime$3, + M: processRelativeTime$4, + MM: processRelativeTime$4, + y: processRelativeTime$4, + yy: processRelativeTime$4, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -3899,7 +4018,7 @@ //! moment.js locale configuration - var symbolMap$6 = { + var symbolMap$7 = { 1: '۱', 2: '۲', 3: '۳', @@ -3911,7 +4030,7 @@ 9: '۹', 0: '۰', }, - numberMap$5 = { + numberMap$6 = { '۱': '1', '۲': '2', '۳': '3', @@ -3988,14 +4107,14 @@ preparse: function (string) { return string .replace(/[۰-۹]/g, function (match) { - return numberMap$5[match]; + return numberMap$6[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { - return symbolMap$6[match]; + return symbolMap$7[match]; }) .replace(/,/g, '،'); }, @@ -4808,7 +4927,7 @@ //! moment.js locale configuration - function processRelativeTime$4(number, withoutSuffix, key, isFuture) { + function processRelativeTime$5(number, withoutSuffix, key, isFuture) { var format = { s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], @@ -4866,18 +4985,18 @@ relativeTime: { future: '%s', past: '%s आदीं', - s: processRelativeTime$4, - ss: processRelativeTime$4, - m: processRelativeTime$4, - mm: processRelativeTime$4, - h: processRelativeTime$4, - hh: processRelativeTime$4, - d: processRelativeTime$4, - dd: processRelativeTime$4, - M: processRelativeTime$4, - MM: processRelativeTime$4, - y: processRelativeTime$4, - yy: processRelativeTime$4, + s: processRelativeTime$5, + ss: processRelativeTime$5, + m: processRelativeTime$5, + mm: processRelativeTime$5, + h: processRelativeTime$5, + hh: processRelativeTime$5, + d: processRelativeTime$5, + dd: processRelativeTime$5, + M: processRelativeTime$5, + MM: processRelativeTime$5, + y: processRelativeTime$5, + yy: processRelativeTime$5, }, dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, ordinal: function (number, period) { @@ -4931,7 +5050,7 @@ //! moment.js locale configuration - function processRelativeTime$5(number, withoutSuffix, key, isFuture) { + function processRelativeTime$6(number, withoutSuffix, key, isFuture) { var format = { s: ['thoddea sekondamni', 'thodde sekond'], ss: [number + ' sekondamni', number + ' sekond'], @@ -4987,18 +5106,18 @@ relativeTime: { future: '%s', past: '%s adim', - s: processRelativeTime$5, - ss: processRelativeTime$5, - m: processRelativeTime$5, - mm: processRelativeTime$5, - h: processRelativeTime$5, - hh: processRelativeTime$5, - d: processRelativeTime$5, - dd: processRelativeTime$5, - M: processRelativeTime$5, - MM: processRelativeTime$5, - y: processRelativeTime$5, - yy: processRelativeTime$5, + s: processRelativeTime$6, + ss: processRelativeTime$6, + m: processRelativeTime$6, + mm: processRelativeTime$6, + h: processRelativeTime$6, + hh: processRelativeTime$6, + d: processRelativeTime$6, + dd: processRelativeTime$6, + M: processRelativeTime$6, + MM: processRelativeTime$6, + y: processRelativeTime$6, + yy: processRelativeTime$6, }, dayOfMonthOrdinalParse: /\d{1,2}(er)/, ordinal: function (number, period) { @@ -5052,7 +5171,7 @@ //! moment.js locale configuration - var symbolMap$7 = { + var symbolMap$8 = { 1: '૧', 2: '૨', 3: '૩', @@ -5064,7 +5183,7 @@ 9: '૯', 0: '૦', }, - numberMap$6 = { + numberMap$7 = { '૧': '1', '૨': '2', '૩': '3', @@ -5125,12 +5244,12 @@ }, preparse: function (string) { return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { - return numberMap$6[match]; + return numberMap$7[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$7[match]; + return symbolMap$8[match]; }); }, // Gujarati notation for meridiems are quite fuzzy in practice. While there exists @@ -5260,7 +5379,7 @@ //! moment.js locale configuration - var symbolMap$8 = { + var symbolMap$9 = { 1: '१', 2: '२', 3: '३', @@ -5272,7 +5391,7 @@ 9: '९', 0: '०', }, - numberMap$7 = { + numberMap$8 = { '१': '1', '२': '2', '३': '3', @@ -5379,12 +5498,12 @@ }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap$7[match]; + return numberMap$8[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$8[match]; + return symbolMap$9[match]; }); }, // Hindi notation for meridiems are quite fuzzy in practice. While there exists @@ -6108,8 +6227,8 @@ (this.hours() > 1 ? 'lle ' : this.hours() === 0 - ? ' ' - : "ll'") + + ? ' ' + : "ll'") + ']LT' ); default: @@ -6118,8 +6237,8 @@ (this.hours() > 1 ? 'lle ' : this.hours() === 0 - ? ' ' - : "ll'") + + ? ' ' + : "ll'") + ']LT' ); } @@ -6539,7 +6658,7 @@ //! moment.js locale configuration - var symbolMap$9 = { + var symbolMap$a = { 1: '១', 2: '២', 3: '៣', @@ -6551,7 +6670,7 @@ 9: '៩', 0: '០', }, - numberMap$8 = { + numberMap$9 = { '១': '1', '២': '2', '៣': '3', @@ -6623,12 +6742,12 @@ ordinal: 'ទី%d', preparse: function (string) { return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { - return numberMap$8[match]; + return numberMap$9[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$9[match]; + return symbolMap$a[match]; }); }, week: { @@ -6639,7 +6758,7 @@ //! moment.js locale configuration - var symbolMap$a = { + var symbolMap$b = { 1: '೧', 2: '೨', 3: '೩', @@ -6651,7 +6770,7 @@ 9: '೯', 0: '೦', }, - numberMap$9 = { + numberMap$a = { '೧': '1', '೨': '2', '೩': '3', @@ -6712,12 +6831,12 @@ }, preparse: function (string) { return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { - return numberMap$9[match]; + return numberMap$a[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$a[match]; + return symbolMap$b[match]; }); }, meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, @@ -6831,7 +6950,118 @@ //! moment.js locale configuration - var symbolMap$b = { + function processRelativeTime$7(num, withoutSuffix, key, isFuture) { + var format = { + s: ['çend sanîye', 'çend sanîyeyan'], + ss: [num + ' sanîye', num + ' sanîyeyan'], + m: ['deqîqeyek', 'deqîqeyekê'], + mm: [num + ' deqîqe', num + ' deqîqeyan'], + h: ['saetek', 'saetekê'], + hh: [num + ' saet', num + ' saetan'], + d: ['rojek', 'rojekê'], + dd: [num + ' roj', num + ' rojan'], + w: ['hefteyek', 'hefteyekê'], + ww: [num + ' hefte', num + ' hefteyan'], + M: ['mehek', 'mehekê'], + MM: [num + ' meh', num + ' mehan'], + y: ['salek', 'salekê'], + yy: [num + ' sal', num + ' salan'], + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + // function obliqueNumSuffix(num) { + // if(num.includes(':')) + // num = parseInt(num.split(':')[0]); + // else + // num = parseInt(num); + // return num == 0 || num % 10 == 1 ? 'ê' + // : (num > 10 && num % 10 == 0 ? 'î' : 'an'); + // } + function ezafeNumSuffix(num) { + num = '' + num; + var l = num.substring(num.length - 1), + ll = num.length > 1 ? num.substring(num.length - 2) : ''; + if ( + !(ll == 12 || ll == 13) && + (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80') + ) + return 'yê'; + return 'ê'; + } + + moment.defineLocale('ku-kmr', { + // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation) + // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn' + // But the names below are more well known and handy + months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split( + '_' + ), + monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'), + monthsParseExact: true, + weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'), + weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'), + weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'), + meridiem: function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'bn' : 'BN'; + } else { + return isLower ? 'pn' : 'PN'; + } + }, + meridiemParse: /bn|BN|pn|PN/, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM[a] YYYY[an]', + LLL: 'Do MMMM[a] YYYY[an] HH:mm', + LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm', + ll: 'Do MMM[.] YYYY[an]', + lll: 'Do MMM[.] YYYY[an] HH:mm', + llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm', + }, + calendar: { + sameDay: '[Îro di saet] LT [de]', + nextDay: '[Sibê di saet] LT [de]', + nextWeek: 'dddd [di saet] LT [de]', + lastDay: '[Duh di saet] LT [de]', + lastWeek: 'dddd[a borî di saet] LT [de]', + sameElse: 'L', + }, + relativeTime: { + future: 'di %s de', + past: 'berî %s', + s: processRelativeTime$7, + ss: processRelativeTime$7, + m: processRelativeTime$7, + mm: processRelativeTime$7, + h: processRelativeTime$7, + hh: processRelativeTime$7, + d: processRelativeTime$7, + dd: processRelativeTime$7, + w: processRelativeTime$7, + ww: processRelativeTime$7, + M: processRelativeTime$7, + MM: processRelativeTime$7, + y: processRelativeTime$7, + yy: processRelativeTime$7, + }, + dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/, + ordinal: function (num, period) { + var p = period.toLowerCase(); + if (p.includes('w') || p.includes('m')) return num + '.'; + + return num + ezafeNumSuffix(num); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); + + //! moment.js locale configuration + + var symbolMap$c = { 1: '١', 2: '٢', 3: '٣', @@ -6843,7 +7073,7 @@ 9: '٩', 0: '٠', }, - numberMap$a = { + numberMap$b = { '١': '1', '٢': '2', '٣': '3', @@ -6927,14 +7157,14 @@ preparse: function (string) { return string .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap$a[match]; + return numberMap$b[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { - return symbolMap$b[match]; + return symbolMap$c[match]; }) .replace(/,/g, '،'); }, @@ -7027,7 +7257,7 @@ //! moment.js locale configuration - function processRelativeTime$6(number, withoutSuffix, key, isFuture) { + function processRelativeTime$8(number, withoutSuffix, key, isFuture) { var format = { m: ['eng Minutt', 'enger Minutt'], h: ['eng Stonn', 'enger Stonn'], @@ -7139,15 +7369,15 @@ past: processPastTime, s: 'e puer Sekonnen', ss: '%d Sekonnen', - m: processRelativeTime$6, + m: processRelativeTime$8, mm: '%d Minutten', - h: processRelativeTime$6, + h: processRelativeTime$8, hh: '%d Stonnen', - d: processRelativeTime$6, + d: processRelativeTime$8, dd: '%d Deeg', - M: processRelativeTime$6, + M: processRelativeTime$8, MM: '%d Méint', - y: processRelativeTime$6, + y: processRelativeTime$8, yy: '%d Joer', }, dayOfMonthOrdinalParse: /\d{1,2}\./, @@ -7247,8 +7477,8 @@ return withoutSuffix ? forms(key)[0] : isFuture - ? forms(key)[1] - : forms(key)[2]; + ? forms(key)[1] + : forms(key)[2]; } function special(number) { return number % 10 === 0 || (number > 10 && number < 20); @@ -7451,8 +7681,8 @@ return number === 1 ? wordKey[0] : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; @@ -7864,7 +8094,7 @@ //! moment.js locale configuration - var symbolMap$c = { + var symbolMap$d = { 1: '१', 2: '२', 3: '३', @@ -7876,7 +8106,7 @@ 9: '९', 0: '०', }, - numberMap$b = { + numberMap$c = { '१': '1', '२': '2', '३': '3', @@ -8019,12 +8249,12 @@ }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap$b[match]; + return numberMap$c[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$c[match]; + return symbolMap$d[match]; }); }, meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, @@ -8260,7 +8490,7 @@ //! moment.js locale configuration - var symbolMap$d = { + var symbolMap$e = { 1: '၁', 2: '၂', 3: '၃', @@ -8272,7 +8502,7 @@ 9: '၉', 0: '၀', }, - numberMap$c = { + numberMap$d = { '၁': '1', '၂': '2', '၃': '3', @@ -8330,12 +8560,12 @@ }, preparse: function (string) { return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return numberMap$c[match]; + return numberMap$d[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$d[match]; + return symbolMap$e[match]; }); }, week: { @@ -8380,13 +8610,13 @@ ss: '%d sekunder', m: 'ett minutt', mm: '%d minutter', - h: 'en time', + h: 'én time', hh: '%d timer', - d: 'en dag', + d: 'én dag', dd: '%d dager', - w: 'en uke', + w: 'én uke', ww: '%d uker', - M: 'en måned', + M: 'én måned', MM: '%d måneder', y: 'ett år', yy: '%d år', @@ -8401,7 +8631,7 @@ //! moment.js locale configuration - var symbolMap$e = { + var symbolMap$f = { 1: '१', 2: '२', 3: '३', @@ -8413,7 +8643,7 @@ 9: '९', 0: '०', }, - numberMap$d = { + numberMap$e = { '१': '1', '२': '2', '३': '3', @@ -8451,12 +8681,12 @@ }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap$d[match]; + return numberMap$e[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$e[match]; + return symbolMap$f[match]; }); }, meridiemParse: /राति|बिहान|दिउँसो|साँझ/, @@ -8526,7 +8756,7 @@ monthsParse$8 = [ /^jan/i, /^feb/i, - /^maart|mrt.?$/i, + /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, @@ -8624,7 +8854,7 @@ monthsParse$9 = [ /^jan/i, /^feb/i, - /^maart|mrt.?$/i, + /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, @@ -8835,12 +9065,12 @@ number === 1 ? 'r' : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } @@ -8854,7 +9084,7 @@ //! moment.js locale configuration - var symbolMap$f = { + var symbolMap$g = { 1: '੧', 2: '੨', 3: '੩', @@ -8866,7 +9096,7 @@ 9: '੯', 0: '੦', }, - numberMap$e = { + numberMap$f = { '੧': '1', '੨': '2', '੩': '3', @@ -8927,12 +9157,12 @@ }, preparse: function (string) { return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { - return numberMap$e[match]; + return numberMap$f[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$f[match]; + return symbolMap$g[match]; }); }, // Punjabi notation for meridiems are quite fuzzy in practice. While there exists @@ -9301,8 +9531,8 @@ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural$3(number, withoutSuffix, key) { var format = { @@ -9843,7 +10073,7 @@ //! moment.js locale configuration - function processRelativeTime$7(number, withoutSuffix, key, isFuture) { + function processRelativeTime$9(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { case 's': @@ -9988,18 +10218,18 @@ relativeTime: { future: 'čez %s', past: 'pred %s', - s: processRelativeTime$7, - ss: processRelativeTime$7, - m: processRelativeTime$7, - mm: processRelativeTime$7, - h: processRelativeTime$7, - hh: processRelativeTime$7, - d: processRelativeTime$7, - dd: processRelativeTime$7, - M: processRelativeTime$7, - MM: processRelativeTime$7, - y: processRelativeTime$7, - yy: processRelativeTime$7, + s: processRelativeTime$9, + ss: processRelativeTime$9, + m: processRelativeTime$9, + mm: processRelativeTime$9, + h: processRelativeTime$9, + hh: processRelativeTime$9, + d: processRelativeTime$9, + dd: processRelativeTime$9, + M: processRelativeTime$9, + MM: processRelativeTime$9, + y: processRelativeTime$9, + yy: processRelativeTime$9, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -10449,12 +10679,12 @@ ~~((number % 100) / 10) === 1 ? ':e' : b === 1 - ? ':a' - : b === 2 - ? ':a' - : b === 3 - ? ':e' - : ':e'; + ? ':a' + : b === 2 + ? ':a' + : b === 3 + ? ':e' + : ':e'; return number + output; }, week: { @@ -10517,7 +10747,7 @@ //! moment.js locale configuration - var symbolMap$g = { + var symbolMap$h = { 1: '௧', 2: '௨', 3: '௩', @@ -10529,7 +10759,7 @@ 9: '௯', 0: '௦', }, - numberMap$f = { + numberMap$g = { '௧': '1', '௨': '2', '௩': '3', @@ -10596,12 +10826,12 @@ }, preparse: function (string) { return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { - return numberMap$f[match]; + return numberMap$g[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$g[match]; + return symbolMap$h[match]; }); }, // refer http://ta.wikipedia.org/s/1er1 @@ -10777,12 +11007,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -11119,10 +11349,10 @@ output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'waQ' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'nem' - : time + ' pIq'; + ? time.slice(0, -3) + 'waQ' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'nem' + : time + ' pIq'; return time; } @@ -11132,10 +11362,10 @@ output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'wen' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'ben' - : time + ' ret'; + ? time.slice(0, -3) + 'wen' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'ben' + : time + ' ret'; return time; } @@ -11374,18 +11604,18 @@ relativeTime: { future: 'osprei %s', past: 'ja%s', - s: processRelativeTime$8, - ss: processRelativeTime$8, - m: processRelativeTime$8, - mm: processRelativeTime$8, - h: processRelativeTime$8, - hh: processRelativeTime$8, - d: processRelativeTime$8, - dd: processRelativeTime$8, - M: processRelativeTime$8, - MM: processRelativeTime$8, - y: processRelativeTime$8, - yy: processRelativeTime$8, + s: processRelativeTime$a, + ss: processRelativeTime$a, + m: processRelativeTime$a, + mm: processRelativeTime$a, + h: processRelativeTime$a, + hh: processRelativeTime$a, + d: processRelativeTime$a, + dd: processRelativeTime$a, + M: processRelativeTime$a, + MM: processRelativeTime$a, + y: processRelativeTime$a, + yy: processRelativeTime$a, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -11395,7 +11625,7 @@ }, }); - function processRelativeTime$8(number, withoutSuffix, key, isFuture) { + function processRelativeTime$a(number, withoutSuffix, key, isFuture) { var format = { s: ['viensas secunds', "'iensas secunds"], ss: [number + ' secunds', '' + number + ' secunds'], @@ -11413,8 +11643,8 @@ return isFuture ? format[key][0] : withoutSuffix - ? format[key][0] - : format[key][1]; + ? format[key][0] + : format[key][1]; } //! moment.js locale configuration @@ -11634,8 +11864,8 @@ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural$4(number, withoutSuffix, key) { var format = { @@ -11683,8 +11913,8 @@ nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) ? 'accusative' : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) - ? 'genitive' - : 'nominative'; + ? 'genitive' + : 'nominative'; return weekdays[nounCase][m.day()]; } function processHoursFunction(str) { @@ -12099,12 +12329,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/min/locales.min.js b/min/locales.min.js index b77ab6be2..49c47f5e2 100644 --- a/min/locales.min.js +++ b/min/locales.min.js @@ -1,2 +1,2 @@ -!function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,_){return e<12?_?"vm":"VM":_?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});function E(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function a(n){return function(e,a,_,s){var d=E(e),t=J[n][E(e)];return(t=2===d?t[a?0:1]:t).replace(/%d/i,e)}}function F(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function _(n){return function(e,a,_,s){var d=F(e),t=N[n][F(e)];return(t=2===d?t[a?0:1]:t).replace(/%d/i,e)}}function z(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function s(n){return function(e,a,_,s){var d=z(e),t=B[n][z(e)];return(t=2===d?t[a?0:1]:t).replace(/%d/i,e)}}var J={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},d=["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],I=(e.defineLocale("ar-dz",{months:d,monthsShort:d,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:0,doy:4}}),e.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}}),{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"}),N={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},d=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],R=(e.defineLocale("ar-ly",{months:d,monthsShort:d,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:_("s"),ss:_("s"),m:_("m"),mm:_("m"),h:_("h"),hh:_("h"),d:_("d"),dd:_("d"),M:_("M"),MM:_("M"),y:_("y"),yy:_("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return I[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),e.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),C={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},K=(e.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return C[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return R[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),e.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),G={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},B={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},d=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],q=(e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return G[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return K[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"});function t(e,a,_){return"m"===_?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===_?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[_]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,_){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){if(0===e)return e+"-\u0131nc\u0131";var a=e%10;return e+(q[a]||q[e%100-a]||q[100<=e?100:null])},week:{dow:1,doy:7}}),e.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:t,mm:t,h:t,hh:t,d:"\u0434\u0437\u0435\u043d\u044c",dd:t,M:"\u043c\u0435\u0441\u044f\u0446",MM:t,y:"\u0433\u043e\u0434",yy:t},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,_){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),e.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",w:"\u0441\u0435\u0434\u043c\u0438\u0446\u0430",ww:"%d \u0441\u0435\u0434\u043c\u0438\u0446\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,_=e%100;return 0===e?e+"-\u0435\u0432":0==_?e+"-\u0435\u043d":10<_&&_<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var U={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},$={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},Q=(e.defineLocale("bn-bd",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return $[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return U[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09ad\u09cb\u09b0|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a?e<4?e:e+12:"\u09ad\u09cb\u09b0"===a||"\u09b8\u0995\u09be\u09b2"===a?e:"\u09a6\u09c1\u09aa\u09c1\u09b0"===a?3<=e?e:e+12:"\u09ac\u09bf\u0995\u09be\u09b2"===a||"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u09b0\u09be\u09a4":e<6?"\u09ad\u09cb\u09b0":e<12?"\u09b8\u0995\u09be\u09b2":e<15?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<18?"\u09ac\u09bf\u0995\u09be\u09b2":e<20?"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}}),{1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"}),V={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},Z=(e.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return V[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Q[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,_){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}}),{1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"}),X={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function ee(e,a,_){return e+" "+(_={mm:"munutenn",MM:"miz",dd:"devezh"}[_],2!==(e=e)?_:void 0!==(e={m:"v",b:"v",d:"z"})[(_=_).charAt(0)]?e[_.charAt(0)]+_.substring(1):_)}e.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12".split("_"),monthsShortRegex:/^(\u0f5f\u0fb3\u0f0b\d{1,2})/,monthsParseExact:!0,weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u0f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return X[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Z[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,_){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}});var d=[/^gen/i,/^c[\u02bc\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],n=/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,r=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];function i(e,a,_){var s=e+" ";switch(_){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}e.defineLocale("br",{months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:r,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[\u02bc\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:r,monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:d,longMonthsParse:d,shortMonthsParse:d,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc\u02bchoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec\u02bch da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:ee,h:"un eur",hh:"%d eur",d:"un devezh",dd:ee,M:"ur miz",MM:ee,y:"ur bloaz",yy:function(e){switch(function e(a){if(9 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; - } - - function makeGetSet(unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; - } - - function get(mom, unit) { - return mom.isValid() - ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() - : NaN; - } - - function set$1(mom, unit, value) { - if (mom.isValid() && !isNaN(value)) { - if ( - unit === 'FullYear' && - isLeapYear(mom.year()) && - mom.month() === 1 && - mom.date() === 29 - ) { - value = toInt(value); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit]( - value, - mom.month(), - daysInMonth(value, mom.month()) - ); - } else { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } - } - - // MOMENTS - - function stringGet(units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; - } - - function stringSet(units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units), - i, - prioritizedLen = prioritized.length; - for (i = 0; i < prioritizedLen; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; - } - var match1 = /\d/, // 0 - 9 match2 = /\d\d/, // 00 - 99 match3 = /\d{3}/, // 000 - 999 @@ -784,6 +751,8 @@ // includes scottish gaelic two word and hyphenated months matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, + match1to2NoLeadingZero = /^[1-9]\d?/, // 1-99 + match1to2HasZero = /^([1-9]\d|\d)/, // 0-99 regexes; regexes = {}; @@ -822,6 +791,26 @@ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } + function absFloor(number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; + } + var tokens = {}; function addParseToken(token, callback) { @@ -855,6 +844,10 @@ } } + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + var YEAR = 0, MONTH = 1, DATE = 2, @@ -865,6 +858,173 @@ WEEK = 7, WEEKDAY = 8; + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? zeroFill(y, 4) : '+' + y; + }); + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = + input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + // HOOKS + + hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', true); + + function getIsLeapYear() { + return isLeapYear(this.year()); + } + + function makeGetSet(unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; + } + + function get(mom, unit) { + if (!mom.isValid()) { + return NaN; + } + + var d = mom._d, + isUTC = mom._isUTC; + + switch (unit) { + case 'Milliseconds': + return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds(); + case 'Seconds': + return isUTC ? d.getUTCSeconds() : d.getSeconds(); + case 'Minutes': + return isUTC ? d.getUTCMinutes() : d.getMinutes(); + case 'Hours': + return isUTC ? d.getUTCHours() : d.getHours(); + case 'Date': + return isUTC ? d.getUTCDate() : d.getDate(); + case 'Day': + return isUTC ? d.getUTCDay() : d.getDay(); + case 'Month': + return isUTC ? d.getUTCMonth() : d.getMonth(); + case 'FullYear': + return isUTC ? d.getUTCFullYear() : d.getFullYear(); + default: + return NaN; // Just in case + } + } + + function set$1(mom, unit, value) { + var d, isUTC, year, month, date; + + if (!mom.isValid() || isNaN(value)) { + return; + } + + d = mom._d; + isUTC = mom._isUTC; + + switch (unit) { + case 'Milliseconds': + return void (isUTC + ? d.setUTCMilliseconds(value) + : d.setMilliseconds(value)); + case 'Seconds': + return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value)); + case 'Minutes': + return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value)); + case 'Hours': + return void (isUTC ? d.setUTCHours(value) : d.setHours(value)); + case 'Date': + return void (isUTC ? d.setUTCDate(value) : d.setDate(value)); + // case 'Day': // Not real + // return void (isUTC ? d.setUTCDay(value) : d.setDay(value)); + // case 'Month': // Not used because we need to pass two variables + // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value)); + case 'FullYear': + break; // See below ... + default: + return; // Just in case + } + + year = value; + month = mom.month(); + date = mom.date(); + date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date; + void (isUTC + ? d.setUTCFullYear(year, month, date) + : d.setFullYear(year, month, date)); + } + + // MOMENTS + + function stringGet(units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; + } + + function stringSet(units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units), + i, + prioritizedLen = prioritized.length; + for (i = 0; i < prioritizedLen; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; + } + function mod(n, x) { return ((n % x) + x) % x; } @@ -913,17 +1073,9 @@ return this.localeData().months(this, format); }); - // ALIASES - - addUnitAlias('month', 'M'); - - // PRIORITY - - addUnitPriority('month', 8); - // PARSING - addRegexToken('M', match1to2); + addRegexToken('M', match1to2, match1to2NoLeadingZero); addRegexToken('MM', match1to2, match2); addRegexToken('MMM', function (isStrict, locale) { return locale.monthsShortRegex(isStrict); @@ -1089,8 +1241,6 @@ // MOMENTS function setMonth(mom, value) { - var dayOfMonth; - if (!mom.isValid()) { // No op return mom; @@ -1108,8 +1258,13 @@ } } - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + var month = value, + date = mom.date(); + + date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month)); + void (mom._isUTC + ? mom._d.setUTCMonth(month, date) + : mom._d.setMonth(month, date)); return mom; } @@ -1176,27 +1331,24 @@ longPieces = [], mixedPieces = [], i, - mom; + mom, + shortP, + longP; for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); + shortP = regexEscape(this.monthsShort(mom, '')); + longP = regexEscape(this.months(mom, '')); + shortPieces.push(shortP); + longPieces.push(longP); + mixedPieces.push(longP); + mixedPieces.push(shortP); } // Sorting makes sure if one month (or abbr) is a prefix of another it // will match the longer piece. shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._monthsShortRegex = this._monthsRegex; @@ -1210,69 +1362,6 @@ ); } - // FORMATTING - - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? zeroFill(y, 4) : '+' + y; - }); - - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); - - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - - // ALIASES - - addUnitAlias('year', 'y'); - - // PRIORITIES - - addUnitPriority('year', 1); - - // PARSING - - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); - - addParseToken(['YYYYY', 'YYYYYY'], YEAR); - addParseToken('YYYY', function (input, array) { - array[YEAR] = - input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); - }); - addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); - }); - - // HELPERS - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - // HOOKS - - hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - // MOMENTS - - var getSetYear = makeGetSet('FullYear', true); - - function getIsLeapYear() { - return isLeapYear(this.year()); - } - function createDate(y, m, d, h, M, s, ms) { // can't just apply() to create a date: // https://stackoverflow.com/q/181348 @@ -1378,21 +1467,11 @@ addFormatToken('w', ['ww', 2], 'wo', 'week'); addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PRIORITIES - - addUnitPriority('week', 5); - addUnitPriority('isoWeek', 5); - // PARSING - addRegexToken('w', match1to2); + addRegexToken('w', match1to2, match1to2NoLeadingZero); addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); + addRegexToken('W', match1to2, match1to2NoLeadingZero); addRegexToken('WW', match1to2, match2); addWeekParseToken( @@ -1454,17 +1533,6 @@ addFormatToken('e', 0, 0, 'weekday'); addFormatToken('E', 0, 0, 'isoWeekday'); - // ALIASES - - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); - - // PRIORITY - addUnitPriority('day', 11); - addUnitPriority('weekday', 11); - addUnitPriority('isoWeekday', 11); - // PARSING addRegexToken('d', match1to2); @@ -1544,24 +1612,24 @@ return m === true ? shiftWeekdays(weekdays, this._week.dow) : m - ? weekdays[m.day()] - : weekdays; + ? weekdays[m.day()] + : weekdays; } function localeWeekdaysShort(m) { return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m - ? this._weekdaysShort[m.day()] - : this._weekdaysShort; + ? this._weekdaysShort[m.day()] + : this._weekdaysShort; } function localeWeekdaysMin(m) { return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m - ? this._weekdaysMin[m.day()] - : this._weekdaysMin; + ? this._weekdaysMin[m.day()] + : this._weekdaysMin; } function handleStrictParse$1(weekdayName, format, strict) { @@ -1710,7 +1778,8 @@ if (!this.isValid()) { return input != null ? this : NaN; } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + + var day = get(this, 'Day'); if (input != null) { input = parseWeekday(input, this.localeData()); return this.add(input - day, 'd'); @@ -1909,13 +1978,6 @@ meridiem('a', true); meridiem('A', false); - // ALIASES - - addUnitAlias('hour', 'h'); - - // PRIORITY - addUnitPriority('hour', 13); - // PARSING function matchMeridiem(isStrict, locale) { @@ -1924,9 +1986,9 @@ addRegexToken('a', matchMeridiem); addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); + addRegexToken('H', match1to2, match1to2HasZero); + addRegexToken('h', match1to2, match1to2NoLeadingZero); + addRegexToken('k', match1to2, match1to2NoLeadingZero); addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); addRegexToken('kk', match1to2, match2); @@ -2076,7 +2138,8 @@ function isLocaleNameSane(name) { // Prevent names that look like filesystem paths, i.e contain '/' or '\' - return name.match('^[^/\\\\]*$') != null; + // Ensure name is available and function returns boolean + return !!(name && name.match('^[^/\\\\]*$')); } function loadLocale(name) { @@ -2268,21 +2331,21 @@ a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) - ? DATE - : a[HOUR] < 0 || - a[HOUR] > 24 || - (a[HOUR] === 24 && - (a[MINUTE] !== 0 || - a[SECOND] !== 0 || - a[MILLISECOND] !== 0)) - ? HOUR - : a[MINUTE] < 0 || a[MINUTE] > 59 - ? MINUTE - : a[SECOND] < 0 || a[SECOND] > 59 - ? SECOND - : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 - ? MILLISECOND - : -1; + ? DATE + : a[HOUR] < 0 || + a[HOUR] > 24 || + (a[HOUR] === 24 && + (a[MINUTE] !== 0 || + a[SECOND] !== 0 || + a[MILLISECOND] !== 0)) + ? HOUR + : a[MINUTE] < 0 || a[MINUTE] > 59 + ? MINUTE + : a[SECOND] < 0 || a[SECOND] > 59 + ? SECOND + : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 + ? MILLISECOND + : -1; if ( getParsingFlags(m)._overflowDayOfYear && @@ -3723,16 +3786,16 @@ return diff < -6 ? 'sameElse' : diff < -1 - ? 'lastWeek' - : diff < 0 - ? 'lastDay' - : diff < 1 - ? 'sameDay' - : diff < 2 - ? 'nextDay' - : diff < 7 - ? 'nextWeek' - : 'sameElse'; + ? 'lastWeek' + : diff < 0 + ? 'lastDay' + : diff < 1 + ? 'sameDay' + : diff < 2 + ? 'nextDay' + : diff < 7 + ? 'nextWeek' + : 'sameElse'; } function calendar$1(time, formats) { @@ -4540,16 +4603,22 @@ mixedPieces = [], i, l, + erasName, + erasAbbr, + erasNarrow, eras = this.eras(); for (i = 0, l = eras.length; i < l; ++i) { - namePieces.push(regexEscape(eras[i].name)); - abbrPieces.push(regexEscape(eras[i].abbr)); - narrowPieces.push(regexEscape(eras[i].narrow)); + erasName = regexEscape(eras[i].name); + erasAbbr = regexEscape(eras[i].abbr); + erasNarrow = regexEscape(eras[i].narrow); - mixedPieces.push(regexEscape(eras[i].name)); - mixedPieces.push(regexEscape(eras[i].abbr)); - mixedPieces.push(regexEscape(eras[i].narrow)); + namePieces.push(erasName); + abbrPieces.push(erasAbbr); + narrowPieces.push(erasNarrow); + mixedPieces.push(erasName); + mixedPieces.push(erasAbbr); + mixedPieces.push(erasNarrow); } this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); @@ -4582,14 +4651,6 @@ // ALIASES - addUnitAlias('weekYear', 'gg'); - addUnitAlias('isoWeekYear', 'GG'); - - // PRIORITY - - addUnitPriority('weekYear', 1); - addUnitPriority('isoWeekYear', 1); - // PARSING addRegexToken('G', matchSigned); @@ -4619,7 +4680,7 @@ this, input, this.week(), - this.weekday(), + this.weekday() + this.localeData()._week.dow, this.localeData()._week.dow, this.localeData()._week.doy ); @@ -4681,14 +4742,6 @@ addFormatToken('Q', 0, 'Qo', 'quarter'); - // ALIASES - - addUnitAlias('quarter', 'Q'); - - // PRIORITY - - addUnitPriority('quarter', 7); - // PARSING addRegexToken('Q', match1); @@ -4708,16 +4761,9 @@ addFormatToken('D', ['DD', 2], 'Do', 'date'); - // ALIASES - - addUnitAlias('date', 'D'); - - // PRIORITY - addUnitPriority('date', 9); - // PARSING - addRegexToken('D', match1to2); + addRegexToken('D', match1to2, match1to2NoLeadingZero); addRegexToken('DD', match1to2, match2); addRegexToken('Do', function (isStrict, locale) { // TODO: Remove "ordinalParse" fallback in next major release. @@ -4739,13 +4785,6 @@ addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - // ALIASES - - addUnitAlias('dayOfYear', 'DDD'); - - // PRIORITY - addUnitPriority('dayOfYear', 4); - // PARSING addRegexToken('DDD', match1to3); @@ -4770,17 +4809,9 @@ addFormatToken('m', ['mm', 2], 0, 'minute'); - // ALIASES - - addUnitAlias('minute', 'm'); - - // PRIORITY - - addUnitPriority('minute', 14); - // PARSING - addRegexToken('m', match1to2); + addRegexToken('m', match1to2, match1to2HasZero); addRegexToken('mm', match1to2, match2); addParseToken(['m', 'mm'], MINUTE); @@ -4792,17 +4823,9 @@ addFormatToken('s', ['ss', 2], 0, 'second'); - // ALIASES - - addUnitAlias('second', 's'); - - // PRIORITY - - addUnitPriority('second', 15); - // PARSING - addRegexToken('s', match1to2); + addRegexToken('s', match1to2, match1to2HasZero); addRegexToken('ss', match1to2, match2); addParseToken(['s', 'ss'], SECOND); @@ -4840,14 +4863,6 @@ return this.millisecond() * 1000000; }); - // ALIASES - - addUnitAlias('millisecond', 'ms'); - - // PRIORITY - - addUnitPriority('millisecond', 16); - // PARSING addRegexToken('S', match1to3, match1); @@ -5155,12 +5170,12 @@ toInt((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); @@ -5333,19 +5348,6 @@ } } - // TODO: Use this.as('ms')? - function valueOf$1() { - if (!this.isValid()) { - return NaN; - } - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); - } - function makeAs(alias) { return function () { return this.as(alias); @@ -5360,7 +5362,8 @@ asWeeks = makeAs('w'), asMonths = makeAs('M'), asQuarters = makeAs('Q'), - asYears = makeAs('y'); + asYears = makeAs('y'), + valueOf$1 = asMilliseconds; function clone$1() { return createDuration(this); @@ -5629,7 +5632,7 @@ //! moment.js - hooks.version = '2.29.4'; + hooks.version = '2.30.0'; setHookCallback(createLocal); @@ -5748,14 +5751,14 @@ return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals = { s: [ @@ -5961,14 +5964,14 @@ return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals$1 = { s: [ @@ -6190,6 +6193,115 @@ '٠': '0', }; + hooks.defineLocale('ar-ps', { + months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split( + '_' + ), + monthsShort: + 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + meridiemParse: /ص|م/, + isPM: function (input) { + return 'م' === input; + }, + meridiem: function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + preparse: function (string) { + return string + .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .split('') // reversed since negative lookbehind not supported everywhere + .reverse() + .join('') + .replace(/[١٢](?![\u062a\u0643])/g, function (match) { + return numberMap[match]; + }) + .split('') + .reverse() + .join('') + .replace(/،/g, ','); + }, + postformat: function (string) { + return string + .replace(/\d/g, function (match) { + return symbolMap$1[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, + }); + + //! moment.js locale configuration + + var symbolMap$2 = { + 1: '١', + 2: '٢', + 3: '٣', + 4: '٤', + 5: '٥', + 6: '٦', + 7: '٧', + 8: '٨', + 9: '٩', + 0: '٠', + }, + numberMap$1 = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }; + hooks.defineLocale('ar-sa', { months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( '_' @@ -6248,14 +6360,14 @@ preparse: function (string) { return string .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; + return numberMap$1[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { - return symbolMap$1[match]; + return symbolMap$2[match]; }) .replace(/,/g, '،'); }, @@ -6319,7 +6431,7 @@ //! moment.js locale configuration - var symbolMap$2 = { + var symbolMap$3 = { 1: '١', 2: '٢', 3: '٣', @@ -6331,7 +6443,7 @@ 9: '٩', 0: '٠', }, - numberMap$1 = { + numberMap$2 = { '١': '1', '٢': '2', '٣': '3', @@ -6347,14 +6459,14 @@ return n === 0 ? 0 : n === 1 - ? 1 - : n === 2 - ? 2 - : n % 100 >= 3 && n % 100 <= 10 - ? 3 - : n % 100 >= 11 - ? 4 - : 5; + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; }, plurals$2 = { s: [ @@ -6484,14 +6596,14 @@ preparse: function (string) { return string .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap$1[match]; + return numberMap$2[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { - return symbolMap$2[match]; + return symbolMap$3[match]; }) .replace(/,/g, '،'); }, @@ -6607,8 +6719,8 @@ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { @@ -6871,7 +6983,7 @@ //! moment.js locale configuration - var symbolMap$3 = { + var symbolMap$4 = { 1: '১', 2: '২', 3: '৩', @@ -6883,7 +6995,7 @@ 9: '৯', 0: '০', }, - numberMap$2 = { + numberMap$3 = { '১': '1', '২': '2', '৩': '3', @@ -6943,12 +7055,12 @@ }, preparse: function (string) { return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap$2[match]; + return numberMap$3[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$3[match]; + return symbolMap$4[match]; }); }, @@ -6997,7 +7109,7 @@ //! moment.js locale configuration - var symbolMap$4 = { + var symbolMap$5 = { 1: '১', 2: '২', 3: '৩', @@ -7009,7 +7121,7 @@ 9: '৯', 0: '০', }, - numberMap$3 = { + numberMap$4 = { '১': '1', '২': '2', '৩': '3', @@ -7069,12 +7181,12 @@ }, preparse: function (string) { return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap$3[match]; + return numberMap$4[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$4[match]; + return symbolMap$5[match]; }); }, meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, @@ -7113,7 +7225,7 @@ //! moment.js locale configuration - var symbolMap$5 = { + var symbolMap$6 = { 1: '༡', 2: '༢', 3: '༣', @@ -7125,7 +7237,7 @@ 9: '༩', 0: '༠', }, - numberMap$4 = { + numberMap$5 = { '༡': '1', '༢': '2', '༣': '3', @@ -7190,12 +7302,12 @@ }, preparse: function (string) { return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { - return numberMap$4[match]; + return numberMap$5[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$5[match]; + return symbolMap$6[match]; }); }, meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, @@ -7399,6 +7511,17 @@ //! moment.js locale configuration + function processRelativeTime(number, withoutSuffix, key, isFuture) { + switch (key) { + case 'm': + return withoutSuffix + ? 'jedna minuta' + : isFuture + ? 'jednu minutu' + : 'jedne minute'; + } + } + function translate(number, withoutSuffix, key) { var result = number + ' '; switch (key) { @@ -7411,8 +7534,6 @@ result += 'sekundi'; } return result; - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; case 'mm': if (number === 1) { result += 'minuta'; @@ -7423,7 +7544,7 @@ } return result; case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; + return withoutSuffix ? 'jedan sat' : 'jedan sat'; case 'hh': if (number === 1) { result += 'sat'; @@ -7524,7 +7645,7 @@ past: 'prije %s', s: 'par sekundi', ss: translate, - m: translate, + m: processRelativeTime, mm: translate, h: translate, hh: translate, @@ -7623,12 +7744,12 @@ number === 1 ? 'r' : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } @@ -7643,13 +7764,14 @@ //! moment.js locale configuration var months$4 = { - format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( - '_' - ), standalone: - 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( + 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( '_' ), + format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( + '_' + ), + isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/, }, monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), monthsParse$1 = [ @@ -7851,8 +7973,8 @@ var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) - ? 'тан' - : 'ран'; + ? 'тан' + : 'ран'; return output + affix; }, past: '%s каялла', @@ -8023,7 +8145,7 @@ //! moment.js locale configuration - function processRelativeTime(number, withoutSuffix, key, isFuture) { + function processRelativeTime$1(number, withoutSuffix, key, isFuture) { var format = { m: ['eine Minute', 'einer Minute'], h: ['eine Stunde', 'einer Stunde'], @@ -8073,18 +8195,18 @@ past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', - m: processRelativeTime, + m: processRelativeTime$1, mm: '%d Minuten', - h: processRelativeTime, + h: processRelativeTime$1, hh: '%d Stunden', - d: processRelativeTime, - dd: processRelativeTime, - w: processRelativeTime, + d: processRelativeTime$1, + dd: processRelativeTime$1, + w: processRelativeTime$1, ww: '%d Wochen', - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime, + M: processRelativeTime$1, + MM: processRelativeTime$1, + y: processRelativeTime$1, + yy: processRelativeTime$1, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -8096,7 +8218,7 @@ //! moment.js locale configuration - function processRelativeTime$1(number, withoutSuffix, key, isFuture) { + function processRelativeTime$2(number, withoutSuffix, key, isFuture) { var format = { m: ['eine Minute', 'einer Minute'], h: ['eine Stunde', 'einer Stunde'], @@ -8146,18 +8268,18 @@ past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', - m: processRelativeTime$1, + m: processRelativeTime$2, mm: '%d Minuten', - h: processRelativeTime$1, + h: processRelativeTime$2, hh: '%d Stunden', - d: processRelativeTime$1, - dd: processRelativeTime$1, - w: processRelativeTime$1, + d: processRelativeTime$2, + dd: processRelativeTime$2, + w: processRelativeTime$2, ww: '%d Wochen', - M: processRelativeTime$1, - MM: processRelativeTime$1, - y: processRelativeTime$1, - yy: processRelativeTime$1, + M: processRelativeTime$2, + MM: processRelativeTime$2, + y: processRelativeTime$2, + yy: processRelativeTime$2, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -8169,7 +8291,7 @@ //! moment.js locale configuration - function processRelativeTime$2(number, withoutSuffix, key, isFuture) { + function processRelativeTime$3(number, withoutSuffix, key, isFuture) { var format = { m: ['eine Minute', 'einer Minute'], h: ['eine Stunde', 'einer Stunde'], @@ -8219,18 +8341,18 @@ past: 'vor %s', s: 'ein paar Sekunden', ss: '%d Sekunden', - m: processRelativeTime$2, + m: processRelativeTime$3, mm: '%d Minuten', - h: processRelativeTime$2, + h: processRelativeTime$3, hh: '%d Stunden', - d: processRelativeTime$2, - dd: processRelativeTime$2, - w: processRelativeTime$2, + d: processRelativeTime$3, + dd: processRelativeTime$3, + w: processRelativeTime$3, ww: '%d Wochen', - M: processRelativeTime$2, - MM: processRelativeTime$2, - y: processRelativeTime$2, - yy: processRelativeTime$2, + M: processRelativeTime$3, + MM: processRelativeTime$3, + y: processRelativeTime$3, + yy: processRelativeTime$3, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -8481,12 +8603,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -8546,12 +8668,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); @@ -8607,12 +8729,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -8672,12 +8794,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -8737,12 +8859,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); @@ -8798,12 +8920,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -8863,12 +8985,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -8928,12 +9050,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -9432,7 +9554,7 @@ //! moment.js locale configuration - function processRelativeTime$3(number, withoutSuffix, key, isFuture) { + function processRelativeTime$4(number, withoutSuffix, key, isFuture) { var format = { s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], ss: [number + 'sekundi', number + 'sekundit'], @@ -9483,18 +9605,18 @@ relativeTime: { future: '%s pärast', past: '%s tagasi', - s: processRelativeTime$3, - ss: processRelativeTime$3, - m: processRelativeTime$3, - mm: processRelativeTime$3, - h: processRelativeTime$3, - hh: processRelativeTime$3, - d: processRelativeTime$3, + s: processRelativeTime$4, + ss: processRelativeTime$4, + m: processRelativeTime$4, + mm: processRelativeTime$4, + h: processRelativeTime$4, + hh: processRelativeTime$4, + d: processRelativeTime$4, dd: '%d päeva', - M: processRelativeTime$3, - MM: processRelativeTime$3, - y: processRelativeTime$3, - yy: processRelativeTime$3, + M: processRelativeTime$4, + MM: processRelativeTime$4, + y: processRelativeTime$4, + yy: processRelativeTime$4, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -9568,7 +9690,7 @@ //! moment.js locale configuration - var symbolMap$6 = { + var symbolMap$7 = { 1: '۱', 2: '۲', 3: '۳', @@ -9580,7 +9702,7 @@ 9: '۹', 0: '۰', }, - numberMap$5 = { + numberMap$6 = { '۱': '1', '۲': '2', '۳': '3', @@ -9657,14 +9779,14 @@ preparse: function (string) { return string .replace(/[۰-۹]/g, function (match) { - return numberMap$5[match]; + return numberMap$6[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { - return symbolMap$6[match]; + return symbolMap$7[match]; }) .replace(/,/g, '،'); }, @@ -10477,7 +10599,7 @@ //! moment.js locale configuration - function processRelativeTime$4(number, withoutSuffix, key, isFuture) { + function processRelativeTime$5(number, withoutSuffix, key, isFuture) { var format = { s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], @@ -10535,18 +10657,18 @@ relativeTime: { future: '%s', past: '%s आदीं', - s: processRelativeTime$4, - ss: processRelativeTime$4, - m: processRelativeTime$4, - mm: processRelativeTime$4, - h: processRelativeTime$4, - hh: processRelativeTime$4, - d: processRelativeTime$4, - dd: processRelativeTime$4, - M: processRelativeTime$4, - MM: processRelativeTime$4, - y: processRelativeTime$4, - yy: processRelativeTime$4, + s: processRelativeTime$5, + ss: processRelativeTime$5, + m: processRelativeTime$5, + mm: processRelativeTime$5, + h: processRelativeTime$5, + hh: processRelativeTime$5, + d: processRelativeTime$5, + dd: processRelativeTime$5, + M: processRelativeTime$5, + MM: processRelativeTime$5, + y: processRelativeTime$5, + yy: processRelativeTime$5, }, dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, ordinal: function (number, period) { @@ -10600,7 +10722,7 @@ //! moment.js locale configuration - function processRelativeTime$5(number, withoutSuffix, key, isFuture) { + function processRelativeTime$6(number, withoutSuffix, key, isFuture) { var format = { s: ['thoddea sekondamni', 'thodde sekond'], ss: [number + ' sekondamni', number + ' sekond'], @@ -10656,18 +10778,18 @@ relativeTime: { future: '%s', past: '%s adim', - s: processRelativeTime$5, - ss: processRelativeTime$5, - m: processRelativeTime$5, - mm: processRelativeTime$5, - h: processRelativeTime$5, - hh: processRelativeTime$5, - d: processRelativeTime$5, - dd: processRelativeTime$5, - M: processRelativeTime$5, - MM: processRelativeTime$5, - y: processRelativeTime$5, - yy: processRelativeTime$5, + s: processRelativeTime$6, + ss: processRelativeTime$6, + m: processRelativeTime$6, + mm: processRelativeTime$6, + h: processRelativeTime$6, + hh: processRelativeTime$6, + d: processRelativeTime$6, + dd: processRelativeTime$6, + M: processRelativeTime$6, + MM: processRelativeTime$6, + y: processRelativeTime$6, + yy: processRelativeTime$6, }, dayOfMonthOrdinalParse: /\d{1,2}(er)/, ordinal: function (number, period) { @@ -10721,7 +10843,7 @@ //! moment.js locale configuration - var symbolMap$7 = { + var symbolMap$8 = { 1: '૧', 2: '૨', 3: '૩', @@ -10733,7 +10855,7 @@ 9: '૯', 0: '૦', }, - numberMap$6 = { + numberMap$7 = { '૧': '1', '૨': '2', '૩': '3', @@ -10794,12 +10916,12 @@ }, preparse: function (string) { return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { - return numberMap$6[match]; + return numberMap$7[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$7[match]; + return symbolMap$8[match]; }); }, // Gujarati notation for meridiems are quite fuzzy in practice. While there exists @@ -10929,7 +11051,7 @@ //! moment.js locale configuration - var symbolMap$8 = { + var symbolMap$9 = { 1: '१', 2: '२', 3: '३', @@ -10941,7 +11063,7 @@ 9: '९', 0: '०', }, - numberMap$7 = { + numberMap$8 = { '१': '1', '२': '2', '३': '3', @@ -11048,12 +11170,12 @@ }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap$7[match]; + return numberMap$8[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$8[match]; + return symbolMap$9[match]; }); }, // Hindi notation for meridiems are quite fuzzy in practice. While there exists @@ -11777,8 +11899,8 @@ (this.hours() > 1 ? 'lle ' : this.hours() === 0 - ? ' ' - : "ll'") + + ? ' ' + : "ll'") + ']LT' ); default: @@ -11787,8 +11909,8 @@ (this.hours() > 1 ? 'lle ' : this.hours() === 0 - ? ' ' - : "ll'") + + ? ' ' + : "ll'") + ']LT' ); } @@ -12208,7 +12330,7 @@ //! moment.js locale configuration - var symbolMap$9 = { + var symbolMap$a = { 1: '១', 2: '២', 3: '៣', @@ -12220,7 +12342,7 @@ 9: '៩', 0: '០', }, - numberMap$8 = { + numberMap$9 = { '១': '1', '២': '2', '៣': '3', @@ -12292,12 +12414,12 @@ ordinal: 'ទី%d', preparse: function (string) { return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { - return numberMap$8[match]; + return numberMap$9[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$9[match]; + return symbolMap$a[match]; }); }, week: { @@ -12308,7 +12430,7 @@ //! moment.js locale configuration - var symbolMap$a = { + var symbolMap$b = { 1: '೧', 2: '೨', 3: '೩', @@ -12320,7 +12442,7 @@ 9: '೯', 0: '೦', }, - numberMap$9 = { + numberMap$a = { '೧': '1', '೨': '2', '೩': '3', @@ -12381,12 +12503,12 @@ }, preparse: function (string) { return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { - return numberMap$9[match]; + return numberMap$a[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$a[match]; + return symbolMap$b[match]; }); }, meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, @@ -12500,7 +12622,118 @@ //! moment.js locale configuration - var symbolMap$b = { + function processRelativeTime$7(num, withoutSuffix, key, isFuture) { + var format = { + s: ['çend sanîye', 'çend sanîyeyan'], + ss: [num + ' sanîye', num + ' sanîyeyan'], + m: ['deqîqeyek', 'deqîqeyekê'], + mm: [num + ' deqîqe', num + ' deqîqeyan'], + h: ['saetek', 'saetekê'], + hh: [num + ' saet', num + ' saetan'], + d: ['rojek', 'rojekê'], + dd: [num + ' roj', num + ' rojan'], + w: ['hefteyek', 'hefteyekê'], + ww: [num + ' hefte', num + ' hefteyan'], + M: ['mehek', 'mehekê'], + MM: [num + ' meh', num + ' mehan'], + y: ['salek', 'salekê'], + yy: [num + ' sal', num + ' salan'], + }; + return withoutSuffix ? format[key][0] : format[key][1]; + } + // function obliqueNumSuffix(num) { + // if(num.includes(':')) + // num = parseInt(num.split(':')[0]); + // else + // num = parseInt(num); + // return num == 0 || num % 10 == 1 ? 'ê' + // : (num > 10 && num % 10 == 0 ? 'î' : 'an'); + // } + function ezafeNumSuffix(num) { + num = '' + num; + var l = num.substring(num.length - 1), + ll = num.length > 1 ? num.substring(num.length - 2) : ''; + if ( + !(ll == 12 || ll == 13) && + (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80') + ) + return 'yê'; + return 'ê'; + } + + hooks.defineLocale('ku-kmr', { + // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation) + // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn' + // But the names below are more well known and handy + months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split( + '_' + ), + monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'), + monthsParseExact: true, + weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'), + weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'), + weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'), + meridiem: function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'bn' : 'BN'; + } else { + return isLower ? 'pn' : 'PN'; + } + }, + meridiemParse: /bn|BN|pn|PN/, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM[a] YYYY[an]', + LLL: 'Do MMMM[a] YYYY[an] HH:mm', + LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm', + ll: 'Do MMM[.] YYYY[an]', + lll: 'Do MMM[.] YYYY[an] HH:mm', + llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm', + }, + calendar: { + sameDay: '[Îro di saet] LT [de]', + nextDay: '[Sibê di saet] LT [de]', + nextWeek: 'dddd [di saet] LT [de]', + lastDay: '[Duh di saet] LT [de]', + lastWeek: 'dddd[a borî di saet] LT [de]', + sameElse: 'L', + }, + relativeTime: { + future: 'di %s de', + past: 'berî %s', + s: processRelativeTime$7, + ss: processRelativeTime$7, + m: processRelativeTime$7, + mm: processRelativeTime$7, + h: processRelativeTime$7, + hh: processRelativeTime$7, + d: processRelativeTime$7, + dd: processRelativeTime$7, + w: processRelativeTime$7, + ww: processRelativeTime$7, + M: processRelativeTime$7, + MM: processRelativeTime$7, + y: processRelativeTime$7, + yy: processRelativeTime$7, + }, + dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/, + ordinal: function (num, period) { + var p = period.toLowerCase(); + if (p.includes('w') || p.includes('m')) return num + '.'; + + return num + ezafeNumSuffix(num); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, + }); + + //! moment.js locale configuration + + var symbolMap$c = { 1: '١', 2: '٢', 3: '٣', @@ -12512,7 +12745,7 @@ 9: '٩', 0: '٠', }, - numberMap$a = { + numberMap$b = { '١': '1', '٢': '2', '٣': '3', @@ -12596,14 +12829,14 @@ preparse: function (string) { return string .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap$a[match]; + return numberMap$b[match]; }) .replace(/،/g, ','); }, postformat: function (string) { return string .replace(/\d/g, function (match) { - return symbolMap$b[match]; + return symbolMap$c[match]; }) .replace(/,/g, '،'); }, @@ -12696,7 +12929,7 @@ //! moment.js locale configuration - function processRelativeTime$6(number, withoutSuffix, key, isFuture) { + function processRelativeTime$8(number, withoutSuffix, key, isFuture) { var format = { m: ['eng Minutt', 'enger Minutt'], h: ['eng Stonn', 'enger Stonn'], @@ -12808,15 +13041,15 @@ past: processPastTime, s: 'e puer Sekonnen', ss: '%d Sekonnen', - m: processRelativeTime$6, + m: processRelativeTime$8, mm: '%d Minutten', - h: processRelativeTime$6, + h: processRelativeTime$8, hh: '%d Stonnen', - d: processRelativeTime$6, + d: processRelativeTime$8, dd: '%d Deeg', - M: processRelativeTime$6, + M: processRelativeTime$8, MM: '%d Méint', - y: processRelativeTime$6, + y: processRelativeTime$8, yy: '%d Joer', }, dayOfMonthOrdinalParse: /\d{1,2}\./, @@ -12916,8 +13149,8 @@ return withoutSuffix ? forms(key)[0] : isFuture - ? forms(key)[1] - : forms(key)[2]; + ? forms(key)[1] + : forms(key)[2]; } function special(number) { return number % 10 === 0 || (number > 10 && number < 20); @@ -13120,8 +13353,8 @@ return number === 1 ? wordKey[0] : number >= 2 && number <= 4 - ? wordKey[1] - : wordKey[2]; + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; @@ -13533,7 +13766,7 @@ //! moment.js locale configuration - var symbolMap$c = { + var symbolMap$d = { 1: '१', 2: '२', 3: '३', @@ -13545,7 +13778,7 @@ 9: '९', 0: '०', }, - numberMap$b = { + numberMap$c = { '१': '1', '२': '2', '३': '3', @@ -13688,12 +13921,12 @@ }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap$b[match]; + return numberMap$c[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$c[match]; + return symbolMap$d[match]; }); }, meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, @@ -13929,7 +14162,7 @@ //! moment.js locale configuration - var symbolMap$d = { + var symbolMap$e = { 1: '၁', 2: '၂', 3: '၃', @@ -13941,7 +14174,7 @@ 9: '၉', 0: '၀', }, - numberMap$c = { + numberMap$d = { '၁': '1', '၂': '2', '၃': '3', @@ -13999,12 +14232,12 @@ }, preparse: function (string) { return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { - return numberMap$c[match]; + return numberMap$d[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$d[match]; + return symbolMap$e[match]; }); }, week: { @@ -14049,13 +14282,13 @@ ss: '%d sekunder', m: 'ett minutt', mm: '%d minutter', - h: 'en time', + h: 'én time', hh: '%d timer', - d: 'en dag', + d: 'én dag', dd: '%d dager', - w: 'en uke', + w: 'én uke', ww: '%d uker', - M: 'en måned', + M: 'én måned', MM: '%d måneder', y: 'ett år', yy: '%d år', @@ -14070,7 +14303,7 @@ //! moment.js locale configuration - var symbolMap$e = { + var symbolMap$f = { 1: '१', 2: '२', 3: '३', @@ -14082,7 +14315,7 @@ 9: '९', 0: '०', }, - numberMap$d = { + numberMap$e = { '१': '1', '२': '2', '३': '3', @@ -14120,12 +14353,12 @@ }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap$d[match]; + return numberMap$e[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$e[match]; + return symbolMap$f[match]; }); }, meridiemParse: /राति|बिहान|दिउँसो|साँझ/, @@ -14195,7 +14428,7 @@ monthsParse$8 = [ /^jan/i, /^feb/i, - /^maart|mrt.?$/i, + /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, @@ -14293,7 +14526,7 @@ monthsParse$9 = [ /^jan/i, /^feb/i, - /^maart|mrt.?$/i, + /^(maart|mrt\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, @@ -14504,12 +14737,12 @@ number === 1 ? 'r' : number === 2 - ? 'n' - : number === 3 - ? 'r' - : number === 4 - ? 't' - : 'è'; + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } @@ -14523,7 +14756,7 @@ //! moment.js locale configuration - var symbolMap$f = { + var symbolMap$g = { 1: '੧', 2: '੨', 3: '੩', @@ -14535,7 +14768,7 @@ 9: '੯', 0: '੦', }, - numberMap$e = { + numberMap$f = { '੧': '1', '੨': '2', '੩': '3', @@ -14596,12 +14829,12 @@ }, preparse: function (string) { return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { - return numberMap$e[match]; + return numberMap$f[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$f[match]; + return symbolMap$g[match]; }); }, // Punjabi notation for meridiems are quite fuzzy in practice. While there exists @@ -14970,8 +15203,8 @@ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural$3(number, withoutSuffix, key) { var format = { @@ -15512,7 +15745,7 @@ //! moment.js locale configuration - function processRelativeTime$7(number, withoutSuffix, key, isFuture) { + function processRelativeTime$9(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { case 's': @@ -15657,18 +15890,18 @@ relativeTime: { future: 'čez %s', past: 'pred %s', - s: processRelativeTime$7, - ss: processRelativeTime$7, - m: processRelativeTime$7, - mm: processRelativeTime$7, - h: processRelativeTime$7, - hh: processRelativeTime$7, - d: processRelativeTime$7, - dd: processRelativeTime$7, - M: processRelativeTime$7, - MM: processRelativeTime$7, - y: processRelativeTime$7, - yy: processRelativeTime$7, + s: processRelativeTime$9, + ss: processRelativeTime$9, + m: processRelativeTime$9, + mm: processRelativeTime$9, + h: processRelativeTime$9, + hh: processRelativeTime$9, + d: processRelativeTime$9, + dd: processRelativeTime$9, + M: processRelativeTime$9, + MM: processRelativeTime$9, + y: processRelativeTime$9, + yy: processRelativeTime$9, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -16118,12 +16351,12 @@ ~~((number % 100) / 10) === 1 ? ':e' : b === 1 - ? ':a' - : b === 2 - ? ':a' - : b === 3 - ? ':e' - : ':e'; + ? ':a' + : b === 2 + ? ':a' + : b === 3 + ? ':e' + : ':e'; return number + output; }, week: { @@ -16186,7 +16419,7 @@ //! moment.js locale configuration - var symbolMap$g = { + var symbolMap$h = { 1: '௧', 2: '௨', 3: '௩', @@ -16198,7 +16431,7 @@ 9: '௯', 0: '௦', }, - numberMap$f = { + numberMap$g = { '௧': '1', '௨': '2', '௩': '3', @@ -16265,12 +16498,12 @@ }, preparse: function (string) { return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { - return numberMap$f[match]; + return numberMap$g[match]; }); }, postformat: function (string) { return string.replace(/\d/g, function (match) { - return symbolMap$g[match]; + return symbolMap$h[match]; }); }, // refer http://ta.wikipedia.org/s/1er1 @@ -16446,12 +16679,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { @@ -16788,10 +17021,10 @@ output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'waQ' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'nem' - : time + ' pIq'; + ? time.slice(0, -3) + 'waQ' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'nem' + : time + ' pIq'; return time; } @@ -16801,10 +17034,10 @@ output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 - ? time.slice(0, -3) + 'wen' - : output.indexOf('DIS') !== -1 - ? time.slice(0, -3) + 'ben' - : time + ' ret'; + ? time.slice(0, -3) + 'wen' + : output.indexOf('DIS') !== -1 + ? time.slice(0, -3) + 'ben' + : time + ' ret'; return time; } @@ -17043,18 +17276,18 @@ relativeTime: { future: 'osprei %s', past: 'ja%s', - s: processRelativeTime$8, - ss: processRelativeTime$8, - m: processRelativeTime$8, - mm: processRelativeTime$8, - h: processRelativeTime$8, - hh: processRelativeTime$8, - d: processRelativeTime$8, - dd: processRelativeTime$8, - M: processRelativeTime$8, - MM: processRelativeTime$8, - y: processRelativeTime$8, - yy: processRelativeTime$8, + s: processRelativeTime$a, + ss: processRelativeTime$a, + m: processRelativeTime$a, + mm: processRelativeTime$a, + h: processRelativeTime$a, + hh: processRelativeTime$a, + d: processRelativeTime$a, + dd: processRelativeTime$a, + M: processRelativeTime$a, + MM: processRelativeTime$a, + y: processRelativeTime$a, + yy: processRelativeTime$a, }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', @@ -17064,7 +17297,7 @@ }, }); - function processRelativeTime$8(number, withoutSuffix, key, isFuture) { + function processRelativeTime$a(number, withoutSuffix, key, isFuture) { var format = { s: ['viensas secunds', "'iensas secunds"], ss: [number + ' secunds', '' + number + ' secunds'], @@ -17082,8 +17315,8 @@ return isFuture ? format[key][0] : withoutSuffix - ? format[key][0] - : format[key][1]; + ? format[key][0] + : format[key][1]; } //! moment.js locale configuration @@ -17303,8 +17536,8 @@ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) - ? forms[1] - : forms[2]; + ? forms[1] + : forms[2]; } function relativeTimeWithPlural$4(number, withoutSuffix, key) { var format = { @@ -17352,8 +17585,8 @@ nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) ? 'accusative' : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) - ? 'genitive' - : 'nominative'; + ? 'genitive' + : 'nominative'; return weekdays[nounCase][m.day()]; } function processHoursFunction(str) { @@ -17768,12 +18001,12 @@ ~~((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, week: { diff --git a/min/moment-with-locales.min.js b/min/moment-with-locales.min.js index fb177050a..7290bab5c 100644 --- a/min/moment-with-locales.min.js +++ b/min/moment-with-locales.min.js @@ -1,2 +1,2 @@ -!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.moment=a()}(this,function(){"use strict";var E;function M(){return E.apply(null,arguments)}function F(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function z(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function N(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var a in e)if(l(e,a))return;return 1}function d(e){return void 0===e}function J(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function R(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function C(e,a){for(var t=[],s=e.length,n=0;n>>0,s=0;sBe(e)?(r=e+1,a-Be(e)):(r=e,a);return{year:r,dayOfYear:t}}function Xe(e,a,t){var s,n,r=$e(e.year(),a,t),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+ea(n=e.year()-1,a,t):r>ea(e.year(),a,t)?(s=r-ea(e.year(),a,t),n=e.year()+1):(n=e.year(),s=r),{week:s,year:n}}function ea(e,a,t){var s=$e(e,a,t),a=$e(e+1,a,t);return(Be(e)-s+a)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),a("week","w"),a("isoWeek","W"),t("week",5),t("isoWeek",5),p("w",o),p("ww",o,r),p("W",o),p("WW",o,r),je(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=m(e)});function aa(e,a){return e.slice(a,7).concat(e.slice(0,a))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),a("day","d"),a("weekday","e"),a("isoWeekday","E"),t("day",11),t("weekday",11),t("isoWeekday",11),p("d",o),p("e",o),p("E",o),p("dd",function(e,a){return a.weekdaysMinRegex(e)}),p("ddd",function(e,a){return a.weekdaysShortRegex(e)}),p("dddd",function(e,a){return a.weekdaysRegex(e)}),je(["dd","ddd","dddd"],function(e,a,t,s){s=t._locale.weekdaysParse(e,s,t._strict);null!=s?a.d=s:h(t).invalidWeekday=e}),je(["d","e","E"],function(e,a,t,s){a[s]=m(e)});var ta="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),sa="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),na="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ra=f,da=f,ia=f;function _a(){function e(e,a){return a.length-e.length}for(var a,t,s,n=[],r=[],d=[],i=[],_=0;_<7;_++)s=U([2e3,1]).day(_),a=k(this.weekdaysMin(s,"")),t=k(this.weekdaysShort(s,"")),s=k(this.weekdays(s,"")),n.push(a),r.push(t),d.push(s),i.push(a),i.push(t),i.push(s);n.sort(e),r.sort(e),d.sort(e),i.sort(e),this._weekdaysRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+n.join("|")+")","i")}function oa(){return this.hours()%12||12}function ma(e,a){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function ua(e,a){return a._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,oa),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+oa.apply(this)+de(this.minutes(),2)}),s("hmmss",0,0,function(){return""+oa.apply(this)+de(this.minutes(),2)+de(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+de(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+de(this.minutes(),2)+de(this.seconds(),2)}),ma("a",!0),ma("A",!1),a("hour","h"),t("hour",13),p("a",ua),p("A",ua),p("H",o),p("h",o),p("k",o),p("HH",o,r),p("hh",o,r),p("kk",o,r),p("hmm",c),p("hmmss",L),p("Hmm",c),p("Hmmss",L),D(["H","HH"],w),D(["k","kk"],function(e,a,t){e=m(e);a[w]=24===e?0:e}),D(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),D(["h","hh"],function(e,a,t){a[w]=m(e),h(t).bigHour=!0}),D("hmm",function(e,a,t){var s=e.length-2;a[w]=m(e.substr(0,s)),a[Oe]=m(e.substr(s)),h(t).bigHour=!0}),D("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[w]=m(e.substr(0,s)),a[Oe]=m(e.substr(s,2)),a[We]=m(e.substr(n)),h(t).bigHour=!0}),D("Hmm",function(e,a,t){var s=e.length-2;a[w]=m(e.substr(0,s)),a[Oe]=m(e.substr(s))}),D("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[w]=m(e.substr(0,s)),a[Oe]=m(e.substr(s,2)),a[We]=m(e.substr(n))});f=Ye("Hours",!0);var la,Ma={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ne,monthsShort:Je,week:{dow:0,doy:6},weekdays:ta,weekdaysMin:na,weekdaysShort:sa,meridiemParse:/[ap]\.?m?\.?/i},b={},ha={};function ca(e){return e&&e.toLowerCase().replace("_","-")}function La(e){for(var a,t,s,n,r=0;r=a&&function(e,a){for(var t=Math.min(e.length,a.length),s=0;s=a-1)break;a--}r++}return la}function Ya(a){var e;if(void 0===b[a]&&"undefined"!=typeof module&&module&&module.exports&&null!=a.match("^[^/\\\\]*$"))try{e=la._abbr,require("./locale/"+a),ya(e)}catch(e){b[a]=null}return b[a]}function ya(e,a){return e&&((a=d(a)?pa(e):fa(e,a))?la=a:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),la._abbr}function fa(e,a){if(null===a)return delete b[e],null;var t,s=Ma;if(a.abbr=e,null!=b[e])ae("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=b[e]._config;else if(null!=a.parentLocale)if(null!=b[a.parentLocale])s=b[a.parentLocale]._config;else{if(null==(t=Ya(a.parentLocale)))return ha[a.parentLocale]||(ha[a.parentLocale]=[]),ha[a.parentLocale].push({name:e,config:a}),null;s=t._config}return b[e]=new ne(se(s,a)),ha[e]&&ha[e].forEach(function(e){fa(e.name,e.config)}),ya(e),b[e]}function pa(e){var a;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return la;if(!F(e)){if(a=Ya(e))return a;e=[e]}return La(e)}function ka(e){var a=e._a;return a&&-2===h(e).overflow&&(a=a[xe]<0||11ze(a[g],a[xe])?Pe:a[w]<0||24ea(r,_,o)?h(s)._overflowWeeks=!0:null!=m?h(s)._overflowWeekday=!0:(u=Qe(r,d,i,_,o),s._a[g]=u.year,s._dayOfYear=u.dayOfYear)),null!=e._dayOfYear&&(n=Oa(e._a[g],t[g]),(e._dayOfYear>Be(n)||0===e._dayOfYear)&&(h(e)._overflowDayOfYear=!0),m=Ze(n,0,e._dayOfYear),e._a[xe]=m.getUTCMonth(),e._a[Pe]=m.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=l[a]=t[a];for(;a<7;a++)e._a[a]=l[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[w]&&0===e._a[Oe]&&0===e._a[We]&&0===e._a[Ae]&&(e._nextDay=!0,e._a[w]=0),e._d=(e._useUTC?Ze:qe).apply(null,l),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[w]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(h(e).weekdayMismatch=!0)}}function Aa(e){if(e._f===M.ISO_8601)ja(e);else if(e._f===M.RFC_2822)Pa(e);else{e._a=[],h(e).empty=!0;for(var a,t,s,n,r,d=""+e._i,i=d.length,_=0,o=le(e._f,e._locale).match(ie)||[],m=o.length,u=0;ue.valueOf():e.valueOf()"}),n.toJSON=function(){return this.isValid()?this.toISOString():null},n.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},n.unix=function(){return Math.floor(this.valueOf()/1e3)},n.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},n.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},n.eraName=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;tthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},n.isLocal=function(){return!!this.isValid()&&!this._isUTC},n.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},n.isUtc=Ka,n.isUTC=Ka,n.zoneAbbr=function(){return this._isUTC?"UTC":""},n.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},n.dates=e("dates accessor is deprecated. Use date instead.",Y),n.months=e("months accessor is deprecated. Use month instead",Ge),n.years=e("years accessor is deprecated. Use year instead",Ke),n.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,a),this):-this.utcOffset()}),n.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!d(this._isDSTShifted))return this._isDSTShifted;var e,a={};return Z(a,this),(a=Ea(a))._a?(e=(a._isUTC?U:S)(a._a),this._isDSTShifted=this.isValid()&&0>>0,s=0;sFe(e)?(r=e+1,a-Fe(e)):(r=e,a);return{year:r,dayOfYear:t}}function aa(e,a,t){var s,n,r=Xe(e.year(),a,t),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+ta(n=e.year()-1,a,t):r>ta(e.year(),a,t)?(s=r-ta(e.year(),a,t),n=e.year()+1):(n=e.year(),s=r),{week:s,year:n}}function ta(e,a,t){var s=Xe(e,a,t),a=Xe(e+1,a,t);return(Fe(e)-s+a)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),h("w",r,u),h("ww",r,a),h("W",r,u),h("WW",r,a),Se(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=f(e)});function sa(e,a){return e.slice(a,7).concat(e.slice(0,a))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),h("d",r),h("e",r),h("E",r),h("dd",function(e,a){return a.weekdaysMinRegex(e)}),h("ddd",function(e,a){return a.weekdaysShortRegex(e)}),h("dddd",function(e,a){return a.weekdaysRegex(e)}),Se(["dd","ddd","dddd"],function(e,a,t,s){s=t._locale.weekdaysParse(e,s,t._strict);null!=s?a.d=s:Y(t).invalidWeekday=e}),Se(["d","e","E"],function(e,a,t,s){a[s]=f(e)});var na="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ra="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),da="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),_a=m,ia=m,oa=m;function ma(){function e(e,a){return a.length-e.length}for(var a,t,s,n=[],r=[],d=[],_=[],i=0;i<7;i++)s=U([2e3,1]).day(i),a=we(this.weekdaysMin(s,"")),t=we(this.weekdaysShort(s,"")),s=we(this.weekdays(s,"")),n.push(a),r.push(t),d.push(s),_.push(a),_.push(t),_.push(s);n.sort(e),r.sort(e),d.sort(e),_.sort(e),this._weekdaysRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+n.join("|")+")","i")}function ua(){return this.hours()%12||12}function la(e,a){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function Ma(e,a){return a._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,ua),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+ua.apply(this)+de(this.minutes(),2)}),s("hmmss",0,0,function(){return""+ua.apply(this)+de(this.minutes(),2)+de(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+de(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+de(this.minutes(),2)+de(this.seconds(),2)}),la("a",!0),la("A",!1),h("a",Ma),h("A",Ma),h("H",r,M),h("h",r,u),h("k",r,u),h("HH",r,a),h("hh",r,a),h("kk",r,a),h("hmm",ye),h("hmmss",_),h("Hmm",ye),h("Hmmss",_),k(["H","HH"],D),k(["k","kk"],function(e,a,t){e=f(e);a[D]=24===e?0:e}),k(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),k(["h","hh"],function(e,a,t){a[D]=f(e),Y(t).bigHour=!0}),k("hmm",function(e,a,t){var s=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s)),Y(t).bigHour=!0}),k("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s,2)),a[Oe]=f(e.substr(n)),Y(t).bigHour=!0}),k("Hmm",function(e,a,t){var s=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s))}),k("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s,2)),a[Oe]=f(e.substr(n))});m=Ne("Hours",!0);var ha,ca={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ie,monthsShort:Ue,week:{dow:0,doy:6},weekdays:na,weekdaysMin:da,weekdaysShort:ra,meridiemParse:/[ap]\.?m?\.?/i},g={},La={};function Ya(e){return e&&e.toLowerCase().replace("_","-")}function ya(e){for(var a,t,s,n,r=0;r=a&&function(e,a){for(var t=Math.min(e.length,a.length),s=0;s=a-1)break;a--}r++}return ha}function fa(a){var e,t;if(void 0===g[a]&&"undefined"!=typeof module&&module&&module.exports&&(t=a)&&t.match("^[^/\\\\]*$"))try{e=ha._abbr,require("./locale/"+a),ka(e)}catch(e){g[a]=null}return g[a]}function ka(e,a){return e&&((a=L(a)?Da(e):pa(e,a))?ha=a:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ha._abbr}function pa(e,a){if(null===a)return delete g[e],null;var t,s=ca;if(a.abbr=e,null!=g[e])ae("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=g[e]._config;else if(null!=a.parentLocale)if(null!=g[a.parentLocale])s=g[a.parentLocale]._config;else{if(null==(t=fa(a.parentLocale)))return La[a.parentLocale]||(La[a.parentLocale]=[]),La[a.parentLocale].push({name:e,config:a}),null;s=t._config}return g[e]=new ne(se(s,a)),La[e]&&La[e].forEach(function(e){pa(e.name,e.config)}),ka(e),g[e]}function Da(e){var a;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return ha;if(!F(e)){if(a=fa(e))return a;e=[e]}return ya(e)}function Ta(e){var a=e._a;return a&&-2===Y(e).overflow&&(a=a[je]<0||11Ce(a[p],a[je])?xe:a[D]<0||24ta(r,i,o)?Y(s)._overflowWeeks=!0:null!=m?Y(s)._overflowWeekday=!0:(u=ea(r,d,_,i,o),s._a[p]=u.year,s._dayOfYear=u.dayOfYear)),null!=e._dayOfYear&&(n=Aa(e._a[p],t[p]),(e._dayOfYear>Fe(n)||0===e._dayOfYear)&&(Y(e)._overflowDayOfYear=!0),m=Qe(n,0,e._dayOfYear),e._a[je]=m.getUTCMonth(),e._a[xe]=m.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=l[a]=t[a];for(;a<7;a++)e._a[a]=l[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[D]&&0===e._a[Pe]&&0===e._a[Oe]&&0===e._a[We]&&(e._nextDay=!0,e._a[D]=0),e._d=(e._useUTC?Qe:$e).apply(null,l),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[D]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(Y(e).weekdayMismatch=!0)}}function Fa(e){if(e._f===c.ISO_8601)Pa(e);else if(e._f===c.RFC_2822)Wa(e);else{e._a=[],Y(e).empty=!0;for(var a,t,s,n,r,d=""+e._i,_=d.length,i=0,o=le(e._f,e._locale).match(_e)||[],m=o.length,u=0;ue.valueOf():e.valueOf()"}),u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},u.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},u.eraName=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;tthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},u.isLocal=function(){return!!this.isValid()&&!this._isUTC},u.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},u.isUtc=Za,u.isUTC=Za,u.zoneAbbr=function(){return this._isUTC?"UTC":""},u.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},u.dates=e("dates accessor is deprecated. Use date instead.",i),u.months=e("months accessor is deprecated. Use month instead",Ke),u.years=e("years accessor is deprecated. Use year instead",ze),u.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,a),this):-this.utcOffset()}),u.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){var e,a;return L(this._isDSTShifted)&&(Z(e={},this),(e=za(e))._a?(a=(e._isUTC?U:w)(e._a),this._isDSTShifted=this.isValid()&&0>>0,s=0;sAe(e)?(r=e+1,t-Ae(e)):(r=e,t);return{year:r,dayOfYear:n}}function qe(e,t,n){var s,i,r=ze(e.year(),t,n),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+P(i=e.year()-1,t,n):r>P(e.year(),t,n)?(s=r-P(e.year(),t,n),i=e.year()+1):(i=e.year(),s=r),{week:s,year:i}}function P(e,t,n){var s=ze(e,t,n),t=ze(e+1,t,n);return(Ae(e)-s+t)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),t("week","w"),t("isoWeek","W"),n("week",5),n("isoWeek",5),v("w",p),v("ww",p,w),v("W",p),v("WW",p,w),Te(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=g(e)});function Be(e,t){return e.slice(t,7).concat(e.slice(0,t))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),t("day","d"),t("weekday","e"),t("isoWeekday","E"),n("day",11),n("weekday",11),n("isoWeekday",11),v("d",p),v("e",p),v("E",p),v("dd",function(e,t){return t.weekdaysMinRegex(e)}),v("ddd",function(e,t){return t.weekdaysShortRegex(e)}),v("dddd",function(e,t){return t.weekdaysRegex(e)}),Te(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:m(n).invalidWeekday=e}),Te(["d","e","E"],function(e,t,n,s){t[s]=g(e)});var Je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Qe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Xe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ke=k,et=k,tt=k;function nt(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=M(this.weekdaysMin(s,"")),n=M(this.weekdaysShort(s,"")),s=M(this.weekdays(s,"")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function st(){return this.hours()%12||12}function it(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function rt(e,t){return t._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,st),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+st.apply(this)+r(this.minutes(),2)}),s("hmmss",0,0,function(){return""+st.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+r(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),it("a",!0),it("A",!1),t("hour","h"),n("hour",13),v("a",rt),v("A",rt),v("H",p),v("h",p),v("k",p),v("HH",p,w),v("hh",p,w),v("kk",p,w),v("hmm",ge),v("hmmss",we),v("Hmm",ge),v("Hmmss",we),D(["H","HH"],x),D(["k","kk"],function(e,t,n){e=g(e);t[x]=24===e?0:e}),D(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),D(["h","hh"],function(e,t,n){t[x]=g(e),m(n).bigHour=!0}),D("hmm",function(e,t,n){var s=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s)),m(n).bigHour=!0}),D("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s,2)),t[N]=g(e.substr(i)),m(n).bigHour=!0}),D("Hmm",function(e,t,n){var s=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s))}),D("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s,2)),t[N]=g(e.substr(i))});k=de("Hours",!0);var at,ot={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ce,monthsShort:Ue,week:{dow:0,doy:6},weekdays:Je,weekdaysMin:Xe,weekdaysShort:Qe,meridiemParse:/[ap]\.?m?\.?/i},R={},ut={};function lt(e){return e&&e.toLowerCase().replace("_","-")}function ht(e){for(var t,n,s,i,r=0;r=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s=t-1)break;t--}r++}return at}function dt(t){var e;if(void 0===R[t]&&"undefined"!=typeof module&&module&&module.exports&&null!=t.match("^[^/\\\\]*$"))try{e=at._abbr,require("./locale/"+t),ct(e)}catch(e){R[t]=null}return R[t]}function ct(e,t){return e&&((t=o(t)?mt(e):ft(e,t))?at=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),at._abbr}function ft(e,t){if(null===t)return delete R[e],null;var n,s=ot;if(t.abbr=e,null!=R[e])Q("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=R[e]._config;else if(null!=t.parentLocale)if(null!=R[t.parentLocale])s=R[t.parentLocale]._config;else{if(null==(n=dt(t.parentLocale)))return ut[t.parentLocale]||(ut[t.parentLocale]=[]),ut[t.parentLocale].push({name:e,config:t}),null;s=n._config}return R[e]=new K(X(s,t)),ut[e]&&ut[e].forEach(function(e){ft(e.name,e.config)}),ct(e),R[e]}function mt(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return at;if(!a(e)){if(t=dt(e))return t;e=[e]}return ht(e)}function _t(e){var t=e._a;return t&&-2===m(e).overflow&&(t=t[O]<0||11We(t[Y],t[O])?b:t[x]<0||24P(r,u,l)?m(s)._overflowWeeks=!0:null!=h?m(s)._overflowWeekday=!0:(d=$e(r,a,o,u,l),s._a[Y]=d.year,s._dayOfYear=d.dayOfYear)),null!=e._dayOfYear&&(i=bt(e._a[Y],n[Y]),(e._dayOfYear>Ae(i)||0===e._dayOfYear)&&(m(e)._overflowDayOfYear=!0),h=Ze(i,0,e._dayOfYear),e._a[O]=h.getUTCMonth(),e._a[b]=h.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=n[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[x]&&0===e._a[T]&&0===e._a[N]&&0===e._a[Ne]&&(e._nextDay=!0,e._a[x]=0),e._d=(e._useUTC?Ze:je).apply(null,c),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[x]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(m(e).weekdayMismatch=!0)}}function Tt(e){if(e._f===f.ISO_8601)St(e);else if(e._f===f.RFC_2822)Ot(e);else{e._a=[],m(e).empty=!0;for(var t,n,s,i,r,a=""+e._i,o=a.length,u=0,l=ae(e._f,e._locale).match(te)||[],h=l.length,d=0;de.valueOf():e.valueOf()"}),i.toJSON=function(){return this.isValid()?this.toISOString():null},i.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},i.unix=function(){return Math.floor(this.valueOf()/1e3)},i.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},i.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},i.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},i.isLocal=function(){return!!this.isValid()&&!this._isUTC},i.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},i.isUtc=At,i.isUTC=At,i.zoneAbbr=function(){return this._isUTC?"UTC":""},i.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},i.dates=e("dates accessor is deprecated. Use date instead.",ke),i.months=e("months accessor is deprecated. Use month instead",Ge),i.years=e("years accessor is deprecated. Use year instead",Ie),i.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),i.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e,t={};return $(t,this),(t=Nt(t))._a?(e=(t._isUTC?l:W)(t._a),this._isDSTShifted=this.isValid()&&0>>0,s=0;sWe(e)?(r=e+1,t-We(e)):(r=e,t);return{year:r,dayOfYear:n}}function Be(e,t,n){var s,i,r=qe(e.year(),t,n),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+N(i=e.year()-1,t,n):r>N(e.year(),t,n)?(s=r-N(e.year(),t,n),i=e.year()+1):(i=e.year(),s=r),{week:s,year:i}}function N(e,t,n){var s=qe(e,t,n),t=qe(e+1,t,n);return(We(e)-s+t)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),h("w",n,u),h("ww",n,t),h("W",n,u),h("WW",n,t),Oe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=M(e)});function Je(e,t){return e.slice(t,7).concat(e.slice(0,t))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),h("d",n),h("e",n),h("E",n),h("dd",function(e,t){return t.weekdaysMinRegex(e)}),h("ddd",function(e,t){return t.weekdaysShortRegex(e)}),h("dddd",function(e,t){return t.weekdaysRegex(e)}),Oe(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:p(n).invalidWeekday=e}),Oe(["d","e","E"],function(e,t,n,s){t[s]=M(e)});var Qe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Xe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ke="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),et=i,tt=i,nt=i;function st(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=f(this.weekdaysMin(s,"")),n=f(this.weekdaysShort(s,"")),s=f(this.weekdays(s,"")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function it(){return this.hours()%12||12}function rt(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function at(e,t){return t._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,it),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+it.apply(this)+r(this.minutes(),2)}),s("hmmss",0,0,function(){return""+it.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+r(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),rt("a",!0),rt("A",!1),h("a",at),h("A",at),h("H",n,d),h("h",n,u),h("k",n,u),h("HH",n,t),h("hh",n,t),h("kk",n,t),h("hmm",me),h("hmmss",_e),h("Hmm",me),h("Hmmss",_e),v(["H","HH"],O),v(["k","kk"],function(e,t,n){e=M(e);t[O]=24===e?0:e}),v(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),v(["h","hh"],function(e,t,n){t[O]=M(e),p(n).bigHour=!0}),v("hmm",function(e,t,n){var s=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s)),p(n).bigHour=!0}),v("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s,2)),t[T]=M(e.substr(i)),p(n).bigHour=!0}),v("Hmm",function(e,t,n){var s=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s))}),v("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s,2)),t[T]=M(e.substr(i))});i=Re("Hours",!0);var ot,ut={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Fe,monthsShort:Le,week:{dow:0,doy:6},weekdays:Qe,weekdaysMin:Ke,weekdaysShort:Xe,meridiemParse:/[ap]\.?m?\.?/i},W={},lt={};function dt(e){return e&&e.toLowerCase().replace("_","-")}function ht(e){for(var t,n,s,i,r=0;r=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s=t-1)break;t--}r++}return ot}function ct(t){var e,n;if(void 0===W[t]&&"undefined"!=typeof module&&module&&module.exports&&(n=t)&&n.match("^[^/\\\\]*$"))try{e=ot._abbr,require("./locale/"+t),ft(e)}catch(e){W[t]=null}return W[t]}function ft(e,t){return e&&((t=g(t)?P(e):mt(e,t))?ot=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ot._abbr}function mt(e,t){if(null===t)return delete W[e],null;var n,s=ut;if(t.abbr=e,null!=W[e])Q("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=W[e]._config;else if(null!=t.parentLocale)if(null!=W[t.parentLocale])s=W[t.parentLocale]._config;else{if(null==(n=ct(t.parentLocale)))return lt[t.parentLocale]||(lt[t.parentLocale]=[]),lt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return W[e]=new K(X(s,t)),lt[e]&<[e].forEach(function(e){mt(e.name,e.config)}),ft(e),W[e]}function P(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return ot;if(!y(e)){if(t=ct(e))return t;e=[e]}return ht(e)}function _t(e){var t=e._a;return t&&-2===p(e).overflow&&(t=t[Y]<0||11He(t[D],t[Y])?S:t[O]<0||24N(r,u,l)?p(s)._overflowWeeks=!0:null!=d?p(s)._overflowWeekday=!0:(h=$e(r,a,o,u,l),s._a[D]=h.year,s._dayOfYear=h.dayOfYear)),null!=e._dayOfYear&&(i=bt(e._a[D],n[D]),(e._dayOfYear>We(i)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),d=ze(i,0,e._dayOfYear),e._a[Y]=d.getUTCMonth(),e._a[S]=d.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=n[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[O]&&0===e._a[b]&&0===e._a[T]&&0===e._a[Te]&&(e._nextDay=!0,e._a[O]=0),e._d=(e._useUTC?ze:Ze).apply(null,c),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[O]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(p(e).weekdayMismatch=!0)}}function xt(e){if(e._f===_.ISO_8601)Yt(e);else if(e._f===_.RFC_2822)Ot(e);else{e._a=[],p(e).empty=!0;for(var t,n,s,i,r,a=""+e._i,o=a.length,u=0,l=ae(e._f,e._locale).match(te)||[],d=l.length,h=0;he.valueOf():e.valueOf()"}),u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},u.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},u.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},u.isLocal=function(){return!!this.isValid()&&!this._isUTC},u.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},u.isUtc=At,u.isUTC=At,u.zoneAbbr=function(){return this._isUTC?"UTC":""},u.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},u.dates=e("dates accessor is deprecated. Use date instead.",ge),u.months=e("months accessor is deprecated. Use month instead",Ie),u.years=e("years accessor is deprecated. Use year instead",Pe),u.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),u.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){var e,t;return g(this._isDSTShifted)&&(q(e={},this),(e=Nt(e))._a?(t=(e._isUTC?l:R)(e._a),this._isDSTShifted=this.isValid()&&0 ' + a[i][1]); } @@ -4834,7 +4817,7 @@ test('format month', function (assert) { var expected = - 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_مايو مايو_يونيو يونيو_يوليو يوليو_أغسطس أغسطس_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split( + 'كانون الثاني ك٢_شباط شباط_آذار آذار_نيسان نيسان_أيّار أيّار_حزيران حزيران_تمّوز تمّوز_آب آب_أيلول أيلول_تشري الأوّل ت١_تشرين الثاني ت٢_كانون الأوّل ك١'.split( '_' ), i; @@ -5571,20 +5554,23 @@ defineCommonLocaleTests(name); } - localeModule('ar-tn'); + localeModule('ar-sa'); test('parse', function (assert) { var tests = - 'جانفي:جانفي_فيفري:فيفري_مارس:مارس_أفريل:أفريل_ماي:ماي_جوان:جوان_جويلية:جويلية_أوت:أوت_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split( + 'يناير:يناير_فبراير:فبراير_مارس:مارس_أبريل:أبريل_مايو:مايو_يونيو:يونيو_يوليو:يوليو_أغسطس:أغسطس_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split( '_' ), i; - function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), i, - input + ' should be month ' + (i + 1) + input + + ' should be month ' + + (i + 1) + + ' instead is month ' + + moment(input, mmm).month() ); } @@ -5620,31 +5606,31 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'الأحد, فيفري 14 2010, 3:25:50 pm', + 'الأحد، فبراير ١٤ ٢٠١٠، ٣:٢٥:٥٠ م', ], - ['ddd, hA', 'أحد, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 فيفري فيفري'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 الأحد أحد ح'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '6 6 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LT', '15:25'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 فيفري 2010'], - ['LLL', '14 فيفري 2010 15:25'], - ['LLLL', 'الأحد 14 فيفري 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 فيفري 2010'], - ['lll', '14 فيفري 2010 15:25'], - ['llll', 'أحد 14 فيفري 2010 15:25'], + ['ddd, hA', 'أحد، ٣م'], + ['M Mo MM MMMM MMM', '٢ ٢ ٠٢ فبراير فبراير'], + ['YYYY YY', '٢٠١٠ ١٠'], + ['D Do DD', '١٤ ١٤ ١٤'], + ['d do dddd ddd dd', '٠ ٠ الأحد أحد ح'], + ['DDD DDDo DDDD', '٤٥ ٤٥ ٠٤٥'], + ['w wo ww', '٨ ٨ ٠٨'], + ['h hh', '٣ ٠٣'], + ['H HH', '١٥ ١٥'], + ['m mm', '٢٥ ٢٥'], + ['s ss', '٥٠ ٥٠'], + ['a A', 'م م'], + ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'], + ['LT', '١٥:٢٥'], + ['LTS', '١٥:٢٥:٥٠'], + ['L', '١٤/٠٢/٢٠١٠'], + ['LL', '١٤ فبراير ٢٠١٠'], + ['LLL', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['LLLL', 'الأحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['l', '١٤/٢/٢٠١٠'], + ['ll', '١٤ فبراير ٢٠١٠'], + ['lll', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['llll', 'أحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -5654,45 +5640,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '١', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '٢', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '٣', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '٤', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '٥', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '٦', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '٧', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '٨', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '٩', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '١٠', '10'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '١١', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '١٢', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '١٣', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '١٤', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '١٥', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '١٦', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '١٧', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '١٨', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '١٩', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '٢٠', '20'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '٢١', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '٢٢', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '٢٣', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '٢٤', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '٢٥', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '٢٦', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '٢٧', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '٢٨', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '٢٩', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '٣٠', '30'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '٣١', '31'); }); test('format month', function (assert) { var expected = - 'جانفي جانفي_فيفري فيفري_مارس مارس_أفريل أفريل_ماي ماي_جوان جوان_جويلية جويلية_أوت أوت_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split( + 'يناير يناير_فبراير فبراير_مارس مارس_أبريل أبريل_مايو مايو_يونيو يونيو_يوليو يوليو_أغسطس أغسطس_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split( '_' ), i; @@ -5723,283 +5709,143 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - s: 44, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), 'ثوان', '44 seconds = a few seconds' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - s: 45, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), 'دقيقة', '45 seconds = a minute' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - s: 89, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), 'دقيقة', '89 seconds = a minute' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - s: 90, - }), - true - ), - '2 دقائق', + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '٢ دقائق', '90 seconds = 2 minutes' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - m: 44, - }), - true - ), - '44 دقائق', + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '٤٤ دقائق', '44 minutes = 44 minutes' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - m: 45, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), 'ساعة', '45 minutes = an hour' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - m: 89, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), 'ساعة', '89 minutes = an hour' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - m: 90, - }), - true - ), - '2 ساعات', + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '٢ ساعات', '90 minutes = 2 hours' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - h: 5, - }), - true - ), - '5 ساعات', + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '٥ ساعات', '5 hours = 5 hours' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - h: 21, - }), - true - ), - '21 ساعات', + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '٢١ ساعات', '21 hours = 21 hours' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - h: 22, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), 'يوم', '22 hours = a day' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - h: 35, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), 'يوم', '35 hours = a day' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - h: 36, - }), - true - ), - '2 أيام', + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '٢ أيام', '36 hours = 2 days' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 1, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), 'يوم', '1 day = a day' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 5, - }), - true - ), - '5 أيام', + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '٥ أيام', '5 days = 5 days' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 25, - }), - true - ), - '25 أيام', + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '٢٥ أيام', '25 days = 25 days' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 26, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), 'شهر', '26 days = a month' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 30, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), 'شهر', '30 days = a month' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 43, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), 'شهر', '43 days = a month' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 46, - }), - true - ), - '2 أشهر', + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '٢ أشهر', '46 days = 2 months' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 74, - }), - true - ), - '2 أشهر', + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '٢ أشهر', '75 days = 2 months' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 76, - }), - true - ), - '3 أشهر', + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '٣ أشهر', '76 days = 3 months' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - M: 1, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), 'شهر', '1 month = a month' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - M: 5, - }), - true - ), - '5 أشهر', + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '٥ أشهر', '5 months = 5 months' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 345, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), 'سنة', '345 days = a year' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - d: 548, - }), - true - ), - '2 سنوات', + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '٢ سنوات', '548 days = 2 years' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - y: 1, - }), - true - ), + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), 'سنة', '1 year = a year' ); assert.equal( - start.from( - moment([2007, 1, 28]).add({ - y: 5, - }), - true - ), - '5 سنوات', + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '٥ سنوات', '5 years = 5 years' ); }); @@ -6019,23 +5865,11 @@ test('fromNow', function (assert) { assert.equal( - moment() - .add({ - s: 30, - }) - .fromNow(), + moment().add({ s: 30 }).fromNow(), 'في ثوان', 'in a few seconds' ); - assert.equal( - moment() - .add({ - d: 5, - }) - .fromNow(), - 'في 5 أيام', - 'in 5 days' - ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'في ٥ أيام', 'in 5 days'); }); test('calendar day', function (assert) { @@ -6043,32 +5877,32 @@ assert.equal( moment(a).calendar(), - 'اليوم على الساعة 12:00', + 'اليوم على الساعة ١٢:٠٠', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'اليوم على الساعة 12:25', + 'اليوم على الساعة ١٢:٢٥', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'اليوم على الساعة 13:00', + 'اليوم على الساعة ١٣:٠٠', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'غدا على الساعة 12:00', + 'غدا على الساعة ١٢:٠٠', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'اليوم على الساعة 11:00', + 'اليوم على الساعة ١١:٠٠', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'أمس على الساعة 12:00', + 'أمس على الساعة ١٢:٠٠', 'yesterday at the same time' ); }); @@ -6076,9 +5910,7 @@ test('calendar next week', function (assert) { var i, m; for (i = 2; i < 7; i++) { - m = moment().add({ - d: i, - }); + m = moment().add({ d: i }); assert.equal( m.calendar(), m.format('dddd [على الساعة] LT'), @@ -6102,9 +5934,7 @@ test('calendar last week', function (assert) { var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({ - d: i, - }); + m = moment().subtract({ d: i }); assert.equal( m.calendar(), m.format('dddd [على الساعة] LT'), @@ -6126,12 +5956,8 @@ }); test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({ - w: 1, - }), - weeksFromNow = moment().add({ - w: 1, - }); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( @@ -6140,12 +5966,8 @@ 'in 1 week' ); - weeksAgo = moment().subtract({ - w: 2, - }); - weeksFromNow = moment().add({ - w: 2, - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); assert.equal( @@ -6155,31 +5977,46 @@ ); }); - test('weeks year starting sunday formatted', function (assert) { + test('weeks year starting wednesday custom', function (assert) { assert.equal( - moment([2012, 0, 1]).format('w ww wo'), - '52 52 52', - 'Jan 1 2012 should be week 52' + moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), + '٢٠٠٣-٠١-٠٤', + '2003 1 6 : gggg w d' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), - '1 01 1', - 'Jan 2 2012 should be week 1' + moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), + '٢٠٠٢-١٢-٢٩', + '2003 1 0 : gggg w e' ); assert.equal( - moment([2012, 0, 8]).format('w ww wo'), - '1 01 1', - 'Jan 8 2012 should be week 1' + moment('2003 1 6', 'gggg w d').format('gggg w d'), + '٢٠٠٣ ١ ٦', + '2003 1 6 : gggg w d' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), - '2 02 2', - 'Jan 9 2012 should be week 2' + moment('2003 1 0', 'gggg w e').format('gggg w e'), + '٢٠٠٣ ١ ٠', + '2003 1 0 : gggg w e' ); + }); + + test('weeks year starting sunday formatted', function (assert) { assert.equal( - moment([2012, 0, 15]).format('w ww wo'), - '2 02 2', - 'Jan 15 2012 should be week 2' + moment([2011, 11, 31]).format('w ww wo'), + '٥٣ ٥٣ ٥٣', + '2011 11 31' + ); + assert.equal(moment([2012, 0, 6]).format('w ww wo'), '١ ٠١ ١', '2012 0 6'); + assert.equal(moment([2012, 0, 7]).format('w ww wo'), '١ ٠١ ١', '2012 0 7'); + assert.equal( + moment([2012, 0, 13]).format('w ww wo'), + '٢ ٠٢ ٢', + '2012 0 13' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '٢ ٠٢ ٢', + '2012 0 14' ); }); @@ -6578,63 +6415,48 @@ defineCommonLocaleTests(name); } - localeModule('ar'); - - var months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', - ]; + localeModule('ar-tn'); test('parse', function (assert) { - var tests = months, + var tests = + 'جانفي:جانفي_فيفري:فيفري_مارس:مارس_أفريل:أفريل_ماي:ماي_جوان:جوان_جويلية:جويلية_أوت:أوت_سبتمبر:سبتمبر_أكتوبر:أكتوبر_نوفمبر:نوفمبر_ديسمبر:ديسمبر'.split( + '_' + ), i; + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), i, - input + - ' should be month ' + - (i + 1) + - ' instead is month ' + - moment(input, mmm).month() + input + ' should be month ' + (i + 1) ); } - // function equalTestStrict(input, mmm, monthIndex) { - // assert.equal( - // moment(input, mmm, true).month(), - // monthIndex, - // input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) - // ); - // } + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } for (i = 0; i < 12; i++) { - equalTest(tests[i], 'MMM', i); - equalTest(tests[i], 'MMM', i); - equalTest(tests[i], 'MMMM', i); - equalTest(tests[i], 'MMMM', i); - equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); + tests[i] = tests[i].split(':'); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - // All strict parsing tests fail - // equalTestStrict(tests[i][1], 'MMM', i); - // equalTestStrict(tests[i][0], 'MMMM', i); - // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - // equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - // equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -6642,31 +6464,31 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'الأحد، فبراير ١٤ ٢٠١٠، ٣:٢٥:٥٠ م', + 'الأحد, فيفري 14 2010, 3:25:50 pm', ], - ['ddd, hA', 'أحد، ٣م'], - ['M Mo MM MMMM MMM', '٢ ٢ ٠٢ فبراير فبراير'], - ['YYYY YY', '٢٠١٠ ١٠'], - ['D Do DD', '١٤ ١٤ ١٤'], - ['d do dddd ddd dd', '٠ ٠ الأحد أحد ح'], - ['DDD DDDo DDDD', '٤٥ ٤٥ ٠٤٥'], - ['w wo ww', '٨ ٨ ٠٨'], - ['h hh', '٣ ٠٣'], - ['H HH', '١٥ ١٥'], - ['m mm', '٢٥ ٢٥'], - ['s ss', '٥٠ ٥٠'], - ['a A', 'م م'], - ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'], - ['LT', '١٥:٢٥'], - ['LTS', '١٥:٢٥:٥٠'], - ['L', '١٤/\u200f٢/\u200f٢٠١٠'], - ['LL', '١٤ فبراير ٢٠١٠'], - ['LLL', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], - ['LLLL', 'الأحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'], - ['l', '١٤/\u200f٢/\u200f٢٠١٠'], - ['ll', '١٤ فبراير ٢٠١٠'], - ['lll', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], - ['llll', 'أحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['ddd, hA', 'أحد, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 فيفري فيفري'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 الأحد أحد ح'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LT', '15:25'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 فيفري 2010'], + ['LLL', '14 فيفري 2010 15:25'], + ['LLLL', 'الأحد 14 فيفري 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 فيفري 2010'], + ['lll', '14 فيفري 2010 15:25'], + ['llll', 'أحد 14 فيفري 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -6676,53 +6498,51 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '١', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '٢', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '٣', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '٤', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '٥', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '٦', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '٧', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '٨', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '٩', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '١٠', '10'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '١١', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '١٢', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '١٣', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '١٤', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '١٥', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '١٦', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '١٧', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '١٨', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '١٩', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '٢٠', '20'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '٢١', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '٢٢', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '٢٣', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '٢٤', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '٢٥', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '٢٦', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '٢٧', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '٢٨', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '٢٩', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '٣٠', '30'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '٣١', '31'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); }); test('format month', function (assert) { - var expected = months, + var expected = + 'جانفي جانفي_فيفري فيفري_مارس مارس_أفريل أفريل_ماي ماي_جوان جوان_جويلية جويلية_أوت أوت_سبتمبر سبتمبر_أكتوبر أكتوبر_نوفمبر نوفمبر_ديسمبر ديسمبر'.split( + '_' + ), i; for (i = 0; i < expected.length; i++) { assert.equal( - moment([2011, i, 1]).format('MMMM'), - expected[i], - expected[i] - ); - assert.equal( - moment([2011, i, 1]).format('MMM'), + moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i] ); @@ -6747,167 +6567,319 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); assert.equal( - start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - '٤٤ ثانية', + start.from( + moment([2007, 1, 28]).add({ + s: 44, + }), + true + ), + 'ثوان', '44 seconds = a few seconds' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'دقيقة واحدة', + start.from( + moment([2007, 1, 28]).add({ + s: 45, + }), + true + ), + 'دقيقة', '45 seconds = a minute' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'دقيقة واحدة', + start.from( + moment([2007, 1, 28]).add({ + s: 89, + }), + true + ), + 'دقيقة', '89 seconds = a minute' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - 'دقيقتان', + start.from( + moment([2007, 1, 28]).add({ + s: 90, + }), + true + ), + '2 دقائق', '90 seconds = 2 minutes' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '٤٤ دقيقة', + start.from( + moment([2007, 1, 28]).add({ + m: 44, + }), + true + ), + '44 دقائق', '44 minutes = 44 minutes' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'ساعة واحدة', + start.from( + moment([2007, 1, 28]).add({ + m: 45, + }), + true + ), + 'ساعة', '45 minutes = an hour' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'ساعة واحدة', + start.from( + moment([2007, 1, 28]).add({ + m: 89, + }), + true + ), + 'ساعة', '89 minutes = an hour' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - 'ساعتان', + start.from( + moment([2007, 1, 28]).add({ + m: 90, + }), + true + ), + '2 ساعات', '90 minutes = 2 hours' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '٥ ساعات', + start.from( + moment([2007, 1, 28]).add({ + h: 5, + }), + true + ), + '5 ساعات', '5 hours = 5 hours' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '٢١ ساعة', + start.from( + moment([2007, 1, 28]).add({ + h: 21, + }), + true + ), + '21 ساعات', '21 hours = 21 hours' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'يوم واحد', + start.from( + moment([2007, 1, 28]).add({ + h: 22, + }), + true + ), + 'يوم', '22 hours = a day' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'يوم واحد', + start.from( + moment([2007, 1, 28]).add({ + h: 35, + }), + true + ), + 'يوم', '35 hours = a day' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - 'يومان', + start.from( + moment([2007, 1, 28]).add({ + h: 36, + }), + true + ), + '2 أيام', '36 hours = 2 days' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'يوم واحد', + start.from( + moment([2007, 1, 28]).add({ + d: 1, + }), + true + ), + 'يوم', '1 day = a day' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '٥ أيام', + start.from( + moment([2007, 1, 28]).add({ + d: 5, + }), + true + ), + '5 أيام', '5 days = 5 days' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '٢٥ يومًا', + start.from( + moment([2007, 1, 28]).add({ + d: 25, + }), + true + ), + '25 أيام', '25 days = 25 days' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'شهر واحد', + start.from( + moment([2007, 1, 28]).add({ + d: 26, + }), + true + ), + 'شهر', '26 days = a month' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'شهر واحد', + start.from( + moment([2007, 1, 28]).add({ + d: 30, + }), + true + ), + 'شهر', '30 days = a month' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'شهر واحد', + start.from( + moment([2007, 1, 28]).add({ + d: 43, + }), + true + ), + 'شهر', '43 days = a month' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - 'شهران', + start.from( + moment([2007, 1, 28]).add({ + d: 46, + }), + true + ), + '2 أشهر', '46 days = 2 months' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - 'شهران', + start.from( + moment([2007, 1, 28]).add({ + d: 74, + }), + true + ), + '2 أشهر', '75 days = 2 months' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '٣ أشهر', + start.from( + moment([2007, 1, 28]).add({ + d: 76, + }), + true + ), + '3 أشهر', '76 days = 3 months' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'شهر واحد', + start.from( + moment([2007, 1, 28]).add({ + M: 1, + }), + true + ), + 'شهر', '1 month = a month' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '٥ أشهر', + start.from( + moment([2007, 1, 28]).add({ + M: 5, + }), + true + ), + '5 أشهر', '5 months = 5 months' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'عام واحد', + start.from( + moment([2007, 1, 28]).add({ + d: 345, + }), + true + ), + 'سنة', '345 days = a year' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - 'عامان', + start.from( + moment([2007, 1, 28]).add({ + d: 548, + }), + true + ), + '2 سنوات', '548 days = 2 years' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'عام واحد', + start.from( + moment([2007, 1, 28]).add({ + y: 1, + }), + true + ), + 'سنة', '1 year = a year' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '٥ أعوام', + start.from( + moment([2007, 1, 28]).add({ + y: 5, + }), + true + ), + '5 سنوات', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'بعد ٣٠ ثانية', 'prefix'); - assert.equal(moment(0).from(30000), 'منذ ٣٠ ثانية', 'suffix'); + assert.equal(moment(30000).from(0), 'في ثوان', 'prefix'); + assert.equal(moment(0).from(30000), 'منذ ثوان', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'منذ ثانية واحدة', + 'منذ ثوان', 'now from now should display as in the past' ); }); test('fromNow', function (assert) { assert.equal( - moment().add({ s: 30 }).fromNow(), - 'بعد ٣٠ ثانية', + moment() + .add({ + s: 30, + }) + .fromNow(), + 'في ثوان', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'بعد ٥ أيام', 'in 5 days'); + assert.equal( + moment() + .add({ + d: 5, + }) + .fromNow(), + 'في 5 أيام', + 'in 5 days' + ); }); test('calendar day', function (assert) { @@ -6915,32 +6887,32 @@ assert.equal( moment(a).calendar(), - 'اليوم عند الساعة ١٢:٠٠', + 'اليوم على الساعة 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'اليوم عند الساعة ١٢:٢٥', + 'اليوم على الساعة 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'اليوم عند الساعة ١٣:٠٠', + 'اليوم على الساعة 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'غدًا عند الساعة ١٢:٠٠', + 'غدا على الساعة 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'اليوم عند الساعة ١١:٠٠', + 'اليوم على الساعة 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'أمس عند الساعة ١٢:٠٠', + 'أمس على الساعة 12:00', 'yesterday at the same time' ); }); @@ -6948,22 +6920,24 @@ test('calendar next week', function (assert) { var i, m; for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); + m = moment().add({ + d: i, + }); assert.equal( m.calendar(), - m.format('dddd [عند الساعة] LT'), + m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [عند الساعة] LT'), + m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [عند الساعة] LT'), + m.format('dddd [على الساعة] LT'), 'Today + ' + i + ' days end of day' ); } @@ -6972,30 +6946,36 @@ test('calendar last week', function (assert) { var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); + m = moment().subtract({ + d: i, + }); assert.equal( m.calendar(), - m.format('dddd [عند الساعة] LT'), + m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [عند الساعة] LT'), + m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [عند الساعة] LT'), + m.format('dddd [على الساعة] LT'), 'Today - ' + i + ' days end of day' ); } }); test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({ w: 1 }), - weeksFromNow = moment().add({ w: 1 }); + var weeksAgo = moment().subtract({ + w: 1, + }), + weeksFromNow = moment().add({ + w: 1, + }); assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( @@ -7004,8 +6984,12 @@ 'in 1 week' ); - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); + weeksAgo = moment().subtract({ + w: 2, + }); + weeksFromNow = moment().add({ + w: 2, + }); assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); assert.equal( @@ -7015,86 +6999,31 @@ ); }); - test('weeks year starting wednesday custom', function (assert) { - assert.equal( - moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), - '٢٠٠٢-١٢-٢٨', - 'Week 1 of 2003 should be Dec 28 2002' - ); - assert.equal( - moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), - '٢٠٠٢-١٢-٢٨', - 'Week 1 of 2003 should be Dec 28 2002' - ); - assert.equal( - moment('2003 1 6', 'gggg w d').format('gggg w d'), - '٢٠٠٣ ١ ٦', - 'Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6' - ); - assert.equal( - moment('2003 1 0', 'gggg w e').format('gggg w e'), - '٢٠٠٣ ١ ٠', - '1st day of week 1 of 2003 parsed should be formatted as 2003 1 0' - ); - }); - test('weeks year starting sunday formatted', function (assert) { assert.equal( - moment([2011, 11, 31]).format('w ww wo'), - '١ ٠١ ١', - 'Dec 31 2011 should be week 1' - ); - assert.equal( - moment([2012, 0, 6]).format('w ww wo'), - '١ ٠١ ١', - 'Jan 6 2012 should be week 1' - ); - assert.equal( - moment([2012, 0, 7]).format('w ww wo'), - '٢ ٠٢ ٢', - 'Jan 7 2012 should be week 2' + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52', + 'Jan 1 2012 should be week 52' ); assert.equal( - moment([2012, 0, 13]).format('w ww wo'), - '٢ ٠٢ ٢', - 'Jan 13 2012 should be week 2' + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1', + 'Jan 2 2012 should be week 1' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), - '٣ ٠٣ ٣', - 'Jan 14 2012 should be week 3' + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1', + 'Jan 8 2012 should be week 1' ); - }); - - test('no leading zeros in long date formats', function (assert) { - var i, j, longDateStr, shortDateStr; - for (i = 1; i <= 9; ++i) { - for (j = 1; j <= 9; ++j) { - longDateStr = moment([2014, i, j]).format('L'); - shortDateStr = moment([2014, i, j]).format('l'); - assert.equal( - longDateStr, - shortDateStr, - 'should not have leading zeros in month or day' - ); - } - } - }); - - // locale-specific - test('ar strict mode parsing works', function (assert) { - var m, formattedDate; - m = moment().locale('ar'); - formattedDate = m.format('l'); assert.equal( - moment.utc(formattedDate, 'l', 'ar', false).isValid(), - true, - 'Non-strict parsing works' + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2', + 'Jan 9 2012 should be week 2' ); assert.equal( - moment.utc(formattedDate, 'l', 'ar', true).isValid(), - true, - 'Strict parsing must work' + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2', + 'Jan 15 2012 should be week 2' ); }); @@ -7493,145 +7422,151 @@ defineCommonLocaleTests(name); } - localeModule('az'); + localeModule('ar'); + + var months = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; test('parse', function (assert) { - var tests = - 'yanvar yan_fevral fev_mart mar_Aprel apr_may may_iyun iyn_iyul iyl_Avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split( - '_' - ), + var tests = months, i; function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), i, - input + ' should be month ' + (i + 1) + input + + ' should be month ' + + (i + 1) + + ' instead is month ' + + moment(input, mmm).month() ); } - function equalTestStrict(input, mmm, monthIndex) { - assert.equal( - moment(input, mmm, true).month(), - monthIndex, - input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) - ); - } + // function equalTestStrict(input, mmm, monthIndex) { + // assert.equal( + // moment(input, mmm, true).month(), + // monthIndex, + // input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + // ); + // } for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i], 'MMM', i); + equalTest(tests[i], 'MMM', i); + equalTest(tests[i], 'MMMM', i); + equalTest(tests[i], 'MMMM', i); + equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + // All strict parsing tests fail + // equalTestStrict(tests[i][1], 'MMM', i); + // equalTestStrict(tests[i][0], 'MMMM', i); + // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + // equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + // equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ - ['dddd, D MMMM YYYY, HH:mm:ss', 'Bazar, 14 fevral 2010, 15:25:50'], - ['ddd, A h', 'Baz, gündüz 3'], - ['M Mo MM MMMM MMM', '2 2-nci 02 fevral fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-üncü 14'], - ['d do dddd ddd dd', '0 0-ıncı Bazar Baz Bz'], - ['DDD DDDo DDDD', '45 45-inci 045'], - ['w wo ww', '7 7-nci 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'gündüz gündüz'], - ['[ilin] DDDo [günü]', 'ilin 45-inci günü'], - ['LT', '15:25'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 fevral 2010'], - ['LLL', '14 fevral 2010 15:25'], - ['LLLL', 'Bazar, 14 fevral 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 fev 2010'], - ['lll', '14 fev 2010 15:25'], - ['llll', 'Baz, 14 fev 2010 15:25'], - ], - DDDo = [ - [359, '360-ıncı'], - [199, '200-üncü'], - [149, '150-nci'], + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'الأحد، فبراير ١٤ ٢٠١٠، ٣:٢٥:٥٠ م', + ], + ['ddd, hA', 'أحد، ٣م'], + ['M Mo MM MMMM MMM', '٢ ٢ ٠٢ فبراير فبراير'], + ['YYYY YY', '٢٠١٠ ١٠'], + ['D Do DD', '١٤ ١٤ ١٤'], + ['d do dddd ddd dd', '٠ ٠ الأحد أحد ح'], + ['DDD DDDo DDDD', '٤٥ ٤٥ ٠٤٥'], + ['w wo ww', '٨ ٨ ٠٨'], + ['h hh', '٣ ٠٣'], + ['H HH', '١٥ ١٥'], + ['m mm', '٢٥ ٢٥'], + ['s ss', '٥٠ ٥٠'], + ['a A', 'م م'], + ['[the] DDDo [day of the year]', 'the ٤٥ day of the year'], + ['LT', '١٥:٢٥'], + ['LTS', '١٥:٢٥:٥٠'], + ['L', '١٤/\u200f٢/\u200f٢٠١٠'], + ['LL', '١٤ فبراير ٢٠١٠'], + ['LLL', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['LLLL', 'الأحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['l', '١٤/\u200f٢/\u200f٢٠١٠'], + ['ll', '١٤ فبراير ٢٠١٠'], + ['lll', '١٤ فبراير ٢٠١٠ ١٥:٢٥'], + ['llll', 'أحد ١٤ فبراير ٢٠١٠ ١٥:٢٥'], ], - dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - DDDoDt, + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; - for (i = 0; i < a.length; i++) { - assert.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); - } - for (i = 0; i < DDDo.length; i++) { - DDDoDt = moment([2010]); - assert.equal( - DDDoDt.add(DDDo[i][0], 'days').format('DDDo'), - DDDo[i][1], - DDDo[i][0] + ' ---> ' + DDDo[i][1] - ); + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-inci', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-nci', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-üncü', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-üncü', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-inci', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ncı', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-nci', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-inci', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-uncu', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-uncu', '10th'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '١', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '٢', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '٣', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '٤', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '٥', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '٦', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '٧', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '٨', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '٩', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '١٠', '10'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-inci', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-nci', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-üncü', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-üncü', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-inci', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ncı', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-nci', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-inci', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-uncu', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-nci', '20th'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '١١', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '١٢', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '١٣', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '١٤', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '١٥', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '١٦', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '١٧', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '١٨', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '١٩', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '٢٠', '20'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-inci', '21th'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-nci', '22th'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-üncü', '23th'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-üncü', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-inci', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ncı', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-nci', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-inci', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-uncu', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-uncu', '30th'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '٢١', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '٢٢', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '٢٣', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '٢٤', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '٢٥', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '٢٦', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '٢٧', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '٢٨', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '٢٩', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '٣٠', '30'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-inci', '31st'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '٣١', '31'); }); test('format month', function (assert) { - var expected = - 'yanvar yan_fevral fev_mart mar_aprel apr_may may_iyun iyn_iyul iyl_avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split( - '_' - ), + var expected = months, i; for (i = 0; i < expected.length; i++) { assert.equal( - moment([2011, i, 1]).format('MMMM MMM'), + moment([2011, i, 1]).format('MMMM'), + expected[i], + expected[i] + ); + assert.equal( + moment([2011, i, 1]).format('MMM'), expected[i], expected[i] ); @@ -7640,7 +7575,7 @@ test('format week', function (assert) { var expected = - 'Bazar Baz Bz_Bazar ertəsi BzE BE_Çərşənbə axşamı ÇAx ÇA_Çərşənbə Çər Çə_Cümə axşamı CAx CA_Cümə Cüm Cü_Şənbə Şən Şə'.split( + 'الأحد أحد ح_الإثنين إثنين ن_الثلاثاء ثلاثاء ث_الأربعاء أربعاء ر_الخميس خميس خ_الجمعة جمعة ج_السبت سبت س'.split( '_' ), i; @@ -7657,150 +7592,155 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'bir neçə saniyə', + '٤٤ ثانية', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'bir dəqiqə', + 'دقيقة واحدة', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'bir dəqiqə', + 'دقيقة واحدة', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 dəqiqə', + 'دقيقتان', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 dəqiqə', + '٤٤ دقيقة', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'bir saat', + 'ساعة واحدة', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'bir saat', + 'ساعة واحدة', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 saat', + 'ساعتان', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 saat', + '٥ ساعات', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 saat', + '٢١ ساعة', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'bir gün', + 'يوم واحد', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'bir gün', + 'يوم واحد', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 gün', + 'يومان', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'bir gün', + 'يوم واحد', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 gün', + '٥ أيام', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 gün', + '٢٥ يومًا', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'bir ay', + 'شهر واحد', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'bir ay', + 'شهر واحد', '30 days = a month' ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'شهر واحد', + '43 days = a month' + ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 ay', + 'شهران', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 ay', + 'شهران', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 ay', + '٣ أشهر', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'bir ay', + 'شهر واحد', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 ay', + '٥ أشهر', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'bir il', + 'عام واحد', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 il', + 'عامان', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'bir il', + 'عام واحد', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 il', + '٥ أعوام', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'bir neçə saniyə sonra', 'prefix'); - assert.equal(moment(0).from(30000), 'bir neçə saniyə əvvəl', 'suffix'); + assert.equal(moment(30000).from(0), 'بعد ٣٠ ثانية', 'prefix'); + assert.equal(moment(0).from(30000), 'منذ ٣٠ ثانية', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'bir neçə saniyə əvvəl', + 'منذ ثانية واحدة', 'now from now should display as in the past' ); }); @@ -7808,10 +7748,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'bir neçə saniyə sonra', + 'بعد ٣٠ ثانية', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '5 gün sonra', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'بعد ٥ أيام', 'in 5 days'); }); test('calendar day', function (assert) { @@ -7819,32 +7759,32 @@ assert.equal( moment(a).calendar(), - 'bugün saat 12:00', + 'اليوم عند الساعة ١٢:٠٠', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'bugün saat 12:25', + 'اليوم عند الساعة ١٢:٢٥', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'bugün saat 13:00', + 'اليوم عند الساعة ١٣:٠٠', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'sabah saat 12:00', + 'غدًا عند الساعة ١٢:٠٠', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'bugün saat 11:00', + 'اليوم عند الساعة ١١:٠٠', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'dünən 12:00', + 'أمس عند الساعة ١٢:٠٠', 'yesterday at the same time' ); }); @@ -7855,19 +7795,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('[gələn həftə] dddd [saat] LT'), + m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[gələn həftə] dddd [saat] LT'), + m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[gələn həftə] dddd [saat] LT'), + m.format('dddd [عند الساعة] LT'), 'Today + ' + i + ' days end of day' ); } @@ -7879,19 +7819,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[keçən həftə] dddd [saat] LT'), + m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[keçən həftə] dddd [saat] LT'), + m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[keçən həftə] dddd [saat] LT'), + m.format('dddd [عند الساعة] LT'), 'Today - ' + i + ' days end of day' ); } @@ -7919,31 +7859,86 @@ ); }); + test('weeks year starting wednesday custom', function (assert) { + assert.equal( + moment('2003 1 6', 'gggg w d').format('YYYY-MM-DD'), + '٢٠٠٢-١٢-٢٨', + 'Week 1 of 2003 should be Dec 28 2002' + ); + assert.equal( + moment('2003 1 0', 'gggg w e').format('YYYY-MM-DD'), + '٢٠٠٢-١٢-٢٨', + 'Week 1 of 2003 should be Dec 28 2002' + ); + assert.equal( + moment('2003 1 6', 'gggg w d').format('gggg w d'), + '٢٠٠٣ ١ ٦', + 'Saturday of week 1 of 2003 parsed should be formatted as 2003 1 6' + ); + assert.equal( + moment('2003 1 0', 'gggg w e').format('gggg w e'), + '٢٠٠٣ ١ ٠', + '1st day of week 1 of 2003 parsed should be formatted as 2003 1 0' + ); + }); + test('weeks year starting sunday formatted', function (assert) { assert.equal( - moment([2011, 11, 26]).format('w ww wo'), - '1 01 1-inci', - 'Dec 26 2011 should be week 1' + moment([2011, 11, 31]).format('w ww wo'), + '١ ٠١ ١', + 'Dec 31 2011 should be week 1' ); assert.equal( - moment([2012, 0, 1]).format('w ww wo'), - '1 01 1-inci', - 'Jan 1 2012 should be week 1' + moment([2012, 0, 6]).format('w ww wo'), + '١ ٠١ ١', + 'Jan 6 2012 should be week 1' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), - '2 02 2-nci', - 'Jan 2 2012 should be week 2' + moment([2012, 0, 7]).format('w ww wo'), + '٢ ٠٢ ٢', + 'Jan 7 2012 should be week 2' ); assert.equal( - moment([2012, 0, 8]).format('w ww wo'), - '2 02 2-nci', - 'Jan 8 2012 should be week 2' + moment([2012, 0, 13]).format('w ww wo'), + '٢ ٠٢ ٢', + 'Jan 13 2012 should be week 2' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), - '3 03 3-üncü', - 'Jan 9 2012 should be week 3' + moment([2012, 0, 14]).format('w ww wo'), + '٣ ٠٣ ٣', + 'Jan 14 2012 should be week 3' + ); + }); + + test('no leading zeros in long date formats', function (assert) { + var i, j, longDateStr, shortDateStr; + for (i = 1; i <= 9; ++i) { + for (j = 1; j <= 9; ++j) { + longDateStr = moment([2014, i, j]).format('L'); + shortDateStr = moment([2014, i, j]).format('l'); + assert.equal( + longDateStr, + shortDateStr, + 'should not have leading zeros in month or day' + ); + } + } + }); + + // locale-specific + test('ar strict mode parsing works', function (assert) { + var m, formattedDate; + m = moment().locale('ar'); + formattedDate = m.format('l'); + assert.equal( + moment.utc(formattedDate, 'l', 'ar', false).isValid(), + true, + 'Non-strict parsing works' + ); + assert.equal( + moment.utc(formattedDate, 'l', 'ar', true).isValid(), + true, + 'Strict parsing must work' ); }); @@ -8342,11 +8337,11 @@ defineCommonLocaleTests(name); } - localeModule('be'); + localeModule('az'); test('parse', function (assert) { var tests = - 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split( + 'yanvar yan_fevral fev_mart mar_Aprel apr_may may_iyun iyn_iyul iyl_Avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split( '_' ), i; @@ -8388,108 +8383,93 @@ test('format', function (assert) { var a = [ - [ - 'dddd, Do MMMM YYYY, HH:mm:ss', - 'нядзеля, 14-га лютага 2010, 15:25:50', - ], - ['ddd, h A', 'нд, 3 дня'], - ['M Mo MM MMMM MMM', '2 2-і 02 люты лют'], + ['dddd, D MMMM YYYY, HH:mm:ss', 'Bazar, 14 fevral 2010, 15:25:50'], + ['ddd, A h', 'Baz, gündüz 3'], + ['M Mo MM MMMM MMM', '2 2-nci 02 fevral fev'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-га 14'], - ['d do dddd ddd dd', '0 0-ы нядзеля нд нд'], - ['DDD DDDo DDDD', '45 45-ы 045'], - ['w wo ww', '7 7-ы 07'], + ['D Do DD', '14 14-üncü 14'], + ['d do dddd ddd dd', '0 0-ıncı Bazar Baz Bz'], + ['DDD DDDo DDDD', '45 45-inci 045'], + ['w wo ww', '7 7-nci 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'дня дня'], - ['DDDo [дзень года]', '45-ы дзень года'], + ['a A', 'gündüz gündüz'], + ['[ilin] DDDo [günü]', 'ilin 45-inci günü'], ['LT', '15:25'], ['LTS', '15:25:50'], ['L', '14.02.2010'], - ['LL', '14 лютага 2010 г.'], - ['LLL', '14 лютага 2010 г., 15:25'], - ['LLLL', 'нядзеля, 14 лютага 2010 г., 15:25'], + ['LL', '14 fevral 2010'], + ['LLL', '14 fevral 2010 15:25'], + ['LLLL', 'Bazar, 14 fevral 2010 15:25'], ['l', '14.2.2010'], - ['ll', '14 лют 2010 г.'], - ['lll', '14 лют 2010 г., 15:25'], - ['llll', 'нд, 14 лют 2010 г., 15:25'], + ['ll', '14 fev 2010'], + ['lll', '14 fev 2010 15:25'], + ['llll', 'Baz, 14 fev 2010 15:25'], ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + DDDo = [ + [359, '360-ıncı'], + [199, '200-üncü'], + [149, '150-nci'], + ], + dt = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + DDDoDt, i; + for (i = 0; i < a.length; i++) { - assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + assert.equal(dt.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + for (i = 0; i < DDDo.length; i++) { + DDDoDt = moment([2010]); + assert.equal( + DDDoDt.add(DDDo[i][0], 'days').format('DDDo'), + DDDo[i][1], + DDDo[i][0] + ' ---> ' + DDDo[i][1] + ); } - }); - - test('format meridiem', function (assert) { - assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночы', 'night'); - assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночы', 'night'); - assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'раніцы', 'morning'); - assert.equal( - moment([2012, 11, 28, 11, 59]).format('A'), - 'раніцы', - 'morning' - ); - assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon'); - assert.equal( - moment([2012, 11, 28, 16, 59]).format('A'), - 'дня', - 'afternoon' - ); - assert.equal( - moment([2012, 11, 28, 17, 0]).format('A'), - 'вечара', - 'evening' - ); - assert.equal( - moment([2012, 11, 28, 23, 59]).format('A'), - 'вечара', - 'evening' - ); }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ы', '1-ы'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-і', '2-і'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-і', '3-і'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ы', '4-ы'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ы', '5-ы'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ы', '6-ы'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ы', '7-ы'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ы', '8-ы'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ы', '9-ы'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ы', '10-ы'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-inci', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-nci', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-üncü', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-üncü', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-inci', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ncı', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-nci', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-inci', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-uncu', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-uncu', '10th'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ы', '11-ы'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ы', '12-ы'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ы', '13-ы'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ы', '14-ы'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ы', '15-ы'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ы', '16-ы'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ы', '17-ы'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ы', '18-ы'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ы', '19-ы'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ы', '20-ы'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-inci', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-nci', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-üncü', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-üncü', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-inci', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ncı', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-nci', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-inci', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-uncu', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-nci', '20th'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ы', '21-ы'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-і', '22-і'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-і', '23-і'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ы', '24-ы'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ы', '25-ы'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ы', '26-ы'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ы', '27-ы'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ы', '28-ы'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ы', '29-ы'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ы', '30-ы'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-inci', '21th'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-nci', '22th'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-üncü', '23th'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-üncü', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-inci', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ncı', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-nci', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-inci', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-uncu', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-uncu', '30th'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ы', '31-ы'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-inci', '31st'); }); test('format month', function (assert) { var expected = - 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split( + 'yanvar yan_fevral fev_mart mar_aprel apr_may may_iyun iyn_iyul iyl_avqust avq_sentyabr sen_oktyabr okt_noyabr noy_dekabr dek'.split( '_' ), i; @@ -8502,71 +8482,9 @@ } }); - test('format month case', function (assert) { - var months = { - nominative: - 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( - '_' - ), - accusative: - 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( - '_' - ), - }, - i; - for (i = 0; i < 12; i++) { - assert.equal( - moment([2011, i, 1]).format('D MMMM'), - '1 ' + months.accusative[i], - '1 ' + months.accusative[i] - ); - assert.equal( - moment([2011, i, 1]).format('MMMM'), - months.nominative[i], - '1 ' + months.nominative[i] - ); - } - }); - - test('format month case with escaped symbols', function (assert) { - var months = { - nominative: - 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( - '_' - ), - accusative: - 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( - '_' - ), - }, - i; - for (i = 0; i < 12; i++) { - assert.equal( - moment([2013, i, 1]).format('D[] MMMM'), - '1 ' + months.accusative[i], - '1 ' + months.accusative[i] - ); - assert.equal( - moment([2013, i, 1]).format('[]D[] []MMMM[]'), - '1 ' + months.accusative[i] + '', - '1 ' + months.accusative[i] + '' - ); - assert.equal( - moment([2013, i, 1]).format('D[-ы дзень] MMMM'), - '1-ы дзень ' + months.accusative[i], - '1-ы дзень ' + months.accusative[i] - ); - assert.equal( - moment([2013, i, 1]).format('D, MMMM'), - '1, ' + months.nominative[i], - '1, ' + months.nominative[i] - ); - } - }); - test('format week', function (assert) { var expected = - 'нядзеля нд нд_панядзелак пн пн_аўторак ат ат_серада ср ср_чацвер чц чц_пятніца пт пт_субота сб сб'.split( + 'Bazar Baz Bz_Bazar ertəsi BzE BE_Çərşənbə axşamı ÇAx ÇA_Çərşənbə Çər Çə_Cümə axşamı CAx CA_Cümə Cüm Cü_Şənbə Şən Şə'.split( '_' ), i; @@ -8583,183 +8501,161 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'некалькі секунд', + 'bir neçə saniyə', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'хвіліна', + 'bir dəqiqə', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'хвіліна', + 'bir dəqiqə', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 хвіліны', + '2 dəqiqə', '90 seconds = 2 minutes' ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ m: 31 }), true), - '31 хвіліна', - '31 minutes = 31 minutes' - ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 хвіліны', + '44 dəqiqə', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'гадзіна', + 'bir saat', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'гадзіна', + 'bir saat', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 гадзіны', + '2 saat', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 гадзін', + '5 saat', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 гадзіна', + '21 saat', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'дзень', + 'bir gün', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'дзень', + 'bir gün', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 дні', + '2 gün', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'дзень', + 'bir gün', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 дзён', + '5 gün', '5 days = 5 days' ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 11 }), true), - '11 дзён', - '11 days = 11 days' - ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 21 }), true), - '21 дзень', - '21 days = 21 days' - ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 дзён', + '25 gün', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'месяц', + 'bir ay', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'месяц', + 'bir ay', '30 days = a month' ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'месяц', - '43 days = a month' - ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 месяцы', + '2 ay', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 месяцы', + '2 ay', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 месяцы', + '3 ay', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'месяц', + 'bir ay', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 месяцаў', + '5 ay', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'год', + 'bir il', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 гады', + '2 il', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'год', + 'bir il', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 гадоў', + '5 il', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'праз некалькі секунд', 'prefix'); - assert.equal(moment(0).from(30000), 'некалькі секунд таму', 'suffix'); + assert.equal(moment(30000).from(0), 'bir neçə saniyə sonra', 'prefix'); + assert.equal(moment(0).from(30000), 'bir neçə saniyə əvvəl', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'bir neçə saniyə əvvəl', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'праз некалькі секунд', + 'bir neçə saniyə sonra', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'праз 5 дзён', 'in 5 days'); - assert.equal( - moment().add({ m: 31 }).fromNow(), - 'праз 31 хвіліну', - 'in 31 minutes = in 31 minutes' - ); - assert.equal( - moment().subtract({ m: 31 }).fromNow(), - '31 хвіліну таму', - '31 minutes ago = 31 minutes ago' - ); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 gün sonra', 'in 5 days'); }); test('calendar day', function (assert) { @@ -8767,59 +8663,55 @@ assert.equal( moment(a).calendar(), - 'Сёння ў 12:00', + 'bugün saat 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Сёння ў 12:25', + 'bugün saat 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Сёння ў 13:00', + 'bugün saat 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Заўтра ў 12:00', + 'sabah saat 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Сёння ў 11:00', + 'bugün saat 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Учора ў 12:00', + 'dünən 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; - function makeFormat(d) { - return '[У] dddd [ў] LT'; - } - for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format(makeFormat()), + m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format(makeFormat()), + m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format(makeFormat()), + m.format('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days end of day' ); } @@ -8827,38 +8719,23 @@ test('calendar last week', function (assert) { var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - } - } - for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days end of day' ); } @@ -8889,39 +8766,31 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2011, 11, 26]).format('w ww wo'), - '1 01 1-ы', + '1 01 1-inci', 'Dec 26 2011 should be week 1' ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1-ы', + '1 01 1-inci', 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '2 02 2-і', + '2 02 2-nci', 'Jan 2 2012 should be week 2' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2-і', + '2 02 2-nci', 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '3 03 3-і', + '3 03 3-üncü', 'Jan 9 2012 should be week 3' ); }); - test('calendar should format', function (assert) { - assert.equal( - moment('2018-04-13').calendar(moment('2018-04-16')), - 'У мінулую пятніцу ў 00:00', - 'calendar should handle day of week' - ); - }); - }))); @@ -9317,11 +9186,11 @@ defineCommonLocaleTests(name); } - localeModule('bg'); + localeModule('be'); test('parse', function (assert) { var tests = - 'януари яну_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split( + 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split( '_' ), i; @@ -9332,6 +9201,7 @@ input + ' should be month ' + (i + 1) ); } + function equalTestStrict(input, mmm, monthIndex) { assert.equal( moment(input, mmm, true).month(), @@ -9339,6 +9209,7 @@ input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) ); } + for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); @@ -9362,32 +9233,32 @@ test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, H:mm:ss', - 'неделя, февруари 14-ти 2010, 15:25:50', + 'dddd, Do MMMM YYYY, HH:mm:ss', + 'нядзеля, 14-га лютага 2010, 15:25:50', ], - ['ddd, hA', 'нед, 3PM'], - ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'], + ['ddd, h A', 'нд, 3 дня'], + ['M Mo MM MMMM MMM', '2 2-і 02 люты лют'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-ти 14'], - ['d do dddd ddd dd', '0 0-ев неделя нед нд'], - ['DDD DDDo DDDD', '45 45-ти 045'], - ['w wo ww', '7 7-ми 07'], + ['D Do DD', '14 14-га 14'], + ['d do dddd ddd dd', '0 0-ы нядзеля нд нд'], + ['DDD DDDo DDDD', '45 45-ы 045'], + ['w wo ww', '7 7-ы 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45-ти day of the year'], + ['a A', 'дня дня'], + ['DDDo [дзень года]', '45-ы дзень года'], ['LT', '15:25'], ['LTS', '15:25:50'], ['L', '14.02.2010'], - ['LL', '14 февруари 2010'], - ['LLL', '14 февруари 2010 15:25'], - ['LLLL', 'неделя, 14 февруари 2010 15:25'], + ['LL', '14 лютага 2010 г.'], + ['LLL', '14 лютага 2010 г., 15:25'], + ['LLLL', 'нядзеля, 14 лютага 2010 г., 15:25'], ['l', '14.2.2010'], - ['ll', '14 фев 2010'], - ['lll', '14 фев 2010 15:25'], - ['llll', 'нед, 14 фев 2010 15:25'], + ['ll', '14 лют 2010 г.'], + ['lll', '14 лют 2010 г., 15:25'], + ['llll', 'нд, 14 лют 2010 г., 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -9396,46 +9267,73 @@ } }); + test('format meridiem', function (assert) { + assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ночы', 'night'); + assert.equal(moment([2012, 11, 28, 3, 59]).format('A'), 'ночы', 'night'); + assert.equal(moment([2012, 11, 28, 4, 0]).format('A'), 'раніцы', 'morning'); + assert.equal( + moment([2012, 11, 28, 11, 59]).format('A'), + 'раніцы', + 'morning' + ); + assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'дня', 'afternoon'); + assert.equal( + moment([2012, 11, 28, 16, 59]).format('A'), + 'дня', + 'afternoon' + ); + assert.equal( + moment([2012, 11, 28, 17, 0]).format('A'), + 'вечара', + 'evening' + ); + assert.equal( + moment([2012, 11, 28, 23, 59]).format('A'), + 'вечара', + 'evening' + ); + }); + test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ы', '1-ы'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-і', '2-і'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-і', '3-і'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ы', '4-ы'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ы', '5-ы'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ы', '6-ы'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ы', '7-ы'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ы', '8-ы'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ы', '9-ы'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ы', '10-ы'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ы', '11-ы'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ы', '12-ы'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ы', '13-ы'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ы', '14-ы'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ы', '15-ы'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ы', '16-ы'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ы', '17-ы'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ы', '18-ы'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ы', '19-ы'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ы', '20-ы'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ы', '21-ы'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-і', '22-і'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-і', '23-і'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ы', '24-ы'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ы', '25-ы'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ы', '26-ы'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ы', '27-ы'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ы', '28-ы'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ы', '29-ы'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ы', '30-ы'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ы', '31-ы'); }); test('format month', function (assert) { var expected = - 'януари яну_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split( + 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split( '_' ), i; @@ -9448,9 +9346,71 @@ } }); + test('format month case', function (assert) { + var months = { + nominative: + 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( + '_' + ), + accusative: + 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( + '_' + ), + }, + i; + for (i = 0; i < 12; i++) { + assert.equal( + moment([2011, i, 1]).format('D MMMM'), + '1 ' + months.accusative[i], + '1 ' + months.accusative[i] + ); + assert.equal( + moment([2011, i, 1]).format('MMMM'), + months.nominative[i], + '1 ' + months.nominative[i] + ); + } + }); + + test('format month case with escaped symbols', function (assert) { + var months = { + nominative: + 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( + '_' + ), + accusative: + 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( + '_' + ), + }, + i; + for (i = 0; i < 12; i++) { + assert.equal( + moment([2013, i, 1]).format('D[] MMMM'), + '1 ' + months.accusative[i], + '1 ' + months.accusative[i] + ); + assert.equal( + moment([2013, i, 1]).format('[]D[] []MMMM[]'), + '1 ' + months.accusative[i] + '', + '1 ' + months.accusative[i] + '' + ); + assert.equal( + moment([2013, i, 1]).format('D[-ы дзень] MMMM'), + '1-ы дзень ' + months.accusative[i], + '1-ы дзень ' + months.accusative[i] + ); + assert.equal( + moment([2013, i, 1]).format('D, MMMM'), + '1, ' + months.nominative[i], + '1, ' + months.nominative[i] + ); + } + }); + test('format week', function (assert) { var expected = - 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря ср_четвъртък чет чт_петък пет пт_събота съб сб'.split( + 'нядзеля нд нд_панядзелак пн пн_аўторак ат ат_серада ср ср_чацвер чц чц_пятніца пт пт_субота сб сб'.split( '_' ), i; @@ -9467,166 +9427,183 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'няколко секунди', + 'некалькі секунд', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'минута', + 'хвіліна', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'минута', + 'хвіліна', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 минути', + '2 хвіліны', '90 seconds = 2 minutes' ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 31 }), true), + '31 хвіліна', + '31 minutes = 31 minutes' + ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 минути', + '44 хвіліны', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'час', + 'гадзіна', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'час', + 'гадзіна', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 часа', + '2 гадзіны', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 часа', + '5 гадзін', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 часа', + '21 гадзіна', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'ден', + 'дзень', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'ден', + 'дзень', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 дена', + '2 дні', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'ден', + 'дзень', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 дена', + '5 дзён', '5 days = 5 days' ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 11 }), true), + '11 дзён', + '11 days = 11 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 21 }), true), + '21 дзень', + '21 days = 21 days' + ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 дена', + '25 дзён', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'месец', + 'месяц', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'месец', + 'месяц', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'месец', + 'месяц', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 месеца', + '2 месяцы', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 месеца', + '2 месяцы', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 месеца', + '3 месяцы', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'месец', + 'месяц', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 месеца', + '5 месяцаў', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'година', + 'год', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 години', + '2 гады', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'година', + 'год', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 години', + '5 гадоў', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'след няколко секунди', 'prefix'); - assert.equal(moment(0).from(30000), 'преди няколко секунди', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal( - moment().fromNow(), - 'преди няколко секунди', - 'now from now should display as in the past' - ); + assert.equal(moment(30000).from(0), 'праз некалькі секунд', 'prefix'); + assert.equal(moment(0).from(30000), 'некалькі секунд таму', 'suffix'); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'след няколко секунди', + 'праз некалькі секунд', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'след 5 дена', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'праз 5 дзён', 'in 5 days'); + assert.equal( + moment().add({ m: 31 }).fromNow(), + 'праз 31 хвіліну', + 'in 31 minutes = in 31 minutes' + ); + assert.equal( + moment().subtract({ m: 31 }).fromNow(), + '31 хвіліну таму', + '31 minutes ago = 31 minutes ago' + ); }); test('calendar day', function (assert) { @@ -9634,55 +9611,59 @@ assert.equal( moment(a).calendar(), - 'Днес в 12:00', + 'Сёння ў 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Днес в 12:25', + 'Сёння ў 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Днес в 13:00', + 'Сёння ў 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Утре в 12:00', + 'Заўтра ў 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Днес в 11:00', + 'Сёння ў 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Вчера в 12:00', + 'Учора ў 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; + function makeFormat(d) { + return '[У] dddd [ў] LT'; + } + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [в] LT'), + m.format(makeFormat()), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [в] LT'), + m.format(makeFormat()), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [в] LT'), + m.format(makeFormat()), 'Today + ' + i + ' days end of day' ); } @@ -9695,13 +9676,13 @@ switch (d.day()) { case 0: case 3: + case 5: case 6: - return '[Миналата] dddd [в] LT'; + return '[У мінулую] dddd [ў] LT'; case 1: case 2: case 4: - case 5: - return '[Миналия] dddd [в] LT'; + return '[У мінулы] dddd [ў] LT'; } } @@ -9752,31 +9733,39 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2011, 11, 26]).format('w ww wo'), - '1 01 1-ви', + '1 01 1-ы', 'Dec 26 2011 should be week 1' ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1-ви', + '1 01 1-ы', 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '2 02 2-ри', + '2 02 2-і', 'Jan 2 2012 should be week 2' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2-ри', + '2 02 2-і', 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '3 03 3-ти', + '3 03 3-і', 'Jan 9 2012 should be week 3' ); }); + test('calendar should format', function (assert) { + assert.equal( + moment('2018-04-13').calendar(moment('2018-04-16')), + 'У мінулую пятніцу ў 00:00', + 'calendar should handle day of week' + ); + }); + }))); @@ -10172,15 +10161,14 @@ defineCommonLocaleTests(name); } - localeModule('bm'); + localeModule('bg'); test('parse', function (assert) { - var i, - tests = - 'Zanwuyekalo Zan_Fewuruyekalo Few_Marisikalo Mar_Awirilikalo Awi_Mɛkalo Mɛ_Zuwɛnkalo Zuw_Zuluyekalo Zul_Utikalo Uti_Sɛtanburukalo Sɛt_ɔkutɔburukalo ɔku_Nowanburukalo Now_Desanburukalo Des'.split( + var tests = + 'януари яну_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split( '_' - ); - + ), + i; function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -10188,7 +10176,6 @@ input + ' should be month ' + (i + 1) ); } - function equalTestStrict(input, mmm, monthIndex) { assert.equal( moment(input, mmm, true).month(), @@ -10196,7 +10183,6 @@ input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) ); } - for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); @@ -10220,48 +10206,83 @@ test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Kari, Fewuruyekalo 14 2010, 3:25:50 pm', + 'dddd, MMMM Do YYYY, H:mm:ss', + 'неделя, февруари 14-ти 2010, 15:25:50', ], - ['ddd, hA', 'Kar, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 Fewuruyekalo Few'], + ['ddd, hA', 'нед, 3PM'], + ['M Mo MM MMMM MMM', '2 2-ри 02 февруари фев'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Kari Kar Ka'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '6 6 06'], + ['D Do DD', '14 14-ти 14'], + ['d do dddd ddd dd', '0 0-ев неделя нед нд'], + ['DDD DDDo DDDD', '45 45-ти 045'], + ['w wo ww', '7 7-ми 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[le] Do [jour du mois]', 'le 14 jour du mois'], - ['[le] DDDo [jour de l’année]', 'le 45 jour de l’année'], + ['[the] DDDo [day of the year]', 'the 45-ти day of the year'], + ['LT', '15:25'], ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', 'Fewuruyekalo tile 14 san 2010'], - ['LLL', 'Fewuruyekalo tile 14 san 2010 lɛrɛ 15:25'], - ['LLLL', 'Kari Fewuruyekalo tile 14 san 2010 lɛrɛ 15:25'], - ['l', '14/2/2010'], - ['ll', 'Few tile 14 san 2010'], - ['lll', 'Few tile 14 san 2010 lɛrɛ 15:25'], - ['llll', 'Kar Few tile 14 san 2010 lɛrɛ 15:25'], + ['L', '14.02.2010'], + ['LL', '14 февруари 2010'], + ['LLL', '14 февруари 2010 15:25'], + ['LLLL', 'неделя, 14 февруари 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 фев 2010'], + ['lll', '14 фев 2010 15:25'], + ['llll', 'нед, 14 фев 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; - for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ви', '1-ви'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ри', '2-ри'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ти', '3-ти'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ти', '4-ти'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ти', '5-ти'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-ти', '6-ти'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ми', '7-ми'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ми', '8-ми'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-ти', '9-ти'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-ти', '10-ти'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ти', '11-ти'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ти', '12-ти'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ти', '13-ти'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ти', '14-ти'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ти', '15-ти'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-ти', '16-ти'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ти', '17-ти'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ти', '18-ти'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-ти', '19-ти'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-ти', '20-ти'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ви', '21-ви'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ри', '22-ри'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ти', '23-ти'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ти', '24-ти'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ти', '25-ти'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ти', '26-ти'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ми', '27-ми'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ми', '28-ми'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ти', '29-ти'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ти', '30-ти'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ви', '31-ви'); + }); + test('format month', function (assert) { - var i, - expected = - 'Zanwuyekalo Zan_Fewuruyekalo Few_Marisikalo Mar_Awirilikalo Awi_Mɛkalo Mɛ_Zuwɛnkalo Zuw_Zuluyekalo Zul_Utikalo Uti_Sɛtanburukalo Sɛt_ɔkutɔburukalo ɔku_Nowanburukalo Now_Desanburukalo Des'.split( + var expected = + 'януари яну_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -10272,12 +10293,11 @@ }); test('format week', function (assert) { - var i, - expected = - 'Kari Kar Ka_Ntɛnɛn Ntɛ Nt_Tarata Tar Ta_Araba Ara Ar_Alamisa Ala Al_Juma Jum Ju_Sibiri Sib Si'.split( + var expected = + 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря ср_четвъртък чет чт_петък пет пт_събота съб сб'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -10289,249 +10309,269 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'sanga dama dama', + 'няколко секунди', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'miniti kelen', + 'минута', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'miniti kelen', + 'минута', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - 'miniti 2', + '2 минути', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - 'miniti 44', + '44 минути', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'lɛrɛ kelen', + 'час', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'lɛrɛ kelen', + 'час', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - 'lɛrɛ 2', + '2 часа', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - 'lɛrɛ 5', + '5 часа', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - 'lɛrɛ 21', + '21 часа', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'tile kelen', + 'ден', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'tile kelen', + 'ден', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - 'tile 2', + '2 дена', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'tile kelen', + 'ден', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - 'tile 5', + '5 дена', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - 'tile 25', + '25 дена', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'kalo kelen', + 'месец', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'kalo kelen', + 'месец', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'kalo kelen', + 'месец', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - 'kalo 2', + '2 месеца', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - 'kalo 2', + '2 месеца', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - 'kalo 3', + '3 месеца', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'kalo kelen', + 'месец', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - 'kalo 5', + '5 месеца', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'san kelen', + 'година', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - 'san 2', + '2 години', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'san kelen', + 'година', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - 'san 5', + '5 години', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'sanga dama dama kɔnɔ', 'prefix'); - assert.equal(moment(0).from(30000), 'a bɛ sanga dama dama bɔ', 'suffix'); + assert.equal(moment(30000).from(0), 'след няколко секунди', 'prefix'); + assert.equal(moment(0).from(30000), 'преди няколко секунди', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'преди няколко секунди', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'sanga dama dama kɔnɔ', + 'след няколко секунди', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'tile 5 kɔnɔ', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'след 5 дена', 'in 5 days'); }); - test('same day', function (assert) { + test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); assert.equal( moment(a).calendar(), - 'Bi lɛrɛ 12:00', - 'Today at the same time' + 'Днес в 12:00', + 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Bi lɛrɛ 12:25', + 'Днес в 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Bi lɛrɛ 13:00', + 'Днес в 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Sini lɛrɛ 12:00', - 'Tomorrow at the same time' + 'Утре в 12:00', + 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Bi lɛrɛ 11:00', + 'Днес в 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Kunu lɛrɛ 12:00', - 'Yesterday at the same time' + 'Вчера в 12:00', + 'yesterday at the same time' ); }); - test('same next week', function (assert) { + test('calendar next week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [don lɛrɛ] LT'), + m.format('dddd [в] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [don lɛrɛ] LT'), + m.format('dddd [в] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [don lɛrɛ] LT'), + m.format('dddd [в] LT'), 'Today + ' + i + ' days end of day' ); } }); - test('same last week', function (assert) { + test('calendar last week', function (assert) { var i, m; + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + case 6: + return '[Миналата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Миналия] dddd [в] LT'; + } + } + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('dddd [tɛmɛnen lɛrɛ] LT'), + m.format(makeFormat(m)), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [tɛmɛnen lɛrɛ] LT'), + m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [tɛmɛnen lɛrɛ] LT'), + m.format(makeFormat(m)), 'Today - ' + i + ' days end of day' ); } }); - test('same all else', function (assert) { + test('calendar all else', function (assert) { var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); @@ -10554,30 +10594,30 @@ }); test('weeks year starting sunday formatted', function (assert) { + assert.equal( + moment([2011, 11, 26]).format('w ww wo'), + '1 01 1-ви', + 'Dec 26 2011 should be week 1' + ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52', - 'Jan 1 2012 should be week 52' + '1 01 1-ви', + 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1', - 'Jan 2 2012 should be week 1' + '2 02 2-ри', + 'Jan 2 2012 should be week 2' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1', - 'Jan 8 2012 should be week 1' + '2 02 2-ри', + 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2', - 'Jan 9 2012 should be week 2' - ); - assert.equal( - moment([2012, 0, 15]).format('w ww wo'), - '2 02 2', - 'Jan 15 2012 should be week 2' + '3 03 3-ти', + 'Jan 9 2012 should be week 3' ); }); @@ -10976,14 +11016,15 @@ defineCommonLocaleTests(name); } - localeModule('bn-bd'); + localeModule('bm'); test('parse', function (assert) { - var tests = - 'জানুয়ারি জানু_ফেব্রুয়ারি ফেব্রু_মার্চ মার্চ_এপ্রিল এপ্রিল_মে মে_জুন জুন_জুলাই জুলাই_আগস্ট আগস্ট_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split( + var i, + tests = + 'Zanwuyekalo Zan_Fewuruyekalo Few_Marisikalo Mar_Awirilikalo Awi_Mɛkalo Mɛ_Zuwɛnkalo Zuw_Zuluyekalo Zul_Utikalo Uti_Sɛtanburukalo Sɛt_ɔkutɔburukalo ɔku_Nowanburukalo Now_Desanburukalo Des'.split( '_' - ), - i; + ); + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -11023,82 +11064,48 @@ test('format', function (assert) { var a = [ [ - 'dddd, Do MMMM YYYY, a h:mm:ss সময়', - 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, বিকাল ৩:২৫:৫০ সময়', + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Kari, Fewuruyekalo 14 2010, 3:25:50 pm', ], - ['ddd, a h সময়', 'রবি, বিকাল ৩ সময়'], - ['M Mo MM MMMM MMM', '২ ২ ০২ ফেব্রুয়ারি ফেব্রু'], - ['YYYY YY', '২০১০ ১০'], - ['D Do DD', '১৪ ১৪ ১৪'], - ['d do dddd ddd dd', '০ ০ রবিবার রবি রবি'], - ['DDD DDDo DDDD', '৪৫ ৪৫ ০৪৫'], - ['w wo ww', '৮ ৮ ০৮'], - ['h hh', '৩ ০৩'], - ['H HH', '১৫ ১৫'], - ['m mm', '২৫ ২৫'], - ['s ss', '৫০ ৫০'], - ['a A', 'বিকাল বিকাল'], - ['LT', 'বিকাল ৩:২৫ সময়'], - ['LTS', 'বিকাল ৩:২৫:৫০ সময়'], - ['L', '১৪/০২/২০১০'], - ['LL', '১৪ ফেব্রুয়ারি ২০১০'], - ['LLL', '১৪ ফেব্রুয়ারি ২০১০, বিকাল ৩:২৫ সময়'], - ['LLLL', 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, বিকাল ৩:২৫ সময়'], - ['l', '১৪/২/২০১০'], - ['ll', '১৪ ফেব্রু ২০১০'], - ['lll', '১৪ ফেব্রু ২০১০, বিকাল ৩:২৫ সময়'], - ['llll', 'রবি, ১৪ ফেব্রু ২০১০, বিকাল ৩:২৫ সময়'], + ['ddd, hA', 'Kar, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 Fewuruyekalo Few'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Kari Kar Ka'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[le] Do [jour du mois]', 'le 14 jour du mois'], + ['[le] DDDo [jour de l’année]', 'le 45 jour de l’année'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', 'Fewuruyekalo tile 14 san 2010'], + ['LLL', 'Fewuruyekalo tile 14 san 2010 lɛrɛ 15:25'], + ['LLLL', 'Kari Fewuruyekalo tile 14 san 2010 lɛrɛ 15:25'], + ['l', '14/2/2010'], + ['ll', 'Few tile 14 san 2010'], + ['lll', 'Few tile 14 san 2010 lɛrɛ 15:25'], + ['llll', 'Kar Few tile 14 san 2010 lɛrɛ 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; + for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '১', '১'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '২', '২'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '৩', '৩'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '৪', '৪'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '৫', '৫'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '৬', '৬'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '৭', '৭'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '৮', '৮'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '৯', '৯'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '১০', '১০'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '১১', '১১'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '১২', '১২'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '১৩', '১৩'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '১৪', '১৪'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '১৫', '১৫'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '১৬', '১৬'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '১৭', '১৭'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '১৮', '১৮'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '১৯', '১৯'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '২০', '২০'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '২১', '২১'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '২২', '২২'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '২৩', '২৩'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '২৪', '২৪'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '২৫', '২৫'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '২৬', '২৬'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '২৭', '২৭'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '২৮', '२৮'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '২৯', '২৯'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '৩০', '৩০'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '৩১', '৩১'); - }); - test('format month', function (assert) { - var expected = - 'জানুয়ারি জানু_ফেব্রুয়ারি ফেব্রু_মার্চ মার্চ_এপ্রিল এপ্রিল_মে মে_জুন জুন_জুলাই জুলাই_আগস্ট আগস্ট_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split( + var i, + expected = + 'Zanwuyekalo Zan_Fewuruyekalo Few_Marisikalo Mar_Awirilikalo Awi_Mɛkalo Mɛ_Zuwɛnkalo Zuw_Zuluyekalo Zul_Utikalo Uti_Sɛtanburukalo Sɛt_ɔkutɔburukalo ɔku_Nowanburukalo Now_Desanburukalo Des'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -11109,11 +11116,12 @@ }); test('format week', function (assert) { - var expected = - 'রবিবার রবি রবি_সোমবার সোম সোম_মঙ্গলবার মঙ্গল মঙ্গল_বুধবার বুধ বুধ_বৃহস্পতিবার বৃহস্পতি বৃহ_শুক্রবার শুক্র শুক্র_শনিবার শনি শনি'.split( + var i, + expected = + 'Kari Kar Ka_Ntɛnɛn Ntɛ Nt_Tarata Tar Ta_Araba Ara Ar_Alamisa Ala Al_Juma Jum Ju_Sibiri Sib Si'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -11125,250 +11133,249 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); + assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'কয়েক সেকেন্ড', + 'sanga dama dama', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'এক মিনিট', + 'miniti kelen', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'এক মিনিট', + 'miniti kelen', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '২ মিনিট', + 'miniti 2', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '৪৪ মিনিট', + 'miniti 44', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'এক ঘন্টা', + 'lɛrɛ kelen', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'এক ঘন্টা', + 'lɛrɛ kelen', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '২ ঘন্টা', + 'lɛrɛ 2', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '৫ ঘন্টা', + 'lɛrɛ 5', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '২১ ঘন্টা', + 'lɛrɛ 21', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'এক দিন', + 'tile kelen', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'এক দিন', + 'tile kelen', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '২ দিন', + 'tile 2', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'এক দিন', + 'tile kelen', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '৫ দিন', + 'tile 5', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '২৫ দিন', + 'tile 25', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'এক মাস', + 'kalo kelen', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'এক মাস', + 'kalo kelen', '30 days = a month' ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'kalo kelen', + '43 days = a month' + ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '২ মাস', + 'kalo 2', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '২ মাস', + 'kalo 2', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '৩ মাস', + 'kalo 3', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'এক মাস', + 'kalo kelen', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '৫ মাস', + 'kalo 5', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'এক বছর', + 'san kelen', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '২ বছর', + 'san 2', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'এক বছর', + 'san kelen', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '৫ বছর', + 'san 5', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'কয়েক সেকেন্ড পরে', 'prefix'); - assert.equal(moment(0).from(30000), 'কয়েক সেকেন্ড আগে', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal( - moment().fromNow(), - 'কয়েক সেকেন্ড আগে', - 'now from now should display as in the past' - ); + assert.equal(moment(30000).from(0), 'sanga dama dama kɔnɔ', 'prefix'); + assert.equal(moment(0).from(30000), 'a bɛ sanga dama dama bɔ', 'suffix'); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'কয়েক সেকেন্ড পরে', - 'কয়েক সেকেন্ড পরে' + 'sanga dama dama kɔnɔ', + 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '৫ দিন পরে', '৫ দিন পরে'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'tile 5 kɔnɔ', 'in 5 days'); }); - test('calendar day', function (assert) { + test('same day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); assert.equal( moment(a).calendar(), - 'আজ দুপুর ১২:০০ সময়', - 'today at the same time' + 'Bi lɛrɛ 12:00', + 'Today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'আজ দুপুর ১২:২৫ সময়', + 'Bi lɛrɛ 12:25', 'Now plus 25 min' ); assert.equal( - moment(a).add({ h: 3 }).calendar(), - 'আজ বিকাল ৩:০০ সময়', - 'Now plus 3 hours' + moment(a).add({ h: 1 }).calendar(), + 'Bi lɛrɛ 13:00', + 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'আগামীকাল দুপুর ১২:০০ সময়', - 'tomorrow at the same time' + 'Sini lɛrɛ 12:00', + 'Tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'আজ সকাল ১১:০০ সময়', + 'Bi lɛrɛ 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'গতকাল দুপুর ১২:০০ সময়', - 'yesterday at the same time' + 'Kunu lɛrɛ 12:00', + 'Yesterday at the same time' ); }); - test('calendar next week', function (assert) { + test('same next week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('dddd [don lɛrɛ] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('dddd [don lɛrɛ] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('dddd [don lɛrɛ] LT'), 'Today + ' + i + ' days end of day' ); } }); - test('calendar last week', function (assert) { + test('same last week', function (assert) { var i, m; for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[গত] dddd[,] LT'), + m.format('dddd [tɛmɛnen lɛrɛ] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[গত] dddd[,] LT'), + m.format('dddd [tɛmɛnen lɛrɛ] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[গত] dddd[,] LT'), + m.format('dddd [tɛmɛnen lɛrɛ] LT'), 'Today - ' + i + ' days end of day' ); } }); - test('calendar all else', function (assert) { + test('same all else', function (assert) { var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); @@ -11390,63 +11397,31 @@ ); }); - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'রাত', 'Night'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'সকাল', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'দুপুর', 'Noon'); - assert.equal( - moment([2011, 2, 23, 17, 30]).format('a'), - 'বিকাল', - 'Afternoon' - ); - assert.equal( - moment([2011, 2, 23, 19, 30]).format('a'), - 'সন্ধ্যা', - 'evening' - ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'রাত', 'night'); - - assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'রাত', 'Night'); - assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'সকাল', 'morning'); - assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'দুপুর', 'Noon'); - assert.equal( - moment([2011, 2, 23, 17, 30]).format('A'), - 'বিকাল', - 'Afternoon' - ); - assert.equal( - moment([2011, 2, 23, 19, 30]).format('A'), - 'সন্ধ্যা', - 'evening' - ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'রাত', 'night'); - }); - test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '১ ০১ ১', - 'Jan 1 2012 should be week 1' + '52 52 52', + 'Jan 1 2012 should be week 52' ); assert.equal( - moment([2012, 0, 7]).format('w ww wo'), - '১ ০১ ১', - 'Jan 7 2012 should be week 1' + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1', + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '২ ০২ ২', - 'Jan 8 2012 should be week 2' + '1 01 1', + 'Jan 8 2012 should be week 1' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), - '২ ০২ ২', - 'Jan 14 2012 should be week 2' + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2', + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '৩ ০৩ ৩', - 'Jan 15 2012 should be week 3' + '2 02 2', + 'Jan 15 2012 should be week 2' ); }); @@ -11845,7 +11820,7 @@ defineCommonLocaleTests(name); } - localeModule('bn'); + localeModule('bn-bd'); test('parse', function (assert) { var tests = @@ -11893,9 +11868,9 @@ var a = [ [ 'dddd, Do MMMM YYYY, a h:mm:ss সময়', - 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, দুপুর ৩:২৫:৫০ সময়', + 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, বিকাল ৩:২৫:৫০ সময়', ], - ['ddd, a h সময়', 'রবি, দুপুর ৩ সময়'], + ['ddd, a h সময়', 'রবি, বিকাল ৩ সময়'], ['M Mo MM MMMM MMM', '২ ২ ০২ ফেব্রুয়ারি ফেব্রু'], ['YYYY YY', '২০১০ ১০'], ['D Do DD', '১৪ ১৪ ১৪'], @@ -11906,17 +11881,17 @@ ['H HH', '১৫ ১৫'], ['m mm', '২৫ ২৫'], ['s ss', '৫০ ৫০'], - ['a A', 'দুপুর দুপুর'], - ['LT', 'দুপুর ৩:২৫ সময়'], - ['LTS', 'দুপুর ৩:২৫:৫০ সময়'], + ['a A', 'বিকাল বিকাল'], + ['LT', 'বিকাল ৩:২৫ সময়'], + ['LTS', 'বিকাল ৩:২৫:৫০ সময়'], ['L', '১৪/০২/২০১০'], ['LL', '১৪ ফেব্রুয়ারি ২০১০'], - ['LLL', '১৪ ফেব্রুয়ারি ২০১০, দুপুর ৩:২৫ সময়'], - ['LLLL', 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, দুপুর ৩:২৫ সময়'], + ['LLL', '১৪ ফেব্রুয়ারি ২০১০, বিকাল ৩:২৫ সময়'], + ['LLLL', 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, বিকাল ৩:২৫ সময়'], ['l', '১৪/২/২০১০'], ['ll', '১৪ ফেব্রু ২০১০'], - ['lll', '১৪ ফেব্রু ২০১০, দুপুর ৩:২৫ সময়'], - ['llll', 'রবি, ১৪ ফেব্রু ২০১০, দুপুর ৩:২৫ সময়'], + ['lll', '১৪ ফেব্রু ২০১০, বিকাল ৩:২৫ সময়'], + ['llll', 'রবি, ১৪ ফেব্রু ২০১০, বিকাল ৩:২৫ সময়'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -12168,7 +12143,7 @@ ); assert.equal( moment(a).add({ h: 3 }).calendar(), - 'আজ দুপুর ৩:০০ সময়', + 'আজ বিকাল ৩:০০ সময়', 'Now plus 3 hours' ); assert.equal( @@ -12178,7 +12153,7 @@ ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'আজ দুপুর ১১:০০ সময়', + 'আজ সকাল ১১:০০ সময়', 'Now minus 1 hour' ); assert.equal( @@ -12260,41 +12235,33 @@ }); test('meridiem', function (assert) { - assert.equal( - moment([2011, 2, 23, 2, 30]).format('a'), - 'রাত', - 'before dawn' - ); + assert.equal(moment([2011, 2, 23, 2, 30]).format('a'), 'রাত', 'Night'); assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'সকাল', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('a'), 'দুপুর', 'Noon'); assert.equal( - moment([2011, 2, 23, 14, 30]).format('a'), - 'দুপুর', - 'during day' + moment([2011, 2, 23, 17, 30]).format('a'), + 'বিকাল', + 'Afternoon' ); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'বিকাল', 'evening'); assert.equal( moment([2011, 2, 23, 19, 30]).format('a'), - 'বিকাল', - 'late evening' + 'সন্ধ্যা', + 'evening' ); assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'রাত', 'night'); - assert.equal( - moment([2011, 2, 23, 2, 30]).format('A'), - 'রাত', - 'before dawn' - ); + assert.equal(moment([2011, 2, 23, 2, 30]).format('A'), 'রাত', 'Night'); assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'সকাল', 'morning'); + assert.equal(moment([2011, 2, 23, 14, 30]).format('A'), 'দুপুর', 'Noon'); assert.equal( - moment([2011, 2, 23, 14, 30]).format('A'), - 'দুপুর', - ' during day' + moment([2011, 2, 23, 17, 30]).format('A'), + 'বিকাল', + 'Afternoon' ); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'বিকাল', 'evening'); assert.equal( moment([2011, 2, 23, 19, 30]).format('A'), - 'বিকাল', - 'late evening' + 'সন্ধ্যা', + 'evening' ); assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'রাত', 'night'); }); @@ -12722,11 +12689,11 @@ defineCommonLocaleTests(name); } - localeModule('bo'); + localeModule('bn'); test('parse', function (assert) { var tests = - 'ཟླ་བ་དང་པོ ཟླ་༡_ཟླ་བ་གཉིས་པ ཟླ་༢_ཟླ་བ་གསུམ་པ ཟླ་༣_ཟླ་བ་བཞི་པ ཟླ་༤_ཟླ་བ་ལྔ་པ ཟླ་༥_ཟླ་བ་དྲུག་པ ཟླ་༦_ཟླ་བ་བདུན་པ ཟླ་༧_ཟླ་བ་བརྒྱད་པ ཟླ་༨_ཟླ་བ་དགུ་པ ཟླ་༩_ཟླ་བ་བཅུ་པ ཟླ་༡༠_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་༡༡_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་༡༢'.split( + 'জানুয়ারি জানু_ফেব্রুয়ারি ফেব্রু_মার্চ মার্চ_এপ্রিল এপ্রিল_মে মে_জুন জুন_জুলাই জুলাই_আগস্ট আগস্ট_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split( '_' ), i; @@ -12757,13 +12724,10 @@ equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - // Failing only for month 1 (index 0) - // equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][1], 'MMM', i); equalTestStrict(tests[i][0], 'MMMM', i); - // Failing only for month 1 (index 0) - // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - // Failing only for month 1 (index 0) - // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } @@ -12772,31 +12736,31 @@ test('format', function (assert) { var a = [ [ - 'dddd, Do MMMM YYYY, a h:mm:ss ལ་', - 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥:༥༠ ལ་', + 'dddd, Do MMMM YYYY, a h:mm:ss সময়', + 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, দুপুর ৩:২৫:৫০ সময়', ], - ['ddd, a h ལ་', 'ཉི་མ་, ཉིན་གུང ༣ ལ་'], - ['M Mo MM MMMM MMM', '༢ ༢ ༠༢ ཟླ་བ་གཉིས་པ ཟླ་༢'], - ['YYYY YY', '༢༠༡༠ ༡༠'], - ['D Do DD', '༡༤ ༡༤ ༡༤'], - ['d do dddd ddd dd', '༠ ༠ གཟའ་ཉི་མ་ ཉི་མ་ ཉི'], - ['DDD DDDo DDDD', '༤༥ ༤༥ ༠༤༥'], - ['w wo ww', '༨ ༨ ༠༨'], - ['h hh', '༣ ༠༣'], - ['H HH', '༡༥ ༡༥'], - ['m mm', '༢༥ ༢༥'], - ['s ss', '༥༠ ༥༠'], - ['a A', 'ཉིན་གུང ཉིན་གུང'], - ['LT', 'ཉིན་གུང ༣:༢༥'], - ['LTS', 'ཉིན་གུང ༣:༢༥:༥༠'], - ['L', '༡༤/༠༢/༢༠༡༠'], - ['LL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠'], - ['LLL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], - ['LLLL', 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], - ['l', '༡༤/༢/༢༠༡༠'], - ['ll', '༡༤ ཟླ་༢ ༢༠༡༠'], - ['lll', '༡༤ ཟླ་༢ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], - ['llll', 'ཉི་མ་, ༡༤ ཟླ་༢ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], + ['ddd, a h সময়', 'রবি, দুপুর ৩ সময়'], + ['M Mo MM MMMM MMM', '২ ২ ০২ ফেব্রুয়ারি ফেব্রু'], + ['YYYY YY', '২০১০ ১০'], + ['D Do DD', '১৪ ১৪ ১৪'], + ['d do dddd ddd dd', '০ ০ রবিবার রবি রবি'], + ['DDD DDDo DDDD', '৪৫ ৪৫ ০৪৫'], + ['w wo ww', '৮ ৮ ০৮'], + ['h hh', '৩ ০৩'], + ['H HH', '১৫ ১৫'], + ['m mm', '২৫ ২৫'], + ['s ss', '৫০ ৫০'], + ['a A', 'দুপুর দুপুর'], + ['LT', 'দুপুর ৩:২৫ সময়'], + ['LTS', 'দুপুর ৩:২৫:৫০ সময়'], + ['L', '১৪/০২/২০১০'], + ['LL', '১৪ ফেব্রুয়ারি ২০১০'], + ['LLL', '১৪ ফেব্রুয়ারি ২০১০, দুপুর ৩:২৫ সময়'], + ['LLLL', 'রবিবার, ১৪ ফেব্রুয়ারি ২০১০, দুপুর ৩:২৫ সময়'], + ['l', '১৪/২/২০১০'], + ['ll', '১৪ ফেব্রু ২০১০'], + ['lll', '১৪ ফেব্রু ২০১০, দুপুর ৩:২৫ সময়'], + ['llll', 'রবি, ১৪ ফেব্রু ২০১০, দুপুর ৩:২৫ সময়'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -12806,45 +12770,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '༡', '༡'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '༢', '༢'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '༣', '༣'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '༤', '༤'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '༥', '༥'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '༦', '༦'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '༧', '༧'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '༨', '༨'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '༩', '༩'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '༡༠', '༡༠'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '১', '১'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '২', '২'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '৩', '৩'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '৪', '৪'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '৫', '৫'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '৬', '৬'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '৭', '৭'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '৮', '৮'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '৯', '৯'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '১০', '১০'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '༡༡', '༡༡'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '༡༢', '༡༢'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '༡༣', '༡༣'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '༡༤', '༡༤'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '༡༥', '༡༥'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '༡༦', '༡༦'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '༡༧', '༡༧'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '༡༨', '༡༨'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '༡༩', '༡༩'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '༢༠', '༢༠'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '১১', '১১'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '১২', '১২'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '১৩', '১৩'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '১৪', '১৪'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '১৫', '১৫'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '১৬', '১৬'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '১৭', '১৭'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '১৮', '১৮'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '১৯', '১৯'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '২০', '২০'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '༢༡', '༢༡'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '༢༢', '༢༢'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '༢༣', '༢༣'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '༢༤', '༢༤'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '༢༥', '༢༥'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '༢༦', '༢༦'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '༢༧', '༢༧'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '༢༨', '༢༨'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '༢༩', '༢༩'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '༣༠', '༣༠'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '২১', '২১'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '২২', '২২'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '২৩', '২৩'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '২৪', '২৪'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '২৫', '২৫'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '২৬', '২৬'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '২৭', '২৭'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '২৮', '२৮'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '২৯', '২৯'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '৩০', '৩০'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '༣༡', '༣༡'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '৩১', '৩১'); }); test('format month', function (assert) { var expected = - 'ཟླ་བ་དང་པོ ཟླ་༡_ཟླ་བ་གཉིས་པ ཟླ་༢_ཟླ་བ་གསུམ་པ ཟླ་༣_ཟླ་བ་བཞི་པ ཟླ་༤_ཟླ་བ་ལྔ་པ ཟླ་༥_ཟླ་བ་དྲུག་པ ཟླ་༦_ཟླ་བ་བདུན་པ ཟླ་༧_ཟླ་བ་བརྒྱད་པ ཟླ་༨_ཟླ་བ་དགུ་པ ཟླ་༩_ཟླ་བ་བཅུ་པ ཟླ་༡༠_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་༡༡_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་༡༢'.split( + 'জানুয়ারি জানু_ফেব্রুয়ারি ফেব্রু_মার্চ মার্চ_এপ্রিল এপ্রিল_মে মে_জুন জুন_জুলাই জুলাই_আগস্ট আগস্ট_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split( '_' ), i; @@ -12859,7 +12823,7 @@ test('format week', function (assert) { var expected = - 'གཟའ་ཉི་མ་ ཉི་མ་ ཉི_གཟའ་ཟླ་བ་ ཟླ་བ་ ཟླ_གཟའ་མིག་དམར་ མིག་དམར་ མིག_གཟའ་ལྷག་པ་ ལྷག་པ་ ལྷག_གཟའ་ཕུར་བུ ཕུར་བུ ཕུར_གཟའ་པ་སངས་ པ་སངས་ སངས_གཟའ་སྤེན་པ་ སྤེན་པ་ སྤེན'.split( + 'রবিবার রবি রবি_সোমবার সোম সোম_মঙ্গলবার মঙ্গল মঙ্গল_বুধবার বুধ বুধ_বৃহস্পতিবার বৃহস্পতি বৃহ_শুক্রবার শুক্র শুক্র_শনিবার শনি শনি'.split( '_' ), i; @@ -12876,162 +12840,161 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'ལམ་སང', + 'কয়েক সেকেন্ড', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'སྐར་མ་གཅིག', + 'এক মিনিট', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'སྐར་མ་གཅིག', + 'এক মিনিট', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '༢ སྐར་མ', + '২ মিনিট', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '༤༤ སྐར་མ', + '৪৪ মিনিট', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'ཆུ་ཚོད་གཅིག', + 'এক ঘন্টা', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'ཆུ་ཚོད་གཅིག', + 'এক ঘন্টা', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '༢ ཆུ་ཚོད', + '২ ঘন্টা', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '༥ ཆུ་ཚོད', + '৫ ঘন্টা', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '༢༡ ཆུ་ཚོད', + '২১ ঘন্টা', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'ཉིན་གཅིག', + 'এক দিন', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'ཉིན་གཅིག', + 'এক দিন', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '༢ ཉིན་', + '২ দিন', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'ཉིན་གཅིག', + 'এক দিন', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '༥ ཉིན་', + '৫ দিন', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '༢༥ ཉིན་', + '২৫ দিন', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'ཟླ་བ་གཅིག', + 'এক মাস', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'ཟླ་བ་གཅིག', + 'এক মাস', '30 days = a month' ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'ཟླ་བ་གཅིག', - '43 days = a month' - ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '༢ ཟླ་བ', + '২ মাস', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '༢ ཟླ་བ', + '২ মাস', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '༣ ཟླ་བ', + '৩ মাস', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'ཟླ་བ་གཅིག', + 'এক মাস', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '༥ ཟླ་བ', + '৫ মাস', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'ལོ་གཅིག', + 'এক বছর', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '༢ ལོ', + '২ বছর', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'ལོ་གཅིག', + 'এক বছর', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '༥ ལོ', + '৫ বছর', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ལམ་སང ལ་', 'prefix'); - assert.equal(moment(0).from(30000), 'ལམ་སང སྔན་ལ', 'suffix'); + assert.equal(moment(30000).from(0), 'কয়েক সেকেন্ড পরে', 'prefix'); + assert.equal(moment(0).from(30000), 'কয়েক সেকেন্ড আগে', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'ལམ་སང སྔན་ལ', + 'কয়েক সেকেন্ড আগে', 'now from now should display as in the past' ); }); test('fromNow', function (assert) { - assert.equal(moment().add({ s: 30 }).fromNow(), 'ལམ་སང ལ་', 'ལམ་སང ལ་'); - assert.equal(moment().add({ d: 5 }).fromNow(), '༥ ཉིན་ ལ་', '༥ ཉིན་ ལ་'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'কয়েক সেকেন্ড পরে', + 'কয়েক সেকেন্ড পরে' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '৫ দিন পরে', '৫ দিন পরে'); }); test('calendar day', function (assert) { @@ -13039,32 +13002,32 @@ assert.equal( moment(a).calendar(), - 'དི་རིང ཉིན་གུང ༡༢:༠༠', + 'আজ দুপুর ১২:০০ সময়', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'དི་རིང ཉིན་གུང ༡༢:༢༥', + 'আজ দুপুর ১২:২৫ সময়', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 3 }).calendar(), - 'དི་རིང ཉིན་གུང ༣:༠༠', + 'আজ দুপুর ৩:০০ সময়', 'Now plus 3 hours' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'སང་ཉིན ཉིན་གུང ༡༢:༠༠', + 'আগামীকাল দুপুর ১২:০০ সময়', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'དི་རིང ཉིན་གུང ༡༡:༠༠', + 'আজ দুপুর ১১:০০ সময়', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'ཁ་སང ཉིན་གུང ༡༢:༠༠', + 'গতকাল দুপুর ১২:০০ সময়', 'yesterday at the same time' ); }); @@ -13075,19 +13038,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), + m.format('dddd[,] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), + m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), + m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day' ); } @@ -13100,19 +13063,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), + m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), + m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), + m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days end of day' ); } @@ -13143,83 +13106,67 @@ test('meridiem', function (assert) { assert.equal( moment([2011, 2, 23, 2, 30]).format('a'), - 'མཚན་མོ', + 'রাত', 'before dawn' ); - assert.equal( - moment([2011, 2, 23, 9, 30]).format('a'), - 'ཞོགས་ཀས', - 'morning' - ); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'সকাল', 'morning'); assert.equal( moment([2011, 2, 23, 14, 30]).format('a'), - 'ཉིན་གུང', + 'দুপুর', 'during day' ); - assert.equal( - moment([2011, 2, 23, 17, 30]).format('a'), - 'དགོང་དག', - 'evening' - ); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'বিকাল', 'evening'); assert.equal( moment([2011, 2, 23, 19, 30]).format('a'), - 'དགོང་དག', + 'বিকাল', 'late evening' ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'མཚན་མོ', 'night'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'রাত', 'night'); assert.equal( moment([2011, 2, 23, 2, 30]).format('A'), - 'མཚན་མོ', + 'রাত', 'before dawn' ); - assert.equal( - moment([2011, 2, 23, 9, 30]).format('A'), - 'ཞོགས་ཀས', - 'morning' - ); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'সকাল', 'morning'); assert.equal( moment([2011, 2, 23, 14, 30]).format('A'), - 'ཉིན་གུང', + 'দুপুর', ' during day' ); - assert.equal( - moment([2011, 2, 23, 17, 30]).format('A'), - 'དགོང་དག', - 'evening' - ); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'বিকাল', 'evening'); assert.equal( moment([2011, 2, 23, 19, 30]).format('A'), - 'དགོང་དག', + 'বিকাল', 'late evening' ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'མཚན་མོ', 'night'); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'রাত', 'night'); }); test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '༡ ༠༡ ༡', + '১ ০১ ১', 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 7]).format('w ww wo'), - '༡ ༠༡ ༡', + '১ ০১ ১', 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '༢ ༠༢ ༢', + '২ ০২ ২', 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 14]).format('w ww wo'), - '༢ ༠༢ ༢', + '২ ০২ ২', 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '༣ ༠༣ ༣', + '৩ ০৩ ৩', 'Jan 15 2012 should be week 3' ); }); @@ -13619,16 +13566,14 @@ defineCommonLocaleTests(name); } - localeModule('br'); + localeModule('bo'); test('parse', function (assert) { var tests = - 'Genver Gen_Cʼhwevrer Cʼhwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split( + 'ཟླ་བ་དང་པོ ཟླ་༡_ཟླ་བ་གཉིས་པ ཟླ་༢_ཟླ་བ་གསུམ་པ ཟླ་༣_ཟླ་བ་བཞི་པ ཟླ་༤_ཟླ་བ་ལྔ་པ ཟླ་༥_ཟླ་བ་དྲུག་པ ཟླ་༦_ཟླ་བ་བདུན་པ ཟླ་༧_ཟླ་བ་བརྒྱད་པ ཟླ་༨_ཟླ་བ་དགུ་པ ཟླ་༩_ཟླ་བ་བཅུ་པ ཟླ་༡༠_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་༡༡_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་༡༢'.split( '_' ), - i, - monthsWithRegularQuoteMark = ["C'hwevrer", "C'hwe"]; - + i; function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -13656,73 +13601,46 @@ equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(tests[i][1], 'MMM', i); + // Failing only for month 1 (index 0) + // equalTestStrict(tests[i][1], 'MMM', i); equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + // Failing only for month 1 (index 0) + // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + // Failing only for month 1 (index 0) + // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } - - // check with regular quote mark - equalTest(monthsWithRegularQuoteMark[0], 'MMM', 1); - equalTest(monthsWithRegularQuoteMark[1], 'MMM', 1); - equalTest(monthsWithRegularQuoteMark[0], 'MMMM', 1); - equalTest(monthsWithRegularQuoteMark[1], 'MMMM', 1); - equalTest(monthsWithRegularQuoteMark[0].toLocaleLowerCase(), 'MMM', 1); - equalTest(monthsWithRegularQuoteMark[1].toLocaleLowerCase(), 'MMM', 1); - equalTest(monthsWithRegularQuoteMark[0].toLocaleUpperCase(), 'MMMM', 1); - equalTest(monthsWithRegularQuoteMark[1].toLocaleUpperCase(), 'MMMM', 1); - - assert.notEqual( - moment(monthsWithRegularQuoteMark[0], 'MMM', true).month(), - 1 - ); - equalTestStrict(monthsWithRegularQuoteMark[1], 'MMM', 1); - equalTest(monthsWithRegularQuoteMark[0], 'MMMM', 1); - assert.notEqual( - moment(monthsWithRegularQuoteMark[1], 'MMMM', true).month(), - 1 - ); - equalTest(monthsWithRegularQuoteMark[1].toLocaleLowerCase(), 'MMM', 1); - equalTest(monthsWithRegularQuoteMark[0].toLocaleUpperCase(), 'MMMM', 1); - - // check weekday with regular quote mark - assert.equal( - moment("merc'her", 'dddd', true).day(), - 3, - "merc'her (regular quote)" - ); - assert.equal( - moment('mercʼher', 'dddd', true).day(), - 3, - 'mercʼher (special quote)' - ); }); test('format', function (assert) { - moment.locale('br'); var a = [ [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Sul, Cʼhwevrer 14vet 2010, 3:25:50 g.m.', + 'dddd, Do MMMM YYYY, a h:mm:ss ལ་', + 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥:༥༠ ལ་', ], - ['ddd, h A', 'Sul, 3 g.m.'], - ['M Mo MM MMMM MMM', '2 2vet 02 Cʼhwevrer Cʼhwe'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14vet 14'], - ['d do dddd ddd dd', '0 0vet Sul Sul Su'], - ['DDD DDDo DDDD', '45 45vet 045'], - ['w wo ww', '6 6vet 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['DDDo [devezh] [ar] [vloaz]', '45vet devezh ar vloaz'], - ['L', '14/02/2010'], - ['LL', '14 a viz Cʼhwevrer 2010'], - ['LLL', '14 a viz Cʼhwevrer 2010 15:25'], - ['LLLL', 'Sul, 14 a viz Cʼhwevrer 2010 15:25'], + ['ddd, a h ལ་', 'ཉི་མ་, ཉིན་གུང ༣ ལ་'], + ['M Mo MM MMMM MMM', '༢ ༢ ༠༢ ཟླ་བ་གཉིས་པ ཟླ་༢'], + ['YYYY YY', '༢༠༡༠ ༡༠'], + ['D Do DD', '༡༤ ༡༤ ༡༤'], + ['d do dddd ddd dd', '༠ ༠ གཟའ་ཉི་མ་ ཉི་མ་ ཉི'], + ['DDD DDDo DDDD', '༤༥ ༤༥ ༠༤༥'], + ['w wo ww', '༨ ༨ ༠༨'], + ['h hh', '༣ ༠༣'], + ['H HH', '༡༥ ༡༥'], + ['m mm', '༢༥ ༢༥'], + ['s ss', '༥༠ ༥༠'], + ['a A', 'ཉིན་གུང ཉིན་གུང'], + ['LT', 'ཉིན་གུང ༣:༢༥'], + ['LTS', 'ཉིན་གུང ༣:༢༥:༥༠'], + ['L', '༡༤/༠༢/༢༠༡༠'], + ['LL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠'], + ['LLL', '༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], + ['LLLL', 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], + ['l', '༡༤/༢/༢༠༡༠'], + ['ll', '༡༤ ཟླ་༢ ༢༠༡༠'], + ['lll', '༡༤ ཟླ་༢ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], + ['llll', 'ཉི་མ་, ༡༤ ཟླ་༢ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -13732,47 +13650,45 @@ }); test('format ordinal', function (assert) { - moment.locale('br'); - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1añ', '1añ'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2vet', '2vet'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3vet', '3vet'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4vet', '4vet'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5vet', '5vet'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6vet', '6vet'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7vet', '7vet'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8vet', '8vet'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9vet', '9vet'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10vet', '10vet'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '༡', '༡'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '༢', '༢'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '༣', '༣'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '༤', '༤'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '༥', '༥'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '༦', '༦'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '༧', '༧'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '༨', '༨'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '༩', '༩'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '༡༠', '༡༠'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11vet', '11vet'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12vet', '12vet'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13vet', '13vet'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14vet', '14vet'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15vet', '15vet'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16vet', '16vet'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17vet', '17vet'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18vet', '18vet'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19vet', '19vet'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20vet', '20vet'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '༡༡', '༡༡'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '༡༢', '༡༢'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '༡༣', '༡༣'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '༡༤', '༡༤'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '༡༥', '༡༥'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '༡༦', '༡༦'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '༡༧', '༡༧'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '༡༨', '༡༨'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '༡༩', '༡༩'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '༢༠', '༢༠'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21vet', '21vet'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22vet', '22vet'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23vet', '23vet'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24vet', '24vet'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25vet', '25vet'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26vet', '26vet'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27vet', '27vet'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28vet', '28vet'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29vet', '29vet'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30vet', '30vet'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '༢༡', '༢༡'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '༢༢', '༢༢'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '༢༣', '༢༣'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '༢༤', '༢༤'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '༢༥', '༢༥'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '༢༦', '༢༦'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '༢༧', '༢༧'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '༢༨', '༢༨'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '༢༩', '༢༩'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '༣༠', '༣༠'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31vet', '31vet'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '༣༡', '༣༡'); }); test('format month', function (assert) { - moment.locale('br'); var expected = - 'Genver Gen_Cʼhwevrer Cʼhwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split( + 'ཟླ་བ་དང་པོ ཟླ་༡_ཟླ་བ་གཉིས་པ ཟླ་༢_ཟླ་བ་གསུམ་པ ཟླ་༣_ཟླ་བ་བཞི་པ ཟླ་༤_ཟླ་བ་ལྔ་པ ཟླ་༥_ཟླ་བ་དྲུག་པ ཟླ་༦_ཟླ་བ་བདུན་པ ཟླ་༧_ཟླ་བ་བརྒྱད་པ ཟླ་༨_ཟླ་བ་དགུ་པ ཟླ་༩_ཟླ་བ་བཅུ་པ ཟླ་༡༠_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་༡༡_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་༡༢'.split( '_' ), i; @@ -13786,9 +13702,8 @@ }); test('format week', function (assert) { - moment.locale('br'); var expected = - 'Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Mercʼher Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa'.split( + 'གཟའ་ཉི་མ་ ཉི་མ་ ཉི_གཟའ་ཟླ་བ་ ཟླ་བ་ ཟླ_གཟའ་མིག་དམར་ མིག་དམར་ མིག_གཟའ་ལྷག་པ་ ལྷག་པ་ ལྷག_གཟའ་ཕུར་བུ ཕུར་བུ ཕུར_གཟའ་པ་སངས་ པ་སངས་ སངས_གཟའ་སྤེན་པ་ སྤེན་པ་ སྤེན'.split( '_' ), i; @@ -13802,279 +13717,252 @@ }); test('from', function (assert) { - moment.locale('br'); var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'un nebeud segondennoù', + 'ལམ་སང', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'ur vunutenn', + 'སྐར་མ་གཅིག', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'ur vunutenn', + 'སྐར་མ་གཅིག', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 vunutenn', + '༢ སྐར་མ', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 munutenn', + '༤༤ སྐར་མ', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'un eur', + 'ཆུ་ཚོད་གཅིག', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'un eur', + 'ཆུ་ཚོད་གཅིག', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 eur', + '༢ ཆུ་ཚོད', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 eur', + '༥ ཆུ་ཚོད', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 eur', + '༢༡ ཆུ་ཚོད', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'un devezh', + 'ཉིན་གཅིག', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'un devezh', + 'ཉིན་གཅིག', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 zevezh', + '༢ ཉིན་', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'un devezh', + 'ཉིན་གཅིག', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 devezh', + '༥ ཉིན་', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 devezh', + '༢༥ ཉིན་', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'ur miz', + 'ཟླ་བ་གཅིག', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'ur miz', + 'ཟླ་བ་གཅིག', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'ur miz', + 'ཟླ་བ་གཅིག', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 viz', + '༢ ཟླ་བ', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 viz', + '༢ ཟླ་བ', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 miz', + '༣ ཟླ་བ', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'ur miz', + 'ཟླ་བ་གཅིག', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 miz', + '༥ ཟླ་བ', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'ur bloaz', + 'ལོ་གཅིག', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 vloaz', + '༢ ལོ', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'ur bloaz', + 'ལོ་གཅིག', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 bloaz', + '༥ ལོ', '5 years = 5 years' ); }); test('suffix', function (assert) { - moment.locale('br'); - assert.equal( - moment(30000).from(0), - 'a-benn un nebeud segondennoù', - 'prefix' - ); - assert.equal(moment(0).from(30000), 'un nebeud segondennoù ʼzo', 'suffix'); + assert.equal(moment(30000).from(0), 'ལམ་སང ལ་', 'prefix'); + assert.equal(moment(0).from(30000), 'ལམ་སང སྔན་ལ', 'suffix'); }); test('now from now', function (assert) { - moment.locale('br'); assert.equal( moment().fromNow(), - 'un nebeud segondennoù ʼzo', + 'ལམ་སང སྔན་ལ', 'now from now should display as in the past' ); }); test('fromNow', function (assert) { - moment.locale('br'); - assert.equal( - moment().add({ s: 30 }).fromNow(), - 'a-benn un nebeud segondennoù', - 'in a few seconds' - ); - assert.equal( - moment().add({ d: 5 }).fromNow(), - 'a-benn 5 devezh', - 'in 5 days' - ); + assert.equal(moment().add({ s: 30 }).fromNow(), 'ལམ་སང ལ་', 'ལམ་སང ལ་'); + assert.equal(moment().add({ d: 5 }).fromNow(), '༥ ཉིན་ ལ་', '༥ ཉིན་ ལ་'); }); test('calendar day', function (assert) { - moment.locale('br'); - var a = moment().hours(12).minutes(0).seconds(0); assert.equal( moment(a).calendar(), - 'Hiziv da 12:00', + 'དི་རིང ཉིན་གུང ༡༢:༠༠', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Hiziv da 12:25', + 'དི་རིང ཉིན་གུང ༡༢:༢༥', 'Now plus 25 min' ); assert.equal( - moment(a).add({ h: 1 }).calendar(), - 'Hiziv da 13:00', - 'Now plus 1 hour' + moment(a).add({ h: 3 }).calendar(), + 'དི་རིང ཉིན་གུང ༣:༠༠', + 'Now plus 3 hours' ); assert.equal( - moment(a).add({ h: 3 }).calendar(), - 'Hiziv da 15:00', - 'Now plus 3 hour' + moment(a).add({ d: 1 }).calendar(), + 'སང་ཉིན ཉིན་གུང ༡༢:༠༠', + 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Hiziv da 11:00', + 'དི་རིང ཉིན་གུང ༡༡:༠༠', 'Now minus 1 hour' ); - assert.equal( - moment(a).add({ d: 1 }).calendar(), - 'Warcʼhoazh da 12:00', - 'tomorrow at the same time' - ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Decʼh da 12:00', + 'ཁ་སང ཉིན་གུང ༡༢:༠༠', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { - moment.locale('br'); - var i, m; for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [da] LT'), + m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [da] LT'), + m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [da] LT'), + m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days end of day' ); } }); test('calendar last week', function (assert) { - moment.locale('br'); - var i, m; + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('dddd [paset da] LT'), + m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [paset da] LT'), + m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [paset da] LT'), + m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days end of day' ); } }); test('calendar all else', function (assert) { - moment.locale('br'); var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); @@ -14096,68 +13984,87 @@ ); }); - test('special mutations for years', function (assert) { - moment.locale('br'); - var start = moment([2007, 1, 28]); + test('meridiem', function (assert) { assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'ur bloaz', - 'mutation 1 year' + moment([2011, 2, 23, 2, 30]).format('a'), + 'མཚན་མོ', + 'before dawn' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 2 }), true), - '2 vloaz', - 'mutation 2 years' + moment([2011, 2, 23, 9, 30]).format('a'), + 'ཞོགས་ཀས', + 'morning' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 3 }), true), - '3 bloaz', - 'mutation 3 years' + moment([2011, 2, 23, 14, 30]).format('a'), + 'ཉིན་གུང', + 'during day' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 4 }), true), - '4 bloaz', - 'mutation 4 years' + moment([2011, 2, 23, 17, 30]).format('a'), + 'དགོང་དག', + 'evening' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 bloaz', - 'mutation 5 years' + moment([2011, 2, 23, 19, 30]).format('a'), + 'དགོང་དག', + 'late evening' ); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'མཚན་མོ', 'night'); + assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 9 }), true), - '9 bloaz', - 'mutation 9 years' + moment([2011, 2, 23, 2, 30]).format('A'), + 'མཚན་མོ', + 'before dawn' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 10 }), true), - '10 vloaz', - 'mutation 10 years' + moment([2011, 2, 23, 9, 30]).format('A'), + 'ཞོགས་ཀས', + 'morning' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 21 }), true), - '21 bloaz', - 'mutation 21 years' + moment([2011, 2, 23, 14, 30]).format('A'), + 'ཉིན་གུང', + ' during day' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 22 }), true), - '22 vloaz', - 'mutation 22 years' + moment([2011, 2, 23, 17, 30]).format('A'), + 'དགོང་དག', + 'evening' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 133 }), true), - '133 bloaz', - 'mutation 133 years' + moment([2011, 2, 23, 19, 30]).format('A'), + 'དགོང་དག', + 'late evening' ); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'མཚན་མོ', 'night'); + }); + + test('weeks year starting sunday formatted', function (assert) { assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 148 }), true), - '148 vloaz', - 'mutation 148 years' + moment([2012, 0, 1]).format('w ww wo'), + '༡ ༠༡ ༡', + 'Jan 1 2012 should be week 1' ); assert.equal( - start.from(moment([2007, 1, 28]).add({ y: 261 }), true), - '261 bloaz', - 'mutation 261 years' + moment([2012, 0, 7]).format('w ww wo'), + '༡ ༠༡ ༡', + 'Jan 7 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '༢ ༠༢ ༢', + 'Jan 8 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '༢ ༠༢ ༢', + 'Jan 14 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '༣ ༠༣ ༣', + 'Jan 15 2012 should be week 3' ); }); @@ -14556,19 +14463,21 @@ defineCommonLocaleTests(name); } - localeModule('bs'); + localeModule('br'); test('parse', function (assert) { var tests = - 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split( + 'Genver Gen_Cʼhwevrer Cʼhwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split( '_' ), - i; + i, + monthsWithRegularQuoteMark = ["C'hwevrer", "C'hwe"]; + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), i, - input + ' should be month ' + (i + 1) + ' inp ' + mmm + input + ' should be month ' + (i + 1) ); } @@ -14598,36 +14507,66 @@ equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } + + // check with regular quote mark + equalTest(monthsWithRegularQuoteMark[0], 'MMM', 1); + equalTest(monthsWithRegularQuoteMark[1], 'MMM', 1); + equalTest(monthsWithRegularQuoteMark[0], 'MMMM', 1); + equalTest(monthsWithRegularQuoteMark[1], 'MMMM', 1); + equalTest(monthsWithRegularQuoteMark[0].toLocaleLowerCase(), 'MMM', 1); + equalTest(monthsWithRegularQuoteMark[1].toLocaleLowerCase(), 'MMM', 1); + equalTest(monthsWithRegularQuoteMark[0].toLocaleUpperCase(), 'MMMM', 1); + equalTest(monthsWithRegularQuoteMark[1].toLocaleUpperCase(), 'MMMM', 1); + + assert.notEqual( + moment(monthsWithRegularQuoteMark[0], 'MMM', true).month(), + 1 + ); + equalTestStrict(monthsWithRegularQuoteMark[1], 'MMM', 1); + equalTest(monthsWithRegularQuoteMark[0], 'MMMM', 1); + assert.notEqual( + moment(monthsWithRegularQuoteMark[1], 'MMMM', true).month(), + 1 + ); + equalTest(monthsWithRegularQuoteMark[1].toLocaleLowerCase(), 'MMM', 1); + equalTest(monthsWithRegularQuoteMark[0].toLocaleUpperCase(), 'MMMM', 1); + + // check weekday with regular quote mark + assert.equal( + moment("merc'her", 'dddd', true).day(), + 3, + "merc'her (regular quote)" + ); + assert.equal( + moment('mercʼher', 'dddd', true).day(), + 3, + 'mercʼher (special quote)' + ); }); test('format', function (assert) { + moment.locale('br'); var a = [ [ - 'dddd, Do MMMM YYYY, h:mm:ss a', - 'nedjelja, 14. februar 2010, 3:25:50 pm', + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sul, Cʼhwevrer 14vet 2010, 3:25:50 g.m.', ], - ['ddd, hA', 'ned., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], + ['ddd, h A', 'Sul, 3 g.m.'], + ['M Mo MM MMMM MMM', '2 2vet 02 Cʼhwevrer Cʼhwe'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], + ['D Do DD', '14 14vet 14'], + ['d do dddd ddd dd', '0 0vet Sul Sul Su'], + ['DDD DDDo DDDD', '45 45vet 045'], + ['w wo ww', '6 6vet 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'nedjelja, 14. februar 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. feb. 2010'], - ['lll', '14. feb. 2010 15:25'], - ['llll', 'ned., 14. feb. 2010 15:25'], + ['DDDo [devezh] [ar] [vloaz]', '45vet devezh ar vloaz'], + ['L', '14/02/2010'], + ['LL', '14 a viz Cʼhwevrer 2010'], + ['LLL', '14 a viz Cʼhwevrer 2010 15:25'], + ['LLLL', 'Sul, 14 a viz Cʼhwevrer 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -14637,45 +14576,47 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + moment.locale('br'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1añ', '1añ'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2vet', '2vet'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3vet', '3vet'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4vet', '4vet'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5vet', '5vet'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6vet', '6vet'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7vet', '7vet'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8vet', '8vet'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9vet', '9vet'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10vet', '10vet'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11vet', '11vet'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12vet', '12vet'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13vet', '13vet'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14vet', '14vet'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15vet', '15vet'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16vet', '16vet'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17vet', '17vet'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18vet', '18vet'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19vet', '19vet'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20vet', '20vet'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21vet', '21vet'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22vet', '22vet'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23vet', '23vet'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24vet', '24vet'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25vet', '25vet'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26vet', '26vet'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27vet', '27vet'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28vet', '28vet'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29vet', '29vet'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30vet', '30vet'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31vet', '31vet'); }); test('format month', function (assert) { + moment.locale('br'); var expected = - 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split( + 'Genver Gen_Cʼhwevrer Cʼhwe_Meurzh Meu_Ebrel Ebr_Mae Mae_Mezheven Eve_Gouere Gou_Eost Eos_Gwengolo Gwe_Here Her_Du Du_Kerzu Ker'.split( '_' ), i; @@ -14689,8 +14630,9 @@ }); test('format week', function (assert) { + moment.locale('br'); var expected = - 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split( + 'Sul Sul Su_Lun Lun Lu_Meurzh Meu Me_Mercʼher Mer Mer_Yaou Yao Ya_Gwener Gwe Gw_Sadorn Sad Sa'.split( '_' ), i; @@ -14704,288 +14646,279 @@ }); test('from', function (assert) { + moment.locale('br'); var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'par sekundi', + 'un nebeud segondennoù', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'jedna minuta', + 'ur vunutenn', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'jedna minuta', + 'ur vunutenn', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minute', + '2 vunutenn', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minuta', + '44 munutenn', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'jedan sat', + 'un eur', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'jedan sat', + 'un eur', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 sata', + '2 eur', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 sati', + '5 eur', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 sati', + '21 eur', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'dan', + 'un devezh', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'dan', + 'un devezh', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 dana', + '2 zevezh', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'dan', + 'un devezh', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 dana', + '5 devezh', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 dana', + '25 devezh', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'mjesec', + 'ur miz', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'mjesec', + 'ur miz', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'mjesec', + 'ur miz', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 mjeseca', + '2 viz', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 mjeseca', + '2 viz', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 mjeseca', + '3 miz', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'mjesec', + 'ur miz', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 mjeseci', + '5 miz', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'godinu', + 'ur bloaz', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 godine', + '2 vloaz', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'godinu', + 'ur bloaz', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 godina', + '5 bloaz', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix'); - assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix'); + moment.locale('br'); + assert.equal( + moment(30000).from(0), + 'a-benn un nebeud segondennoù', + 'prefix' + ); + assert.equal(moment(0).from(30000), 'un nebeud segondennoù ʼzo', 'suffix'); }); test('now from now', function (assert) { + moment.locale('br'); assert.equal( moment().fromNow(), - 'prije par sekundi', + 'un nebeud segondennoù ʼzo', 'now from now should display as in the past' ); }); test('fromNow', function (assert) { + moment.locale('br'); assert.equal( moment().add({ s: 30 }).fromNow(), - 'za par sekundi', + 'a-benn un nebeud segondennoù', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'za 5 dana', 'in 5 days'); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'a-benn 5 devezh', + 'in 5 days' + ); }); test('calendar day', function (assert) { + moment.locale('br'); + var a = moment().hours(12).minutes(0).seconds(0); assert.equal( moment(a).calendar(), - 'danas u 12:00', + 'Hiziv da 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'danas u 12:25', + 'Hiziv da 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'danas u 13:00', + 'Hiziv da 13:00', 'Now plus 1 hour' ); assert.equal( - moment(a).add({ d: 1 }).calendar(), - 'sutra u 12:00', - 'tomorrow at the same time' + moment(a).add({ h: 3 }).calendar(), + 'Hiziv da 15:00', + 'Now plus 3 hour' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'danas u 11:00', + 'Hiziv da 11:00', 'Now minus 1 hour' ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Warcʼhoazh da 12:00', + 'tomorrow at the same time' + ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'jučer u 12:00', + 'Decʼh da 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - } + moment.locale('br'); + var i, m; for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('dddd [da] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('dddd [da] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('dddd [da] LT'), 'Today + ' + i + ' days end of day' ); } }); test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - } + moment.locale('br'); + var i, m; for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('dddd [paset da] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('dddd [paset da] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('dddd [paset da] LT'), 'Today - ' + i + ' days end of day' ); } }); test('calendar all else', function (assert) { + moment.locale('br'); var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); @@ -15007,31 +14940,68 @@ ); }); - test('weeks year starting sunday formatted', function (assert) { + test('special mutations for years', function (assert) { + moment.locale('br'); + var start = moment([2007, 1, 28]); assert.equal( - moment([2011, 11, 26]).format('w ww wo'), - '1 01 1.', - 'Dec 26 2011 should be week 1' + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ur bloaz', + 'mutation 1 year' ); assert.equal( - moment([2012, 0, 1]).format('w ww wo'), - '1 01 1.', - 'Jan 1 2012 should be week 1' + start.from(moment([2007, 1, 28]).add({ y: 2 }), true), + '2 vloaz', + 'mutation 2 years' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), - '2 02 2.', - 'Jan 2 2012 should be week 2' + start.from(moment([2007, 1, 28]).add({ y: 3 }), true), + '3 bloaz', + 'mutation 3 years' ); assert.equal( - moment([2012, 0, 8]).format('w ww wo'), - '2 02 2.', - 'Jan 8 2012 should be week 2' + start.from(moment([2007, 1, 28]).add({ y: 4 }), true), + '4 bloaz', + 'mutation 4 years' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), - '3 03 3.', - 'Jan 9 2012 should be week 3' + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 bloaz', + 'mutation 5 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 9 }), true), + '9 bloaz', + 'mutation 9 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 10 }), true), + '10 vloaz', + 'mutation 10 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 21 }), true), + '21 bloaz', + 'mutation 21 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 22 }), true), + '22 vloaz', + 'mutation 22 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 133 }), true), + '133 bloaz', + 'mutation 133 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 148 }), true), + '148 vloaz', + 'mutation 148 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 261 }), true), + '261 bloaz', + 'mutation 261 years' ); }); @@ -15430,11 +15400,11 @@ defineCommonLocaleTests(name); } - localeModule('ca'); + localeModule('bs'); test('parse', function (assert) { var tests = - 'gener gen._febrer febr._març març_abril abr._maig maig_juny juny_juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split( + 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split( '_' ), i; @@ -15442,7 +15412,7 @@ assert.equal( moment(input, mmm).month(), i, - input + ' should be month ' + (i + 1) + input + ' should be month ' + (i + 1) + ' inp ' + mmm ); } @@ -15478,30 +15448,30 @@ var a = [ [ 'dddd, Do MMMM YYYY, h:mm:ss a', - 'diumenge, 14è de febrer 2010, 3:25:50 pm', + 'nedjelja, 14. februar 2010, 3:25:50 pm', ], - ['ddd, hA', 'dg., 3PM'], - ['M Mo MM MMMM MMM', '2 2n 02 febrer febr.'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb.'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14è 14'], - ['d do dddd ddd dd', '0 0è diumenge dg. dg'], - ['DDD DDDo DDDD', '45 45è 045'], - ['w wo ww', '6 6a 06'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45è day of the year'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 de febrer de 2010'], - ['LLL', '14 de febrer de 2010 a les 15:25'], - ['LLLL', 'diumenge 14 de febrer de 2010 a les 15:25'], - ['l', '14/2/2010'], - ['ll', '14 febr. 2010'], - ['lll', '14 febr. 2010, 15:25'], - ['llll', 'dg. 14 febr. 2010, 15:25'], + ['L', '14.02.2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedjelja, 14. februar 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 15:25'], + ['llll', 'ned., 14. feb. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -15511,45 +15481,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1r', '1r'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2n', '2n'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3r', '3r'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4t', '4t'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5è', '5è'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6è', '6è'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7è', '7è'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8è', '8è'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9è', '9è'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10è', '10è'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11è', '11è'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12è', '12è'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13è', '13è'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14è', '14è'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15è', '15è'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16è', '16è'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17è', '17è'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18è', '18è'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19è', '19è'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20è', '20è'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21è', '21è'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22è', '22è'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23è', '23è'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24è', '24è'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25è', '25è'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26è', '26è'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27è', '27è'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28è', '28è'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29è', '29è'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30è', '30è'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31è', '31è'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); }); test('format month', function (assert) { var expected = - 'gener gen._febrer febr._març març_abril abr._maig maig_juny juny_juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split( + 'januar jan._februar feb._mart mar._april apr._maj maj._juni jun._juli jul._august aug._septembar sep._oktobar okt._novembar nov._decembar dec.'.split( '_' ), i; @@ -15564,7 +15534,7 @@ test('format week', function (assert) { var expected = - 'diumenge dg. dg_dilluns dl. dl_dimarts dt. dt_dimecres dc. dc_dijous dj. dj_divendres dv. dv_dissabte ds. ds'.split( + 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split( '_' ), i; @@ -15581,170 +15551,177 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'uns segons', + 'par sekundi', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'un minut', + 'jedna minuta', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'un minut', + 'jedna minuta', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minuts', + '2 minute', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minuts', + '44 minuta', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'una hora', + 'jedan sat', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'una hora', + 'jedan sat', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 hores', + '2 sata', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 hores', + '5 sati', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 hores', + '21 sati', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'un dia', + 'dan', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'un dia', + 'dan', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 dies', + '2 dana', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'un dia', + 'dan', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 dies', + '5 dana', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 dies', + '25 dana', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'un mes', + 'mjesec', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'un mes', + 'mjesec', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'un mes', + 'mjesec', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 mesos', + '2 mjeseca', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 mesos', + '2 mjeseca', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 mesos', + '3 mjeseca', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'un mes', + 'mjesec', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 mesos', + '5 mjeseci', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'un any', + 'godinu', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 anys', + '2 godine', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'un any', + 'godinu', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 anys', + '5 godina', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), "d'aquí uns segons", 'prefix'); - assert.equal(moment(0).from(30000), 'fa uns segons', 'suffix'); + assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix'); + assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'fa uns segons', + 'prije par sekundi', 'now from now should display as in the past' ); + assert.equal( + moment().subtract({ h: 1 }).fromNow(), + 'prije jedan sat', + '1 hour ago' + ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - "d'aquí uns segons", - "d'aquí uns segons" + 'za par sekundi', + 'in a few seconds' ); assert.equal( - moment().add({ d: 5 }).fromNow(), - "d'aquí 5 dies", - "d'aquí 5 dies" + moment().add({ m: 1 }).fromNow(), + 'za jednu minutu', + 'in 1 minute' ); + assert.equal(moment().add({ h: 1 }).fromNow(), 'za jedan sat', 'in 1 hour'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'za 5 dana', 'in 5 days'); }); test('calendar day', function (assert) { @@ -15752,60 +15729,72 @@ assert.equal( moment(a).calendar(), - 'avui a les 12:00', + 'danas u 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'avui a les 12:25', + 'danas u 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'avui a les 13:00', + 'danas u 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'demà a les 12:00', + 'sutra u 12:00', 'tomorrow at the same time' ); - assert.equal( - moment(a).add({ d: 1, h: -1 }).calendar(), - 'demà a les 11:00', - 'tomorrow minus 1 hour' - ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'avui a les 11:00', + 'danas u 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'ahir a les 12:00', + 'jučer u 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + } + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [a ' + (m.hours() !== 1 ? 'les' : 'la') + '] LT'), + m.format(makeFormat(m)), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [a ' + (m.hours() !== 1 ? 'les' : 'la') + '] LT'), + m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [a ' + (m.hours() !== 1 ? 'les' : 'la') + '] LT'), + m.format(makeFormat(m)), 'Today + ' + i + ' days end of day' ); } @@ -15813,35 +15802,39 @@ test('calendar last week', function (assert) { var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + } + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format( - '[el] dddd [passat a ' + - (m.hours() !== 1 ? 'les' : 'la') + - '] LT' - ), + m.format(makeFormat(m)), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format( - '[el] dddd [passat a ' + - (m.hours() !== 1 ? 'les' : 'la') + - '] LT' - ), + m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format( - '[el] dddd [passat a ' + - (m.hours() !== 1 ? 'les' : 'la') + - '] LT' - ), + m.format(makeFormat(m)), 'Today - ' + i + ' days end of day' ); } @@ -15870,39 +15863,33 @@ }); test('weeks year starting sunday formatted', function (assert) { + assert.equal( + moment([2011, 11, 26]).format('w ww wo'), + '1 01 1.', + 'Dec 26 2011 should be week 1' + ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52a', - 'Jan 1 2012 should be week 52' + '1 01 1.', + 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1a', - 'Jan 2 2012 should be week 1' + '2 02 2.', + 'Jan 2 2012 should be week 2' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1a', - 'Jan 8 2012 should be week 1' + '2 02 2.', + 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2a', - 'Jan 9 2012 should be week 2' - ); - assert.equal( - moment([2012, 0, 15]).format('w ww wo'), - '2 02 2a', - 'Jan 15 2012 should be week 2' + '3 03 3.', + 'Jan 9 2012 should be week 3' ); }); - test('day and month', function (assert) { - assert.equal(moment([2012, 1, 15]).format('D MMMM'), '15 de febrer'); - assert.equal(moment([2012, 9, 15]).format('D MMMM'), "15 d'octubre"); - assert.equal(moment([2012, 9, 15]).format('MMMM, D'), 'octubre, 15'); - }); - }))); @@ -16298,21 +16285,22 @@ defineCommonLocaleTests(name); } - localeModule('cs'); + localeModule('ca'); test('parse', function (assert) { var tests = - 'leden led ledna_únor úno února_březen bře března_duben dub dubna_květen kvě května_červen čvn června_červenec čvc července_srpen srp srpna_září zář září_říjen říj října_listopad lis listopadu_prosinec pro prosince'.split( + 'gener gen._febrer febr._març març_abril abr._maig maig_juny juny_juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split( '_' ), i; - function equalTest(input, mmm, monthIndex) { + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), - monthIndex, - input + ' ' + mmm + ' should be month ' + (monthIndex + 1) + i, + input + ' should be month ' + (i + 1) ); } + function equalTestStrict(input, mmm, monthIndex) { assert.equal( moment(input, mmm, true).month(), @@ -16320,58 +16308,55 @@ input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) ); } + for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][2], 'MMM', i); equalTest(tests[i][0], 'MMMM', i); equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][2], 'MMMM', i); equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][2].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][2].toLocaleUpperCase(), 'MMMM', i); equalTestStrict(tests[i][1], 'MMM', i); equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][2], 'MMMM', i); equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(tests[i][2].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][2].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss', 'neděle, února 14. 2010, 3:25:50'], - ['ddd, h', 'ne, 3'], - ['M Mo MM MMMM MMM', '2 2. 02 února úno'], + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'diumenge, 14è de febrer 2010, 3:25:50 pm', + ], + ['ddd, hA', 'dg., 3PM'], + ['M Mo MM MMMM MMM', '2 2n 02 febrer febr.'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. neděle ne ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], + ['D Do DD', '14 14è 14'], + ['d do dddd ddd dd', '0 0è diumenge dg. dg'], + ['DDD DDDo DDDD', '45 45è 045'], + ['w wo ww', '6 6a 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['DDDo [den v roce]', '45. den v roce'], + ['[the] DDDo [day of the year]', 'the 45è day of the year'], ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. února 2010'], - ['LLL', '14. února 2010 15:25'], - ['LLLL', 'neděle 14. února 2010 15:25'], - ['l', '14. 2. 2010'], - ['ll', '14. úno 2010'], - ['lll', '14. úno 2010 15:25'], - ['llll', 'ne 14. úno 2010 15:25'], + ['L', '14/02/2010'], + ['LL', '14 de febrer de 2010'], + ['LLL', '14 de febrer de 2010 a les 15:25'], + ['LLLL', 'diumenge 14 de febrer de 2010 a les 15:25'], + ['l', '14/2/2010'], + ['ll', '14 febr. 2010'], + ['lll', '14 febr. 2010, 15:25'], + ['llll', 'dg. 14 febr. 2010, 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -16381,45 +16366,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1r', '1r'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2n', '2n'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3r', '3r'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4t', '4t'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5è', '5è'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6è', '6è'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7è', '7è'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8è', '8è'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9è', '9è'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10è', '10è'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11è', '11è'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12è', '12è'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13è', '13è'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14è', '14è'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15è', '15è'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16è', '16è'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17è', '17è'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18è', '18è'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19è', '19è'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20è', '20è'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21è', '21è'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22è', '22è'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23è', '23è'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24è', '24è'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25è', '25è'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26è', '26è'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27è', '27è'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28è', '28è'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29è', '29è'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30è', '30è'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31è', '31è'); }); test('format month', function (assert) { var expected = - 'ledna led_února úno_března bře_dubna dub_května kvě_června čvn_července čvc_srpna srp_září zář_října říj_listopadu lis_prosince pro'.split( + 'gener gen._febrer febr._març març_abril abr._maig maig_juny juny_juliol jul._agost ag._setembre set._octubre oct._novembre nov._desembre des.'.split( '_' ), i; @@ -16432,35 +16417,9 @@ } }); - test('format month case', function (assert) { - var months = { - nominative: - 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( - '_' - ), - accusative: - 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( - '_' - ), - }, - i; - for (i = 0; i < 12; i++) { - assert.equal( - moment([2011, i, 1]).format('D MMMM'), - '1 ' + months.accusative[i], - '1 ' + months.accusative[i] - ); - assert.equal( - moment([2011, i, 1]).format('MMMM'), - months.nominative[i], - '1 ' + months.nominative[i] - ); - } - }); - test('format week', function (assert) { var expected = - 'neděle ne ne_pondělí po po_úterý út út_středa st st_čtvrtek čt čt_pátek pá pá_sobota so so'.split( + 'diumenge dg. dg_dilluns dl. dl_dimarts dt. dt_dimecres dc. dc_dijous dj. dj_divendres dv. dv_dissabte ds. ds'.split( '_' ), i; @@ -16477,282 +16436,169 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'pár sekund', + 'uns segons', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'minuta', + 'un minut', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'minuta', + 'un minut', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minuty', + '2 minuts', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minut', + '44 minuts', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'hodina', + 'una hora', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'hodina', + 'una hora', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 hodiny', + '2 hores', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 hodin', + '5 hores', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 hodin', + '21 hores', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'den', + 'un dia', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'den', + 'un dia', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 dny', + '2 dies', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'den', + 'un dia', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 dní', + '5 dies', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 dní', + '25 dies', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'měsíc', + 'un mes', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'měsíc', + 'un mes', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'měsíc', + 'un mes', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 měsíce', + '2 mesos', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 měsíce', + '2 mesos', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 měsíce', + '3 mesos', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'měsíc', + 'un mes', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 měsíců', + '5 mesos', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'rok', + 'un any', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 roky', + '2 anys', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'rok', + 'un any', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 let', + '5 anys', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za pár sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'před pár sekundami', 'suffix'); + assert.equal(moment(30000).from(0), "d'aquí uns segons", 'prefix'); + assert.equal(moment(0).from(30000), 'fa uns segons', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'před pár sekundami', + 'fa uns segons', 'now from now should display as in the past' ); }); - test('fromNow (future)', function (assert) { + test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'za pár sekund', - 'in a few seconds' - ); - assert.equal(moment().add({ m: 1 }).fromNow(), 'za minutu', 'in a minute'); - assert.equal( - moment().add({ m: 3 }).fromNow(), - 'za 3 minuty', - 'in 3 minutes' - ); - assert.equal( - moment().add({ m: 10 }).fromNow(), - 'za 10 minut', - 'in 10 minutes' - ); - assert.equal(moment().add({ h: 1 }).fromNow(), 'za hodinu', 'in an hour'); - assert.equal(moment().add({ h: 3 }).fromNow(), 'za 3 hodiny', 'in 3 hours'); - assert.equal( - moment().add({ h: 10 }).fromNow(), - 'za 10 hodin', - 'in 10 hours' - ); - assert.equal(moment().add({ d: 1 }).fromNow(), 'za den', 'in a day'); - assert.equal(moment().add({ d: 3 }).fromNow(), 'za 3 dny', 'in 3 days'); - assert.equal(moment().add({ d: 10 }).fromNow(), 'za 10 dní', 'in 10 days'); - assert.equal(moment().add({ M: 1 }).fromNow(), 'za měsíc', 'in a month'); - assert.equal( - moment().add({ M: 3 }).fromNow(), - 'za 3 měsíce', - 'in 3 months' - ); - assert.equal( - moment().add({ M: 10 }).fromNow(), - 'za 10 měsíců', - 'in 10 months' - ); - assert.equal(moment().add({ y: 1 }).fromNow(), 'za rok', 'in a year'); - assert.equal(moment().add({ y: 3 }).fromNow(), 'za 3 roky', 'in 3 years'); - assert.equal(moment().add({ y: 10 }).fromNow(), 'za 10 let', 'in 10 years'); - }); - - test('fromNow (past)', function (assert) { - assert.equal( - moment().subtract({ s: 30 }).fromNow(), - 'před pár sekundami', - 'a few seconds ago' - ); - assert.equal( - moment().subtract({ m: 1 }).fromNow(), - 'před minutou', - 'a minute ago' - ); - assert.equal( - moment().subtract({ m: 3 }).fromNow(), - 'před 3 minutami', - '3 minutes ago' - ); - assert.equal( - moment().subtract({ m: 10 }).fromNow(), - 'před 10 minutami', - '10 minutes ago' - ); - assert.equal( - moment().subtract({ h: 1 }).fromNow(), - 'před hodinou', - 'an hour ago' - ); - assert.equal( - moment().subtract({ h: 3 }).fromNow(), - 'před 3 hodinami', - '3 hours ago' - ); - assert.equal( - moment().subtract({ h: 10 }).fromNow(), - 'před 10 hodinami', - '10 hours ago' - ); - assert.equal( - moment().subtract({ d: 1 }).fromNow(), - 'před dnem', - 'a day ago' - ); - assert.equal( - moment().subtract({ d: 3 }).fromNow(), - 'před 3 dny', - '3 days ago' - ); - assert.equal( - moment().subtract({ d: 10 }).fromNow(), - 'před 10 dny', - '10 days ago' - ); - assert.equal( - moment().subtract({ M: 1 }).fromNow(), - 'před měsícem', - 'a month ago' - ); - assert.equal( - moment().subtract({ M: 3 }).fromNow(), - 'před 3 měsíci', - '3 months ago' - ); - assert.equal( - moment().subtract({ M: 10 }).fromNow(), - 'před 10 měsíci', - '10 months ago' - ); - assert.equal( - moment().subtract({ y: 1 }).fromNow(), - 'před rokem', - 'a year ago' - ); - assert.equal( - moment().subtract({ y: 3 }).fromNow(), - 'před 3 lety', - '3 years ago' + "d'aquí uns segons", + "d'aquí uns segons" ); assert.equal( - moment().subtract({ y: 10 }).fromNow(), - 'před 10 lety', - '10 years ago' + moment().add({ d: 5 }).fromNow(), + "d'aquí 5 dies", + "d'aquí 5 dies" ); }); @@ -16761,127 +16607,96 @@ assert.equal( moment(a).calendar(), - 'dnes v 12:00', + 'avui a les 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'dnes v 12:25', + 'avui a les 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'dnes v 13:00', + 'avui a les 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'zítra v 12:00', + 'demà a les 12:00', 'tomorrow at the same time' ); + assert.equal( + moment(a).add({ d: 1, h: -1 }).calendar(), + 'demà a les 11:00', + 'tomorrow minus 1 hour' + ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'dnes v 11:00', + 'avui a les 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'včera v 12:00', + 'ahir a les 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { - var i, m, nextDay; + var i, m; for (i = 2; i < 7; i++) { m = moment().add({ d: i }); - nextDay = ''; - switch (m.day()) { - case 0: - nextDay = 'v neděli'; - break; - case 1: - nextDay = 'v pondělí'; - break; - case 2: - nextDay = 'v úterý'; - break; - case 3: - nextDay = 've středu'; - break; - case 4: - nextDay = 've čtvrtek'; - break; - case 5: - nextDay = 'v pátek'; - break; - case 6: - nextDay = 'v sobotu'; - break; - } assert.equal( m.calendar(), - m.format('[' + nextDay + '] [v] LT'), + m.format('dddd [a ' + (m.hours() !== 1 ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[' + nextDay + '] [v] LT'), + m.format('dddd [a ' + (m.hours() !== 1 ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[' + nextDay + '] [v] LT'), + m.format('dddd [a ' + (m.hours() !== 1 ? 'les' : 'la') + '] LT'), 'Today + ' + i + ' days end of day' ); } }); test('calendar last week', function (assert) { - var i, m, lastDay; + var i, m; for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); - lastDay = ''; - switch (m.day()) { - case 0: - lastDay = 'minulou neděli'; - break; - case 1: - lastDay = 'minulé pondělí'; - break; - case 2: - lastDay = 'minulé úterý'; - break; - case 3: - lastDay = 'minulou středu'; - break; - case 4: - lastDay = 'minulý čtvrtek'; - break; - case 5: - lastDay = 'minulý pátek'; - break; - case 6: - lastDay = 'minulou sobotu'; - break; - } assert.equal( m.calendar(), - m.format('[' + lastDay + '] [v] LT'), + m.format( + '[el] dddd [passat a ' + + (m.hours() !== 1 ? 'les' : 'la') + + '] LT' + ), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[' + lastDay + '] [v] LT'), + m.format( + '[el] dddd [passat a ' + + (m.hours() !== 1 ? 'les' : 'la') + + '] LT' + ), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[' + lastDay + '] [v] LT'), + m.format( + '[el] dddd [passat a ' + + (m.hours() !== 1 ? 'les' : 'la') + + '] LT' + ), 'Today - ' + i + ' days end of day' ); } @@ -16909,57 +16724,40 @@ ); }); - test('humanize duration', function (assert) { - assert.equal( - moment.duration(1, 'minutes').humanize(), - 'minuta', - 'a minute (future)' - ); - assert.equal( - moment.duration(1, 'minutes').humanize(true), - 'za minutu', - 'in a minute' - ); - assert.equal( - moment.duration(-1, 'minutes').humanize(), - 'minuta', - 'a minute (past)' - ); - assert.equal( - moment.duration(-1, 'minutes').humanize(true), - 'před minutou', - 'a minute ago' - ); - }); - test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52.', + '52 52 52a', 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1.', + '1 01 1a', 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1.', + '1 01 1a', 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2.', + '2 02 2a', 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2.', + '2 02 2a', 'Jan 15 2012 should be week 2' ); }); + test('day and month', function (assert) { + assert.equal(moment([2012, 1, 15]).format('D MMMM'), '15 de febrer'); + assert.equal(moment([2012, 9, 15]).format('D MMMM'), "15 d'octubre"); + assert.equal(moment([2012, 9, 15]).format('MMMM, D'), 'octubre, 15'); + }); + }))); @@ -17355,22 +17153,21 @@ defineCommonLocaleTests(name); } - localeModule('cv'); + localeModule('cs'); test('parse', function (assert) { var tests = - 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split( + 'leden led ledna_únor úno února_březen bře března_duben dub dubna_květen kvě května_červen čvn června_červenec čvc července_srpen srp srpna_září zář září_říjen říj října_listopad lis listopadu_prosinec pro prosince'.split( '_' ), i; - function equalTest(input, mmm, i) { + function equalTest(input, mmm, monthIndex) { assert.equal( moment(input, mmm).month(), - i, - input + ' should be month ' + (i + 1) + monthIndex, + input + ' ' + mmm + ' should be month ' + (monthIndex + 1) ); } - function equalTestStrict(input, mmm, monthIndex) { assert.equal( moment(input, mmm, true).month(), @@ -17378,55 +17175,58 @@ input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) ); } - for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][2], 'MMM', i); equalTest(tests[i][0], 'MMMM', i); equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][2], 'MMMM', i); equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleUpperCase(), 'MMMM', i); equalTestStrict(tests[i][1], 'MMM', i); equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][2], 'MMMM', i); equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTestStrict(tests[i][2].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][2].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ - [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'вырсарникун, нарӑс 14-мӗш 2010, 3:25:50 pm', - ], - ['ddd, hA', 'выр, 3PM'], - ['M Mo MM MMMM MMM', '2 2-мӗш 02 нарӑс нар'], + ['dddd, Do MMMM YYYY, h:mm:ss', 'neděle, 14. února 2010, 3:25:50'], + ['ddd, h', 'ne, 3'], + ['M Mo MM MMMM MMM', '2 2. 02 únor úno'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-мӗш 14'], - ['d do dddd ddd dd', '0 0-мӗш вырсарникун выр вр'], - ['DDD DDDo DDDD', '45 45-мӗш 045'], - ['w wo ww', '7 7-мӗш 07'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. neděle ne ne'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['Ҫулӑн DDDo кунӗ', 'Ҫулӑн 45-мӗш кунӗ'], + ['DDDo [den v roce]', '45. den v roce'], ['LTS', '15:25:50'], - ['L', '14-02-2010'], - ['LL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ'], - ['LLL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'], - ['LLLL', 'вырсарникун, 2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'], - ['l', '14-2-2010'], - ['ll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ'], - ['lll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25'], - ['llll', 'выр, 2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25'], + ['L', '14.02.2010'], + ['LL', '14. února 2010'], + ['LLL', '14. února 2010 15:25'], + ['LLLL', 'neděle 14. února 2010 15:25'], + ['l', '14. 2. 2010'], + ['ll', '14. úno 2010'], + ['lll', '14. úno 2010 15:25'], + ['llll', 'ne 14. úno 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -17436,45 +17236,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-мӗш', '1-мӗш'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-мӗш', '2-мӗш'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-мӗш', '3-мӗш'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-мӗш', '4-мӗш'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-мӗш', '5-мӗш'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-мӗш', '6-мӗш'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-мӗш', '7-мӗш'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-мӗш', '8-мӗш'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-мӗш', '9-мӗш'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-мӗш', '10-мӗш'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-мӗш', '11-мӗш'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-мӗш', '12-мӗш'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-мӗш', '13-мӗш'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-мӗш', '14-мӗш'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-мӗш', '15-мӗш'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-мӗш', '16-мӗш'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-мӗш', '17-мӗш'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-мӗш', '18-мӗш'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-мӗш', '19-мӗш'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-мӗш', '20-мӗш'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-мӗш', '21-мӗш'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-мӗш', '22-мӗш'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-мӗш', '23-мӗш'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-мӗш', '24-мӗш'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-мӗш', '25-мӗш'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-мӗш', '26-мӗш'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-мӗш', '27-мӗш'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-мӗш', '28-мӗш'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-мӗш', '29-мӗш'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-мӗш', '30-мӗш'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-мӗш', '31-мӗш'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); }); test('format month', function (assert) { var expected = - 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split( + 'leden led_únor úno_březen bře_duben dub_květen kvě_červen čvn_červenec čvc_srpen srp_září zář_říjen říj_listopad lis_prosinec pro'.split( '_' ), i; @@ -17487,9 +17287,35 @@ } }); + test('format month case', function (assert) { + var months = { + accusative: + 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( + '_' + ), + nominative: + 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( + '_' + ), + }, + i; + for (i = 0; i < 12; i++) { + assert.equal( + moment([2011, i, 1]).format('D MMMM'), + '1 ' + months.accusative[i], + '1 ' + months.accusative[i] + ); + assert.equal( + moment([2011, i, 1]).format('MMMM'), + months.nominative[i], + '1 ' + months.nominative[i] + ); + } + }); + test('format week', function (assert) { var expected = - 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кӗҫнерникун кӗҫ кҫ_эрнекун эрн эр_шӑматкун шӑм шм'.split( + 'neděle ne ne_pondělí po po_úterý út út_středa st st_čtvrtek čt čt_pátek pá pá_sobota so so'.split( '_' ), i; @@ -17506,257 +17332,411 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'пӗр-ик ҫеккунт', - '44 sekunder = a few seconds' + 'pár sekund', + '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'пӗр минут', + 'minuta', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'пӗр минут', + 'minuta', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 минут', + '2 minuty', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 минут', + '44 minut', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'пӗр сехет', + 'hodina', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'пӗр сехет', + 'hodina', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 сехет', + '2 hodiny', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 сехет', + '5 hodin', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 сехет', + '21 hodin', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'пӗр кун', + 'den', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'пӗр кун', + 'den', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 кун', + '2 dny', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'пӗр кун', + 'den', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 кун', + '5 dní', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 кун', + '25 dní', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'пӗр уйӑх', + 'měsíc', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'пӗр уйӑх', + 'měsíc', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'пӗр уйӑх', + 'měsíc', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 уйӑх', + '2 měsíce', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 уйӑх', + '2 měsíce', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 уйӑх', + '3 měsíce', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'пӗр уйӑх', + 'měsíc', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 уйӑх', + '5 měsíců', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'пӗр ҫул', + 'rok', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 ҫул', + '2 roky', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'пӗр ҫул', + 'rok', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 ҫул', + '5 let', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'пӗр-ик ҫеккунтран', 'prefix'); - assert.equal(moment(0).from(30000), 'пӗр-ик ҫеккунт каялла', 'suffix'); + assert.equal(moment(30000).from(0), 'za pár sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'před pár sekundami', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'пӗр-ик ҫеккунт каялла', + 'před pár sekundami', 'now from now should display as in the past' ); }); - test('fromNow', function (assert) { + test('fromNow (future)', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'пӗр-ик ҫеккунтран', + 'za pár sekund', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '5 кунран', 'in 5 days'); + assert.equal(moment().add({ m: 1 }).fromNow(), 'za minutu', 'in a minute'); assert.equal( - moment().add({ h: 2 }).fromNow(), - '2 сехетрен', - 'in 2 hours, the right suffix!' + moment().add({ m: 3 }).fromNow(), + 'za 3 minuty', + 'in 3 minutes' ); assert.equal( - moment().add({ y: 3 }).fromNow(), - '3 ҫултан', - 'in 3 years, the right suffix!' + moment().add({ m: 10 }).fromNow(), + 'za 10 minut', + 'in 10 minutes' + ); + assert.equal(moment().add({ h: 1 }).fromNow(), 'za hodinu', 'in an hour'); + assert.equal(moment().add({ h: 3 }).fromNow(), 'za 3 hodiny', 'in 3 hours'); + assert.equal( + moment().add({ h: 10 }).fromNow(), + 'za 10 hodin', + 'in 10 hours' + ); + assert.equal(moment().add({ d: 1 }).fromNow(), 'za den', 'in a day'); + assert.equal(moment().add({ d: 3 }).fromNow(), 'za 3 dny', 'in 3 days'); + assert.equal(moment().add({ d: 10 }).fromNow(), 'za 10 dní', 'in 10 days'); + assert.equal(moment().add({ M: 1 }).fromNow(), 'za měsíc', 'in a month'); + assert.equal( + moment().add({ M: 3 }).fromNow(), + 'za 3 měsíce', + 'in 3 months' + ); + assert.equal( + moment().add({ M: 10 }).fromNow(), + 'za 10 měsíců', + 'in 10 months' + ); + assert.equal(moment().add({ y: 1 }).fromNow(), 'za rok', 'in a year'); + assert.equal(moment().add({ y: 3 }).fromNow(), 'za 3 roky', 'in 3 years'); + assert.equal(moment().add({ y: 10 }).fromNow(), 'za 10 let', 'in 10 years'); + }); + + test('fromNow (past)', function (assert) { + assert.equal( + moment().subtract({ s: 30 }).fromNow(), + 'před pár sekundami', + 'a few seconds ago' + ); + assert.equal( + moment().subtract({ m: 1 }).fromNow(), + 'před minutou', + 'a minute ago' + ); + assert.equal( + moment().subtract({ m: 3 }).fromNow(), + 'před 3 minutami', + '3 minutes ago' + ); + assert.equal( + moment().subtract({ m: 10 }).fromNow(), + 'před 10 minutami', + '10 minutes ago' + ); + assert.equal( + moment().subtract({ h: 1 }).fromNow(), + 'před hodinou', + 'an hour ago' + ); + assert.equal( + moment().subtract({ h: 3 }).fromNow(), + 'před 3 hodinami', + '3 hours ago' + ); + assert.equal( + moment().subtract({ h: 10 }).fromNow(), + 'před 10 hodinami', + '10 hours ago' + ); + assert.equal( + moment().subtract({ d: 1 }).fromNow(), + 'před dnem', + 'a day ago' + ); + assert.equal( + moment().subtract({ d: 3 }).fromNow(), + 'před 3 dny', + '3 days ago' + ); + assert.equal( + moment().subtract({ d: 10 }).fromNow(), + 'před 10 dny', + '10 days ago' + ); + assert.equal( + moment().subtract({ M: 1 }).fromNow(), + 'před měsícem', + 'a month ago' + ); + assert.equal( + moment().subtract({ M: 3 }).fromNow(), + 'před 3 měsíci', + '3 months ago' + ); + assert.equal( + moment().subtract({ M: 10 }).fromNow(), + 'před 10 měsíci', + '10 months ago' + ); + assert.equal( + moment().subtract({ y: 1 }).fromNow(), + 'před rokem', + 'a year ago' + ); + assert.equal( + moment().subtract({ y: 3 }).fromNow(), + 'před 3 lety', + '3 years ago' + ); + assert.equal( + moment().subtract({ y: 10 }).fromNow(), + 'před 10 lety', + '10 years ago' ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); + assert.equal( moment(a).calendar(), - 'Паян 12:00 сехетре', + 'dnes v 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Паян 12:25 сехетре', + 'dnes v 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Паян 13:00 сехетре', + 'dnes v 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Ыран 12:00 сехетре', + 'zítra v 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Паян 11:00 сехетре', + 'dnes v 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Ӗнер 12:00 сехетре', + 'včera v 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { - var i, m; - + var i, m, nextDay; for (i = 2; i < 7; i++) { m = moment().add({ d: i }); + nextDay = ''; + switch (m.day()) { + case 0: + nextDay = 'v neděli'; + break; + case 1: + nextDay = 'v pondělí'; + break; + case 2: + nextDay = 'v úterý'; + break; + case 3: + nextDay = 've středu'; + break; + case 4: + nextDay = 've čtvrtek'; + break; + case 5: + nextDay = 'v pátek'; + break; + case 6: + nextDay = 'v sobotu'; + break; + } assert.equal( m.calendar(), - m.format('[Ҫитес] dddd LT [сехетре]'), + m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[Ҫитес] dddd LT [сехетре]'), + m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[Ҫитес] dddd LT [сехетре]'), + m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days end of day' ); } }); test('calendar last week', function (assert) { - var i, m; - + var i, m, lastDay; for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); + lastDay = ''; + switch (m.day()) { + case 0: + lastDay = 'minulou neděli'; + break; + case 1: + lastDay = 'minulé pondělí'; + break; + case 2: + lastDay = 'minulé úterý'; + break; + case 3: + lastDay = 'minulou středu'; + break; + case 4: + lastDay = 'minulý čtvrtek'; + break; + case 5: + lastDay = 'minulý pátek'; + break; + case 6: + lastDay = 'minulou sobotu'; + break; + } assert.equal( m.calendar(), - m.format('[Иртнӗ] dddd LT [сехетре]'), + m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[Иртнӗ] dddd LT [сехетре]'), + m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[Иртнӗ] dddd LT [сехетре]'), + m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days end of day' ); } @@ -17784,34 +17764,54 @@ ); }); - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - - test('weeks year starting sunday formatted', function (assert) { + test('humanize duration', function (assert) { assert.equal( - moment([2011, 11, 26]).format('w ww wo'), - '1 01 1-мӗш', - 'Dec 26 2011 should be week 1' + moment.duration(1, 'minutes').humanize(), + 'minuta', + 'a minute (future)' + ); + assert.equal( + moment.duration(1, 'minutes').humanize(true), + 'za minutu', + 'in a minute' + ); + assert.equal( + moment.duration(-1, 'minutes').humanize(), + 'minuta', + 'a minute (past)' ); + assert.equal( + moment.duration(-1, 'minutes').humanize(true), + 'před minutou', + 'a minute ago' + ); + }); + + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1-мӗш', - 'Jan 1 2012 should be week 1' + '52 52 52.', + 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '2 02 2-мӗш', - 'Jan 2 2012 should be week 2' + '1 01 1.', + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2-мӗш', - 'Jan 8 2012 should be week 2' + '1 01 1.', + 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '3 03 3-мӗш', - 'Jan 9 2012 should be week 3' + '2 02 2.', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' ); }); @@ -18210,15 +18210,14 @@ defineCommonLocaleTests(name); } - localeModule('cy'); + localeModule('cv'); test('parse', function (assert) { var tests = - 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split( + 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split( '_' ), i; - function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -18259,30 +18258,30 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Dydd Sul, Chwefror 14eg 2010, 3:25:50 pm', + 'вырсарникун, нарӑс 14-мӗш 2010, 3:25:50 pm', ], - ['ddd, hA', 'Sul, 3PM'], - ['M Mo MM MMMM MMM', '2 2il 02 Chwefror Chwe'], + ['ddd, hA', 'выр, 3PM'], + ['M Mo MM MMMM MMM', '2 2-мӗш 02 нарӑс нар'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14eg 14'], - ['d do dddd ddd dd', '0 0 Dydd Sul Sul Su'], - ['DDD DDDo DDDD', '45 45ain 045'], - ['w wo ww', '6 6ed 06'], + ['D Do DD', '14 14-мӗш 14'], + ['d do dddd ddd dd', '0 0-мӗш вырсарникун выр вр'], + ['DDD DDDo DDDD', '45 45-мӗш 045'], + ['w wo ww', '7 7-мӗш 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45ain day of the year'], + ['Ҫулӑн DDDo кунӗ', 'Ҫулӑн 45-мӗш кунӗ'], ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 Chwefror 2010'], - ['LLL', '14 Chwefror 2010 15:25'], - ['LLLL', 'Dydd Sul, 14 Chwefror 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Chwe 2010'], - ['lll', '14 Chwe 2010 15:25'], - ['llll', 'Sul, 14 Chwe 2010 15:25'], + ['L', '14-02-2010'], + ['LL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ'], + ['LLL', '2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'], + ['LLLL', 'вырсарникун, 2010 ҫулхи нарӑс уйӑхӗн 14-мӗшӗ, 15:25'], + ['l', '14-2-2010'], + ['ll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ'], + ['lll', '2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25'], + ['llll', 'выр, 2010 ҫулхи нар уйӑхӗн 14-мӗшӗ, 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -18292,45 +18291,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1af', '1af'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2il', '2il'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3ydd', '3ydd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4ydd', '4ydd'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5ed', '5ed'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6ed', '6ed'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7ed', '7ed'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8fed', '8fed'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9fed', '9fed'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10fed', '10fed'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-мӗш', '1-мӗш'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-мӗш', '2-мӗш'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-мӗш', '3-мӗш'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-мӗш', '4-мӗш'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-мӗш', '5-мӗш'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-мӗш', '6-мӗш'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-мӗш', '7-мӗш'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-мӗш', '8-мӗш'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-мӗш', '9-мӗш'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-мӗш', '10-мӗш'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11eg', '11eg'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12fed', '12fed'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13eg', '13eg'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14eg', '14eg'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15fed', '15fed'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16eg', '16eg'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17eg', '17eg'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18fed', '18fed'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19eg', '19eg'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20fed', '20fed'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-мӗш', '11-мӗш'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-мӗш', '12-мӗш'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-мӗш', '13-мӗш'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-мӗш', '14-мӗш'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-мӗш', '15-мӗш'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-мӗш', '16-мӗш'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-мӗш', '17-мӗш'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-мӗш', '18-мӗш'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-мӗш', '19-мӗш'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-мӗш', '20-мӗш'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ain', '21ain'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ain', '22ain'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ain', '23ain'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ain', '24ain'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ain', '25ain'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ain', '26ain'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ain', '27ain'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ain', '28ain'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ain', '29ain'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ain', '30ain'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-мӗш', '21-мӗш'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-мӗш', '22-мӗш'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-мӗш', '23-мӗш'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-мӗш', '24-мӗш'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-мӗш', '25-мӗш'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-мӗш', '26-мӗш'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-мӗш', '27-мӗш'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-мӗш', '28-мӗш'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-мӗш', '29-мӗш'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-мӗш', '30-мӗш'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ain', '31ain'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-мӗш', '31-мӗш'); }); test('format month', function (assert) { var expected = - 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split( + 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split( '_' ), i; @@ -18345,7 +18344,7 @@ test('format week', function (assert) { var expected = - 'Dydd Sul Sul Su_Dydd Llun Llun Ll_Dydd Mawrth Maw Ma_Dydd Mercher Mer Me_Dydd Iau Iau Ia_Dydd Gwener Gwe Gw_Dydd Sadwrn Sad Sa'.split( + 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кӗҫнерникун кӗҫ кҫ_эрнекун эрн эр_шӑматкун шӑм шм'.split( '_' ), i; @@ -18362,195 +18361,208 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'ychydig eiliadau', - '44 seconds = a few seconds' + 'пӗр-ик ҫеккунт', + '44 sekunder = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'munud', + 'пӗр минут', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'munud', + 'пӗр минут', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 munud', + '2 минут', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 munud', + '44 минут', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'awr', + 'пӗр сехет', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'awr', + 'пӗр сехет', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 awr', + '2 сехет', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 awr', + '5 сехет', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 awr', + '21 сехет', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'diwrnod', + 'пӗр кун', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'diwrnod', + 'пӗр кун', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 diwrnod', + '2 кун', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'diwrnod', + 'пӗр кун', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 diwrnod', + '5 кун', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 diwrnod', + '25 кун', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'mis', + 'пӗр уйӑх', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'mis', + 'пӗр уйӑх', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'mis', + 'пӗр уйӑх', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 mis', + '2 уйӑх', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 mis', + '2 уйӑх', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 mis', + '3 уйӑх', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'mis', + 'пӗр уйӑх', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 mis', + '5 уйӑх', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'blwyddyn', + 'пӗр ҫул', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 flynedd', + '2 ҫул', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'blwyddyn', + 'пӗр ҫул', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 flynedd', + '5 ҫул', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'mewn ychydig eiliadau', 'prefix'); - assert.equal(moment(0).from(30000), 'ychydig eiliadau yn ôl', 'suffix'); + assert.equal(moment(30000).from(0), 'пӗр-ик ҫеккунтран', 'prefix'); + assert.equal(moment(0).from(30000), 'пӗр-ик ҫеккунт каялла', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'пӗр-ик ҫеккунт каялла', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'mewn ychydig eiliadau', + 'пӗр-ик ҫеккунтран', 'in a few seconds' ); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 кунран', 'in 5 days'); + assert.equal( + moment().add({ h: 2 }).fromNow(), + '2 сехетрен', + 'in 2 hours, the right suffix!' + ); assert.equal( - moment().add({ d: 5 }).fromNow(), - 'mewn 5 diwrnod', - 'in 5 days' + moment().add({ y: 3 }).fromNow(), + '3 ҫултан', + 'in 3 years, the right suffix!' ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal( moment(a).calendar(), - 'Heddiw am 12:00', + 'Паян 12:00 сехетре', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Heddiw am 12:25', + 'Паян 12:25 сехетре', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Heddiw am 13:00', + 'Паян 13:00 сехетре', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Yfory am 12:00', + 'Ыран 12:00 сехетре', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Heddiw am 11:00', + 'Паян 11:00 сехетре', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Ddoe am 12:00', + 'Ӗнер 12:00 сехетре', 'yesterday at the same time' ); }); @@ -18562,19 +18574,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [am] LT'), + m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [am] LT'), + m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [am] LT'), + m.format('[Ҫитес] dddd LT [сехетре]'), 'Today + ' + i + ' days end of day' ); } @@ -18587,19 +18599,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('dddd [diwethaf am] LT'), + m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [diwethaf am] LT'), + m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [diwethaf am] LT'), + m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days end of day' ); } @@ -18627,31 +18639,34 @@ ); }); + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + test('weeks year starting sunday formatted', function (assert) { + assert.equal( + moment([2011, 11, 26]).format('w ww wo'), + '1 01 1-мӗш', + 'Dec 26 2011 should be week 1' + ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52ain', - 'Jan 1 2012 should be week 52' + '1 01 1-мӗш', + 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1af', - 'Jan 2 2012 should be week 1' + '2 02 2-мӗш', + 'Jan 2 2012 should be week 2' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1af', - 'Jan 8 2012 should be week 1' + '2 02 2-мӗш', + 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2il', - 'Jan 9 2012 should be week 2' - ); - assert.equal( - moment([2012, 0, 15]).format('w ww wo'), - '2 02 2il', - 'Jan 15 2012 should be week 2' + '3 03 3-мӗш', + 'Jan 9 2012 should be week 3' ); }); @@ -19050,14 +19065,15 @@ defineCommonLocaleTests(name); } - localeModule('da'); + localeModule('cy'); test('parse', function (assert) { var tests = - 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split( + 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split( '_' ), i; + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -19097,31 +19113,31 @@ test('format', function (assert) { var a = [ [ - 'dddd [den] Do MMMM YYYY, h:mm:ss a', - 'søndag den 14. februar 2010, 3:25:50 pm', + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Dydd Sul, Chwefror 14eg 2010, 3:25:50 pm', ], - ['ddd hA', 'søn 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], + ['ddd, hA', 'Sul, 3PM'], + ['M Mo MM MMMM MMM', '2 2il 02 Chwefror Chwe'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. søndag søn sø'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], + ['D Do DD', '14 14eg 14'], + ['d do dddd ddd dd', '0 0 Dydd Sul Sul Su'], + ['DDD DDDo DDDD', '45 45ain 045'], + ['w wo ww', '6 6ed 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[den] DDDo [dag på året]', 'den 45. dag på året'], + ['[the] DDDo [day of the year]', 'the 45ain day of the year'], ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'søndag d. 14. februar 2010 kl. 15:25'], - ['l', '14.2.2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 15:25'], - ['llll', 'søn d. 14. feb 2010 kl. 15:25'], + ['L', '14/02/2010'], + ['LL', '14 Chwefror 2010'], + ['LLL', '14 Chwefror 2010 15:25'], + ['LLLL', 'Dydd Sul, 14 Chwefror 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Chwe 2010'], + ['lll', '14 Chwe 2010 15:25'], + ['llll', 'Sul, 14 Chwe 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -19131,45 +19147,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1af', '1af'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2il', '2il'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3ydd', '3ydd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4ydd', '4ydd'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5ed', '5ed'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6ed', '6ed'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7ed', '7ed'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8fed', '8fed'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9fed', '9fed'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10fed', '10fed'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11eg', '11eg'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12fed', '12fed'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13eg', '13eg'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14eg', '14eg'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15fed', '15fed'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16eg', '16eg'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17eg', '17eg'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18fed', '18fed'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19eg', '19eg'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20fed', '20fed'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ain', '21ain'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ain', '22ain'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ain', '23ain'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ain', '24ain'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ain', '25ain'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ain', '26ain'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ain', '27ain'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ain', '28ain'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ain', '29ain'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ain', '30ain'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ain', '31ain'); }); test('format month', function (assert) { var expected = - 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split( + 'Ionawr Ion_Chwefror Chwe_Mawrth Maw_Ebrill Ebr_Mai Mai_Mehefin Meh_Gorffennaf Gor_Awst Aws_Medi Med_Hydref Hyd_Tachwedd Tach_Rhagfyr Rhag'.split( '_' ), i; @@ -19184,7 +19200,7 @@ test('format week', function (assert) { var expected = - 'søndag søn sø_mandag man ma_tirsdag tir ti_onsdag ons on_torsdag tor to_fredag fre fr_lørdag lør lø'.split( + 'Dydd Sul Sul Su_Dydd Llun Llun Ll_Dydd Mawrth Maw Ma_Dydd Mercher Mer Me_Dydd Iau Iau Ia_Dydd Gwener Gwe Gw_Dydd Sadwrn Sad Sa'.split( '_' ), i; @@ -19201,166 +19217,162 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'få sekunder', + 'ychydig eiliadau', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'et minut', + 'munud', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'et minut', + 'munud', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minutter', + '2 munud', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minutter', + '44 munud', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'en time', + 'awr', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'en time', + 'awr', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 timer', + '2 awr', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 timer', + '5 awr', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 timer', + '21 awr', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'en dag', + 'diwrnod', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'en dag', + 'diwrnod', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 dage', + '2 diwrnod', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'en dag', + 'diwrnod', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 dage', + '5 diwrnod', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 dage', + '25 diwrnod', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'en måned', + 'mis', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'en måned', + 'mis', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'en måned', + 'mis', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 måneder', + '2 mis', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 måneder', + '2 mis', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 måneder', + '3 mis', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'en måned', + 'mis', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 måneder', + '5 mis', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'et år', + 'blwyddyn', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 år', + '2 flynedd', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'et år', + 'blwyddyn', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 år', + '5 flynedd', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'om få sekunder', 'prefix'); - assert.equal(moment(0).from(30000), 'få sekunder siden', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal( - moment().fromNow(), - 'få sekunder siden', - 'now from now should display as in the past' - ); + assert.equal(moment(30000).from(0), 'mewn ychydig eiliadau', 'prefix'); + assert.equal(moment(0).from(30000), 'ychydig eiliadau yn ôl', 'suffix'); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'om få sekunder', + 'mewn ychydig eiliadau', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'om 5 dage', 'in 5 days'); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'mewn 5 diwrnod', + 'in 5 days' + ); }); test('calendar day', function (assert) { @@ -19368,32 +19380,32 @@ assert.equal( moment(a).calendar(), - 'i dag kl. 12:00', + 'Heddiw am 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'i dag kl. 12:25', + 'Heddiw am 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'i dag kl. 13:00', + 'Heddiw am 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'i morgen kl. 12:00', + 'Yfory am 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'i dag kl. 11:00', + 'Heddiw am 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'i går kl. 12:00', + 'Ddoe am 12:00', 'yesterday at the same time' ); }); @@ -19405,19 +19417,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('på dddd [kl.] LT'), + m.format('dddd [am] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('på dddd [kl.] LT'), + m.format('dddd [am] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('på dddd [kl.] LT'), + m.format('dddd [am] LT'), 'Today + ' + i + ' days end of day' ); } @@ -19430,19 +19442,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[i] dddd[s kl.] LT'), + m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[i] dddd[s kl.] LT'), + m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[i] dddd[s kl.] LT'), + m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days end of day' ); } @@ -19473,27 +19485,27 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52.', + '52 52 52ain', 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1.', + '1 01 1af', 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1.', + '1 01 1af', 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2.', + '2 02 2il', 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2.', + '2 02 2il', 'Jan 15 2012 should be week 2' ); }); @@ -19893,15 +19905,14 @@ defineCommonLocaleTests(name); } - localeModule('de-at'); + localeModule('da'); test('parse', function (assert) { var tests = - 'Jänner Jän._Februar Feb._März März_April Apr._Mai Mai_Juni Juni_Juli Juli_August Aug._September Sep._Oktober Okt._November Nov._Dezember Dez.'.split( + 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split( '_' ), i; - function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -19941,14 +19952,14 @@ test('format', function (assert) { var a = [ [ - 'dddd, Do MMMM YYYY, h:mm:ss a', - 'Sonntag, 14. Februar 2010, 3:25:50 pm', + 'dddd [den] Do MMMM YYYY, h:mm:ss a', + 'søndag den 14. februar 2010, 3:25:50 pm', ], - ['ddd, hA', 'So., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 Februar Feb.'], + ['ddd hA', 'søn 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Sonntag So. So'], + ['d do dddd ddd dd', '0 0. søndag søn sø'], ['DDD DDDo DDDD', '45 45. 045'], ['w wo ww', '6 6. 06'], ['h hh', '3 03'], @@ -19956,16 +19967,16 @@ ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['[den] DDDo [dag på året]', 'den 45. dag på året'], ['LTS', '15:25:50'], ['L', '14.02.2010'], - ['LL', '14. Februar 2010'], - ['LLL', '14. Februar 2010 15:25'], - ['LLLL', 'Sonntag, 14. Februar 2010 15:25'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'søndag d. 14. februar 2010 kl. 15:25'], ['l', '14.2.2010'], - ['ll', '14. Feb. 2010'], - ['lll', '14. Feb. 2010 15:25'], - ['llll', 'So., 14. Feb. 2010 15:25'], + ['ll', '14. feb 2010'], + ['lll', '14. feb 2010 15:25'], + ['llll', 'søn d. 14. feb 2010 kl. 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -20013,7 +20024,7 @@ test('format month', function (assert) { var expected = - 'Jänner Jän._Februar Feb._März März_April Apr._Mai Mai_Juni Juni_Juli Juli_August Aug._September Sep._Oktober Okt._November Nov._Dezember Dez.'.split( + 'januar jan_februar feb_marts mar_april apr_maj maj_juni jun_juli jul_august aug_september sep_oktober okt_november nov_december dec'.split( '_' ), i; @@ -20028,7 +20039,7 @@ test('format week', function (assert) { var expected = - 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split( + 'søndag søn sø_mandag man ma_tirsdag tir ti_onsdag ons on_torsdag tor to_fredag fre fr_lørdag lør lø'.split( '_' ), i; @@ -20045,153 +20056,166 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'ein paar Sekunden', + 'få sekunder', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'eine Minute', + 'et minut', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'eine Minute', + 'et minut', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 Minuten', + '2 minutter', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 Minuten', + '44 minutter', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'eine Stunde', + 'en time', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'eine Stunde', + 'en time', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 Stunden', + '2 timer', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 Stunden', + '5 timer', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 Stunden', + '21 timer', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'ein Tag', + 'en dag', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'ein Tag', + 'en dag', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 Tage', + '2 dage', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'ein Tag', + 'en dag', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 Tage', + '5 dage', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 Tage', + '25 dage', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'ein Monat', + 'en måned', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'ein Monat', + 'en måned', '30 days = a month' ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'en måned', + '43 days = a month' + ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 Monate', + '2 måneder', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 Monate', + '2 måneder', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 Monate', + '3 måneder', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'ein Monat', + 'en måned', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 Monate', + '5 måneder', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'ein Jahr', + 'et år', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 Jahre', + '2 år', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'ein Jahr', + 'et år', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 Jahre', + '5 år', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in ein paar Sekunden', 'prefix'); - assert.equal(moment(0).from(30000), 'vor ein paar Sekunden', 'suffix'); + assert.equal(moment(30000).from(0), 'om få sekunder', 'prefix'); + assert.equal(moment(0).from(30000), 'få sekunder siden', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'få sekunder siden', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'in ein paar Sekunden', + 'om få sekunder', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'in 5 Tagen', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'om 5 dage', 'in 5 days'); }); test('calendar day', function (assert) { @@ -20199,55 +20223,56 @@ assert.equal( moment(a).calendar(), - 'heute um 12:00 Uhr', + 'i dag kl. 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'heute um 12:25 Uhr', + 'i dag kl. 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'heute um 13:00 Uhr', + 'i dag kl. 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'morgen um 12:00 Uhr', + 'i morgen kl. 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'heute um 11:00 Uhr', + 'i dag kl. 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'gestern um 12:00 Uhr', + 'i går kl. 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [um] LT [Uhr]'), + m.format('på dddd [kl.] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [um] LT [Uhr]'), + m.format('på dddd [kl.] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [um] LT [Uhr]'), + m.format('på dddd [kl.] LT'), 'Today + ' + i + ' days end of day' ); } @@ -20255,24 +20280,25 @@ test('calendar last week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[letzten] dddd [um] LT [Uhr]'), - 'Today + ' + i + ' days current time' + m.format('[i] dddd[s kl.] LT'), + 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[letzten] dddd [um] LT [Uhr]'), - 'Today + ' + i + ' days beginning of day' + m.format('[i] dddd[s kl.] LT'), + 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[letzten] dddd [um] LT [Uhr]'), - 'Today + ' + i + ' days end of day' + m.format('[i] dddd[s kl.] LT'), + 'Today - ' + i + ' days end of day' ); } }); @@ -20327,49 +20353,6 @@ ); }); - test('duration humanize week threshold', function (assert) { - assert.equal( - moment.duration(1, 'week').humanize({ d: 7, w: 4 }), - 'eine Woche', - 'a week' - ); - assert.equal( - moment.duration(-1, 'week').humanize({ d: 7, w: 4 }), - 'eine Woche', - 'a week' - ); - assert.equal( - moment.duration(-1, 'week').humanize(true, { d: 7, w: 4 }), - 'vor einer Woche', - 'a week ago' - ); - assert.equal( - moment.duration(1, 'week').humanize(true, { d: 7, w: 4 }), - 'in einer Woche', - 'in a week' - ); - assert.equal( - moment.duration(2, 'week').humanize({ d: 7, w: 4 }), - '2 Wochen', - '2 weeks' - ); - assert.equal( - moment.duration(-2, 'week').humanize({ d: 7, w: 4 }), - '2 Wochen', - '2 weeks' - ); - assert.equal( - moment.duration(2, 'week').humanize(true, { d: 7, w: 4 }), - 'in 2 Wochen', - 'in 2 week' - ); - assert.equal( - moment.duration(-2, 'week').humanize(true, { d: 7, w: 4 }), - 'vor 2 Wochen', - '2 weeks ago' - ); - }); - }))); @@ -20765,14 +20748,15 @@ defineCommonLocaleTests(name); } - localeModule('de-ch'); + localeModule('de-at'); test('parse', function (assert) { var tests = - 'Januar Jan._Februar Feb._März März_April Apr._Mai Mai_Juni Juni_Juli Juli_August Aug._September Sep._Oktober Okt._November Nov._Dezember Dez.'.split( + 'Jänner Jän._Februar Feb._März März_April Apr._Mai Mai_Juni Juni_Juli Juli_August Aug._September Sep._Oktober Okt._November Nov._Dezember Dez.'.split( '_' ), i; + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -20815,11 +20799,11 @@ 'dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm', ], - ['ddd, hA', 'So, 3PM'], + ['ddd, hA', 'So., 3PM'], ['M Mo MM MMMM MMM', '2 2. 02 Februar Feb.'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Sonntag So So'], + ['d do dddd ddd dd', '0 0. Sonntag So. So'], ['DDD DDDo DDDD', '45 45. 045'], ['w wo ww', '6 6. 06'], ['h hh', '3 03'], @@ -20828,7 +20812,6 @@ ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LT', '15:25'], ['LTS', '15:25:50'], ['L', '14.02.2010'], ['LL', '14. Februar 2010'], @@ -20837,7 +20820,7 @@ ['l', '14.2.2010'], ['ll', '14. Feb. 2010'], ['lll', '14. Feb. 2010 15:25'], - ['llll', 'So, 14. Feb. 2010 15:25'], + ['llll', 'So., 14. Feb. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -20885,7 +20868,7 @@ test('format month', function (assert) { var expected = - 'Januar Jan._Februar Feb._März März_April Apr._Mai Mai_Juni Juni_Juli Juli_August Aug._September Sep._Oktober Okt._November Nov._Dezember Dez.'.split( + 'Jänner Jän._Februar Feb._März März_April Apr._Mai Mai_Juni Juni_Juli Juli_August Aug._September Sep._Oktober Okt._November Nov._Dezember Dez.'.split( '_' ), i; @@ -20900,7 +20883,7 @@ test('format week', function (assert) { var expected = - 'Sonntag So So_Montag Mo Mo_Dienstag Di Di_Mittwoch Mi Mi_Donnerstag Do Do_Freitag Fr Fr_Samstag Sa Sa'.split( + 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split( '_' ), i; @@ -21005,11 +20988,6 @@ 'ein Monat', '30 days = a month' ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'ein Monat', - '43 days = a month' - ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), '2 Monate', @@ -21642,7 +21620,7 @@ defineCommonLocaleTests(name); } - localeModule('de'); + localeModule('de-ch'); test('parse', function (assert) { var tests = @@ -21692,11 +21670,11 @@ 'dddd, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm', ], - ['ddd, hA', 'So., 3PM'], + ['ddd, hA', 'So, 3PM'], ['M Mo MM MMMM MMM', '2 2. 02 Februar Feb.'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Sonntag So. So'], + ['d do dddd ddd dd', '0 0. Sonntag So So'], ['DDD DDDo DDDD', '45 45. 045'], ['w wo ww', '6 6. 06'], ['h hh', '3 03'], @@ -21705,6 +21683,7 @@ ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LT', '15:25'], ['LTS', '15:25:50'], ['L', '14.02.2010'], ['LL', '14. Februar 2010'], @@ -21713,7 +21692,7 @@ ['l', '14.2.2010'], ['ll', '14. Feb. 2010'], ['lll', '14. Feb. 2010 15:25'], - ['llll', 'So., 14. Feb. 2010 15:25'], + ['llll', 'So, 14. Feb. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -21776,7 +21755,7 @@ test('format week', function (assert) { var expected = - 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split( + 'Sonntag So So_Montag Mo Mo_Dienstag Di Di_Mittwoch Mi Mi_Donnerstag Do Do_Freitag Fr Fr_Samstag Sa Sa'.split( '_' ), i; @@ -22518,25 +22497,14 @@ defineCommonLocaleTests(name); } - localeModule('dv'); + localeModule('de'); test('parse', function (assert) { - var i, - tests = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު', - ]; - + var tests = + 'Januar Jan._Februar Feb._März März_April Apr._Mai Mai_Juni Juni_Juli Juli_August Aug._September Sep._Oktober Okt._November Nov._Dezember Dez.'.split( + '_' + ), + i; function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -22554,89 +22522,125 @@ } for (i = 0; i < 12; i++) { - equalTest(tests[i], 'MMM', i); - equalTest(tests[i], 'MMMM', i); - equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(tests[i], 'MMM', i); - equalTestStrict(tests[i].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'އާދިއްތަ، ފެބްރުއަރީ 14 2010، 3:25:50 މފ', + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'Sonntag, 14. Februar 2010, 3:25:50 pm', ], - ['ddd, hA', 'އާދިއްތަ، 3މފ'], - ['M Mo MM MMMM MMM', '2 2 02 ފެބްރުއަރީ ފެބްރުއަރީ'], + ['ddd, hA', 'So., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 Februar Feb.'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 އާދިއްތަ އާދިއްތަ އާދި'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. Sonntag So. So'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'މފ މފ'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], ['LTS', '15:25:50'], - ['L', '14/2/2010'], - ['LL', '14 ފެބްރުއަރީ 2010'], - ['LLL', '14 ފެބްރުއަރީ 2010 15:25'], - ['LLLL', 'އާދިއްތަ 14 ފެބްރުއަރީ 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 ފެބްރުއަރީ 2010'], - ['lll', '14 ފެބްރުއަރީ 2010 15:25'], - ['llll', 'އާދިއްތަ 14 ފެބްރުއަރީ 2010 15:25'], + ['L', '14.02.2010'], + ['LL', '14. Februar 2010'], + ['LLL', '14. Februar 2010 15:25'], + ['LLLL', 'Sonntag, 14. Februar 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. Feb. 2010'], + ['lll', '14. Feb. 2010 15:25'], + ['llll', 'So., 14. Feb. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; - for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); - test('format month', function (assert) { - var i, - expected = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު', - ]; + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = + 'Januar Jan._Februar Feb._März März_April Apr._Mai Mai_Juni Juni_Juli Juli_August Aug._September Sep._Oktober Okt._November Nov._Dezember Dez.'.split( + '_' + ), + i; for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM'), expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var i, - expected = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު', - ]; - + var expected = + 'Sonntag So. So_Montag Mo. Mo_Dienstag Di. Di_Mittwoch Mi. Mi_Donnerstag Do. Do_Freitag Fr. Fr_Samstag Sa. Sa'.split( + '_' + ), + i; for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd'), expected[i]); + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd dd'), + expected[i], + expected[i] + ); } }); @@ -22644,162 +22648,158 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'ސިކުންތުކޮޅެއް', + 'ein paar Sekunden', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'މިނިޓެއް', + 'eine Minute', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'މިނިޓެއް', + 'eine Minute', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - 'މިނިޓު 2', + '2 Minuten', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - 'މިނިޓު 44', + '44 Minuten', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'ގަޑިއިރެއް', + 'eine Stunde', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'ގަޑިއިރެއް', + 'eine Stunde', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - 'ގަޑިއިރު 2', + '2 Stunden', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - 'ގަޑިއިރު 5', + '5 Stunden', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - 'ގަޑިއިރު 21', + '21 Stunden', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'ދުވަހެއް', + 'ein Tag', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'ދުވަހެއް', + 'ein Tag', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - 'ދުވަސް 2', + '2 Tage', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'ދުވަހެއް', + 'ein Tag', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - 'ދުވަސް 5', + '5 Tage', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - 'ދުވަސް 25', + '25 Tage', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'މަހެއް', + 'ein Monat', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'މަހެއް', + 'ein Monat', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'މަހެއް', + 'ein Monat', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - 'މަސް 2', + '2 Monate', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - 'މަސް 2', + '2 Monate', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - 'މަސް 3', + '3 Monate', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'މަހެއް', + 'ein Monat', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - 'މަސް 5', + '5 Monate', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'އަހަރެއް', + 'ein Jahr', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - 'އަހަރު 2', + '2 Jahre', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'އަހަރެއް', + 'ein Jahr', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - 'އަހަރު 5', + '5 Jahre', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ތެރޭގައި ސިކުންތުކޮޅެއް', 'prefix'); - assert.equal(moment(0).from(30000), 'ކުރިން ސިކުންތުކޮޅެއް', 'suffix'); + assert.equal(moment(30000).from(0), 'in ein paar Sekunden', 'prefix'); + assert.equal(moment(0).from(30000), 'vor ein paar Sekunden', 'suffix'); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'ތެރޭގައި ސިކުންތުކޮޅެއް', + 'in ein paar Sekunden', 'in a few seconds' ); - assert.equal( - moment().add({ d: 5 }).fromNow(), - 'ތެރޭގައި ދުވަސް 5', - 'in 5 days' - ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'in 5 Tagen', 'in 5 days'); }); test('calendar day', function (assert) { @@ -22807,32 +22807,32 @@ assert.equal( moment(a).calendar(), - 'މިއަދު 12:00', + 'heute um 12:00 Uhr', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'މިއަދު 12:25', + 'heute um 12:25 Uhr', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'މިއަދު 13:00', + 'heute um 13:00 Uhr', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'މާދަމާ 12:00', + 'morgen um 12:00 Uhr', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'މިއަދު 11:00', + 'heute um 11:00 Uhr', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'އިއްޔެ 12:00', + 'gestern um 12:00 Uhr', 'yesterday at the same time' ); }); @@ -22843,19 +22843,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd LT'), + m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd LT'), + m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd LT'), + m.format('dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day' ); } @@ -22867,19 +22867,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[ފާއިތުވި] dddd LT'), + m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[ފާއިތުވި] dddd LT'), + m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[ފާއިތުވި] dddd LT'), + m.format('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day' ); } @@ -22910,28 +22910,71 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1', - 'Jan 1 2012 should be week 1' + '52 52 52.', + 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1', + '1 01 1.', 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2', - 'Jan 8 2012 should be week 2' + '1 01 1.', + 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2', + '2 02 2.', 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3', - 'Jan 15 2012 should be week 3' + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); + }); + + test('duration humanize week threshold', function (assert) { + assert.equal( + moment.duration(1, 'week').humanize({ d: 7, w: 4 }), + 'eine Woche', + 'a week' + ); + assert.equal( + moment.duration(-1, 'week').humanize({ d: 7, w: 4 }), + 'eine Woche', + 'a week' + ); + assert.equal( + moment.duration(-1, 'week').humanize(true, { d: 7, w: 4 }), + 'vor einer Woche', + 'a week ago' + ); + assert.equal( + moment.duration(1, 'week').humanize(true, { d: 7, w: 4 }), + 'in einer Woche', + 'in a week' + ); + assert.equal( + moment.duration(2, 'week').humanize({ d: 7, w: 4 }), + '2 Wochen', + '2 weeks' + ); + assert.equal( + moment.duration(-2, 'week').humanize({ d: 7, w: 4 }), + '2 Wochen', + '2 weeks' + ); + assert.equal( + moment.duration(2, 'week').humanize(true, { d: 7, w: 4 }), + 'in 2 Wochen', + 'in 2 week' + ); + assert.equal( + moment.duration(-2, 'week').humanize(true, { d: 7, w: 4 }), + 'vor 2 Wochen', + '2 weeks ago' ); }); @@ -23330,14 +23373,24 @@ defineCommonLocaleTests(name); } - localeModule('el'); + localeModule('dv'); test('parse', function (assert) { var i, - tests = - 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split( - '_' - ); + tests = [ + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު', + ]; function equalTest(input, mmm, i) { assert.equal( @@ -23356,80 +23409,14 @@ } for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('parse meridiem', function (assert) { - var i, - b = moment(), - meridiemTests = [ - // h a patterns, expected hours, isValid - ['10 πμ', 10, true], - ['10 μμ', 22, true], - ['10 π.μ.', 10, true], - ['10 μ.μ.', 22, true], - ['10 π', 10, true], - ['10 μ', 22, true], - ['10 ΠΜ', 10, true], - ['10 ΜΜ', 22, true], - ['10 Π.Μ.', 10, true], - ['10 Μ.Μ.', 22, true], - ['10 Π', 10, true], - ['10 Μ', 22, true], - ['10 am', 10, false], - ['10 pm', 10, false], - ], - parsed; - - // test that a formatted moment including meridiem string can be parsed back to the same moment - assert.ok( - b.isSame( - moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true), - 'seconds' - ), - b.format('h:mm:ss a') + - ' should be equal to ' + - moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).format( - 'h:mm:ss a' - ) - ); - - // test that a formatted moment having a meridiem string can be parsed with strict flag - assert.ok( - moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).isValid(), - b.format('h:mm:ss a') + ' should be parsed as valid' - ); + equalTest(tests[i], 'MMM', i); + equalTest(tests[i], 'MMMM', i); + equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); - for (i = 0; i < meridiemTests.length; i++) { - parsed = moment(meridiemTests[i][0], 'h a', 'el', true); - assert.equal( - parsed.isValid(), - meridiemTests[i][2], - 'validity for ' + meridiemTests[i][0] - ); - if (parsed.isValid()) { - assert.equal( - parsed.hours(), - meridiemTests[i][1], - 'hours for ' + meridiemTests[i][0] - ); - } + equalTestStrict(tests[i], 'MMM', i); + equalTestStrict(tests[i].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i].toLocaleLowerCase(), 'MMMM', i); } }); @@ -23437,35 +23424,29 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Κυριακή, Φεβρουάριος 14η 2010, 3:25:50 μμ', - ], - [ - 'dddd, D MMMM YYYY, h:mm:ss a', - 'Κυριακή, 14 Φεβρουαρίου 2010, 3:25:50 μμ', + 'އާދިއްތަ، ފެބްރުއަރީ 14 2010، 3:25:50 މފ', ], - ['ddd, hA', 'Κυρ, 3ΜΜ'], - ['dddd, MMMM YYYY', 'Κυριακή, Φεβρουάριος 2010'], - ['M Mo MM MMMM MMM', '2 2η 02 Φεβρουάριος Φεβ'], + ['ddd, hA', 'އާދިއްތަ، 3މފ'], + ['M Mo MM MMMM MMM', '2 2 02 ފެބްރުއަރީ ފެބްރުއަރީ'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14η 14'], - ['d do dddd ddd dd', '0 0η Κυριακή Κυρ Κυ'], - ['DDD DDDo DDDD', '45 45η 045'], - ['w wo ww', '6 6η 06'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 އާދިއްތަ އާދިއްތަ އާދި'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'μμ ΜΜ'], - ['[the] DDDo [day of the year]', 'the 45η day of the year'], - ['LTS', '3:25:50 ΜΜ'], - ['L', '14/02/2010'], - ['LL', '14 Φεβρουαρίου 2010'], - ['LLL', '14 Φεβρουαρίου 2010 3:25 ΜΜ'], - ['LLLL', 'Κυριακή, 14 Φεβρουαρίου 2010 3:25 ΜΜ'], + ['a A', 'މފ މފ'], + ['LTS', '15:25:50'], + ['L', '14/2/2010'], + ['LL', '14 ފެބްރުއަރީ 2010'], + ['LLL', '14 ފެބްރުއަރީ 2010 15:25'], + ['LLLL', 'އާދިއްތަ 14 ފެބްރުއަރީ 2010 15:25'], ['l', '14/2/2010'], - ['ll', '14 Φεβ 2010'], - ['lll', '14 Φεβ 2010 3:25 ΜΜ'], - ['llll', 'Κυρ, 14 Φεβ 2010 3:25 ΜΜ'], + ['ll', '14 ފެބްރުއަރީ 2010'], + ['lll', '14 ފެބްރުއަރީ 2010 15:25'], + ['llll', 'އާދިއްތަ 14 ފެބްރުއަރީ 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -23475,240 +23456,205 @@ } }); - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1η', '1η'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2η', '2η'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3η', '3η'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4η', '4η'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5η', '5η'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6η', '6η'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7η', '7η'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8η', '8η'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9η', '9η'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10η', '10η'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11η', '11η'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12η', '12η'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13η', '13η'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14η', '14η'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15η', '15η'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16η', '16η'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17η', '17η'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18η', '18η'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19η', '19η'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20η', '20η'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21η', '21η'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22η', '22η'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23η', '23η'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24η', '24η'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25η', '25η'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26η', '26η'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27η', '27η'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28η', '28η'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29η', '29η'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30η', '30η'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31η', '31η'); - }); - test('format month', function (assert) { var i, - expected = - 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split( - '_' - ); + expected = [ + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު', + ]; for (i = 0; i < expected.length; i++) { - assert.equal( - moment([2011, i, 1]).format('MMMM MMM'), - expected[i], - expected[i] - ); + assert.equal(moment([2011, i, 1]).format('MMMM'), expected[i]); } }); test('format week', function (assert) { var i, - expected = - 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split( - '_' - ); + expected = [ + 'އާދިއްތަ', + 'ހޯމަ', + 'އަންގާރަ', + 'ބުދަ', + 'ބުރާސްފަތި', + 'ހުކުރު', + 'ހޮނިހިރު', + ]; for (i = 0; i < expected.length; i++) { - assert.equal( - moment([2011, 0, 2 + i]).format('dddd ddd dd'), - expected[i], - expected[i] - ); + assert.equal(moment([2011, 0, 2 + i]).format('dddd'), expected[i]); } }); test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'λίγα δευτερόλεπτα', + 'ސިކުންތުކޮޅެއް', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'ένα λεπτό', + 'މިނިޓެއް', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'ένα λεπτό', + 'މިނިޓެއް', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 λεπτά', + 'މިނިޓު 2', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 λεπτά', + 'މިނިޓު 44', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'μία ώρα', + 'ގަޑިއިރެއް', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'μία ώρα', + 'ގަޑިއިރެއް', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 ώρες', + 'ގަޑިއިރު 2', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 ώρες', + 'ގަޑިއިރު 5', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 ώρες', + 'ގަޑިއިރު 21', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'μία μέρα', + 'ދުވަހެއް', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'μία μέρα', + 'ދުވަހެއް', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 μέρες', + 'ދުވަސް 2', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'μία μέρα', + 'ދުވަހެއް', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 μέρες', + 'ދުވަސް 5', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 μέρες', + 'ދުވަސް 25', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'ένας μήνας', + 'މަހެއް', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'ένας μήνας', + 'މަހެއް', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'ένας μήνας', + 'މަހެއް', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 μήνες', + 'މަސް 2', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 μήνες', + 'މަސް 2', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 μήνες', + 'މަސް 3', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'ένας μήνας', + 'މަހެއް', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 μήνες', + 'މަސް 5', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'ένας χρόνος', + 'އަހަރެއް', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 χρόνια', + 'އަހަރު 2', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'ένας χρόνος', + 'އަހަރެއް', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 χρόνια', + 'އަހަރު 5', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'σε λίγα δευτερόλεπτα', 'prefix'); - assert.equal(moment(0).from(30000), 'λίγα δευτερόλεπτα πριν', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal( - moment().fromNow(), - 'λίγα δευτερόλεπτα πριν', - 'now from now should display as in the past' - ); + assert.equal(moment(30000).from(0), 'ތެރޭގައި ސިކުންތުކޮޅެއް', 'prefix'); + assert.equal(moment(0).from(30000), 'ކުރިން ސިކުންތުކޮޅެއް', 'suffix'); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'σε λίγα δευτερόλεπτα', + 'ތެރޭގައި ސިކުންތުކޮޅެއް', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'σε 5 μέρες', 'in 5 days'); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'ތެރޭގައި ދުވަސް 5', + 'in 5 days' + ); }); test('calendar day', function (assert) { @@ -23716,32 +23662,32 @@ assert.equal( moment(a).calendar(), - 'Σήμερα στις 12:00 ΜΜ', + 'މިއަދު 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Σήμερα στις 12:25 ΜΜ', + 'މިއަދު 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Σήμερα στη 1:00 ΜΜ', + 'މިއަދު 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Αύριο στις 12:00 ΜΜ', + 'މާދަމާ 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Σήμερα στις 11:00 ΠΜ', + 'މިއަދު 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Χθες στις 12:00 ΜΜ', + 'އިއްޔެ 12:00', 'yesterday at the same time' ); }); @@ -23752,61 +23698,44 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format( - 'dddd [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT' - ), + m.format('dddd LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [στις] LT'), + m.format('dddd LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [στις] LT'), + m.format('dddd LT'), 'Today + ' + i + ' days end of day' ); } }); test('calendar last week', function (assert) { - var i, m, dayString; + var i, m; for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); - dayString = - m.day() === 6 - ? '[το προηγούμενο Σάββατο]' - : '[την προηγούμενη] dddd'; - assert.equal( - m.calendar(), - m.format( - dayString + - ' [' + - (m.hours() % 12 === 1 ? 'στη' : 'στις') + - '] LT' - ), - 'Today - ' + i + ' days current time' - ); - m.hours(1).minutes(30).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format(dayString + ' [στη] LT'), - 'Today - ' + i + ' days one o clock' + m.format('[ފާއިތުވި] dddd LT'), + 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format(dayString + ' [στις] LT'), - 'Today - ' + i + ' days beginning of day' + m.format('[ފާއިތުވި] dddd LT'), + 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format(dayString + ' [στις] LT'), - 'Today - ' + i + ' days end of day' + m.format('[ފާއިތުވި] dddd LT'), + 'Today + ' + i + ' days end of day' ); } }); @@ -23833,45 +23762,31 @@ ); }); - test('weeks year starting sunday format', function (assert) { + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52η', - 'Jan 1 2012 should be week 52' + '1 01 1', + 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 7]).format('w ww wo'), - '1 01 1η', - 'Jan 7 2012 should be week 1' + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1', + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1η', - 'Jan 8 2012 should be week 1' + '2 02 2', + 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), - '2 02 2η', - 'Jan 14 2012 should be week 2' + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2', + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2η', - 'Jan 15 2012 should be week 2' - ); - }); - - test('localeData months calls', function (assert) { - var jan = moment('2012-01-01'); - assert.equal( - moment.localeData().months(jan), - 'Ιανουάριος', - 'should return the nominative month name' - ); - assert.equal( - moment.localeData().months(jan, 'D MMMM'), - 'Ιανουαρίου', - 'should return the genitive month name' + '3 03 3', + 'Jan 15 2012 should be week 3' ); }); @@ -24270,14 +24185,15 @@ defineCommonLocaleTests(name); } - localeModule('en-au'); + localeModule('el'); test('parse', function (assert) { - var tests = - 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( + var i, + tests = + 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split( '_' - ), - i; + ); + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -24314,85 +24230,150 @@ } }); + test('parse meridiem', function (assert) { + var i, + b = moment(), + meridiemTests = [ + // h a patterns, expected hours, isValid + ['10 πμ', 10, true], + ['10 μμ', 22, true], + ['10 π.μ.', 10, true], + ['10 μ.μ.', 22, true], + ['10 π', 10, true], + ['10 μ', 22, true], + ['10 ΠΜ', 10, true], + ['10 ΜΜ', 22, true], + ['10 Π.Μ.', 10, true], + ['10 Μ.Μ.', 22, true], + ['10 Π', 10, true], + ['10 Μ', 22, true], + ['10 am', 10, false], + ['10 pm', 10, false], + ], + parsed; + + // test that a formatted moment including meridiem string can be parsed back to the same moment + assert.ok( + b.isSame( + moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true), + 'seconds' + ), + b.format('h:mm:ss a') + + ' should be equal to ' + + moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).format( + 'h:mm:ss a' + ) + ); + + // test that a formatted moment having a meridiem string can be parsed with strict flag + assert.ok( + moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'el', true).isValid(), + b.format('h:mm:ss a') + ' should be parsed as valid' + ); + + for (i = 0; i < meridiemTests.length; i++) { + parsed = moment(meridiemTests[i][0], 'h a', 'el', true); + assert.equal( + parsed.isValid(), + meridiemTests[i][2], + 'validity for ' + meridiemTests[i][0] + ); + if (parsed.isValid()) { + assert.equal( + parsed.hours(), + meridiemTests[i][1], + 'hours for ' + meridiemTests[i][0] + ); + } + } + }); + test('format', function (assert) { var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Sunday, February 14th 2010, 3:25:50 pm', + 'Κυριακή, Φεβρουάριος 14η 2010, 3:25:50 μμ', ], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + [ + 'dddd, D MMMM YYYY, h:mm:ss a', + 'Κυριακή, 14 Φεβρουαρίου 2010, 3:25:50 μμ', + ], + ['ddd, hA', 'Κυρ, 3ΜΜ'], + ['dddd, MMMM YYYY', 'Κυριακή, Φεβρουάριος 2010'], + ['M Mo MM MMMM MMM', '2 2η 02 Φεβρουάριος Φεβ'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th Sunday Sun Su'], - ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '7 7th 07'], + ['D Do DD', '14 14η 14'], + ['d do dddd ddd dd', '0 0η Κυριακή Κυρ Κυ'], + ['DDD DDDo DDDD', '45 45η 045'], + ['w wo ww', '6 6η 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['LTS', '3:25:50 PM'], + ['a A', 'μμ ΜΜ'], + ['[the] DDDo [day of the year]', 'the 45η day of the year'], + ['LTS', '3:25:50 ΜΜ'], ['L', '14/02/2010'], - ['LL', '14 February 2010'], - ['LLL', '14 February 2010 3:25 PM'], - ['LLLL', 'Sunday, 14 February 2010 3:25 PM'], + ['LL', '14 Φεβρουαρίου 2010'], + ['LLL', '14 Φεβρουαρίου 2010 3:25 ΜΜ'], + ['LLLL', 'Κυριακή, 14 Φεβρουαρίου 2010 3:25 ΜΜ'], ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 3:25 PM'], - ['llll', 'Sun, 14 Feb 2010 3:25 PM'], + ['ll', '14 Φεβ 2010'], + ['lll', '14 Φεβ 2010 3:25 ΜΜ'], + ['llll', 'Κυρ, 14 Φεβ 2010 3:25 ΜΜ'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; + for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1η', '1η'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2η', '2η'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3η', '3η'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4η', '4η'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5η', '5η'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6η', '6η'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7η', '7η'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8η', '8η'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9η', '9η'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10η', '10η'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11η', '11η'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12η', '12η'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13η', '13η'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14η', '14η'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15η', '15η'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16η', '16η'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17η', '17η'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18η', '18η'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19η', '19η'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20η', '20η'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21η', '21η'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22η', '22η'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23η', '23η'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24η', '24η'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25η', '25η'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26η', '26η'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27η', '27η'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28η', '28η'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29η', '29η'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30η', '30η'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31η', '31η'); }); test('format month', function (assert) { - var expected = - 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( + var i, + expected = + 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -24403,11 +24384,12 @@ }); test('format week', function (assert) { - var expected = - 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split( + var i, + expected = + 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -24419,157 +24401,158 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); + assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'a few seconds', + 'λίγα δευτερόλεπτα', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'a minute', + 'ένα λεπτό', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'a minute', + 'ένα λεπτό', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minutes', + '2 λεπτά', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minutes', + '44 λεπτά', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'an hour', + 'μία ώρα', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'an hour', + 'μία ώρα', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 hours', + '2 ώρες', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 hours', + '5 ώρες', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 hours', + '21 ώρες', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'a day', + 'μία μέρα', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'a day', + 'μία μέρα', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 days', + '2 μέρες', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'a day', + 'μία μέρα', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 days', + '5 μέρες', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 days', + '25 μέρες', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'a month', + 'ένας μήνας', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'a month', + 'ένας μήνας', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'a month', + 'ένας μήνας', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 months', + '2 μήνες', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 months', + '2 μήνες', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 months', + '3 μήνες', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'a month', + 'ένας μήνας', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 months', + '5 μήνες', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'a year', + 'ένας χρόνος', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 years', + '2 χρόνια', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'a year', + 'ένας χρόνος', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 years', + '5 χρόνια', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); - assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); + assert.equal(moment(30000).from(0), 'σε λίγα δευτερόλεπτα', 'prefix'); + assert.equal(moment(0).from(30000), 'λίγα δευτερόλεπτα πριν', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'a few seconds ago', + 'λίγα δευτερόλεπτα πριν', 'now from now should display as in the past' ); }); @@ -24577,10 +24560,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'in a few seconds', + 'σε λίγα δευτερόλεπτα', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'in 5 days', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'σε 5 μέρες', 'in 5 days'); }); test('calendar day', function (assert) { @@ -24588,32 +24571,32 @@ assert.equal( moment(a).calendar(), - 'Today at 12:00 PM', + 'Σήμερα στις 12:00 ΜΜ', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Today at 12:25 PM', + 'Σήμερα στις 12:25 ΜΜ', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Today at 1:00 PM', + 'Σήμερα στη 1:00 ΜΜ', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Tomorrow at 12:00 PM', + 'Αύριο στις 12:00 ΜΜ', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Today at 11:00 AM', + 'Σήμερα στις 11:00 ΠΜ', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Yesterday at 12:00 PM', + 'Χθες στις 12:00 ΜΜ', 'yesterday at the same time' ); }); @@ -24624,44 +24607,60 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [at] LT'), + m.format( + 'dddd [' + (m.hours() % 12 === 1 ? 'στη' : 'στις') + '] LT' + ), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [at] LT'), + m.format('dddd [στις] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [at] LT'), + m.format('dddd [στις] LT'), 'Today + ' + i + ' days end of day' ); } }); test('calendar last week', function (assert) { - var i, m; - + var i, m, dayString; for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); + dayString = + m.day() === 6 + ? '[το προηγούμενο Σάββατο]' + : '[την προηγούμενη] dddd'; assert.equal( m.calendar(), - m.format('[Last] dddd [at] LT'), + m.format( + dayString + + ' [' + + (m.hours() % 12 === 1 ? 'στη' : 'στις') + + '] LT' + ), 'Today - ' + i + ' days current time' ); + m.hours(1).minutes(30).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format(dayString + ' [στη] LT'), + 'Today - ' + i + ' days one o clock' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[Last] dddd [at] LT'), + m.format(dayString + ' [στις] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[Last] dddd [at] LT'), + m.format(dayString + ' [στις] LT'), 'Today - ' + i + ' days end of day' ); } @@ -24689,65 +24688,45 @@ ); }); - test('weeks year starting sunday formatted', function (assert) { + test('weeks year starting sunday format', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1st', - 'Jan 1 2012 should be week 1' + '52 52 52η', + 'Jan 1 2012 should be week 52' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), - '1 01 1st', - 'Jan 2 2012 should be week 1' + moment([2012, 0, 7]).format('w ww wo'), + '1 01 1η', + 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2nd', - 'Jan 8 2012 should be week 2' + '1 01 1η', + 'Jan 8 2012 should be week 1' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), - '2 02 2nd', - 'Jan 9 2012 should be week 2' + moment([2012, 0, 14]).format('w ww wo'), + '2 02 2η', + 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3rd', - 'Jan 15 2012 should be week 3' + '2 02 2η', + 'Jan 15 2012 should be week 2' ); }); - // Concrete test for Locale#weekdaysMin - test('Weekdays sort by locale', function (assert) { - assert.deepEqual( - moment().localeData('en-au').weekdays(), - 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - 'weekdays start on Sunday' - ); - assert.deepEqual( - moment().localeData('en-au').weekdays(true), - 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - 'locale-sorted weekdays start on Sunday' - ); - assert.deepEqual( - moment().localeData('en-au').weekdaysShort(), - 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - 'weekdaysShort start on Sunday' - ); - assert.deepEqual( - moment().localeData('en-au').weekdaysShort(true), - 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - 'locale-sorted weekdaysShort start on Sunday' - ); - assert.deepEqual( - moment().localeData('en-au').weekdaysMin(), - 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 'weekdaysMin start on Sunday' + test('localeData months calls', function (assert) { + var jan = moment('2012-01-01'); + assert.equal( + moment.localeData().months(jan), + 'Ιανουάριος', + 'should return the nominative month name' ); - assert.deepEqual( - moment().localeData('en-au').weekdaysMin(true), - 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 'locale-sorted weekdaysMin start on Sunday' + assert.equal( + moment.localeData().months(jan, 'D MMMM'), + 'Ιανουαρίου', + 'should return the genitive month name' ); }); @@ -25146,15 +25125,14 @@ defineCommonLocaleTests(name); } - localeModule('en-ca'); + localeModule('en-au'); test('parse', function (assert) { - var i, - tests = + var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( '_' - ); - + ), + i; function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -25203,26 +25181,25 @@ ['D Do DD', '14 14th 14'], ['d do dddd ddd dd', '0 0th Sunday Sun Su'], ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '8 8th 08'], + ['w wo ww', '7 7th 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['L', '2010-02-14'], ['LTS', '3:25:50 PM'], - ['LL', 'February 14, 2010'], - ['LLL', 'February 14, 2010 3:25 PM'], - ['LLLL', 'Sunday, February 14, 2010 3:25 PM'], - ['l', '2010-2-14'], - ['ll', 'Feb 14, 2010'], - ['lll', 'Feb 14, 2010 3:25 PM'], - ['llll', 'Sun, Feb 14, 2010 3:25 PM'], + ['L', '14/02/2010'], + ['LL', '14 February 2010'], + ['LLL', '14 February 2010 3:25 PM'], + ['LLLL', 'Sunday, 14 February 2010 3:25 PM'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 3:25 PM'], + ['llll', 'Sun, 14 Feb 2010 3:25 PM'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; - for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } @@ -25266,12 +25243,11 @@ }); test('format month', function (assert) { - var i, - expected = + var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -25282,12 +25258,11 @@ }); test('format week', function (assert) { - var i, - expected = + var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -25500,7 +25475,6 @@ test('calendar next week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( @@ -25570,16 +25544,16 @@ ); }); - test('weeks year starting sunday format', function (assert) { + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), '1 01 1st', 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 7]).format('w ww wo'), + moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', - 'Jan 7 2012 should be week 1' + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), @@ -25587,9 +25561,9 @@ 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), + moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', - 'Jan 14 2012 should be week 2' + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), @@ -25598,6 +25572,40 @@ ); }); + // Concrete test for Locale#weekdaysMin + test('Weekdays sort by locale', function (assert) { + assert.deepEqual( + moment().localeData('en-au').weekdays(), + 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + 'weekdays start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-au').weekdays(true), + 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + 'locale-sorted weekdays start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-au').weekdaysShort(), + 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + 'weekdaysShort start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-au').weekdaysShort(true), + 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + 'locale-sorted weekdaysShort start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-au').weekdaysMin(), + 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 'weekdaysMin start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-au').weekdaysMin(true), + 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 'locale-sorted weekdaysMin start on Sunday' + ); + }); + }))); @@ -25993,14 +26001,15 @@ defineCommonLocaleTests(name); } - localeModule('en-gb'); + localeModule('en-ca'); test('parse', function (assert) { - var tests = + var i, + tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( '_' - ), - i; + ); + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -26049,25 +26058,26 @@ ['D Do DD', '14 14th 14'], ['d do dddd ddd dd', '0 0th Sunday Sun Su'], ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '6 6th 06'], + ['w wo ww', '8 8th 08'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 February 2010'], - ['LLL', '14 February 2010 15:25'], - ['LLLL', 'Sunday, 14 February 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 15:25'], - ['llll', 'Sun, 14 Feb 2010 15:25'], + ['L', '2010-02-14'], + ['LTS', '3:25:50 PM'], + ['LL', 'February 14, 2010'], + ['LLL', 'February 14, 2010 3:25 PM'], + ['LLLL', 'Sunday, February 14, 2010 3:25 PM'], + ['l', '2010-2-14'], + ['ll', 'Feb 14, 2010'], + ['lll', 'Feb 14, 2010 3:25 PM'], + ['llll', 'Sun, Feb 14, 2010 3:25 PM'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; + for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } @@ -26111,11 +26121,12 @@ }); test('format month', function (assert) { - var expected = + var i, + expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -26126,11 +26137,12 @@ }); test('format week', function (assert) { - var expected = + var i, + expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -26311,38 +26323,39 @@ assert.equal( moment(a).calendar(), - 'Today at 12:00', + 'Today at 12:00 PM', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Today at 12:25', + 'Today at 12:25 PM', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Today at 13:00', + 'Today at 1:00 PM', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Tomorrow at 12:00', + 'Tomorrow at 12:00 PM', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Today at 11:00', + 'Today at 11:00 AM', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Yesterday at 12:00', + 'Yesterday at 12:00 PM', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( @@ -26412,31 +26425,31 @@ ); }); - test('weeks year starting sunday formatted', function (assert) { + test('weeks year starting sunday format', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52nd', - 'Jan 1 2012 should be week 52' + '1 01 1st', + 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), + moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', - 'Jan 2 2012 should be week 1' + 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1st', - 'Jan 8 2012 should be week 1' + '2 02 2nd', + 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), + moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', - 'Jan 9 2012 should be week 2' + 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2nd', - 'Jan 15 2012 should be week 2' + '3 03 3rd', + 'Jan 15 2012 should be week 3' ); }); @@ -26835,7 +26848,7 @@ defineCommonLocaleTests(name); } - localeModule('en-ie'); + localeModule('en-gb'); test('parse', function (assert) { var tests = @@ -26902,11 +26915,11 @@ ['L', '14/02/2010'], ['LL', '14 February 2010'], ['LLL', '14 February 2010 15:25'], - ['LLLL', 'Sunday 14 February 2010 15:25'], + ['LLLL', 'Sunday, 14 February 2010 15:25'], ['l', '14/2/2010'], ['ll', '14 Feb 2010'], ['lll', '14 Feb 2010 15:25'], - ['llll', 'Sun 14 Feb 2010 15:25'], + ['llll', 'Sun, 14 Feb 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -27677,7 +27690,7 @@ defineCommonLocaleTests(name); } - localeModule('en-il'); + localeModule('en-ie'); test('parse', function (assert) { var tests = @@ -27733,7 +27746,7 @@ ['D Do DD', '14 14th 14'], ['d do dddd ddd dd', '0 0th Sunday Sun Su'], ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '8 8th 08'], + ['w wo ww', '6 6th 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], @@ -27744,11 +27757,11 @@ ['L', '14/02/2010'], ['LL', '14 February 2010'], ['LLL', '14 February 2010 15:25'], - ['LLLL', 'Sunday, 14 February 2010 15:25'], + ['LLLL', 'Sunday 14 February 2010 15:25'], ['l', '14/2/2010'], ['ll', '14 Feb 2010'], ['lll', '14 Feb 2010 15:25'], - ['llll', 'Sun, 14 Feb 2010 15:25'], + ['llll', 'Sun 14 Feb 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -28099,36 +28112,28 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1st', - 'Jan 1 2012 should be week 1' + '52 52 52nd', + 'Jan 1 2012 should be week 52' ); assert.equal( - moment([2012, 0, 7]).format('w ww wo'), + moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', - 'Jan 7 2012 should be week 1' + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2nd', - 'Jan 8 2012 should be week 2' + '1 01 1st', + 'Jan 8 2012 should be week 1' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), + moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', - 'Jan 14 2012 should be week 2' + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3rd', - 'Jan 15 2012 should be week 3' - ); - }); - - test('days start on sunday', function (assert) { - assert.equal( - moment().startOf('week').format('dddd'), - 'Sunday', - 'First day of the week should be Sunday' + '2 02 2nd', + 'Jan 15 2012 should be week 2' ); }); @@ -28527,7 +28532,7 @@ defineCommonLocaleTests(name); } - localeModule('en-in'); + localeModule('en-il'); test('parse', function (assert) { var tests = @@ -28542,6 +28547,15 @@ input + ' should be month ' + (i + 1) ); } + + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } + for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); @@ -28552,6 +28566,13 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -28574,15 +28595,15 @@ ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['LTS', '3:25:50 PM'], + ['LTS', '15:25:50'], ['L', '14/02/2010'], ['LL', '14 February 2010'], - ['LLL', '14 February 2010 3:25 PM'], - ['LLLL', 'Sunday, 14 February 2010 3:25 PM'], + ['LLL', '14 February 2010 15:25'], + ['LLLL', 'Sunday, 14 February 2010 15:25'], ['l', '14/2/2010'], ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 3:25 PM'], - ['llll', 'Sun, 14 Feb 2010 3:25 PM'], + ['lll', '14 Feb 2010 15:25'], + ['llll', 'Sun, 14 Feb 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -28829,32 +28850,32 @@ assert.equal( moment(a).calendar(), - 'Today at 12:00 PM', + 'Today at 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Today at 12:25 PM', + 'Today at 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Today at 1:00 PM', + 'Today at 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Tomorrow at 12:00 PM', + 'Tomorrow at 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Today at 11:00 AM', + 'Today at 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Yesterday at 12:00 PM', + 'Yesterday at 12:00', 'yesterday at the same time' ); }); @@ -28937,9 +28958,9 @@ 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), + moment([2012, 0, 7]).format('w ww wo'), '1 01 1st', - 'Jan 2 2012 should be week 1' + 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), @@ -28947,9 +28968,9 @@ 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), + moment([2012, 0, 14]).format('w ww wo'), '2 02 2nd', - 'Jan 9 2012 should be week 2' + 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), @@ -28958,37 +28979,11 @@ ); }); - // Concrete test for Locale#weekdaysMin - test('Weekdays sort by locale', function (assert) { - assert.deepEqual( - moment().localeData('en-in').weekdays(), - 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - 'weekdays start on Sunday' - ); - assert.deepEqual( - moment().localeData('en-in').weekdays(true), - 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - 'locale-sorted weekdays start on Sunday' - ); - assert.deepEqual( - moment().localeData('en-in').weekdaysShort(), - 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - 'weekdaysShort start on Sunday' - ); - assert.deepEqual( - moment().localeData('en-in').weekdaysShort(true), - 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - 'locale-sorted weekdaysShort start on Sunday' - ); - assert.deepEqual( - moment().localeData('en-in').weekdaysMin(), - 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 'weekdaysMin start on Sunday' - ); - assert.deepEqual( - moment().localeData('en-in').weekdaysMin(true), - 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 'locale-sorted weekdaysMin start on Sunday' + test('days start on sunday', function (assert) { + assert.equal( + moment().startOf('week').format('dddd'), + 'Sunday', + 'First day of the week should be Sunday' ); }); @@ -29387,7 +29382,7 @@ defineCommonLocaleTests(name); } - localeModule('en-nz'); + localeModule('en-in'); test('parse', function (assert) { var tests = @@ -29402,15 +29397,6 @@ input + ' should be month ' + (i + 1) ); } - - function equalTestStrict(input, mmm, monthIndex) { - assert.equal( - moment(input, mmm, true).month(), - monthIndex, - input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) - ); - } - for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); @@ -29421,13 +29407,6 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -29443,7 +29422,7 @@ ['D Do DD', '14 14th 14'], ['d do dddd ddd dd', '0 0th Sunday Sun Su'], ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '6 6th 06'], + ['w wo ww', '8 8th 08'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], @@ -29809,8 +29788,8 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52nd', - 'Jan 1 2012 should be week 52' + '1 01 1st', + 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), @@ -29819,8 +29798,8 @@ ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1st', - 'Jan 8 2012 should be week 1' + '2 02 2nd', + 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), @@ -29829,8 +29808,42 @@ ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2nd', - 'Jan 15 2012 should be week 2' + '3 03 3rd', + 'Jan 15 2012 should be week 3' + ); + }); + + // Concrete test for Locale#weekdaysMin + test('Weekdays sort by locale', function (assert) { + assert.deepEqual( + moment().localeData('en-in').weekdays(), + 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + 'weekdays start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-in').weekdays(true), + 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + 'locale-sorted weekdays start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-in').weekdaysShort(), + 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + 'weekdaysShort start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-in').weekdaysShort(true), + 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + 'locale-sorted weekdaysShort start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-in').weekdaysMin(), + 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 'weekdaysMin start on Sunday' + ); + assert.deepEqual( + moment().localeData('en-in').weekdaysMin(true), + 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 'locale-sorted weekdaysMin start on Sunday' ); }); @@ -30229,7 +30242,7 @@ defineCommonLocaleTests(name); } - localeModule('en-sg'); + localeModule('en-nz'); test('parse', function (assert) { var tests = @@ -30244,6 +30257,15 @@ input + ' should be month ' + (i + 1) ); } + + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } + for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); @@ -30254,6 +30276,13 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -30276,15 +30305,15 @@ ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['LTS', '15:25:50'], + ['LTS', '3:25:50 PM'], ['L', '14/02/2010'], ['LL', '14 February 2010'], - ['LLL', '14 February 2010 15:25'], - ['LLLL', 'Sunday, 14 February 2010 15:25'], + ['LLL', '14 February 2010 3:25 PM'], + ['LLLL', 'Sunday, 14 February 2010 3:25 PM'], ['l', '14/2/2010'], ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 15:25'], - ['llll', 'Sun, 14 Feb 2010 15:25'], + ['lll', '14 Feb 2010 3:25 PM'], + ['llll', 'Sun, 14 Feb 2010 3:25 PM'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -30531,32 +30560,32 @@ assert.equal( moment(a).calendar(), - 'Today at 12:00', + 'Today at 12:00 PM', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Today at 12:25', + 'Today at 12:25 PM', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Today at 13:00', + 'Today at 1:00 PM', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Tomorrow at 12:00', + 'Tomorrow at 12:00 PM', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Today at 11:00', + 'Today at 11:00 AM', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Yesterday at 12:00', + 'Yesterday at 12:00 PM', 'yesterday at the same time' ); }); @@ -31055,15 +31084,14 @@ defineCommonLocaleTests(name); } - localeModule('en'); + localeModule('en-sg'); test('parse', function (assert) { - var i, - tests = + var tests = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( '_' - ); - + ), + i; function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -31071,15 +31099,6 @@ input + ' should be month ' + (i + 1) ); } - - function equalTestStrict(input, mmm, monthIndex) { - assert.equal( - moment(input, mmm, true).month(), - monthIndex, - input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) - ); - } - for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); @@ -31090,13 +31109,6 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -31112,105 +31124,30 @@ ['D Do DD', '14 14th 14'], ['d do dddd ddd dd', '0 0th Sunday Sun Su'], ['DDD DDDo DDDD', '45 45th 045'], - ['w wo ww', '8 8th 08'], + ['w wo ww', '6 6th 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45th day of the year'], - ['LTS', '3:25:50 PM'], - ['L', '02/14/2010'], - ['LL', 'February 14, 2010'], - ['LLL', 'February 14, 2010 3:25 PM'], - ['LLLL', 'Sunday, February 14, 2010 3:25 PM'], - ['l', '2/14/2010'], - ['ll', 'Feb 14, 2010'], - ['lll', 'Feb 14, 2010 3:25 PM'], - ['llll', 'Sun, Feb 14, 2010 3:25 PM'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 February 2010'], + ['LLL', '14 February 2010 15:25'], + ['LLLL', 'Sunday, 14 February 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 15:25'], + ['llll', 'Sun, 14 Feb 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; - for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); - test('parse era', function (assert) { - assert.equal(moment('2010 AD', 'y N', true).isValid(), true, '2010 AD'); - assert.equal(moment('2010 AD', 'y N', true).year(), 2010, '2010 AD'); - - assert.equal( - moment('2010 Anno Domini', 'y N', true).isValid(), - false, - '2010 Anno Domini' - ); - assert.equal( - moment('2010 Anno Domini', 'y N', false).isValid(), - true, - '2010 Anno Domini' - ); - assert.equal( - moment('2010 Anno Domini', 'y NNNN', true).isValid(), - true, - '2010 Anno Domini' - ); - assert.equal( - moment('2010 Anno Domini', 'y NNNN', true).year(), - 2010, - '2010 Anno Domini' - ); - assert.equal( - moment('2010 Anno Domini', 'y N', false).year(), - 2010, - '2010 Anno Domini' - ); - - assert.equal(moment('469 BC', 'y N', true).isValid(), true, '469 BC'); - assert.equal(moment('469 BC', 'y N', true).year(), -468, '469 BC'); - - assert.equal( - moment('469 Before Christ', 'y NNNN', true).isValid(), - true, - '469 Before Christ' - ); - assert.equal( - moment('469 Before Christ', 'y NNNN', true).year(), - -468, - '469 Before Christ' - ); - }); - - test('format era', function (assert) { - var a = [ - ['+000001-01-01', 'N, NN, NNN', 'AD, AD, AD'], - ['+000001-01-01', 'NNNN', 'Anno Domini'], - ['+000001-01-01', 'NNNNN', 'AD'], - ['+000001-01-01', 'y', '1'], - - ['+000000-12-31', 'N, NN, NNN', 'BC, BC, BC'], - ['+000000-12-31', 'NNNN', 'Before Christ'], - ['+000000-12-31', 'NNNNN', 'BC'], - ['+000000-12-31', 'y', '1'], - - ['-000001-12-31', 'N, NN, NNN', 'BC, BC, BC'], - ['-000001-12-31', 'NNNN', 'Before Christ'], - ['-000001-12-31', 'NNNNN', 'BC'], - ['-000001-12-31', 'y', '2'], - ], - i, - l; - - for (i = 0, l = a.length; i < l; ++i) { - assert.equal( - moment(a[i][0]).format(a[i][1]), - a[i][2], - a[i][0] + '; ' + a[i][1] + ' ---> ' + a[i][2] - ); - } - }); - test('format ordinal', function (assert) { assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); @@ -31249,12 +31186,11 @@ }); test('format month', function (assert) { - var i, - expected = + var expected = 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -31265,12 +31201,11 @@ }); test('format week', function (assert) { - var i, - expected = + var expected = 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -31282,7 +31217,6 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), 'a few seconds', @@ -31452,39 +31386,38 @@ assert.equal( moment(a).calendar(), - 'Today at 12:00 PM', + 'Today at 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Today at 12:25 PM', + 'Today at 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Today at 1:00 PM', + 'Today at 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Tomorrow at 12:00 PM', + 'Tomorrow at 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Today at 11:00 AM', + 'Today at 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Yesterday at 12:00 PM', + 'Yesterday at 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( @@ -31554,70 +31487,34 @@ ); }); - test('weeks year starting sunday format', function (assert) { + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1st', - 'Jan 1 2012 should be week 1' + '52 52 52nd', + 'Jan 1 2012 should be week 52' ); assert.equal( - moment([2012, 0, 7]).format('w ww wo'), + moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', - 'Jan 7 2012 should be week 1' + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2nd', - 'Jan 8 2012 should be week 2' + '1 01 1st', + 'Jan 8 2012 should be week 1' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), + moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', - 'Jan 14 2012 should be week 2' + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3rd', - 'Jan 15 2012 should be week 3' + '2 02 2nd', + 'Jan 15 2012 should be week 2' ); }); - test('weekdays strict parsing', function (assert) { - var m = moment('2015-01-01T12', moment.ISO_8601, true), - enLocale = moment.localeData('en'), - i; - - for (i = 0; i < 7; ++i) { - assert.equal( - moment(enLocale.weekdays(m.day(i), ''), 'dddd', true).isValid(), - true, - 'parse weekday ' + i - ); - assert.equal( - moment(enLocale.weekdaysShort(m.day(i), ''), 'ddd', true).isValid(), - true, - 'parse short weekday ' + i - ); - assert.equal( - moment(enLocale.weekdaysMin(m.day(i), ''), 'dd', true).isValid(), - true, - 'parse min weekday ' + i - ); - - // negative tests - assert.equal( - moment(enLocale.weekdaysMin(m.day(i), ''), 'ddd', true).isValid(), - false, - 'parse short weekday ' + i - ); - assert.equal( - moment(enLocale.weekdaysShort(m.day(i), ''), 'dd', true).isValid(), - false, - 'parse min weekday ' + i - ); - } - }); - }))); @@ -32013,14 +31910,15 @@ defineCommonLocaleTests(name); } - localeModule('eo'); + localeModule('en'); test('parse', function (assert) { - var tests = - 'januaro jan_februaro feb_marto mart_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sept_oktobro okt_novembro nov_decembro dec'.split( + var i, + tests = + 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( '_' - ), - i; + ); + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -32061,81 +31959,157 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.', + 'Sunday, February 14th 2010, 3:25:50 pm', ], - ['ddd, hA', 'dim, 3P.T.M.'], - ['M Mo MM MMMM MMM', '2 2a 02 februaro feb'], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14a 14'], - ['d do dddd ddd dd', '0 0a dimanĉo dim di'], - ['DDD DDDo DDDD', '45 45a 045'], - ['w wo ww', '7 7a 07'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Sunday Sun Su'], + ['DDD DDDo DDDD', '45 45th 045'], + ['w wo ww', '8 8th 08'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'p.t.m. P.T.M.'], - ['[la] DDDo [tago] [de] [la] [jaro]', 'la 45a tago de la jaro'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', 'la 14-an de februaro, 2010'], - ['LLL', 'la 14-an de februaro, 2010 15:25'], - ['LLLL', 'dimanĉon, la 14-an de februaro, 2010 15:25'], - ['l', '2010-2-14'], - ['ll', 'la 14-an de feb, 2010'], - ['lll', 'la 14-an de feb, 2010 15:25'], - ['llll', 'dim, la 14-an de feb, 2010 15:25'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45th day of the year'], + ['LTS', '3:25:50 PM'], + ['L', '02/14/2010'], + ['LL', 'February 14, 2010'], + ['LLL', 'February 14, 2010 3:25 PM'], + ['LLLL', 'Sunday, February 14, 2010 3:25 PM'], + ['l', '2/14/2010'], + ['ll', 'Feb 14, 2010'], + ['lll', 'Feb 14, 2010 3:25 PM'], + ['llll', 'Sun, Feb 14, 2010 3:25 PM'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; + for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); + test('parse era', function (assert) { + assert.equal(moment('2010 AD', 'y N', true).isValid(), true, '2010 AD'); + assert.equal(moment('2010 AD', 'y N', true).year(), 2010, '2010 AD'); + + assert.equal( + moment('2010 Anno Domini', 'y N', true).isValid(), + false, + '2010 Anno Domini' + ); + assert.equal( + moment('2010 Anno Domini', 'y N', false).isValid(), + true, + '2010 Anno Domini' + ); + assert.equal( + moment('2010 Anno Domini', 'y NNNN', true).isValid(), + true, + '2010 Anno Domini' + ); + assert.equal( + moment('2010 Anno Domini', 'y NNNN', true).year(), + 2010, + '2010 Anno Domini' + ); + assert.equal( + moment('2010 Anno Domini', 'y N', false).year(), + 2010, + '2010 Anno Domini' + ); + + assert.equal(moment('469 BC', 'y N', true).isValid(), true, '469 BC'); + assert.equal(moment('469 BC', 'y N', true).year(), -468, '469 BC'); + + assert.equal( + moment('469 Before Christ', 'y NNNN', true).isValid(), + true, + '469 Before Christ' + ); + assert.equal( + moment('469 Before Christ', 'y NNNN', true).year(), + -468, + '469 Before Christ' + ); + }); + + test('format era', function (assert) { + var a = [ + ['+000001-01-01', 'N, NN, NNN', 'AD, AD, AD'], + ['+000001-01-01', 'NNNN', 'Anno Domini'], + ['+000001-01-01', 'NNNNN', 'AD'], + ['+000001-01-01', 'y', '1'], + + ['+000000-12-31', 'N, NN, NNN', 'BC, BC, BC'], + ['+000000-12-31', 'NNNN', 'Before Christ'], + ['+000000-12-31', 'NNNNN', 'BC'], + ['+000000-12-31', 'y', '1'], + + ['-000001-12-31', 'N, NN, NNN', 'BC, BC, BC'], + ['-000001-12-31', 'NNNN', 'Before Christ'], + ['-000001-12-31', 'NNNNN', 'BC'], + ['-000001-12-31', 'y', '2'], + ], + i, + l; + + for (i = 0, l = a.length; i < l; ++i) { + assert.equal( + moment(a[i][0]).format(a[i][1]), + a[i][2], + a[i][0] + '; ' + a[i][1] + ' ---> ' + a[i][2] + ); + } + }); + test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3a', '3a'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4a', '4a'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5a', '5a'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6a', '6a'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7a', '7a'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8a', '8a'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9a', '9a'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10a', '10a'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1st', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2nd', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3rd', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4th', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5th', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6th', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7th', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8th', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9th', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10th', '10th'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11a', '11a'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12a', '12a'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13a', '13a'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14a', '14a'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15a', '15a'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16a', '16a'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17a', '17a'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18a', '18a'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19a', '19a'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20a', '20a'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11th', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12th', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13th', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14th', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15th', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16th', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17th', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18th', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19th', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20th', '20th'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23a', '23a'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24a', '24a'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25a', '25a'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26a', '26a'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27a', '27a'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28a', '28a'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29a', '29a'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30a', '30a'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21st', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22nd', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23rd', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24th', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25th', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26th', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27th', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28th', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29th', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30th', '30th'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); }); test('format month', function (assert) { - var expected = - 'januaro jan_februaro feb_marto mart_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sept_oktobro okt_novembro nov_decembro dec'.split( + var i, + expected = + 'January Jan_February Feb_March Mar_April Apr_May May_June Jun_July Jul_August Aug_September Sep_October Oct_November Nov_December Dec'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -32146,11 +32120,12 @@ }); test('format week', function (assert) { - var expected = - 'dimanĉo dim di_lundo lun lu_mardo mard ma_merkredo merk me_ĵaŭdo ĵaŭ ĵa_vendredo ven ve_sabato sab sa'.split( + var i, + expected = + 'Sunday Sun Su_Monday Mon Mo_Tuesday Tue Tu_Wednesday Wed We_Thursday Thu Th_Friday Fri Fr_Saturday Sat Sa'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -32162,161 +32137,158 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); + assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'kelkaj sekundoj', + 'a few seconds', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'unu minuto', + 'a minute', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'unu minuto', + 'a minute', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minutoj', + '2 minutes', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minutoj', + '44 minutes', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'unu horo', + 'an hour', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'unu horo', + 'an hour', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 horoj', + '2 hours', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 horoj', + '5 hours', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 horoj', + '21 hours', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'unu tago', + 'a day', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'unu tago', + 'a day', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 tagoj', + '2 days', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'unu tago', + 'a day', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 tagoj', + '5 days', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 tagoj', + '25 days', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'unu monato', + 'a month', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'unu monato', + 'a month', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'unu monato', + 'a month', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 monatoj', + '2 months', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 monatoj', + '2 months', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 monatoj', + '3 months', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'unu monato', + 'a month', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 monatoj', + '5 months', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'unu jaro', + 'a year', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 jaroj', + '2 years', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'unu jaro', + 'a year', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 jaroj', + '5 years', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'post kelkaj sekundoj', 'post prefix'); - assert.equal( - moment(0).from(30000), - 'antaŭ kelkaj sekundoj', - 'antaŭ prefix' - ); + assert.equal(moment(30000).from(0), 'in a few seconds', 'prefix'); + assert.equal(moment(0).from(30000), 'a few seconds ago', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'antaŭ kelkaj sekundoj', + 'a few seconds ago', 'now from now should display as in the past' ); }); @@ -32324,14 +32296,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'post kelkaj sekundoj', - 'post kelkaj sekundoj' - ); - assert.equal( - moment().add({ d: 5 }).fromNow(), - 'post 5 tagoj', - 'post 5 tagoj' + 'in a few seconds', + 'in a few seconds' ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'in 5 days', 'in 5 days'); }); test('calendar day', function (assert) { @@ -32339,32 +32307,32 @@ assert.equal( moment(a).calendar(), - 'Hodiaŭ je 12:00', + 'Today at 12:00 PM', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Hodiaŭ je 12:25', + 'Today at 12:25 PM', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Hodiaŭ je 13:00', + 'Today at 1:00 PM', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Morgaŭ je 12:00', + 'Tomorrow at 12:00 PM', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Hodiaŭ je 11:00', + 'Today at 11:00 AM', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Hieraŭ je 12:00', + 'Yesterday at 12:00 PM', 'yesterday at the same time' ); }); @@ -32376,19 +32344,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd[n] [je] LT'), + m.format('dddd [at] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd[n] [je] LT'), + m.format('dddd [at] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd[n] [je] LT'), + m.format('dddd [at] LT'), 'Today + ' + i + ' days end of day' ); } @@ -32401,19 +32369,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[pasintan] dddd[n je] LT'), + m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[pasintan] dddd[n je] LT'), + m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[pasintan] dddd[n je] LT'), + m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day' ); } @@ -32441,34 +32409,70 @@ ); }); - test('weeks year starting sunday formatted', function (assert) { - assert.equal( - moment([2011, 11, 26]).format('w ww wo'), - '1 01 1a', - 'Dec 26 2011 should be week 1' - ); + test('weeks year starting sunday format', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1a', + '1 01 1st', 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), - '2 02 2a', - 'Jan 2 2012 should be week 2' + moment([2012, 0, 7]).format('w ww wo'), + '1 01 1st', + 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2a', + '2 02 2nd', 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), - '3 03 3a', - 'Jan 9 2012 should be week 3' + moment([2012, 0, 14]).format('w ww wo'), + '2 02 2nd', + 'Jan 14 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3rd', + 'Jan 15 2012 should be week 3' ); }); + test('weekdays strict parsing', function (assert) { + var m = moment('2015-01-01T12', moment.ISO_8601, true), + enLocale = moment.localeData('en'), + i; + + for (i = 0; i < 7; ++i) { + assert.equal( + moment(enLocale.weekdays(m.day(i), ''), 'dddd', true).isValid(), + true, + 'parse weekday ' + i + ); + assert.equal( + moment(enLocale.weekdaysShort(m.day(i), ''), 'ddd', true).isValid(), + true, + 'parse short weekday ' + i + ); + assert.equal( + moment(enLocale.weekdaysMin(m.day(i), ''), 'dd', true).isValid(), + true, + 'parse min weekday ' + i + ); + + // negative tests + assert.equal( + moment(enLocale.weekdaysMin(m.day(i), ''), 'ddd', true).isValid(), + false, + 'parse short weekday ' + i + ); + assert.equal( + moment(enLocale.weekdaysShort(m.day(i), ''), 'dd', true).isValid(), + false, + 'parse min weekday ' + i + ); + } + }); + }))); @@ -32864,11 +32868,11 @@ defineCommonLocaleTests(name); } - localeModule('es-do'); + localeModule('eo'); test('parse', function (assert) { var tests = - 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split( + 'januaro jan_februaro feb_marto mart_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sept_oktobro okt_novembro nov_decembro dec'.split( '_' ), i; @@ -32912,31 +32916,30 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'domingo, febrero 14º 2010, 3:25:50 pm', + 'dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.', ], - ['ddd, hA', 'dom., 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 febrero feb.'], + ['ddd, hA', 'dim, 3P.T.M.'], + ['M Mo MM MMMM MMM', '2 2a 02 februaro feb'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º domingo dom. do'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '6 6º 06'], - ['YYYY-MMM-DD', '2010-feb-14'], + ['D Do DD', '14 14a 14'], + ['d do dddd ddd dd', '0 0a dimanĉo dim di'], + ['DDD DDDo DDDD', '45 45a 045'], + ['w wo ww', '7 7a 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '3:25:50 PM'], - ['L', '14/02/2010'], - ['LL', '14 de febrero de 2010'], - ['LLL', '14 de febrero de 2010 3:25 PM'], - ['LLLL', 'domingo, 14 de febrero de 2010 3:25 PM'], - ['l', '14/2/2010'], - ['ll', '14 de feb. de 2010'], - ['lll', '14 de feb. de 2010 3:25 PM'], - ['llll', 'dom., 14 de feb. de 2010 3:25 PM'], + ['a A', 'p.t.m. P.T.M.'], + ['[la] DDDo [tago] [de] [la] [jaro]', 'la 45a tago de la jaro'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', 'la 14-an de februaro, 2010'], + ['LLL', 'la 14-an de februaro, 2010 15:25'], + ['LLLL', 'dimanĉon, la 14-an de februaro, 2010 15:25'], + ['l', '2010-2-14'], + ['ll', 'la 14-an de feb, 2010'], + ['lll', 'la 14-an de feb, 2010 15:25'], + ['llll', 'dim, la 14-an de feb, 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -32946,45 +32949,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1a', '1a'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2a', '2a'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3a', '3a'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4a', '4a'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5a', '5a'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6a', '6a'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7a', '7a'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8a', '8a'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9a', '9a'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10a', '10a'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11a', '11a'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12a', '12a'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13a', '13a'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14a', '14a'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15a', '15a'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16a', '16a'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17a', '17a'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18a', '18a'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19a', '19a'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20a', '20a'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21a', '21a'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23a', '23a'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24a', '24a'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25a', '25a'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26a', '26a'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27a', '27a'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28a', '28a'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29a', '29a'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30a', '30a'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31a', '31a'); }); test('format month', function (assert) { var expected = - 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split( + 'januaro jan_februaro feb_marto mart_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sept_oktobro okt_novembro nov_decembro dec'.split( '_' ), i; @@ -32999,7 +33002,7 @@ test('format week', function (assert) { var expected = - 'domingo dom. do_lunes lun. lu_martes mar. ma_miércoles mié. mi_jueves jue. ju_viernes vie. vi_sábado sáb. sá'.split( + 'dimanĉo dim di_lundo lun lu_mardo mard ma_merkredo merk me_ĵaŭdo ĵaŭ ĵa_vendredo ven ve_sabato sab sa'.split( '_' ), i; @@ -33016,155 +33019,159 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'unos segundos', + 'kelkaj sekundoj', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'un minuto', + 'unu minuto', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'un minuto', + 'unu minuto', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minutos', + '2 minutoj', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minutos', + '44 minutoj', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'una hora', + 'unu horo', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'una hora', + 'unu horo', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 horas', + '2 horoj', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 horas', + '5 horoj', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 horas', + '21 horoj', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'un día', + 'unu tago', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'un día', + 'unu tago', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 días', + '2 tagoj', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'un día', + 'unu tago', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 días', + '5 tagoj', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 días', + '25 tagoj', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'un mes', + 'unu monato', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'un mes', + 'unu monato', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'un mes', + 'unu monato', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 meses', + '2 monatoj', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 meses', + '2 monatoj', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 meses', + '3 monatoj', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'un mes', + 'unu monato', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 meses', + '5 monatoj', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'un año', + 'unu jaro', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 años', + '2 jaroj', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'un año', + 'unu jaro', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 años', + '5 jaroj', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'en unos segundos', 'prefix'); - assert.equal(moment(0).from(30000), 'hace unos segundos', 'suffix'); + assert.equal(moment(30000).from(0), 'post kelkaj sekundoj', 'post prefix'); + assert.equal( + moment(0).from(30000), + 'antaŭ kelkaj sekundoj', + 'antaŭ prefix' + ); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'hace unos segundos', + 'antaŭ kelkaj sekundoj', 'now from now should display as in the past' ); }); @@ -33172,10 +33179,14 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'en unos segundos', - 'en unos segundos' + 'post kelkaj sekundoj', + 'post kelkaj sekundoj' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'post 5 tagoj', + 'post 5 tagoj' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'en 5 días', 'en 5 días'); }); test('calendar day', function (assert) { @@ -33183,37 +33194,32 @@ assert.equal( moment(a).calendar(), - 'hoy a las 12:00 PM', + 'Hodiaŭ je 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'hoy a las 12:25 PM', + 'Hodiaŭ je 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'hoy a las 1:00 PM', + 'Hodiaŭ je 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'mañana a las 12:00 PM', + 'Morgaŭ je 12:00', 'tomorrow at the same time' ); - assert.equal( - moment(a).add({ d: 1, h: -1 }).calendar(), - 'mañana a las 11:00 AM', - 'tomorrow minus 1 hour' - ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'hoy a las 11:00 AM', + 'Hodiaŭ je 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'ayer a las 12:00 PM', + 'Hieraŭ je 12:00', 'yesterday at the same time' ); }); @@ -33225,19 +33231,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [a la' + (m.hours() !== 1 ? 's' : '') + '] LT'), + m.format('dddd[n] [je] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [a la' + (m.hours() !== 1 ? 's' : '') + '] LT'), + m.format('dddd[n] [je] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [a la' + (m.hours() !== 1 ? 's' : '') + '] LT'), + m.format('dddd[n] [je] LT'), 'Today + ' + i + ' days end of day' ); } @@ -33250,25 +33256,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format( - '[el] dddd [pasado a la' + (m.hours() !== 1 ? 's' : '') + '] LT' - ), + m.format('[pasintan] dddd[n je] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format( - '[el] dddd [pasado a la' + (m.hours() !== 1 ? 's' : '') + '] LT' - ), + m.format('[pasintan] dddd[n je] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format( - '[el] dddd [pasado a la' + (m.hours() !== 1 ? 's' : '') + '] LT' - ), + m.format('[pasintan] dddd[n je] LT'), 'Today - ' + i + ' days end of day' ); } @@ -33297,44 +33297,30 @@ }); test('weeks year starting sunday formatted', function (assert) { + assert.equal( + moment([2011, 11, 26]).format('w ww wo'), + '1 01 1a', + 'Dec 26 2011 should be week 1' + ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52º', - 'Jan 1 2012 should be week 52' + '1 01 1a', + 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1º', - 'Jan 2 2012 should be week 1' + '2 02 2a', + 'Jan 2 2012 should be week 2' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1º', - 'Jan 8 2012 should be week 1' + '2 02 2a', + 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2º', - 'Jan 9 2012 should be week 2' - ); - assert.equal( - moment([2012, 0, 15]).format('w ww wo'), - '2 02 2º', - 'Jan 15 2012 should be week 2' - ); - }); - - test('test short months proper', function (assert) { - var str = '02-ago-2016'; // "02-ago-2016" - assert.equal( - moment(str, 'DD-MMM-YYYY').month(), - 7, - '02-ago-2016 month should be 7' - ); - assert.equal( - moment(str, 'DD-MMM-YYYY', true).month(), - 7, - '02-ago-2016 strict parse month should be 7' + '3 03 3a', + 'Jan 9 2012 should be week 3' ); }); @@ -33733,7 +33719,7 @@ defineCommonLocaleTests(name); } - localeModule('es-mx'); + localeModule('es-do'); test('parse', function (assert) { var tests = @@ -33789,7 +33775,7 @@ ['D Do DD', '14 14º 14'], ['d do dddd ddd dd', '0 0º domingo dom. do'], ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '7 7º 07'], + ['w wo ww', '6 6º 06'], ['YYYY-MMM-DD', '2010-feb-14'], ['h hh', '3 03'], ['H HH', '15 15'], @@ -33797,15 +33783,15 @@ ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], + ['LTS', '3:25:50 PM'], ['L', '14/02/2010'], ['LL', '14 de febrero de 2010'], - ['LLL', '14 de febrero de 2010 15:25'], - ['LLLL', 'domingo, 14 de febrero de 2010 15:25'], + ['LLL', '14 de febrero de 2010 3:25 PM'], + ['LLLL', 'domingo, 14 de febrero de 2010 3:25 PM'], ['l', '14/2/2010'], ['ll', '14 de feb. de 2010'], - ['lll', '14 de feb. de 2010 15:25'], - ['llll', 'dom., 14 de feb. de 2010 15:25'], + ['lll', '14 de feb. de 2010 3:25 PM'], + ['llll', 'dom., 14 de feb. de 2010 3:25 PM'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -34052,37 +34038,37 @@ assert.equal( moment(a).calendar(), - 'hoy a las 12:00', + 'hoy a las 12:00 PM', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'hoy a las 12:25', + 'hoy a las 12:25 PM', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'hoy a las 13:00', + 'hoy a las 1:00 PM', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'mañana a las 12:00', + 'mañana a las 12:00 PM', 'tomorrow at the same time' ); assert.equal( moment(a).add({ d: 1, h: -1 }).calendar(), - 'mañana a las 11:00', + 'mañana a las 11:00 AM', 'tomorrow minus 1 hour' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'hoy a las 11:00', + 'hoy a las 11:00 AM', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'ayer a las 12:00', + 'ayer a las 12:00 PM', 'yesterday at the same time' ); }); @@ -34168,8 +34154,8 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1º', - 'Jan 1 2012 should be week 1' + '52 52 52º', + 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), @@ -34178,8 +34164,8 @@ ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2º', - 'Jan 8 2012 should be week 2' + '1 01 1º', + 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), @@ -34188,63 +34174,22 @@ ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3º', - 'Jan 15 2012 should be week 3' - ); - }); - - // Concrete test for Locale#weekdaysMin - test('Weekdays sort by locale', function (assert) { - var weekdays = 'domingo_lunes_martes_miércoles_jueves_viernes_sábado', - weekdaysShort = 'dom._lun._mar._mié._jue._vie._sáb.', - weekdaysMin = 'do_lu_ma_mi_ju_vi_sá'; - - assert.deepEqual( - moment().localeData().weekdays(), - weekdays.split('_'), - 'weekdays start on Sunday' - ); - assert.deepEqual( - moment().localeData().weekdays(true), - weekdays.split('_'), - 'locale-sorted weekdays start on Sunday' - ); - assert.deepEqual( - moment().localeData().weekdaysShort(), - weekdaysShort.split('_'), - 'weekdaysShort start on Sunday' - ); - assert.deepEqual( - moment().localeData().weekdaysShort(true), - weekdaysShort.split('_'), - 'locale-sorted weekdaysShort start on Sunday' - ); - assert.deepEqual( - moment().localeData().weekdaysMin(), - weekdaysMin.split('_'), - 'weekdaysMin start on Sunday' - ); - assert.deepEqual( - moment().localeData().weekdaysMin(true), - weekdaysMin.split('_'), - 'locale-sorted weekdaysMin start on Sunday' + '2 02 2º', + 'Jan 15 2012 should be week 2' ); }); test('test short months proper', function (assert) { - var str = '02-ago-2016'; + var str = '02-ago-2016'; // "02-ago-2016" assert.equal( moment(str, 'DD-MMM-YYYY').month(), - '7', + 7, '02-ago-2016 month should be 7' ); - }); - - test('translated invalid date', function (assert) { assert.equal( - moment('nonsense', 'DD-MMM-YYYY').format(), - 'Fecha inválida', - 'Invalid date should translate' + moment(str, 'DD-MMM-YYYY', true).month(), + 7, + '02-ago-2016 strict parse month should be 7' ); }); @@ -34643,7 +34588,7 @@ defineCommonLocaleTests(name); } - localeModule('es-us'); + localeModule('es-mx'); test('parse', function (assert) { var tests = @@ -34699,7 +34644,7 @@ ['D Do DD', '14 14º 14'], ['d do dddd ddd dd', '0 0º domingo dom. do'], ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '8 8º 08'], + ['w wo ww', '7 7º 07'], ['YYYY-MMM-DD', '2010-feb-14'], ['h hh', '3 03'], ['H HH', '15 15'], @@ -34707,16 +34652,15 @@ ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LT', '3:25 PM'], - ['LTS', '3:25:50 PM'], - ['L', '02/14/2010'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], ['LL', '14 de febrero de 2010'], - ['LLL', '14 de febrero de 2010 3:25 PM'], - ['LLLL', 'domingo, 14 de febrero de 2010 3:25 PM'], - ['l', '2/14/2010'], + ['LLL', '14 de febrero de 2010 15:25'], + ['LLLL', 'domingo, 14 de febrero de 2010 15:25'], + ['l', '14/2/2010'], ['ll', '14 de feb. de 2010'], - ['lll', '14 de feb. de 2010 3:25 PM'], - ['llll', 'dom., 14 de feb. de 2010 3:25 PM'], + ['lll', '14 de feb. de 2010 15:25'], + ['llll', 'dom., 14 de feb. de 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -34763,12 +34707,11 @@ }); test('format month', function (assert) { - var i, - expected = + var expected = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -34779,12 +34722,11 @@ }); test('format week', function (assert) { - var i, - expected = + var expected = 'domingo dom. do_lunes lun. lu_martes mar. ma_miércoles mié. mi_jueves jue. ju_viernes vie. vi_sábado sáb. sá'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -34796,7 +34738,6 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), 'unos segundos', @@ -34966,37 +34907,37 @@ assert.equal( moment(a).calendar(), - 'hoy a las 12:00 PM', + 'hoy a las 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'hoy a las 12:25 PM', + 'hoy a las 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'hoy a las 1:00 PM', + 'hoy a las 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'mañana a las 12:00 PM', + 'mañana a las 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).add({ d: 1, h: -1 }).calendar(), - 'mañana a las 11:00 AM', + 'mañana a las 11:00', 'tomorrow minus 1 hour' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'hoy a las 11:00 AM', + 'hoy a las 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'ayer a las 12:00 PM', + 'ayer a las 12:00', 'yesterday at the same time' ); }); @@ -35090,20 +35031,15 @@ '1 01 1º', 'Jan 2 2012 should be week 1' ); - assert.equal( - moment([2012, 0, 7]).format('w ww wo'), - '1 01 1º', - 'Jan 7 2012 should be week 1' - ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), + moment([2012, 0, 9]).format('w ww wo'), '2 02 2º', - 'Jan 14 2012 should be week 2' + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), @@ -35112,24 +35048,58 @@ ); }); + // Concrete test for Locale#weekdaysMin + test('Weekdays sort by locale', function (assert) { + var weekdays = 'domingo_lunes_martes_miércoles_jueves_viernes_sábado', + weekdaysShort = 'dom._lun._mar._mié._jue._vie._sáb.', + weekdaysMin = 'do_lu_ma_mi_ju_vi_sá'; + + assert.deepEqual( + moment().localeData().weekdays(), + weekdays.split('_'), + 'weekdays start on Sunday' + ); + assert.deepEqual( + moment().localeData().weekdays(true), + weekdays.split('_'), + 'locale-sorted weekdays start on Sunday' + ); + assert.deepEqual( + moment().localeData().weekdaysShort(), + weekdaysShort.split('_'), + 'weekdaysShort start on Sunday' + ); + assert.deepEqual( + moment().localeData().weekdaysShort(true), + weekdaysShort.split('_'), + 'locale-sorted weekdaysShort start on Sunday' + ); + assert.deepEqual( + moment().localeData().weekdaysMin(), + weekdaysMin.split('_'), + 'weekdaysMin start on Sunday' + ); + assert.deepEqual( + moment().localeData().weekdaysMin(true), + weekdaysMin.split('_'), + 'locale-sorted weekdaysMin start on Sunday' + ); + }); + test('test short months proper', function (assert) { - var str = '02-ago-2016'; // "02-ago-2016" + var str = '02-ago-2016'; assert.equal( moment(str, 'DD-MMM-YYYY').month(), - 7, + '7', '02-ago-2016 month should be 7' ); - assert.equal( - moment(str, 'DD-MMM-YYYY', true).month(), - 7, - '02-ago-2016 strict parse month should be 7' - ); }); - test('test lenient month parsing', function (assert) { - assert.ok( - moment('nov 01, 2015', 'MMM D, YYYY', true).isValid(), - 'nov 01, 2015 should parse correctly' + test('translated invalid date', function (assert) { + assert.equal( + moment('nonsense', 'DD-MMM-YYYY').format(), + 'Fecha inválida', + 'Invalid date should translate' ); }); @@ -35528,7 +35498,7 @@ defineCommonLocaleTests(name); } - localeModule('es'); + localeModule('es-us'); test('parse', function (assert) { var tests = @@ -35584,7 +35554,7 @@ ['D Do DD', '14 14º 14'], ['d do dddd ddd dd', '0 0º domingo dom. do'], ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '6 6º 06'], + ['w wo ww', '8 8º 08'], ['YYYY-MMM-DD', '2010-feb-14'], ['h hh', '3 03'], ['H HH', '15 15'], @@ -35592,15 +35562,16 @@ ['s ss', '50 50'], ['a A', 'pm PM'], ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], + ['LT', '3:25 PM'], + ['LTS', '3:25:50 PM'], + ['L', '02/14/2010'], ['LL', '14 de febrero de 2010'], - ['LLL', '14 de febrero de 2010 15:25'], - ['LLLL', 'domingo, 14 de febrero de 2010 15:25'], - ['l', '14/2/2010'], + ['LLL', '14 de febrero de 2010 3:25 PM'], + ['LLLL', 'domingo, 14 de febrero de 2010 3:25 PM'], + ['l', '2/14/2010'], ['ll', '14 de feb. de 2010'], - ['lll', '14 de feb. de 2010 15:25'], - ['llll', 'dom., 14 de feb. de 2010 15:25'], + ['lll', '14 de feb. de 2010 3:25 PM'], + ['llll', 'dom., 14 de feb. de 2010 3:25 PM'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -35647,11 +35618,12 @@ }); test('format month', function (assert) { - var expected = + var i, + expected = 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -35662,11 +35634,12 @@ }); test('format week', function (assert) { - var expected = + var i, + expected = 'domingo dom. do_lunes lun. lu_martes mar. ma_miércoles mié. mi_jueves jue. ju_viernes vie. vi_sábado sáb. sá'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -35678,6 +35651,7 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); + assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), 'unos segundos', @@ -35847,37 +35821,37 @@ assert.equal( moment(a).calendar(), - 'hoy a las 12:00', + 'hoy a las 12:00 PM', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'hoy a las 12:25', + 'hoy a las 12:25 PM', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'hoy a las 13:00', + 'hoy a las 1:00 PM', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'mañana a las 12:00', + 'mañana a las 12:00 PM', 'tomorrow at the same time' ); assert.equal( moment(a).add({ d: 1, h: -1 }).calendar(), - 'mañana a las 11:00', + 'mañana a las 11:00 AM', 'tomorrow minus 1 hour' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'hoy a las 11:00', + 'hoy a las 11:00 AM', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'ayer a las 12:00', + 'ayer a las 12:00 PM', 'yesterday at the same time' ); }); @@ -35963,8 +35937,8 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52º', - 'Jan 1 2012 should be week 52' + '1 01 1º', + 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), @@ -35972,36 +35946,45 @@ 'Jan 2 2012 should be week 1' ); assert.equal( - moment([2012, 0, 8]).format('w ww wo'), + moment([2012, 0, 7]).format('w ww wo'), '1 01 1º', - 'Jan 8 2012 should be week 1' + 'Jan 7 2012 should be week 1' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), + moment([2012, 0, 8]).format('w ww wo'), '2 02 2º', - 'Jan 9 2012 should be week 2' + 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 15]).format('w ww wo'), + moment([2012, 0, 14]).format('w ww wo'), '2 02 2º', - 'Jan 15 2012 should be week 2' + 'Jan 14 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3º', + 'Jan 15 2012 should be week 3' ); }); test('test short months proper', function (assert) { - var str = '02-ago-2016'; + var str = '02-ago-2016'; // "02-ago-2016" assert.equal( moment(str, 'DD-MMM-YYYY').month(), - '7', + 7, '02-ago-2016 month should be 7' ); + assert.equal( + moment(str, 'DD-MMM-YYYY', true).month(), + 7, + '02-ago-2016 strict parse month should be 7' + ); }); - test('translated invalid date', function (assert) { - assert.equal( - moment('nonsense', 'DD-MMM-YYYY').format(), - 'Fecha inválida', - 'Invalid date should translate' + test('test lenient month parsing', function (assert) { + assert.ok( + moment('nov 01, 2015', 'MMM DD, YYYY', true).isValid(), + 'nov 01, 2015 should parse correctly' ); }); @@ -36400,11 +36383,11 @@ defineCommonLocaleTests(name); } - localeModule('et'); + localeModule('es'); test('parse', function (assert) { var tests = - 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split( + 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split( '_' ), i; @@ -36412,7 +36395,7 @@ assert.equal( moment(input, mmm).month(), i, - input + ' peaks olema kuu ' + (i + 1) + input + ' should be month ' + (i + 1) ); } @@ -36447,31 +36430,32 @@ test('format', function (assert) { var a = [ [ - 'dddd, Do MMMM YYYY, H:mm:ss', - 'pühapäev, 14. veebruar 2010, 15:25:50', + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'domingo, febrero 14º 2010, 3:25:50 pm', ], - ['ddd, h', 'P, 3'], - ['M Mo MM MMMM MMM', '2 2. 02 veebruar veebr'], + ['ddd, hA', 'dom., 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 febrero feb.'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. pühapäev P P'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º domingo dom. do'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '6 6º 06'], + ['YYYY-MMM-DD', '2010-feb-14'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[aasta] DDDo [päev]', 'aasta 45. päev'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. veebruar 2010'], - ['LLL', '14. veebruar 2010 15:25'], - ['LLLL', 'pühapäev, 14. veebruar 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. veebr 2010'], - ['lll', '14. veebr 2010 15:25'], - ['llll', 'P, 14. veebr 2010 15:25'], + ['L', '14/02/2010'], + ['LL', '14 de febrero de 2010'], + ['LLL', '14 de febrero de 2010 15:25'], + ['LLLL', 'domingo, 14 de febrero de 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de feb. de 2010'], + ['lll', '14 de feb. de 2010 15:25'], + ['llll', 'dom., 14 de feb. de 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -36481,45 +36465,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); }); test('format month', function (assert) { var expected = - 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split( + 'enero ene._febrero feb._marzo mar._abril abr._mayo may._junio jun._julio jul._agosto ago._septiembre sep._octubre oct._noviembre nov._diciembre dic.'.split( '_' ), i; @@ -36534,7 +36518,7 @@ test('format week', function (assert) { var expected = - 'pühapäev P P_esmaspäev E E_teisipäev T T_kolmapäev K K_neljapäev N N_reede R R_laupäev L L'.split( + 'domingo dom. do_lunes lun. lu_martes mar. ma_miércoles mié. mi_jueves jue. ju_viernes vie. vi_sábado sáb. sá'.split( '_' ), i; @@ -36551,155 +36535,155 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'paar sekundit', - '44 seconds = paar sekundit' + 'unos segundos', + '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'üks minut', - '45 seconds = üks minut' + 'un minuto', + '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'üks minut', - '89 seconds = üks minut' + 'un minuto', + '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minutit', - '90 seconds = 2 minutit' + '2 minutos', + '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minutit', - '44 minutes = 44 minutit' + '44 minutos', + '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'üks tund', - '45 minutes = tund aega' + 'una hora', + '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'üks tund', - '89 minutes = üks tund' + 'una hora', + '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 tundi', - '90 minutes = 2 tundi' + '2 horas', + '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 tundi', - '5 hours = 5 tundi' + '5 horas', + '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 tundi', - '21 hours = 21 tundi' + '21 horas', + '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'üks päev', - '22 hours = üks päev' + 'un día', + '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'üks päev', - '35 hours = üks päev' + 'un día', + '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 päeva', - '36 hours = 2 päeva' + '2 días', + '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'üks päev', - '1 day = üks päev' + 'un día', + '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 päeva', - '5 days = 5 päeva' + '5 días', + '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 päeva', - '25 days = 25 päeva' + '25 días', + '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'üks kuu', - '26 days = üks kuu' + 'un mes', + '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'üks kuu', - '30 days = üks kuu' + 'un mes', + '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'üks kuu', - '43 days = üks kuu' + 'un mes', + '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 kuud', - '46 days = 2 kuud' + '2 meses', + '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 kuud', - '75 days = 2 kuud' + '2 meses', + '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 kuud', - '76 days = 3 kuud' + '3 meses', + '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'üks kuu', - '1 month = üks kuu' + 'un mes', + '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 kuud', - '5 months = 5 kuud' + '5 meses', + '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'üks aasta', - '345 days = üks aasta' + 'un año', + '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 aastat', - '548 days = 2 aastat' + '2 años', + '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'üks aasta', - '1 year = üks aasta' + 'un año', + '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 aastat', - '5 years = 5 aastat' + '5 años', + '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'mõne sekundi pärast', 'prefix'); - assert.equal(moment(0).from(30000), 'mõni sekund tagasi', 'suffix'); + assert.equal(moment(30000).from(0), 'en unos segundos', 'prefix'); + assert.equal(moment(0).from(30000), 'hace unos segundos', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'mõni sekund tagasi', + 'hace unos segundos', 'now from now should display as in the past' ); }); @@ -36707,154 +36691,72 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'mõne sekundi pärast', - 'in a few seconds' - ); - assert.equal( - moment().subtract({ s: 30 }).fromNow(), - 'mõni sekund tagasi', - 'a few seconds ago' - ); - - assert.equal( - moment().add({ m: 1 }).fromNow(), - 'ühe minuti pärast', - 'in a minute' - ); - assert.equal( - moment().subtract({ m: 1 }).fromNow(), - 'üks minut tagasi', - 'a minute ago' - ); - - assert.equal( - moment().add({ m: 5 }).fromNow(), - '5 minuti pärast', - 'in 5 minutes' - ); - assert.equal( - moment().subtract({ m: 5 }).fromNow(), - '5 minutit tagasi', - '5 minutes ago' - ); - - assert.equal( - moment().add({ d: 1 }).fromNow(), - 'ühe päeva pärast', - 'in one day' - ); - assert.equal( - moment().subtract({ d: 1 }).fromNow(), - 'üks päev tagasi', - 'one day ago' - ); - - assert.equal( - moment().add({ d: 5 }).fromNow(), - '5 päeva pärast', - 'in 5 days' - ); - assert.equal( - moment().subtract({ d: 5 }).fromNow(), - '5 päeva tagasi', - '5 days ago' - ); - - assert.equal( - moment().add({ M: 1 }).fromNow(), - 'kuu aja pärast', - 'in a month' - ); - assert.equal( - moment().subtract({ M: 1 }).fromNow(), - 'kuu aega tagasi', - 'a month ago' - ); - - assert.equal( - moment().add({ M: 5 }).fromNow(), - '5 kuu pärast', - 'in 5 months' - ); - assert.equal( - moment().subtract({ M: 5 }).fromNow(), - '5 kuud tagasi', - '5 months ago' - ); - - assert.equal( - moment().add({ y: 1 }).fromNow(), - 'ühe aasta pärast', - 'in a year' - ); - assert.equal( - moment().subtract({ y: 1 }).fromNow(), - 'aasta tagasi', - 'a year ago' - ); - - assert.equal( - moment().add({ y: 5 }).fromNow(), - '5 aasta pärast', - 'in 5 years' - ); - assert.equal( - moment().subtract({ y: 5 }).fromNow(), - '5 aastat tagasi', - '5 years ago' + 'en unos segundos', + 'en unos segundos' ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'en 5 días', 'en 5 días'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Täna, 12:00', 'today at the same time'); + assert.equal( + moment(a).calendar(), + 'hoy a las 12:00', + 'today at the same time' + ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Täna, 12:25', + 'hoy a las 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Täna, 13:00', + 'hoy a las 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Homme, 12:00', + 'mañana a las 12:00', 'tomorrow at the same time' ); + assert.equal( + moment(a).add({ d: 1, h: -1 }).calendar(), + 'mañana a las 11:00', + 'tomorrow minus 1 hour' + ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Täna, 11:00', + 'hoy a las 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Eile, 12:00', + 'ayer a las 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('[Järgmine] dddd LT'), + m.format('dddd [a la' + (m.hours() !== 1 ? 's' : '') + '] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[Järgmine] dddd LT'), + m.format('dddd [a la' + (m.hours() !== 1 ? 's' : '') + '] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[Järgmine] dddd LT'), + m.format('dddd [a la' + (m.hours() !== 1 ? 's' : '') + '] LT'), 'Today + ' + i + ' days end of day' ); } @@ -36862,23 +36764,30 @@ test('calendar last week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[Eelmine] dddd LT'), + m.format( + '[el] dddd [pasado a la' + (m.hours() !== 1 ? 's' : '') + '] LT' + ), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[Eelmine] dddd LT'), + m.format( + '[el] dddd [pasado a la' + (m.hours() !== 1 ? 's' : '') + '] LT' + ), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[Eelmine] dddd LT'), + m.format( + '[el] dddd [pasado a la' + (m.hours() !== 1 ? 's' : '') + '] LT' + ), 'Today - ' + i + ' days end of day' ); } @@ -36888,52 +36797,69 @@ var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 nädal tagasi'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - '1 nädala pärast' + 'in 1 week' ); weeksAgo = moment().subtract({ w: 2 }); weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 nädalat tagasi'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - '2 nädala pärast' + 'in 2 weeks' ); }); test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52.', + '52 52 52º', 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1.', + '1 01 1º', 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1.', + '1 01 1º', 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2.', + '2 02 2º', 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2.', + '2 02 2º', 'Jan 15 2012 should be week 2' ); }); + test('test short months proper', function (assert) { + var str = '02-ago-2016'; + assert.equal( + moment(str, 'DD-MMM-YYYY').month(), + '7', + '02-ago-2016 month should be 7' + ); + }); + + test('translated invalid date', function (assert) { + assert.equal( + moment('nonsense', 'DD-MMM-YYYY').format(), + 'Fecha inválida', + 'Invalid date should translate' + ); + }); + }))); @@ -37329,11 +37255,11 @@ defineCommonLocaleTests(name); } - localeModule('eu'); + localeModule('et'); test('parse', function (assert) { var tests = - 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split( + 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split( '_' ), i; @@ -37341,7 +37267,7 @@ assert.equal( moment(input, mmm).month(), i, - input + ' should be month ' + (i + 1) + input + ' peaks olema kuu ' + (i + 1) ); } @@ -37376,31 +37302,31 @@ test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'igandea, otsaila 14. 2010, 3:25:50 pm', + 'dddd, Do MMMM YYYY, H:mm:ss', + 'pühapäev, 14. veebruar 2010, 15:25:50', ], - ['ddd, hA', 'ig., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 otsaila ots.'], + ['ddd, h', 'P, 3'], + ['M Mo MM MMMM MMM', '2 2. 02 veebruar veebr'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. igandea ig. ig'], + ['d do dddd ddd dd', '0 0. pühapäev P P'], ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], + ['w wo ww', '6 6. 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['[aasta] DDDo [päev]', 'aasta 45. päev'], ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '2010ko otsailaren 14a'], - ['LLL', '2010ko otsailaren 14a 15:25'], - ['LLLL', 'igandea, 2010ko otsailaren 14a 15:25'], - ['l', '2010-2-14'], - ['ll', '2010ko ots. 14a'], - ['lll', '2010ko ots. 14a 15:25'], - ['llll', 'ig., 2010ko ots. 14a 15:25'], + ['L', '14.02.2010'], + ['LL', '14. veebruar 2010'], + ['LLL', '14. veebruar 2010 15:25'], + ['LLLL', 'pühapäev, 14. veebruar 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. veebr 2010'], + ['lll', '14. veebr 2010 15:25'], + ['llll', 'P, 14. veebr 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -37448,7 +37374,7 @@ test('format month', function (assert) { var expected = - 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split( + 'jaanuar jaan_veebruar veebr_märts märts_aprill apr_mai mai_juuni juuni_juuli juuli_august aug_september sept_oktoober okt_november nov_detsember dets'.split( '_' ), i; @@ -37463,7 +37389,7 @@ test('format week', function (assert) { var expected = - 'igandea ig. ig_astelehena al. al_asteartea ar. ar_asteazkena az. az_osteguna og. og_ostirala ol. ol_larunbata lr. lr'.split( + 'pühapäev P P_esmaspäev E E_teisipäev T T_kolmapäev K K_neljapäev N N_reede R R_laupäev L L'.split( '_' ), i; @@ -37480,155 +37406,155 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'segundo batzuk', - '44 seconds = a few seconds' + 'paar sekundit', + '44 seconds = paar sekundit' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'minutu bat', - '45 seconds = a minute' + 'üks minut', + '45 seconds = üks minut' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'minutu bat', - '89 seconds = a minute' + 'üks minut', + '89 seconds = üks minut' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minutu', - '90 seconds = 2 minutes' + '2 minutit', + '90 seconds = 2 minutit' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minutu', - '44 minutes = 44 minutes' + '44 minutit', + '44 minutes = 44 minutit' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'ordu bat', - '45 minutes = an hour' + 'üks tund', + '45 minutes = tund aega' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'ordu bat', - '89 minutes = an hour' + 'üks tund', + '89 minutes = üks tund' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 ordu', - '90 minutes = 2 hours' + '2 tundi', + '90 minutes = 2 tundi' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 ordu', - '5 hours = 5 hours' + '5 tundi', + '5 hours = 5 tundi' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 ordu', - '21 hours = 21 hours' + '21 tundi', + '21 hours = 21 tundi' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'egun bat', - '22 hours = a day' + 'üks päev', + '22 hours = üks päev' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'egun bat', - '35 hours = a day' + 'üks päev', + '35 hours = üks päev' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 egun', - '36 hours = 2 days' + '2 päeva', + '36 hours = 2 päeva' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'egun bat', - '1 day = a day' + 'üks päev', + '1 day = üks päev' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 egun', - '5 days = 5 days' + '5 päeva', + '5 days = 5 päeva' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 egun', - '25 days = 25 days' + '25 päeva', + '25 days = 25 päeva' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'hilabete bat', - '26 days = a month' + 'üks kuu', + '26 days = üks kuu' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'hilabete bat', - '30 days = a month' + 'üks kuu', + '30 days = üks kuu' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'hilabete bat', - '43 days = a month' + 'üks kuu', + '43 days = üks kuu' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 hilabete', - '46 days = 2 months' + '2 kuud', + '46 days = 2 kuud' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 hilabete', - '75 days = 2 months' + '2 kuud', + '75 days = 2 kuud' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 hilabete', - '76 days = 3 months' + '3 kuud', + '76 days = 3 kuud' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'hilabete bat', - '1 month = a month' + 'üks kuu', + '1 month = üks kuu' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 hilabete', - '5 months = 5 months' + '5 kuud', + '5 months = 5 kuud' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'urte bat', - '345 days = a year' + 'üks aasta', + '345 days = üks aasta' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 urte', - '548 days = 2 years' + '2 aastat', + '548 days = 2 aastat' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'urte bat', - '1 year = a year' + 'üks aasta', + '1 year = üks aasta' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 urte', - '5 years = 5 years' + '5 aastat', + '5 years = 5 aastat' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'segundo batzuk barru', 'prefix'); - assert.equal(moment(0).from(30000), 'duela segundo batzuk', 'suffix'); + assert.equal(moment(30000).from(0), 'mõne sekundi pärast', 'prefix'); + assert.equal(moment(0).from(30000), 'mõni sekund tagasi', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'duela segundo batzuk', + 'mõni sekund tagasi', 'now from now should display as in the past' ); }); @@ -37636,43 +37562,131 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'segundo batzuk barru', - 'in seconds' + 'mõne sekundi pärast', + 'in a few seconds' + ); + assert.equal( + moment().subtract({ s: 30 }).fromNow(), + 'mõni sekund tagasi', + 'a few seconds ago' + ); + + assert.equal( + moment().add({ m: 1 }).fromNow(), + 'ühe minuti pärast', + 'in a minute' + ); + assert.equal( + moment().subtract({ m: 1 }).fromNow(), + 'üks minut tagasi', + 'a minute ago' + ); + + assert.equal( + moment().add({ m: 5 }).fromNow(), + '5 minuti pärast', + 'in 5 minutes' + ); + assert.equal( + moment().subtract({ m: 5 }).fromNow(), + '5 minutit tagasi', + '5 minutes ago' + ); + + assert.equal( + moment().add({ d: 1 }).fromNow(), + 'ühe päeva pärast', + 'in one day' + ); + assert.equal( + moment().subtract({ d: 1 }).fromNow(), + 'üks päev tagasi', + 'one day ago' + ); + + assert.equal( + moment().add({ d: 5 }).fromNow(), + '5 päeva pärast', + 'in 5 days' + ); + assert.equal( + moment().subtract({ d: 5 }).fromNow(), + '5 päeva tagasi', + '5 days ago' + ); + + assert.equal( + moment().add({ M: 1 }).fromNow(), + 'kuu aja pärast', + 'in a month' + ); + assert.equal( + moment().subtract({ M: 1 }).fromNow(), + 'kuu aega tagasi', + 'a month ago' + ); + + assert.equal( + moment().add({ M: 5 }).fromNow(), + '5 kuu pärast', + 'in 5 months' + ); + assert.equal( + moment().subtract({ M: 5 }).fromNow(), + '5 kuud tagasi', + '5 months ago' + ); + + assert.equal( + moment().add({ y: 1 }).fromNow(), + 'ühe aasta pärast', + 'in a year' + ); + assert.equal( + moment().subtract({ y: 1 }).fromNow(), + 'aasta tagasi', + 'a year ago' + ); + + assert.equal( + moment().add({ y: 5 }).fromNow(), + '5 aasta pärast', + 'in 5 years' + ); + assert.equal( + moment().subtract({ y: 5 }).fromNow(), + '5 aastat tagasi', + '5 years ago' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '5 egun barru', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal( - moment(a).calendar(), - 'gaur 12:00etan', - 'today at the same time' - ); + assert.equal(moment(a).calendar(), 'Täna, 12:00', 'today at the same time'); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'gaur 12:25etan', - 'now plus 25 min' + 'Täna, 12:25', + 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'gaur 13:00etan', - 'now plus 1 hour' + 'Täna, 13:00', + 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'bihar 12:00etan', + 'Homme, 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'gaur 11:00etan', - 'now minus 1 hour' + 'Täna, 11:00', + 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'atzo 12:00etan', + 'Eile, 12:00', 'yesterday at the same time' ); }); @@ -37683,19 +37697,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd LT[etan]'), + m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd LT[etan]'), + m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd LT[etan]'), + m.format('[Järgmine] dddd LT'), 'Today + ' + i + ' days end of day' ); } @@ -37707,19 +37721,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[aurreko] dddd LT[etan]'), + m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[aurreko] dddd LT[etan]'), + m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[aurreko] dddd LT[etan]'), + m.format('[Eelmine] dddd LT'), 'Today - ' + i + ' days end of day' ); } @@ -37729,49 +37743,49 @@ var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 nädal tagasi'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'in 1 week' + '1 nädala pärast' ); weeksAgo = moment().subtract({ w: 2 }); weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 nädalat tagasi'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'in 2 weeks' + '2 nädala pärast' ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal( - moment([2011, 11, 26]).format('w ww wo'), - '1 01 1.', - 'Dec 26 2011 should be week 1' - ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1.', - 'Jan 1 2012 should be week 1' + '52 52 52.', + 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '2 02 2.', - 'Jan 2 2012 should be week 2' + '1 01 1.', + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2.', - 'Jan 8 2012 should be week 2' + '1 01 1.', + 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '3 03 3.', - 'Jan 9 2012 should be week 3' + '2 02 2.', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' ); }); @@ -38170,11 +38184,11 @@ defineCommonLocaleTests(name); } - localeModule('fa'); + localeModule('eu'); test('parse', function (assert) { var tests = - 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split( '_' ), i; @@ -38182,11 +38196,7 @@ assert.equal( moment(input, mmm).month(), i, - input + - ' should be month ' + - (i + 1) + - ' instead is month ' + - moment(input, mmm).month() + input + ' should be month ' + (i + 1) ); } @@ -38199,19 +38209,22 @@ } for (i = 0; i < 12; i++) { - equalTest(tests[i], 'MMM', i); - equalTest(tests[i], 'MMMM', i); - equalTest(tests[i].toLocaleLowerCase(), 'MMM', i); - equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i].toLocaleUpperCase(), 'MMM', i); - equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(tests[i], 'MMM', i); - equalTestStrict(tests[i], 'MMMM', i); - equalTestStrict(tests[i].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i].toLocaleUpperCase(), 'MMMM', i); + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -38219,30 +38232,30 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'یک\u200cشنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر', + 'igandea, otsaila 14. 2010, 3:25:50 pm', ], - ['ddd, hA', 'یک\u200cشنبه، ۳بعد از ظهر'], - ['M Mo MM MMMM MMM', '۲ ۲م ۰۲ فوریه فوریه'], - ['YYYY YY', '۲۰۱۰ ۱۰'], - ['D Do DD', '۱۴ ۱۴م ۱۴'], - ['d do dddd ddd dd', '۰ ۰م یک\u200cشنبه یک\u200cشنبه ی'], - ['DDD DDDo DDDD', '۴۵ ۴۵م ۰۴۵'], - ['w wo ww', '۸ ۸م ۰۸'], - ['h hh', '۳ ۰۳'], - ['H HH', '۱۵ ۱۵'], - ['m mm', '۲۵ ۲۵'], - ['s ss', '۵۰ ۵۰'], - ['a A', 'بعد از ظهر بعد از ظهر'], - ['DDDo [روز سال]', '۴۵م روز سال'], - ['LTS', '۱۵:۲۵:۵۰'], - ['L', '۱۴/۰۲/۲۰۱۰'], - ['LL', '۱۴ فوریه ۲۰۱۰'], - ['LLL', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], - ['LLLL', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], - ['l', '۱۴/۲/۲۰۱۰'], - ['ll', '۱۴ فوریه ۲۰۱۰'], - ['lll', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], - ['llll', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['ddd, hA', 'ig., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 otsaila ots.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. igandea ig. ig'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '2010ko otsailaren 14a'], + ['LLL', '2010ko otsailaren 14a 15:25'], + ['LLLL', 'igandea, 2010ko otsailaren 14a 15:25'], + ['l', '2010-2-14'], + ['ll', '2010ko ots. 14a'], + ['lll', '2010ko ots. 14a 15:25'], + ['llll', 'ig., 2010ko ots. 14a 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -38252,45 +38265,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '۱م', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '۲م', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '۳م', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '۴م', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '۵م', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '۶م', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '۷م', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '۸م', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '۹م', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '۱۰م', '10'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '۱۱م', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '۱۲م', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '۱۳م', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '۱۴م', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '۱۵م', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '۱۶م', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '۱۷م', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '۱۸م', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '۱۹م', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '۲۰م', '20'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '۲۱م', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '۲۲م', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '۲۳م', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '۲۴م', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '۲۵م', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '۲۶م', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '۲۷م', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '۲۸م', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '۲۹م', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '۳۰م', '30'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '۳۱م', '31'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); }); test('format month', function (assert) { var expected = - 'ژانویه ژانویه_فوریه فوریه_مارس مارس_آوریل آوریل_مه مه_ژوئن ژوئن_ژوئیه ژوئیه_اوت اوت_سپتامبر سپتامبر_اکتبر اکتبر_نوامبر نوامبر_دسامبر دسامبر'.split( + 'urtarrila urt._otsaila ots._martxoa mar._apirila api._maiatza mai._ekaina eka._uztaila uzt._abuztua abu._iraila ira._urria urr._azaroa aza._abendua abe.'.split( '_' ), i; @@ -38305,7 +38318,7 @@ test('format week', function (assert) { var expected = - 'یک\u200cشنبه یک\u200cشنبه ی_دوشنبه دوشنبه د_سه\u200cشنبه سه\u200cشنبه س_چهارشنبه چهارشنبه چ_پنج\u200cشنبه پنج\u200cشنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split( + 'igandea ig. ig_astelehena al. al_asteartea ar. ar_asteazkena az. az_osteguna og. og_ostirala ol. ol_larunbata lr. lr'.split( '_' ), i; @@ -38319,173 +38332,158 @@ }); test('from', function (assert) { - var start = moment([2007, 1, 28]), - s, - ss; + var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'چند ثانیه', + 'segundo batzuk', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'یک دقیقه', + 'minutu bat', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'یک دقیقه', + 'minutu bat', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '۲ دقیقه', + '2 minutu', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '۴۴ دقیقه', + '44 minutu', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'یک ساعت', + 'ordu bat', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'یک ساعت', + 'ordu bat', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '۲ ساعت', + '2 ordu', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '۵ ساعت', + '5 ordu', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '۲۱ ساعت', + '21 ordu', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'یک روز', + 'egun bat', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'یک روز', + 'egun bat', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '۲ روز', + '2 egun', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'یک روز', + 'egun bat', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '۵ روز', + '5 egun', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '۲۵ روز', + '25 egun', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'یک ماه', + 'hilabete bat', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'یک ماه', + 'hilabete bat', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'یک ماه', + 'hilabete bat', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '۲ ماه', + '2 hilabete', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '۲ ماه', + '2 hilabete', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '۳ ماه', + '3 hilabete', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'یک ماه', + 'hilabete bat', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '۵ ماه', + '5 hilabete', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'یک سال', + 'urte bat', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '۲ سال', + '2 urte', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'یک سال', + 'urte bat', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '۵ سال', + '5 urte', '5 years = 5 years' ); - - s = moment.relativeTimeThreshold('s'); - ss = moment.relativeTimeThreshold('ss'); - - moment.relativeTimeThreshold('s', 60); - moment.relativeTimeThreshold('ss', 0); - assert.equal( - start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - '۴۴ ثانیه', - '44 seconds = 44 seconds' - ); - moment.relativeTimeThreshold('s', s); - moment.relativeTimeThreshold('ss', ss); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'در چند ثانیه', 'prefix'); - assert.equal(moment(0).from(30000), 'چند ثانیه پیش', 'suffix'); + assert.equal(moment(30000).from(0), 'segundo batzuk barru', 'prefix'); + assert.equal(moment(0).from(30000), 'duela segundo batzuk', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'چند ثانیه پیش', + 'duela segundo batzuk', 'now from now should display as in the past' ); }); @@ -38493,10 +38491,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'در چند ثانیه', - 'in a few seconds' + 'segundo batzuk barru', + 'in seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'در ۵ روز', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 egun barru', 'in 5 days'); }); test('calendar day', function (assert) { @@ -38504,32 +38502,32 @@ assert.equal( moment(a).calendar(), - 'امروز ساعت ۱۲:۰۰', + 'gaur 12:00etan', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'امروز ساعت ۱۲:۲۵', - 'Now plus 25 min' + 'gaur 12:25etan', + 'now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'امروز ساعت ۱۳:۰۰', - 'Now plus 1 hour' + 'gaur 13:00etan', + 'now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'فردا ساعت ۱۲:۰۰', + 'bihar 12:00etan', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'امروز ساعت ۱۱:۰۰', - 'Now minus 1 hour' + 'gaur 11:00etan', + 'now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'دیروز ساعت ۱۲:۰۰', + 'atzo 12:00etan', 'yesterday at the same time' ); }); @@ -38540,19 +38538,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [ساعت] LT'), + m.format('dddd LT[etan]'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [ساعت] LT'), + m.format('dddd LT[etan]'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [ساعت] LT'), + m.format('dddd LT[etan]'), 'Today + ' + i + ' days end of day' ); } @@ -38564,19 +38562,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('dddd [پیش ساعت] LT'), + m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [پیش ساعت] LT'), + m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [پیش ساعت] LT'), + m.format('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days end of day' ); } @@ -38606,29 +38604,29 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( - moment([2011, 11, 31]).format('w ww wo'), - '۱ ۰۱ ۱م', - 'Dec 31 2011 should be week 1' + moment([2011, 11, 26]).format('w ww wo'), + '1 01 1.', + 'Dec 26 2011 should be week 1' ); assert.equal( - moment([2012, 0, 6]).format('w ww wo'), - '۱ ۰۱ ۱م', - 'Jan 6 2012 should be week 1' + moment([2012, 0, 1]).format('w ww wo'), + '1 01 1.', + 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 7]).format('w ww wo'), - '۲ ۰۲ ۲م', - 'Jan 7 2012 should be week 2' + moment([2012, 0, 2]).format('w ww wo'), + '2 02 2.', + 'Jan 2 2012 should be week 2' ); assert.equal( - moment([2012, 0, 13]).format('w ww wo'), - '۲ ۰۲ ۲م', - 'Jan 13 2012 should be week 2' + moment([2012, 0, 8]).format('w ww wo'), + '2 02 2.', + 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), - '۳ ۰۳ ۳م', - 'Jan 14 2012 should be week 3' + moment([2012, 0, 9]).format('w ww wo'), + '3 03 3.', + 'Jan 9 2012 should be week 3' ); }); @@ -39027,11 +39025,11 @@ defineCommonLocaleTests(name); } - localeModule('fi'); + localeModule('fa'); test('parse', function (assert) { var tests = - 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split( + 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( '_' ), i; @@ -39039,7 +39037,11 @@ assert.equal( moment(input, mmm).month(), i, - input + ' should be month ' + (i + 1) + input + + ' should be month ' + + (i + 1) + + ' instead is month ' + + moment(input, mmm).month() ); } @@ -39052,22 +39054,19 @@ } for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i], 'MMM', i); + equalTest(tests[i], 'MMMM', i); + equalTest(tests[i].toLocaleLowerCase(), 'MMM', i); + equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i].toLocaleUpperCase(), 'MMM', i); + equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTestStrict(tests[i], 'MMM', i); + equalTestStrict(tests[i], 'MMMM', i); + equalTestStrict(tests[i].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i].toLocaleUpperCase(), 'MMMM', i); } }); @@ -39075,30 +39074,30 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm', + 'یک\u200cشنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر', ], - ['ddd, hA', 'su, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 helmikuu helmi'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sunnuntai su su'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[vuoden] DDDo [päivä]', 'vuoden 45. päivä'], - ['LTS', '15.25.50'], - ['L', '14.02.2010'], - ['LL', '14. helmikuuta 2010'], - ['LLL', '14. helmikuuta 2010, klo 15.25'], - ['LLLL', 'sunnuntai, 14. helmikuuta 2010, klo 15.25'], - ['l', '14.2.2010'], - ['ll', '14. helmi 2010'], - ['lll', '14. helmi 2010, klo 15.25'], - ['llll', 'su, 14. helmi 2010, klo 15.25'], + ['ddd, hA', 'یک\u200cشنبه، ۳بعد از ظهر'], + ['M Mo MM MMMM MMM', '۲ ۲م ۰۲ فوریه فوریه'], + ['YYYY YY', '۲۰۱۰ ۱۰'], + ['D Do DD', '۱۴ ۱۴م ۱۴'], + ['d do dddd ddd dd', '۰ ۰م یک\u200cشنبه یک\u200cشنبه ی'], + ['DDD DDDo DDDD', '۴۵ ۴۵م ۰۴۵'], + ['w wo ww', '۸ ۸م ۰۸'], + ['h hh', '۳ ۰۳'], + ['H HH', '۱۵ ۱۵'], + ['m mm', '۲۵ ۲۵'], + ['s ss', '۵۰ ۵۰'], + ['a A', 'بعد از ظهر بعد از ظهر'], + ['DDDo [روز سال]', '۴۵م روز سال'], + ['LTS', '۱۵:۲۵:۵۰'], + ['L', '۱۴/۰۲/۲۰۱۰'], + ['LL', '۱۴ فوریه ۲۰۱۰'], + ['LLL', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['LLLL', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['l', '۱۴/۲/۲۰۱۰'], + ['ll', '۱۴ فوریه ۲۰۱۰'], + ['lll', '۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], + ['llll', 'یک\u200cشنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -39108,45 +39107,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10th'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '۱م', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '۲م', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '۳م', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '۴م', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '۵م', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '۶م', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '۷م', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '۸م', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '۹م', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '۱۰م', '10'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20th'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '۱۱م', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '۱۲م', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '۱۳م', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '۱۴م', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '۱۵م', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '۱۶م', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '۱۷م', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '۱۸م', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '۱۹م', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '۲۰م', '20'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30th'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '۲۱م', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '۲۲م', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '۲۳م', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '۲۴م', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '۲۵م', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '۲۶م', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '۲۷م', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '۲۸م', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '۲۹م', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '۳۰م', '30'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31st'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '۳۱م', '31'); }); test('format month', function (assert) { var expected = - 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split( + 'ژانویه ژانویه_فوریه فوریه_مارس مارس_آوریل آوریل_مه مه_ژوئن ژوئن_ژوئیه ژوئیه_اوت اوت_سپتامبر سپتامبر_اکتبر اکتبر_نوامبر نوامبر_دسامبر دسامبر'.split( '_' ), i; @@ -39161,7 +39160,7 @@ test('format week', function (assert) { var expected = - 'sunnuntai su su_maanantai ma ma_tiistai ti ti_keskiviikko ke ke_torstai to to_perjantai pe pe_lauantai la la'.split( + 'یک\u200cشنبه یک\u200cشنبه ی_دوشنبه دوشنبه د_سه\u200cشنبه سه\u200cشنبه س_چهارشنبه چهارشنبه چ_پنج\u200cشنبه پنج\u200cشنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split( '_' ), i; @@ -39175,189 +39174,173 @@ }); test('from', function (assert) { - var start = moment([2007, 1, 28]); + var start = moment([2007, 1, 28]), + s, + ss; assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'muutama sekunti', - '44 seconds = few seconds' + 'چند ثانیه', + '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'minuutti', + 'یک دقیقه', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'minuutti', + 'یک دقیقه', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - 'kaksi minuuttia', + '۲ دقیقه', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minuuttia', + '۴۴ دقیقه', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'tunti', + 'یک ساعت', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'tunti', + 'یک ساعت', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - 'kaksi tuntia', + '۲ ساعت', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - 'viisi tuntia', + '۵ ساعت', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 tuntia', + '۲۱ ساعت', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'päivä', + 'یک روز', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'päivä', + 'یک روز', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - 'kaksi päivää', + '۲ روز', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'päivä', + 'یک روز', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - 'viisi päivää', + '۵ روز', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 päivää', + '۲۵ روز', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'kuukausi', + 'یک ماه', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'kuukausi', + 'یک ماه', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'kuukausi', + 'یک ماه', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - 'kaksi kuukautta', + '۲ ماه', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - 'kaksi kuukautta', + '۲ ماه', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - 'kolme kuukautta', + '۳ ماه', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'kuukausi', + 'یک ماه', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - 'viisi kuukautta', + '۵ ماه', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'vuosi', + 'یک سال', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - 'kaksi vuotta', + '۲ سال', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'vuosi', + 'یک سال', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - 'viisi vuotta', + '۵ سال', '5 years = 5 years' ); - }); - test('from ss threshold set', function (assert) { - var start = moment([2007, 1, 28]), - s = moment.relativeTimeThreshold('s'), - ss = moment.relativeTimeThreshold('ss'); - moment.relativeTimeThreshold('s', 45); - moment.relativeTimeThreshold('ss', 10); + s = moment.relativeTimeThreshold('s'); + ss = moment.relativeTimeThreshold('ss'); - assert.equal( - start.from(moment([2007, 1, 28]).add({ s: 10 }), true), - 'muutama sekunti', - '10 seconds = few seconds' - ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ s: 11 }), true), - '11 sekuntia', - '11 seconds = 11 seconds' - ); + moment.relativeTimeThreshold('s', 60); + moment.relativeTimeThreshold('ss', 0); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - '44 sekuntia', + '۴۴ ثانیه', '44 seconds = 44 seconds' ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'minuutti', - '45 seconds = a minute' - ); moment.relativeTimeThreshold('s', s); moment.relativeTimeThreshold('ss', ss); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'muutaman sekunnin päästä', 'prefix'); - assert.equal(moment(0).from(30000), 'muutama sekunti sitten', 'suffix'); + assert.equal(moment(30000).from(0), 'در چند ثانیه', 'prefix'); + assert.equal(moment(0).from(30000), 'چند ثانیه پیش', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'muutama sekunti sitten', + 'چند ثانیه پیش', 'now from now should display as in the past' ); }); @@ -39365,14 +39348,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'muutaman sekunnin päästä', + 'در چند ثانیه', 'in a few seconds' ); - assert.equal( - moment().add({ d: 5 }).fromNow(), - 'viiden päivän päästä', - 'in 5 days' - ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'در ۵ روز', 'in 5 days'); }); test('calendar day', function (assert) { @@ -39380,57 +39359,56 @@ assert.equal( moment(a).calendar(), - 'tänään klo 12.00', + 'امروز ساعت ۱۲:۰۰', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'tänään klo 12.25', + 'امروز ساعت ۱۲:۲۵', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'tänään klo 13.00', + 'امروز ساعت ۱۳:۰۰', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'huomenna klo 12.00', + 'فردا ساعت ۱۲:۰۰', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'tänään klo 11.00', + 'امروز ساعت ۱۱:۰۰', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'eilen klo 12.00', + 'دیروز ساعت ۱۲:۰۰', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [klo] LT'), - 'today + ' + i + ' days current time' + m.format('dddd [ساعت] LT'), + 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [klo] LT'), - 'today + ' + i + ' days beginning of day' + m.format('dddd [ساعت] LT'), + 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [klo] LT'), - 'today + ' + i + ' days end of day' + m.format('dddd [ساعت] LT'), + 'Today + ' + i + ' days end of day' ); } }); @@ -39441,20 +39419,20 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[viime] dddd[na] [klo] LT'), - 'today - ' + i + ' days current time' + m.format('dddd [پیش ساعت] LT'), + 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[viime] dddd[na] [klo] LT'), - 'today - ' + i + ' days beginning of day' + m.format('dddd [پیش ساعت] LT'), + 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[viime] dddd[na] [klo] LT'), - 'today - ' + i + ' days end of day' + m.format('dddd [پیش ساعت] LT'), + 'Today - ' + i + ' days end of day' ); } }); @@ -39463,57 +39441,49 @@ var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); - assert.equal( - weeksAgo.calendar(), - weeksAgo.format('L'), - 'yksi viikko sitten' - ); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'yhden viikon päästä' + 'in 1 week' ); weeksAgo = moment().subtract({ w: 2 }); weeksFromNow = moment().add({ w: 2 }); - assert.equal( - weeksAgo.calendar(), - weeksAgo.format('L'), - 'kaksi viikkoa sitten' - ); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'kaden viikon päästä' + 'in 2 weeks' ); }); test('weeks year starting sunday formatted', function (assert) { assert.equal( - moment([2012, 0, 1]).format('w ww wo'), - '52 52 52.', - 'Jan 1 2012 should be week 52' + moment([2011, 11, 31]).format('w ww wo'), + '۱ ۰۱ ۱م', + 'Dec 31 2011 should be week 1' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), - '1 01 1.', - 'Jan 2 2012 should be week 1' + moment([2012, 0, 6]).format('w ww wo'), + '۱ ۰۱ ۱م', + 'Jan 6 2012 should be week 1' ); assert.equal( - moment([2012, 0, 8]).format('w ww wo'), - '1 01 1.', - 'Jan 8 2012 should be week 1' + moment([2012, 0, 7]).format('w ww wo'), + '۲ ۰۲ ۲م', + 'Jan 7 2012 should be week 2' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), - '2 02 2.', - 'Jan 9 2012 should be week 2' + moment([2012, 0, 13]).format('w ww wo'), + '۲ ۰۲ ۲م', + 'Jan 13 2012 should be week 2' ); assert.equal( - moment([2012, 0, 15]).format('w ww wo'), - '2 02 2.', - 'Jan 15 2012 should be week 2' + moment([2012, 0, 14]).format('w ww wo'), + '۳ ۰۳ ۳م', + 'Jan 14 2012 should be week 3' ); }); @@ -39912,15 +39882,14 @@ defineCommonLocaleTests(name); } - localeModule('fil'); + localeModule('fi'); test('parse', function (assert) { var tests = - 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split( + 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split( '_' ), i; - function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -39961,30 +39930,30 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Linggo, Pebrero 14 2010, 3:25:50 pm', + 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm', ], - ['ddd, hA', 'Lin, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 Pebrero Peb'], + ['ddd, hA', 'su, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 helmikuu helmi'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Linggo Lin Li'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '6 6 06'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sunnuntai su su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15:25:50'], - ['L', '02/14/2010'], - ['LL', 'Pebrero 14, 2010'], - ['LLL', 'Pebrero 14, 2010 15:25'], - ['LLLL', 'Linggo, Pebrero 14, 2010 15:25'], - ['l', '2/14/2010'], - ['ll', 'Peb 14, 2010'], - ['lll', 'Peb 14, 2010 15:25'], - ['llll', 'Lin, Peb 14, 2010 15:25'], + ['[vuoden] DDDo [päivä]', 'vuoden 45. päivä'], + ['LTS', '15.25.50'], + ['L', '14.02.2010'], + ['LL', '14. helmikuuta 2010'], + ['LLL', '14. helmikuuta 2010, klo 15.25'], + ['LLLL', 'sunnuntai, 14. helmikuuta 2010, klo 15.25'], + ['l', '14.2.2010'], + ['ll', '14. helmi 2010'], + ['lll', '14. helmi 2010, klo 15.25'], + ['llll', 'su, 14. helmi 2010, klo 15.25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -39994,45 +39963,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10th'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20th'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30th'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31st'); }); test('format month', function (assert) { var expected = - 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split( + 'tammikuu tammi_helmikuu helmi_maaliskuu maalis_huhtikuu huhti_toukokuu touko_kesäkuu kesä_heinäkuu heinä_elokuu elo_syyskuu syys_lokakuu loka_marraskuu marras_joulukuu joulu'.split( '_' ), i; @@ -40047,7 +40016,7 @@ test('format week', function (assert) { var expected = - 'Linggo Lin Li_Lunes Lun Lu_Martes Mar Ma_Miyerkules Miy Mi_Huwebes Huw Hu_Biyernes Biy Bi_Sabado Sab Sab'.split( + 'sunnuntai su su_maanantai ma ma_tiistai ti ti_keskiviikko ke ke_torstai to to_perjantai pe pe_lauantai la la'.split( '_' ), i; @@ -40064,299 +40033,341 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'ilang segundo', - '44 seconds = a few seconds' + 'muutama sekunti', + '44 seconds = few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'isang minuto', + 'minuutti', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'isang minuto', + 'minuutti', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minuto', + 'kaksi minuuttia', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minuto', + '44 minuuttia', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'isang oras', + 'tunti', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'isang oras', + 'tunti', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 oras', + 'kaksi tuntia', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 oras', + 'viisi tuntia', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 oras', + '21 tuntia', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'isang araw', + 'päivä', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'isang araw', + 'päivä', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 araw', + 'kaksi päivää', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'isang araw', + 'päivä', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 araw', + 'viisi päivää', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 araw', + '25 päivää', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'isang buwan', + 'kuukausi', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'isang buwan', + 'kuukausi', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'isang buwan', + 'kuukausi', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 buwan', + 'kaksi kuukautta', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 buwan', + 'kaksi kuukautta', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 buwan', + 'kolme kuukautta', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'isang buwan', + 'kuukausi', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 buwan', + 'viisi kuukautta', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'isang taon', + 'vuosi', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 taon', + 'kaksi vuotta', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'isang taon', + 'vuosi', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 taon', + 'viisi vuotta', '5 years = 5 years' ); }); + test('from ss threshold set', function (assert) { + var start = moment([2007, 1, 28]), + s = moment.relativeTimeThreshold('s'), + ss = moment.relativeTimeThreshold('ss'); + moment.relativeTimeThreshold('s', 45); + moment.relativeTimeThreshold('ss', 10); + + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 10 }), true), + 'muutama sekunti', + '10 seconds = few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 11 }), true), + '11 sekuntia', + '11 seconds = 11 seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + '44 sekuntia', + '44 seconds = 44 seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'minuutti', + '45 seconds = a minute' + ); + moment.relativeTimeThreshold('s', s); + moment.relativeTimeThreshold('ss', ss); + }); + test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'sa loob ng ilang segundo', 'prefix'); + assert.equal(moment(30000).from(0), 'muutaman sekunnin päästä', 'prefix'); + assert.equal(moment(0).from(30000), 'muutama sekunti sitten', 'suffix'); + }); + + test('now from now', function (assert) { assert.equal( - moment(0).from(30000), - 'ilang segundo ang nakalipas', - 'suffix' + moment().fromNow(), + 'muutama sekunti sitten', + 'now from now should display as in the past' ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'sa loob ng ilang segundo', + 'muutaman sekunnin päästä', 'in a few seconds' ); assert.equal( moment().add({ d: 5 }).fromNow(), - 'sa loob ng 5 araw', + 'viiden päivän päästä', 'in 5 days' ); }); - test('same day', function (assert) { + test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); assert.equal( moment(a).calendar(), - '12:00 ngayong araw', + 'tänään klo 12.00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - '12:25 ngayong araw', + 'tänään klo 12.25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - '13:00 ngayong araw', + 'tänään klo 13.00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Bukas ng 12:00', + 'huomenna klo 12.00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - '11:00 ngayong araw', + 'tänään klo 11.00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - '12:00 kahapon', + 'eilen klo 12.00', 'yesterday at the same time' ); }); - test('same next week', function (assert) { + test('calendar next week', function (assert) { var i, m; for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('LT [sa susunod na] dddd'), - 'Today + ' + i + ' days current time' + m.format('dddd [klo] LT'), + 'today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('LT [sa susunod na] dddd'), - 'Today + ' + i + ' days beginning of day' + m.format('dddd [klo] LT'), + 'today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('LT [sa susunod na] dddd'), - 'Today + ' + i + ' days end of day' + m.format('dddd [klo] LT'), + 'today + ' + i + ' days end of day' ); } }); - test('same last week', function (assert) { + test('calendar last week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('LT [noong nakaraang] dddd'), - 'Today - ' + i + ' days current time' + m.format('[viime] dddd[na] [klo] LT'), + 'today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('LT [noong nakaraang] dddd'), - 'Today - ' + i + ' days beginning of day' + m.format('[viime] dddd[na] [klo] LT'), + 'today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('LT [noong nakaraang] dddd'), - 'Today - ' + i + ' days end of day' + m.format('[viime] dddd[na] [klo] LT'), + 'today - ' + i + ' days end of day' ); } }); - test('same all else', function (assert) { + test('calendar all else', function (assert) { var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksAgo.calendar(), + weeksAgo.format('L'), + 'yksi viikko sitten' + ); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'in 1 week' + 'yhden viikon päästä' ); weeksAgo = moment().subtract({ w: 2 }); weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksAgo.calendar(), + weeksAgo.format('L'), + 'kaksi viikkoa sitten' + ); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'in 2 weeks' + 'kaden viikon päästä' ); }); test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52', + '52 52 52.', 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1', + '1 01 1.', 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1', + '1 01 1.', 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2', + '2 02 2.', 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2', + '2 02 2.', 'Jan 15 2012 should be week 2' ); }); @@ -40756,14 +40767,15 @@ defineCommonLocaleTests(name); } - localeModule('fo'); + localeModule('fil'); test('parse', function (assert) { var tests = - 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split( + 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split( '_' ), i; + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -40803,31 +40815,31 @@ test('format', function (assert) { var a = [ [ - 'dddd [tann] Do MMMM YYYY, h:mm:ss a', - 'sunnudagur tann 14. februar 2010, 3:25:50 pm', + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Linggo, Pebrero 14 2010, 3:25:50 pm', ], - ['ddd hA', 'sun 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], + ['ddd, hA', 'Lin, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 Pebrero Peb'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sunnudagur sun su'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Linggo Lin Li'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '6 6 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[tann] DDDo [dagin á árinum]', 'tann 45. dagin á árinum'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 februar 2010'], - ['LLL', '14 februar 2010 15:25'], - ['LLLL', 'sunnudagur 14. februar, 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'sun 14. feb, 2010 15:25'], + ['L', '02/14/2010'], + ['LL', 'Pebrero 14, 2010'], + ['LLL', 'Pebrero 14, 2010 15:25'], + ['LLLL', 'Linggo, Pebrero 14, 2010 15:25'], + ['l', '2/14/2010'], + ['ll', 'Peb 14, 2010'], + ['lll', 'Peb 14, 2010 15:25'], + ['llll', 'Lin, Peb 14, 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -40837,45 +40849,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); }); test('format month', function (assert) { var expected = - 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split( + 'Enero Ene_Pebrero Peb_Marso Mar_Abril Abr_Mayo May_Hunyo Hun_Hulyo Hul_Agosto Ago_Setyembre Set_Oktubre Okt_Nobyembre Nob_Disyembre Dis'.split( '_' ), i; @@ -40890,7 +40902,7 @@ test('format week', function (assert) { var expected = - 'sunnudagur sun su_mánadagur mán má_týsdagur týs tý_mikudagur mik mi_hósdagur hós hó_fríggjadagur frí fr_leygardagur ley le'.split( + 'Linggo Lin Li_Lunes Lun Lu_Martes Mar Ma_Miyerkules Miy Mi_Huwebes Huw Hu_Biyernes Biy Bi_Sabado Sab Sab'.split( '_' ), i; @@ -40907,306 +40919,299 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'fá sekund', + 'ilang segundo', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'ein minuttur', + 'isang minuto', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'ein minuttur', + 'isang minuto', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minuttir', + '2 minuto', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minuttir', + '44 minuto', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'ein tími', + 'isang oras', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'ein tími', + 'isang oras', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 tímar', + '2 oras', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 tímar', + '5 oras', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 tímar', + '21 oras', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'ein dagur', + 'isang araw', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'ein dagur', + 'isang araw', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 dagar', + '2 araw', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'ein dagur', + 'isang araw', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 dagar', + '5 araw', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 dagar', + '25 araw', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'ein mánaður', + 'isang buwan', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'ein mánaður', + 'isang buwan', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'ein mánaður', + 'isang buwan', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 mánaðir', + '2 buwan', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 mánaðir', + '2 buwan', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 mánaðir', + '3 buwan', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'ein mánaður', + 'isang buwan', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 mánaðir', + '5 buwan', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'eitt ár', + 'isang taon', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 ár', + '2 taon', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'eitt ár', + 'isang taon', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 ár', + '5 taon', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'um fá sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'fá sekund síðani', 'suffix'); - }); - - test('now from now', function (assert) { + assert.equal(moment(30000).from(0), 'sa loob ng ilang segundo', 'prefix'); assert.equal( - moment().fromNow(), - 'fá sekund síðani', - 'now from now should display as in the past' + moment(0).from(30000), + 'ilang segundo ang nakalipas', + 'suffix' ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'um fá sekund', + 'sa loob ng ilang segundo', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'um 5 dagar', 'in 5 days'); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'sa loob ng 5 araw', + 'in 5 days' + ); }); - test('calendar day', function (assert) { + test('same day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); assert.equal( moment(a).calendar(), - 'Í dag kl. 12:00', + '12:00 ngayong araw', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Í dag kl. 12:25', + '12:25 ngayong araw', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Í dag kl. 13:00', + '13:00 ngayong araw', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Í morgin kl. 12:00', + 'Bukas ng 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Í dag kl. 11:00', + '11:00 ngayong araw', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Í gjár kl. 12:00', + '12:00 kahapon', 'yesterday at the same time' ); }); - test('calendar next week', function (assert) { + test('same next week', function (assert) { var i, m; for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [kl.] LT'), - 'today + ' + i + ' days current time' + m.format('LT [sa susunod na] dddd'), + 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [kl.] LT'), - 'today + ' + i + ' days beginning of day' + m.format('LT [sa susunod na] dddd'), + 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [kl.] LT'), - 'today + ' + i + ' days end of day' + m.format('LT [sa susunod na] dddd'), + 'Today + ' + i + ' days end of day' ); } }); - test('calendar last week', function (assert) { + test('same last week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[síðstu] dddd [kl] LT'), - 'today - ' + i + ' days current time' + m.format('LT [noong nakaraang] dddd'), + 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[síðstu] dddd [kl] LT'), - 'today - ' + i + ' days beginning of day' + m.format('LT [noong nakaraang] dddd'), + 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[síðstu] dddd [kl] LT'), - 'today - ' + i + ' days end of day' + m.format('LT [noong nakaraang] dddd'), + 'Today - ' + i + ' days end of day' ); } }); - test('calendar all else', function (assert) { + test('same all else', function (assert) { var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); - assert.equal( - weeksAgo.calendar(), - weeksAgo.format('L'), - 'yksi viikko sitten' - ); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'yhden viikon päästä' + 'in 1 week' ); weeksAgo = moment().subtract({ w: 2 }); weeksFromNow = moment().add({ w: 2 }); - assert.equal( - weeksAgo.calendar(), - weeksAgo.format('L'), - 'kaksi viikkoa sitten' - ); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'kaden viikon päästä' + 'in 2 weeks' ); }); test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52.', + '52 52 52', 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1.', + '1 01 1', 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1.', + '1 01 1', 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2.', + '2 02 2', 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2.', + '2 02 2', 'Jan 15 2012 should be week 2' ); }); @@ -41606,15 +41611,14 @@ defineCommonLocaleTests(name); } - localeModule('fr-ca'); + localeModule('fo'); test('parse', function (assert) { - var i, - tests = - 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split( + var tests = + 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split( '_' - ); - + ), + i; function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -41654,100 +41658,82 @@ test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'dimanche, février 14e 2010, 3:25:50 pm', + 'dddd [tann] Do MMMM YYYY, h:mm:ss a', + 'sunnudagur tann 14. februar 2010, 3:25:50 pm', ], - ['ddd, hA', 'dim., 3PM'], - ['M Mo MM MMMM MMM', '2 2e 02 février févr.'], + ['ddd hA', 'sun 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februar feb'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14e 14'], - ['d do dddd ddd dd', '0 0e dimanche dim. di'], - ['DDD DDDo DDDD', '45 45e 045'], - ['w wo ww', '8 8e 08'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sunnudagur sun su'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[le] Do [jour du mois]', 'le 14e jour du mois'], - ['[le] DDDo [jour de l’année]', 'le 45e jour de l’année'], + ['[tann] DDDo [dagin á árinum]', 'tann 45. dagin á árinum'], ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '14 février 2010'], - ['LLL', '14 février 2010 15:25'], - ['LLLL', 'dimanche 14 février 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14 févr. 2010'], - ['lll', '14 févr. 2010 15:25'], - ['llll', 'dim. 14 févr. 2010 15:25'], + ['L', '14/02/2010'], + ['LL', '14 februar 2010'], + ['LLL', '14 februar 2010 15:25'], + ['LLLL', 'sunnudagur 14. februar, 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'sun 14. feb, 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; - for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); test('format ordinal', function (assert) { - assert.equal(moment([2017, 0, 1]).format('Mo'), '1er', '1er'); - assert.equal(moment([2017, 1, 1]).format('Mo'), '2e', '2e'); - - assert.equal(moment([2017, 0, 1]).format('Qo'), '1er', '1er'); - assert.equal(moment([2017, 3, 1]).format('Qo'), '2e', '2e'); - - assert.equal(moment([2017, 0, 1]).format('Do'), '1er', '1er'); - assert.equal(moment([2017, 0, 2]).format('Do'), '2e', '2e'); - - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2e', '2e'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21e', '21e'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22e', '22e'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31e', '31e'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); - assert.equal(moment([2017, 0, 1]).format('do'), '0e', '0e'); - assert.equal(moment([2017, 0, 2]).format('do'), '1er', '1er'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); - assert.equal(moment([2017, 0, 4]).format('wo Wo'), '1re 1re', '1re 1re'); - assert.equal(moment([2017, 0, 11]).format('wo Wo'), '2e 2e', '2e 2e'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); }); test('format month', function (assert) { - var i, - expected = - 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split( + var expected = + 'januar jan_februar feb_mars mar_apríl apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -41758,12 +41744,11 @@ }); test('format week', function (assert) { - var i, - expected = - 'dimanche dim. di_lundi lun. lu_mardi mar. ma_mercredi mer. me_jeudi jeu. je_vendredi ven. ve_samedi sam. sa'.split( + var expected = + 'sunnudagur sun su_mánadagur mán má_týsdagur týs tý_mikudagur mik mi_hósdagur hós hó_fríggjadagur frí fr_leygardagur ley le'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -41775,295 +41760,309 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'quelques secondes', + 'fá sekund', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'une minute', + 'ein minuttur', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'une minute', + 'ein minuttur', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minutes', + '2 minuttir', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minutes', + '44 minuttir', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'une heure', + 'ein tími', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'une heure', + 'ein tími', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 heures', + '2 tímar', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 heures', + '5 tímar', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 heures', + '21 tímar', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'un jour', + 'ein dagur', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'un jour', + 'ein dagur', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 jours', + '2 dagar', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'un jour', + 'ein dagur', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 jours', + '5 dagar', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 jours', + '25 dagar', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'un mois', + 'ein mánaður', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'un mois', + 'ein mánaður', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'un mois', + 'ein mánaður', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 mois', + '2 mánaðir', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 mois', + '2 mánaðir', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 mois', + '3 mánaðir', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'un mois', + 'ein mánaður', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 mois', + '5 mánaðir', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'un an', + 'eitt ár', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 ans', + '2 ár', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'un an', + 'eitt ár', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 ans', + '5 ár', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix'); - assert.equal(moment(0).from(30000), 'il y a quelques secondes', 'suffix'); + assert.equal(moment(30000).from(0), 'um fá sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'fá sekund síðani', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'fá sekund síðani', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'dans quelques secondes', + 'um fá sekund', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'dans 5 jours', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'um 5 dagar', 'in 5 days'); }); - test('same day', function (assert) { + test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); assert.equal( moment(a).calendar(), - 'Aujourd’hui à 12:00', - 'Today at the same time' + 'Í dag kl. 12:00', + 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Aujourd’hui à 12:25', + 'Í dag kl. 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Aujourd’hui à 13:00', + 'Í dag kl. 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Demain à 12:00', - 'Tomorrow at the same time' + 'Í morgin kl. 12:00', + 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Aujourd’hui à 11:00', + 'Í dag kl. 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Hier à 12:00', - 'Yesterday at the same time' + 'Í gjár kl. 12:00', + 'yesterday at the same time' ); }); - test('same next week', function (assert) { + test('calendar next week', function (assert) { var i, m; for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [à] LT'), - 'Today + ' + i + ' days current time' + m.format('dddd [kl.] LT'), + 'today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [à] LT'), - 'Today + ' + i + ' days beginning of day' + m.format('dddd [kl.] LT'), + 'today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [à] LT'), - 'Today + ' + i + ' days end of day' + m.format('dddd [kl.] LT'), + 'today + ' + i + ' days end of day' ); } }); - test('same last week', function (assert) { + test('calendar last week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('dddd [dernier à] LT'), - 'Today - ' + i + ' days current time' + m.format('[síðstu] dddd [kl] LT'), + 'today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [dernier à] LT'), - 'Today - ' + i + ' days beginning of day' + m.format('[síðstu] dddd [kl] LT'), + 'today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [dernier à] LT'), - 'Today - ' + i + ' days end of day' + m.format('[síðstu] dddd [kl] LT'), + 'today - ' + i + ' days end of day' ); } }); - test('same all else', function (assert) { + test('calendar all else', function (assert) { var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksAgo.calendar(), + weeksAgo.format('L'), + 'yksi viikko sitten' + ); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'in 1 week' + 'yhden viikon päästä' ); weeksAgo = moment().subtract({ w: 2 }); weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksAgo.calendar(), + weeksAgo.format('L'), + 'kaksi viikkoa sitten' + ); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'in 2 weeks' + 'kaden viikon päästä' ); }); test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1re', - 'Jan 1 2012 should be week 1' + '52 52 52.', + 'Jan 1 2012 should be week 52' ); assert.equal( - moment([2012, 0, 7]).format('w ww wo'), - '1 01 1re', - 'Jan 7 2012 should be week 1' + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1.', + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2e', - 'Jan 8 2012 should be week 2' + '1 01 1.', + 'Jan 8 2012 should be week 1' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), - '2 02 2e', - 'Jan 14 2012 should be week 2' + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2.', + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3e', - 'Jan 15 2012 should be week 3' + '2 02 2.', + 'Jan 15 2012 should be week 2' ); }); @@ -42462,7 +42461,7 @@ defineCommonLocaleTests(name); } - localeModule('fr-ch'); + localeModule('fr-ca'); test('parse', function (assert) { var i, @@ -42519,7 +42518,7 @@ ['D Do DD', '14 14e 14'], ['d do dddd ddd dd', '0 0e dimanche dim. di'], ['DDD DDDo DDDD', '45 45e 045'], - ['w wo ww', '6 6e 06'], + ['w wo ww', '8 8e 08'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], @@ -42528,11 +42527,11 @@ ['[le] Do [jour du mois]', 'le 14e jour du mois'], ['[le] DDDo [jour de l’année]', 'le 45e jour de l’année'], ['LTS', '15:25:50'], - ['L', '14.02.2010'], + ['L', '2010-02-14'], ['LL', '14 février 2010'], ['LLL', '14 février 2010 15:25'], ['LLLL', 'dimanche 14 février 2010 15:25'], - ['l', '14.2.2010'], + ['l', '2010-2-14'], ['ll', '14 févr. 2010'], ['lll', '14 févr. 2010 15:25'], ['llll', 'dim. 14 févr. 2010 15:25'], @@ -42898,28 +42897,28 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52e', - 'Jan 1 2012 should be week 52' + '1 01 1re', + 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), + moment([2012, 0, 7]).format('w ww wo'), '1 01 1re', - 'Jan 2 2012 should be week 1' + 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1re', - 'Jan 8 2012 should be week 1' + '2 02 2e', + 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), + moment([2012, 0, 14]).format('w ww wo'), '2 02 2e', - 'Jan 9 2012 should be week 2' + 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2e', - 'Jan 15 2012 should be week 2' + '3 03 3e', + 'Jan 15 2012 should be week 3' ); }); @@ -43318,17 +43317,13 @@ defineCommonLocaleTests(name); } - localeModule('fr'); + localeModule('fr-ch'); test('parse', function (assert) { var i, tests = 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split( '_' - ), - testsNoDot = - 'janvier janv_février févr_mars mars_avril avr_mai mai_juin juin_juillet juil_août août_septembre sept_octobre oct_novembre nov_décembre déc'.split( - '_' ); function equalTest(input, mmm, i) { @@ -43365,37 +43360,18 @@ equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } - - for (i = 0; i < 12; i++) { - testsNoDot[i] = testsNoDot[i].split(' '); - equalTest(testsNoDot[i][0], 'MMM', i); - equalTest(testsNoDot[i][1], 'MMM', i); - equalTest(testsNoDot[i][0], 'MMMM', i); - equalTest(testsNoDot[i][1], 'MMMM', i); - equalTest(testsNoDot[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(testsNoDot[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(testsNoDot[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(testsNoDot[i][1].toLocaleUpperCase(), 'MMMM', i); - - equalTestStrict(testsNoDot[i][1], 'MMM', i); - equalTestStrict(testsNoDot[i][0], 'MMMM', i); - equalTestStrict(testsNoDot[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(testsNoDot[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(testsNoDot[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(testsNoDot[i][0].toLocaleUpperCase(), 'MMMM', i); - } }); test('format', function (assert) { var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'dimanche, février 14 2010, 3:25:50 pm', + 'dimanche, février 14e 2010, 3:25:50 pm', ], ['ddd, hA', 'dim., 3PM'], ['M Mo MM MMMM MMM', '2 2e 02 février févr.'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], + ['D Do DD', '14 14e 14'], ['d do dddd ddd dd', '0 0e dimanche dim. di'], ['DDD DDDo DDDD', '45 45e 045'], ['w wo ww', '6 6e 06'], @@ -43404,14 +43380,14 @@ ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[le] Do [jour du mois]', 'le 14 jour du mois'], + ['[le] Do [jour du mois]', 'le 14e jour du mois'], ['[le] DDDo [jour de l’année]', 'le 45e jour de l’année'], ['LTS', '15:25:50'], - ['L', '14/02/2010'], + ['L', '14.02.2010'], ['LL', '14 février 2010'], ['LLL', '14 février 2010 15:25'], ['LLLL', 'dimanche 14 février 2010 15:25'], - ['l', '14/2/2010'], + ['l', '14.2.2010'], ['ll', '14 févr. 2010'], ['lll', '14 févr. 2010 15:25'], ['llll', 'dim. 14 févr. 2010 15:25'], @@ -43432,7 +43408,7 @@ assert.equal(moment([2017, 3, 1]).format('Qo'), '2e', '2e'); assert.equal(moment([2017, 0, 1]).format('Do'), '1er', '1er'); - assert.equal(moment([2017, 0, 2]).format('Do'), '2', '2'); + assert.equal(moment([2017, 0, 2]).format('Do'), '2e', '2e'); assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); assert.equal(moment([2011, 0, 2]).format('DDDo'), '2e', '2e'); @@ -44197,14 +44173,19 @@ defineCommonLocaleTests(name); } - localeModule('fy'); + localeModule('fr'); test('parse', function (assert) { - var tests = - 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai._juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split( + var i, + tests = + 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split( '_' ), - i; + testsNoDot = + 'janvier janv_février févr_mars mars_avril avr_mai mai_juin juin_juillet juil_août août_septembre sept_octobre oct_novembre nov_décembre déc'.split( + '_' + ); + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -44232,97 +44213,131 @@ equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - // Fails only for month 5 (index 4) - // equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][1], 'MMM', i); equalTestStrict(tests[i][0], 'MMMM', i); - // Fails only for month 5 (index 4) - // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - // Fails only for month 5 (index 4) - // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } + + for (i = 0; i < 12; i++) { + testsNoDot[i] = testsNoDot[i].split(' '); + equalTest(testsNoDot[i][0], 'MMM', i); + equalTest(testsNoDot[i][1], 'MMM', i); + equalTest(testsNoDot[i][0], 'MMMM', i); + equalTest(testsNoDot[i][1], 'MMMM', i); + equalTest(testsNoDot[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(testsNoDot[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(testsNoDot[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(testsNoDot[i][1].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(testsNoDot[i][1], 'MMM', i); + equalTestStrict(testsNoDot[i][0], 'MMMM', i); + equalTestStrict(testsNoDot[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(testsNoDot[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(testsNoDot[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(testsNoDot[i][0].toLocaleUpperCase(), 'MMMM', i); + } }); test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, HH:mm:ss', - 'snein, febrewaris 14de 2010, 15:25:50', + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'dimanche, février 14 2010, 3:25:50 pm', ], - ['ddd, HH', 'si., 15'], - ['M Mo MM MMMM MMM', '2 2de 02 febrewaris feb.'], + ['ddd, hA', 'dim., 3PM'], + ['M Mo MM MMMM MMM', '2 2e 02 février févr.'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14de 14'], - ['d do dddd ddd dd', '0 0de snein si. Si'], - ['DDD DDDo DDDD', '45 45ste 045'], - ['w wo ww', '6 6de 06'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0e dimanche dim. di'], + ['DDD DDDo DDDD', '45 45e 045'], + ['w wo ww', '6 6e 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45ste day of the year'], + ['[le] Do [jour du mois]', 'le 14 jour du mois'], + ['[le] DDDo [jour de l’année]', 'le 45e jour de l’année'], ['LTS', '15:25:50'], - ['L', '14-02-2010'], - ['LL', '14 febrewaris 2010'], - ['LLL', '14 febrewaris 2010 15:25'], - ['LLLL', 'snein 14 febrewaris 2010 15:25'], - ['l', '14-2-2010'], - ['ll', '14 feb. 2010'], - ['lll', '14 feb. 2010 15:25'], - ['llll', 'si. 14 feb. 2010 15:25'], + ['L', '14/02/2010'], + ['LL', '14 février 2010'], + ['LLL', '14 février 2010 15:25'], + ['LLLL', 'dimanche 14 février 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 févr. 2010'], + ['lll', '14 févr. 2010 15:25'], + ['llll', 'dim. 14 févr. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; + for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); + assert.equal(moment([2017, 0, 1]).format('Mo'), '1er', '1er'); + assert.equal(moment([2017, 1, 1]).format('Mo'), '2e', '2e'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); + assert.equal(moment([2017, 0, 1]).format('Qo'), '1er', '1er'); + assert.equal(moment([2017, 3, 1]).format('Qo'), '2e', '2e'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); + assert.equal(moment([2017, 0, 1]).format('Do'), '1er', '1er'); + assert.equal(moment([2017, 0, 2]).format('Do'), '2', '2'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1er', '1er'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2e', '2e'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3e', '3e'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4e', '4e'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5e', '5e'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6e', '6e'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7e', '7e'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8e', '8e'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9e', '9e'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10e', '10e'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11e', '11e'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12e', '12e'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13e', '13e'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14e', '14e'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15e', '15e'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16e', '16e'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17e', '17e'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18e', '18e'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19e', '19e'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20e', '20e'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21e', '21e'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22e', '22e'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23e', '23e'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24e', '24e'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25e', '25e'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26e', '26e'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27e', '27e'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28e', '28e'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29e', '29e'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30e', '30e'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31e', '31e'); + + assert.equal(moment([2017, 0, 1]).format('do'), '0e', '0e'); + assert.equal(moment([2017, 0, 2]).format('do'), '1er', '1er'); + + assert.equal(moment([2017, 0, 4]).format('wo Wo'), '1re 1re', '1re 1re'); + assert.equal(moment([2017, 0, 11]).format('wo Wo'), '2e 2e', '2e 2e'); }); test('format month', function (assert) { - var expected = - 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai_juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split( + var i, + expected = + 'janvier janv._février févr._mars mars_avril avr._mai mai_juin juin_juillet juil._août août_septembre sept._octobre oct._novembre nov._décembre déc.'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -44333,11 +44348,12 @@ }); test('format week', function (assert) { - var expected = - 'snein si. Si_moandei mo. Mo_tiisdei ti. Ti_woansdei wo. Wo_tongersdei to. To_freed fr. Fr_sneon so. So'.split( + var i, + expected = + 'dimanche dim. di_lundi lun. lu_mardi mar. ma_mercredi mer. me_jeudi jeu. je_vendredi ven. ve_samedi sam. sa'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -44349,254 +44365,249 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); + assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'in pear sekonden', + 'quelques secondes', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'ien minút', + 'une minute', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'ien minút', + 'une minute', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minuten', + '2 minutes', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minuten', + '44 minutes', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'ien oere', + 'une heure', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'ien oere', + 'une heure', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 oeren', + '2 heures', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 oeren', + '5 heures', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 oeren', + '21 heures', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'ien dei', + 'un jour', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'ien dei', + 'un jour', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 dagen', + '2 jours', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'ien dei', + 'un jour', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 dagen', + '5 jours', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 dagen', + '25 jours', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'ien moanne', + 'un mois', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'ien moanne', + 'un mois', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'ien moanne', + 'un mois', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 moannen', + '2 mois', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 moannen', + '2 mois', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 moannen', + '3 mois', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'ien moanne', + 'un mois', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 moannen', + '5 mois', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'ien jier', + 'un an', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 jierren', + '2 ans', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'ien jier', + 'un an', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 jierren', + '5 ans', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'oer in pear sekonden', 'prefix'); - assert.equal(moment(0).from(30000), 'in pear sekonden lyn', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal( - moment().fromNow(), - 'in pear sekonden lyn', - 'now from now should display as in the past' - ); + assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix'); + assert.equal(moment(0).from(30000), 'il y a quelques secondes', 'suffix'); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'oer in pear sekonden', + 'dans quelques secondes', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'oer 5 dagen', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'dans 5 jours', 'in 5 days'); }); - test('calendar day', function (assert) { + test('same day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); assert.equal( moment(a).calendar(), - 'hjoed om 12:00', - 'today at the same time' + 'Aujourd’hui à 12:00', + 'Today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'hjoed om 12:25', + 'Aujourd’hui à 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'hjoed om 13:00', + 'Aujourd’hui à 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'moarn om 12:00', - 'tomorrow at the same time' + 'Demain à 12:00', + 'Tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'hjoed om 11:00', + 'Aujourd’hui à 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'juster om 12:00', - 'yesterday at the same time' + 'Hier à 12:00', + 'Yesterday at the same time' ); }); - test('calendar next week', function (assert) { + test('same next week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [om] LT'), + m.format('dddd [à] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [om] LT'), + m.format('dddd [à] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [om] LT'), + m.format('dddd [à] LT'), 'Today + ' + i + ' days end of day' ); } }); - test('calendar last week', function (assert) { + test('same last week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[ôfrûne] dddd [om] LT'), + m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[ôfrûne] dddd [om] LT'), + m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[ôfrûne] dddd [om] LT'), + m.format('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day' ); } }); - test('calendar all else', function (assert) { + test('same all else', function (assert) { var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); @@ -44618,43 +44629,30 @@ ); }); - test('month abbreviation', function (assert) { - assert.equal( - moment([2012, 5, 23]).format('D-MMM-YYYY'), - '23-jun-2012', - 'format month abbreviation surrounded by dashes should not include a dot' - ); - assert.equal( - moment([2012, 5, 23]).format('D MMM YYYY'), - '23 jun. 2012', - 'format month abbreviation not surrounded by dashes should include a dot' - ); - }); - test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52ste', + '52 52 52e', 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1ste', + '1 01 1re', 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1ste', + '1 01 1re', 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2de', + '2 02 2e', 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2de', + '2 02 2e', 'Jan 15 2012 should be week 2' ); }); @@ -45054,75 +45052,81 @@ defineCommonLocaleTests(name); } - localeModule('ga'); - - var months = [ - 'Eanáir,Ean', - 'Feabhra,Feabh', - 'Márta,Márt', - 'Aibreán,Aib', - 'Bealtaine,Beal', - 'Meitheamh,Meith', - 'Iúil,Iúil', - 'Lúnasa,Lún', - 'Meán Fómhair,M.F.', - 'Deireadh Fómhair,D.F.', - 'Samhain,Samh', - 'Nollaig,Noll', - ]; + localeModule('fy'); test('parse', function (assert) { - function equalTest(monthName, monthFormat, monthNum) { + var tests = + 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai._juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { assert.equal( - moment(monthName, monthFormat).month(), - monthNum, - monthName + ' should be month ' + (monthNum + 1) + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); + } + + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) ); } - var i, testMonth; for (i = 0; i < 12; i++) { - testMonth = months[i].split(','); + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTest(testMonth[0], 'MMM', i); - equalTest(testMonth[1], 'MMM', i); - equalTest(testMonth[0], 'MMMM', i); - equalTest(testMonth[1], 'MMMM', i); - equalTest(testMonth[0].toLocaleLowerCase(), 'MMMM', i); - equalTest(testMonth[1].toLocaleLowerCase(), 'MMMM', i); - equalTest(testMonth[0].toLocaleUpperCase(), 'MMMM', i); - equalTest(testMonth[1].toLocaleUpperCase(), 'MMMM', i); + // Fails only for month 5 (index 4) + // equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + // Fails only for month 5 (index 4) + // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + // Fails only for month 5 (index 4) + // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Dé Domhnaigh, Feabhra 14mh 2010, 3:25:50 pm', + 'dddd, MMMM Do YYYY, HH:mm:ss', + 'snein, febrewaris 14de 2010, 15:25:50', ], - ['ddd, hA', 'Domh, 3PM'], - ['M Mo MM MMMM MMM', '2 2na 02 Feabhra Feabh'], + ['ddd, HH', 'si., 15'], + ['M Mo MM MMMM MMM', '2 2de 02 febrewaris feb.'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14mh 14'], - ['d do dddd ddd dd', '0 0mh Dé Domhnaigh Domh Do'], - ['DDD DDDo DDDD', '45 45mh 045'], - ['w wo ww', '6 6mh 06'], + ['D Do DD', '14 14de 14'], + ['d do dddd ddd dd', '0 0de snein si. Si'], + ['DDD DDDo DDDD', '45 45ste 045'], + ['w wo ww', '6 6de 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[an] DDDo [latha den bhliadhna]', 'an 45mh latha den bhliadhna'], + ['[the] DDDo [day of the year]', 'the 45ste day of the year'], ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 Feabhra 2010'], - ['LLL', '14 Feabhra 2010 15:25'], - ['LLLL', 'Dé Domhnaigh, 14 Feabhra 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Feabh 2010'], - ['lll', '14 Feabh 2010 15:25'], - ['llll', 'Domh, 14 Feabh 2010 15:25'], + ['L', '14-02-2010'], + ['LL', '14 febrewaris 2010'], + ['LLL', '14 febrewaris 2010 15:25'], + ['LLLL', 'snein 14 febrewaris 2010 15:25'], + ['l', '14-2-2010'], + ['ll', '14 feb. 2010'], + ['lll', '14 feb. 2010 15:25'], + ['llll', 'si. 14 feb. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -45132,45 +45136,51 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1d', '1d'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2na', '2na'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3mh', '3mh'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4mh', '4mh'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5mh', '5mh'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6mh', '6mh'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7mh', '7mh'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8mh', '8mh'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9mh', '9mh'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10mh', '10mh'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11mh', '11mh'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12na', '12na'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13mh', '13mh'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14mh', '14mh'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15mh', '15mh'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16mh', '16mh'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17mh', '17mh'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18mh', '18mh'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19mh', '19mh'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20mh', '20mh'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21mh', '21mh'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22na', '22na'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23mh', '23mh'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24mh', '24mh'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25mh', '25mh'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26mh', '26mh'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27mh', '27mh'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28mh', '28mh'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29mh', '29mh'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30mh', '30mh'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31mh', '31mh'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ste', '1ste'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2de', '2de'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3de', '3de'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4de', '4de'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5de', '5de'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6de', '6de'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7de', '7de'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ste', '8ste'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9de', '9de'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10de', '10de'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11de', '11de'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12de', '12de'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13de', '13de'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14de', '14de'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15de', '15de'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16de', '16de'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17de', '17de'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18de', '18de'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19de', '19de'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ste', '20ste'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ste', '21ste'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22ste', '22ste'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23ste', '23ste'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ste', '24ste'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ste', '25ste'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ste', '26ste'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ste', '27ste'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ste', '28ste'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ste', '29ste'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ste', '30ste'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); }); test('format month', function (assert) { - var expected = months, + var expected = + 'jannewaris jan._febrewaris feb._maart mrt._april apr._maaie mai_juny jun._july jul._augustus aug._septimber sep._oktober okt._novimber nov._desimber des.'.split( + '_' + ), i; for (i = 0; i < expected.length; i++) { assert.equal( - moment([2011, i, 1]).format('MMMM,MMM'), + moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i] ); @@ -45178,15 +45188,10 @@ }); test('format week', function (assert) { - var expected = [ - 'Dé Domhnaigh Domh Do', - 'Dé Luain Luan Lu', - 'Dé Máirt Máirt Má', - 'Dé Céadaoin Céad Cé', - 'Déardaoin Déar Dé', - 'Dé hAoine Aoine A', - 'Dé Sathairn Sath Sa', - ], + var expected = + 'snein si. Si_moandei mo. Mo_tiisdei ti. Ti_woansdei wo. Wo_tongersdei to. To_freed fr. Fr_sneon so. So'.split( + '_' + ), i; for (i = 0; i < expected.length; i++) { assert.equal( @@ -45201,155 +45206,155 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'cúpla soicind', + 'in pear sekonden', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'nóiméad', + 'ien minút', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'nóiméad', + 'ien minút', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 nóiméad', + '2 minuten', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 nóiméad', + '44 minuten', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'uair an chloig', + 'ien oere', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'uair an chloig', + 'ien oere', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 uair an chloig', + '2 oeren', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 uair an chloig', + '5 oeren', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 uair an chloig', + '21 oeren', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'lá', + 'ien dei', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'lá', + 'ien dei', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 lá', + '2 dagen', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'lá', + 'ien dei', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 lá', + '5 dagen', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 lá', + '25 dagen', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'mí', + 'ien moanne', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'mí', + 'ien moanne', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'mí', + 'ien moanne', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 míonna', + '2 moannen', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 míonna', + '2 moannen', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 míonna', + '3 moannen', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'mí', + 'ien moanne', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 míonna', + '5 moannen', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'bliain', + 'ien jier', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 bliain', + '2 jierren', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'bliain', + 'ien jier', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 bliain', + '5 jierren', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'i cúpla soicind', 'prefix'); - assert.equal(moment(0).from(30000), 'cúpla soicind ó shin', 'suffix'); + assert.equal(moment(30000).from(0), 'oer in pear sekonden', 'prefix'); + assert.equal(moment(0).from(30000), 'in pear sekonden lyn', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'cúpla soicind ó shin', + 'in pear sekonden lyn', 'now from now should display as in the past' ); }); @@ -45357,10 +45362,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'i cúpla soicind', + 'oer in pear sekonden', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'i 5 lá', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'oer 5 dagen', 'in 5 days'); }); test('calendar day', function (assert) { @@ -45368,32 +45373,32 @@ assert.equal( moment(a).calendar(), - 'Inniu ag 12:00', + 'hjoed om 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Inniu ag 12:25', + 'hjoed om 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Inniu ag 13:00', + 'hjoed om 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Amárach ag 12:00', + 'moarn om 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Inniu ag 11:00', + 'hjoed om 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Inné ag 12:00', + 'juster om 12:00', 'yesterday at the same time' ); }); @@ -45404,19 +45409,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [ag] LT'), + m.format('dddd [om] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [ag] LT'), + m.format('dddd [om] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [ag] LT'), + m.format('dddd [om] LT'), 'Today + ' + i + ' days end of day' ); } @@ -45424,24 +45429,23 @@ test('calendar last week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('dddd [seo caite] [ag] LT'), + m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [seo caite] [ag] LT'), + m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [seo caite] [ag] LT'), + m.format('[ôfrûne] dddd [om] LT'), 'Today - ' + i + ' days end of day' ); } @@ -45469,31 +45473,44 @@ ); }); + test('month abbreviation', function (assert) { + assert.equal( + moment([2012, 5, 23]).format('D-MMM-YYYY'), + '23-jun-2012', + 'format month abbreviation surrounded by dashes should not include a dot' + ); + assert.equal( + moment([2012, 5, 23]).format('D MMM YYYY'), + '23 jun. 2012', + 'format month abbreviation not surrounded by dashes should include a dot' + ); + }); + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52na', - 'Ean 1 2012 should be week 52' + '52 52 52ste', + 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1d', - 'Ean 2 2012 should be week 1' + '1 01 1ste', + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1d', - 'Ean 8 2012 should be week 1' + '1 01 1ste', + 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2na', - 'Ean 9 2012 should be week 2' + '2 02 2de', + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2na', - 'Ean 15 2012 should be week 2' + '2 02 2de', + 'Jan 15 2012 should be week 2' ); }); @@ -45892,21 +45909,21 @@ defineCommonLocaleTests(name); } - localeModule('gd'); + localeModule('ga'); var months = [ - 'Am Faoilleach,Faoi', - 'An Gearran,Gear', - 'Am Màrt,Màrt', - 'An Giblean,Gibl', - 'An Cèitean,Cèit', - 'An t-Ògmhios,Ògmh', - 'An t-Iuchar,Iuch', - 'An Lùnastal,Lùn', - 'An t-Sultain,Sult', - 'An Dàmhair,Dàmh', - 'An t-Samhain,Samh', - 'An Dùbhlachd,Dùbh', + 'Eanáir,Ean', + 'Feabhra,Feabh', + 'Márta,Márt', + 'Aibreán,Aib', + 'Bealtaine,Beal', + 'Meitheamh,Meith', + 'Iúil,Iúil', + 'Lúnasa,Lún', + 'Meán Fómhair,M.F.', + 'Deireadh Fómhair,D.F.', + 'Samhain,Samh', + 'Nollaig,Noll', ]; test('parse', function (assert) { @@ -45918,14 +45935,6 @@ ); } - function equalTestStrict(input, mmm, monthIndex) { - assert.equal( - moment(input, mmm, true).month(), - monthIndex, - input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) - ); - } - var i, testMonth; for (i = 0; i < 12; i++) { testMonth = months[i].split(','); @@ -45938,13 +45947,6 @@ equalTest(testMonth[1].toLocaleLowerCase(), 'MMMM', i); equalTest(testMonth[0].toLocaleUpperCase(), 'MMMM', i); equalTest(testMonth[1].toLocaleUpperCase(), 'MMMM', i); - - equalTestStrict(testMonth[1], 'MMM', i); - equalTestStrict(testMonth[0], 'MMMM', i); - equalTestStrict(testMonth[1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(testMonth[1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(testMonth[0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(testMonth[0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -45952,13 +45954,13 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Didòmhnaich, An Gearran 14mh 2010, 3:25:50 pm', + 'Dé Domhnaigh, Feabhra 14mh 2010, 3:25:50 pm', ], - ['ddd, hA', 'Did, 3PM'], - ['M Mo MM MMMM MMM', '2 2na 02 An Gearran Gear'], + ['ddd, hA', 'Domh, 3PM'], + ['M Mo MM MMMM MMM', '2 2na 02 Feabhra Feabh'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14mh 14'], - ['d do dddd ddd dd', '0 0mh Didòmhnaich Did Dò'], + ['d do dddd ddd dd', '0 0mh Dé Domhnaigh Domh Do'], ['DDD DDDo DDDD', '45 45mh 045'], ['w wo ww', '6 6mh 06'], ['h hh', '3 03'], @@ -45969,13 +45971,13 @@ ['[an] DDDo [latha den bhliadhna]', 'an 45mh latha den bhliadhna'], ['LTS', '15:25:50'], ['L', '14/02/2010'], - ['LL', '14 An Gearran 2010'], - ['LLL', '14 An Gearran 2010 15:25'], - ['LLLL', 'Didòmhnaich, 14 An Gearran 2010 15:25'], + ['LL', '14 Feabhra 2010'], + ['LLL', '14 Feabhra 2010 15:25'], + ['LLLL', 'Dé Domhnaigh, 14 Feabhra 2010 15:25'], ['l', '14/2/2010'], - ['ll', '14 Gear 2010'], - ['lll', '14 Gear 2010 15:25'], - ['llll', 'Did, 14 Gear 2010 15:25'], + ['ll', '14 Feabh 2010'], + ['lll', '14 Feabh 2010 15:25'], + ['llll', 'Domh, 14 Feabh 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -46032,13 +46034,13 @@ test('format week', function (assert) { var expected = [ - 'Didòmhnaich Did Dò', - 'Diluain Dil Lu', - 'Dimàirt Dim Mà', - 'Diciadain Dic Ci', - 'Diardaoin Dia Ar', - 'Dihaoine Dih Ha', - 'Disathairne Dis Sa', + 'Dé Domhnaigh Domh Do', + 'Dé Luain Luan Lu', + 'Dé Máirt Máirt Má', + 'Dé Céadaoin Céad Cé', + 'Déardaoin Déar Dé', + 'Dé hAoine Aoine A', + 'Dé Sathairn Sath Sa', ], i; for (i = 0; i < expected.length; i++) { @@ -46054,155 +46056,155 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'beagan diogan', + 'cúpla soicind', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'mionaid', + 'nóiméad', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'mionaid', + 'nóiméad', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 mionaidean', + '2 nóiméad', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 mionaidean', + '44 nóiméad', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'uair', + 'uair an chloig', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'uair', + 'uair an chloig', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 uairean', + '2 uair an chloig', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 uairean', + '5 uair an chloig', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 uairean', + '21 uair an chloig', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'latha', + 'lá', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'latha', + 'lá', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 latha', + '2 lá', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'latha', + 'lá', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 latha', + '5 lá', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 latha', + '25 lá', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'mìos', + 'mí', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'mìos', + 'mí', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'mìos', + 'mí', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 mìosan', + '2 míonna', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 mìosan', + '2 míonna', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 mìosan', + '3 míonna', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'mìos', + 'mí', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 mìosan', + '5 míonna', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'bliadhna', + 'bliain', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 bliadhna', + '2 bliain', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'bliadhna', + 'bliain', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 bliadhna', + '5 bliain', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ann an beagan diogan', 'prefix'); - assert.equal(moment(0).from(30000), 'bho chionn beagan diogan', 'suffix'); + assert.equal(moment(30000).from(0), 'i cúpla soicind', 'prefix'); + assert.equal(moment(0).from(30000), 'cúpla soicind ó shin', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'bho chionn beagan diogan', + 'cúpla soicind ó shin', 'now from now should display as in the past' ); }); @@ -46210,14 +46212,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'ann an beagan diogan', + 'i cúpla soicind', 'in a few seconds' ); - assert.equal( - moment().add({ d: 5 }).fromNow(), - 'ann an 5 latha', - 'in 5 days' - ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'i 5 lá', 'in 5 days'); }); test('calendar day', function (assert) { @@ -46225,32 +46223,32 @@ assert.equal( moment(a).calendar(), - 'An-diugh aig 12:00', + 'Inniu ag 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'An-diugh aig 12:25', + 'Inniu ag 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'An-diugh aig 13:00', + 'Inniu ag 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'A-màireach aig 12:00', + 'Amárach ag 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'An-diugh aig 11:00', + 'Inniu ag 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'An-dè aig 12:00', + 'Inné ag 12:00', 'yesterday at the same time' ); }); @@ -46261,19 +46259,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [aig] LT'), + m.format('dddd [ag] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [aig] LT'), + m.format('dddd [ag] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [aig] LT'), + m.format('dddd [ag] LT'), 'Today + ' + i + ' days end of day' ); } @@ -46286,19 +46284,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('dddd [seo chaidh] [aig] LT'), + m.format('dddd [seo caite] [ag] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [seo chaidh] [aig] LT'), + m.format('dddd [seo caite] [ag] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [seo chaidh] [aig] LT'), + m.format('dddd [seo caite] [ag] LT'), 'Today - ' + i + ' days end of day' ); } @@ -46330,27 +46328,27 @@ assert.equal( moment([2012, 0, 1]).format('w ww wo'), '52 52 52na', - 'Faoi 1 2012 should be week 52' + 'Ean 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), '1 01 1d', - 'Faoi 2 2012 should be week 1' + 'Ean 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), '1 01 1d', - 'Faoi 8 2012 should be week 1' + 'Ean 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), '2 02 2na', - 'Faoi 9 2012 should be week 2' + 'Ean 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), '2 02 2na', - 'Faoi 15 2012 should be week 2' + 'Ean 15 2012 should be week 2' ); }); @@ -46749,21 +46747,32 @@ defineCommonLocaleTests(name); } - localeModule('gl'); + localeModule('gd'); + + var months = [ + 'Am Faoilleach,Faoi', + 'An Gearran,Gear', + 'Am Màrt,Màrt', + 'An Giblean,Gibl', + 'An Cèitean,Cèit', + 'An t-Ògmhios,Ògmh', + 'An t-Iuchar,Iuch', + 'An Lùnastal,Lùn', + 'An t-Sultain,Sult', + 'An Dàmhair,Dàmh', + 'An t-Samhain,Samh', + 'An Dùbhlachd,Dùbh', + ]; test('parse', function (assert) { - var tests = - 'xaneiro xan._febreiro feb._marzo mar._abril abr._maio mai._xuño xuñ._xullo xul._agosto ago._setembro set._outubro out._novembro nov._decembro dec.'.split( - '_' - ), - i; - function equalTest(input, mmm, i) { + function equalTest(monthName, monthFormat, monthNum) { assert.equal( - moment(input, mmm).month(), - i, - input + ' should be month ' + (i + 1) + moment(monthName, monthFormat).month(), + monthNum, + monthName + ' should be month ' + (monthNum + 1) ); } + function equalTestStrict(input, mmm, monthIndex) { assert.equal( moment(input, mmm, true).month(), @@ -46772,23 +46781,25 @@ ); } + var i, testMonth; for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + testMonth = months[i].split(','); - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(testMonth[0], 'MMM', i); + equalTest(testMonth[1], 'MMM', i); + equalTest(testMonth[0], 'MMMM', i); + equalTest(testMonth[1], 'MMMM', i); + equalTest(testMonth[0].toLocaleLowerCase(), 'MMMM', i); + equalTest(testMonth[1].toLocaleLowerCase(), 'MMMM', i); + equalTest(testMonth[0].toLocaleUpperCase(), 'MMMM', i); + equalTest(testMonth[1].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(testMonth[1], 'MMM', i); + equalTestStrict(testMonth[0], 'MMMM', i); + equalTestStrict(testMonth[1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(testMonth[1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(testMonth[0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(testMonth[0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -46796,30 +46807,30 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'domingo, febreiro 14º 2010, 3:25:50 pm', + 'Didòmhnaich, An Gearran 14mh 2010, 3:25:50 pm', ], - ['ddd, hA', 'dom., 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 febreiro feb.'], + ['ddd, hA', 'Did, 3PM'], + ['M Mo MM MMMM MMM', '2 2na 02 An Gearran Gear'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º domingo dom. do'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '6 6º 06'], + ['D Do DD', '14 14mh 14'], + ['d do dddd ddd dd', '0 0mh Didòmhnaich Did Dò'], + ['DDD DDDo DDDD', '45 45mh 045'], + ['w wo ww', '6 6mh 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['[an] DDDo [latha den bhliadhna]', 'an 45mh latha den bhliadhna'], ['LTS', '15:25:50'], ['L', '14/02/2010'], - ['LL', '14 de febreiro de 2010'], - ['LLL', '14 de febreiro de 2010 15:25'], - ['LLLL', 'domingo, 14 de febreiro de 2010 15:25'], + ['LL', '14 An Gearran 2010'], + ['LLL', '14 An Gearran 2010 15:25'], + ['LLLL', 'Didòmhnaich, 14 An Gearran 2010 15:25'], ['l', '14/2/2010'], - ['ll', '14 de feb. de 2010'], - ['lll', '14 de feb. de 2010 15:25'], - ['llll', 'dom., 14 de feb. de 2010 15:25'], + ['ll', '14 Gear 2010'], + ['lll', '14 Gear 2010 15:25'], + ['llll', 'Did, 14 Gear 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -46829,51 +46840,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1d', '1d'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2na', '2na'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3mh', '3mh'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4mh', '4mh'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5mh', '5mh'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6mh', '6mh'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7mh', '7mh'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8mh', '8mh'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9mh', '9mh'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10mh', '10mh'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11mh', '11mh'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12na', '12na'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13mh', '13mh'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14mh', '14mh'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15mh', '15mh'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16mh', '16mh'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17mh', '17mh'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18mh', '18mh'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19mh', '19mh'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20mh', '20mh'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21mh', '21mh'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22na', '22na'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23mh', '23mh'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24mh', '24mh'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25mh', '25mh'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26mh', '26mh'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27mh', '27mh'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28mh', '28mh'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29mh', '29mh'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30mh', '30mh'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31mh', '31mh'); }); test('format month', function (assert) { - var expected = - 'xaneiro xan._febreiro feb._marzo mar._abril abr._maio mai._xuño xuñ._xullo xul._agosto ago._setembro set._outubro out._novembro nov._decembro dec.'.split( - '_' - ), + var expected = months, i; for (i = 0; i < expected.length; i++) { assert.equal( - moment([2011, i, 1]).format('MMMM MMM'), + moment([2011, i, 1]).format('MMMM,MMM'), expected[i], expected[i] ); @@ -46881,10 +46886,15 @@ }); test('format week', function (assert) { - var expected = - 'domingo dom. do_luns lun. lu_martes mar. ma_mércores mér. mé_xoves xov. xo_venres ven. ve_sábado sáb. sá'.split( - '_' - ), + var expected = [ + 'Didòmhnaich Did Dò', + 'Diluain Dil Lu', + 'Dimàirt Dim Mà', + 'Diciadain Dic Ci', + 'Diardaoin Dia Ar', + 'Dihaoine Dih Ha', + 'Disathairne Dis Sa', + ], i; for (i = 0; i < expected.length; i++) { assert.equal( @@ -46897,158 +46907,157 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'uns segundos', + 'beagan diogan', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'un minuto', + 'mionaid', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'un minuto', + 'mionaid', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minutos', + '2 mionaidean', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minutos', + '44 mionaidean', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'unha hora', + 'uair', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'unha hora', + 'uair', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 horas', + '2 uairean', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 horas', + '5 uairean', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 horas', + '21 uairean', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'un día', + 'latha', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'un día', + 'latha', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 días', + '2 latha', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'un día', + 'latha', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 días', + '5 latha', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 días', + '25 latha', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'un mes', + 'mìos', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'un mes', + 'mìos', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'un mes', + 'mìos', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 meses', + '2 mìosan', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 meses', + '2 mìosan', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 meses', + '3 mìosan', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'un mes', + 'mìos', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 meses', + '5 mìosan', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'un ano', + 'bliadhna', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 anos', + '2 bliadhna', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'un ano', + 'bliadhna', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 anos', + '5 bliadhna', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'nuns segundos', 'prefix'); - assert.equal(moment(0).from(30000), 'hai uns segundos', 'suffix'); + assert.equal(moment(30000).from(0), 'ann an beagan diogan', 'prefix'); + assert.equal(moment(0).from(30000), 'bho chionn beagan diogan', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'hai uns segundos', + 'bho chionn beagan diogan', 'now from now should display as in the past' ); }); @@ -47056,10 +47065,14 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'nuns segundos', - 'nuns segundos' + 'ann an beagan diogan', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'ann an 5 latha', + 'in 5 days' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'en 5 días', 'en 5 días'); }); test('calendar day', function (assert) { @@ -47067,61 +47080,55 @@ assert.equal( moment(a).calendar(), - 'hoxe ás 12:00', + 'An-diugh aig 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'hoxe ás 12:25', + 'An-diugh aig 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'hoxe ás 13:00', + 'An-diugh aig 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'mañá ás 12:00', + 'A-màireach aig 12:00', 'tomorrow at the same time' ); - assert.equal( - moment(a).add({ d: 1, h: -1 }).calendar(), - 'mañá ás 11:00', - 'tomorrow minus 1 hour' - ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'hoxe ás 11:00', + 'An-diugh aig 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'onte á 12:00', + 'An-dè aig 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT'), + m.format('dddd [aig] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT'), + m.format('dddd [aig] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT'), + m.format('dddd [aig] LT'), 'Today + ' + i + ' days end of day' ); } @@ -47129,29 +47136,24 @@ test('calendar last week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format( - '[o] dddd [pasado ' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT' - ), + m.format('dddd [seo chaidh] [aig] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format( - '[o] dddd [pasado ' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT' - ), + m.format('dddd [seo chaidh] [aig] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format( - '[o] dddd [pasado ' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT' - ), + m.format('dddd [seo chaidh] [aig] LT'), 'Today - ' + i + ' days end of day' ); } @@ -47179,40 +47181,31 @@ ); }); - test('regression tests', function (assert) { - var lastWeek = moment().subtract({ d: 4 }).hours(1); - assert.equal( - lastWeek.calendar(), - lastWeek.format('[o] dddd [pasado a] LT'), - "1 o'clock bug" - ); - }); - test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52º', - 'Jan 1 2012 should be week 52' + '52 52 52na', + 'Faoi 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1º', - 'Jan 2 2012 should be week 1' + '1 01 1d', + 'Faoi 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1º', - 'Jan 8 2012 should be week 1' + '1 01 1d', + 'Faoi 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2º', - 'Jan 9 2012 should be week 2' + '2 02 2na', + 'Faoi 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '2 02 2º', - 'Jan 15 2012 should be week 2' + '2 02 2na', + 'Faoi 15 2012 should be week 2' ); }); @@ -47611,15 +47604,14 @@ defineCommonLocaleTests(name); } - localeModule('gom-deva'); + localeModule('gl'); test('parse', function (assert) { - var i, - tests = - 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च_एप्रील एप्री._मे मे_जून जून_जुलय जुल._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split( + var tests = + 'xaneiro xan._febreiro feb._marzo mar._abril abr._maio mai._xuño xuñ._xullo xul._agosto ago._setembro set._outubro out._novembro nov._decembro dec.'.split( '_' - ); - + ), + i; function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -47627,6 +47619,13 @@ input + ' should be month ' + (i + 1) ); } + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); @@ -47638,6 +47637,13 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -47645,83 +47651,81 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'आयतार, फेब्रुवारीच्या 14वेर 2010, 3:25:50 दनपारां', + 'domingo, febreiro 14º 2010, 3:25:50 pm', ], - ['ddd, h A', 'आयत., 3 दनपारां'], - ['M Mo MM MMMM MMM', '2 2 02 फेब्रुवारी फेब्रु.'], + ['ddd, hA', 'dom., 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 febreiro feb.'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14वेर 14'], - ['d do dddd ddd dd', '0 0 आयतार आयत. आ'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º domingo dom. do'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '6 6º 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'दनपारां दनपारां'], - ['[वर्साचो] DDDo[वो दीस]', 'वर्साचो 45वो दीस'], - ['LTS', 'दनपारां 3:25:50 वाजतां'], - ['L', '14-02-2010'], - ['LL', '14 फेब्रुवारी 2010'], - ['LLL', '14 फेब्रुवारी 2010 दनपारां 3:25 वाजतां'], - ['LLLL', 'आयतार, फेब्रुवारीच्या 14वेर, 2010, दनपारां 3:25 वाजतां'], - ['l', '14-2-2010'], - ['ll', '14 फेब्रु. 2010'], - ['lll', '14 फेब्रु. 2010 दनपारां 3:25 वाजतां'], - ['llll', 'आयत., 14 फेब्रु. 2010, दनपारां 3:25 वाजतां'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 de febreiro de 2010'], + ['LLL', '14 de febreiro de 2010 15:25'], + ['LLLL', 'domingo, 14 de febreiro de 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de feb. de 2010'], + ['lll', '14 de feb. de 2010 15:25'], + ['llll', 'dom., 14 de feb. de 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; - for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1º', '1º'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2º', '2º'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3º', '3º'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4º', '4º'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5º', '5º'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6º', '6º'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7º', '7º'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8º', '8º'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9º', '9º'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10º', '10º'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11º', '11º'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12º', '12º'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13º', '13º'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14º', '14º'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15º', '15º'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16º', '16º'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17º', '17º'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18º', '18º'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19º', '19º'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20º', '20º'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21º', '21º'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22º', '22º'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23º', '23º'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24º', '24º'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25º', '25º'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26º', '26º'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27º', '27º'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28º', '28º'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29º', '29º'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30º', '30º'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); }); test('format month', function (assert) { - var i, - expected = - 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च_एप्रील एप्री._मे मे_जून जून_जुलय जुल._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split( + var expected = + 'xaneiro xan._febreiro feb._marzo mar._abril abr._maio mai._xuño xuñ._xullo xul._agosto ago._setembro set._outubro out._novembro nov._decembro dec.'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -47732,12 +47736,11 @@ }); test('format week', function (assert) { - var i, - expected = - 'आयतार आयत. आ_सोमार सोम. सो_मंगळार मंगळ. मं_बुधवार बुध. बु_बिरेस्तार ब्रेस्त. ब्रे_सुक्रार सुक्र. सु_शेनवार शेन. शे'.split( + var expected = + 'domingo dom. do_luns lun. lu_martes mar. ma_mércores mér. mé_xoves xov. xo_venres ven. ve_sábado sáb. sá'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -47752,155 +47755,155 @@ assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'थोडे सॅकंड', + 'uns segundos', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'एक मिनूट', + 'un minuto', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'एक मिनूट', + 'un minuto', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 मिणटां', + '2 minutos', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 मिणटां', + '44 minutos', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'एक वर', + 'unha hora', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'एक वर', + 'unha hora', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 वरां', + '2 horas', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 वरां', + '5 horas', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 वरां', + '21 horas', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'एक दीस', + 'un día', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'एक दीस', + 'un día', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 दीस', + '2 días', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'एक दीस', + 'un día', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 दीस', + '5 días', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 दीस', + '25 días', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'एक म्हयनो', + 'un mes', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'एक म्हयनो', + 'un mes', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'एक म्हयनो', + 'un mes', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 म्हयने', + '2 meses', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 म्हयने', + '2 meses', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 म्हयने', + '3 meses', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'एक म्हयनो', + 'un mes', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 म्हयने', + '5 meses', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'एक वर्स', + 'un ano', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 वर्सां', + '2 anos', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'एक वर्स', + 'un ano', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 वर्सां', + '5 anos', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'थोडया सॅकंडांनी', 'prefix'); - assert.equal(moment(0).from(30000), 'थोडे सॅकंड आदीं', 'suffix'); + assert.equal(moment(30000).from(0), 'nuns segundos', 'prefix'); + assert.equal(moment(0).from(30000), 'hai uns segundos', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'थोडे सॅकंड आदीं', + 'hai uns segundos', 'now from now should display as in the past' ); }); @@ -47908,18 +47911,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'थोडया सॅकंडांनी', - 'in a few seconds' - ); - assert.equal(moment().add({ d: 5 }).fromNow(), '5 दिसांनी', 'in 5 days'); - }); - - test('ago', function (assert) { - assert.equal( - moment().subtract({ h: 3 }).fromNow(), - '3 वरां आदीं', - '3 hours ago' + 'nuns segundos', + 'nuns segundos' ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'en 5 días', 'en 5 días'); }); test('calendar day', function (assert) { @@ -47927,32 +47922,37 @@ assert.equal( moment(a).calendar(), - 'आयज दनपारां 12:00 वाजतां', + 'hoxe ás 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'आयज दनपारां 12:25 वाजतां', + 'hoxe ás 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'आयज दनपारां 1:00 वाजतां', + 'hoxe ás 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'फाल्यां दनपारां 12:00 वाजतां', + 'mañá ás 12:00', 'tomorrow at the same time' ); + assert.equal( + moment(a).add({ d: 1, h: -1 }).calendar(), + 'mañá ás 11:00', + 'tomorrow minus 1 hour' + ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'आयज सकाळीं 11:00 वाजतां', + 'hoxe ás 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'काल दनपारां 12:00 वाजतां', + 'onte á 12:00', 'yesterday at the same time' ); }); @@ -47964,19 +47964,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('[फुडलो] dddd[,] LT'), + m.format('dddd [' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[फुडलो] dddd[,] LT'), + m.format('dddd [' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[फुडलो] dddd[,] LT'), + m.format('dddd [' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days end of day' ); } @@ -47984,24 +47984,29 @@ test('calendar last week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[फाटलो] dddd[,] LT'), + m.format( + '[o] dddd [pasado ' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT' + ), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[फाटलो] dddd[,] LT'), + m.format( + '[o] dddd [pasado ' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT' + ), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[फाटलो] dddd[,] LT'), + m.format( + '[o] dddd [pasado ' + (m.hours() !== 1 ? 'ás' : 'a') + '] LT' + ), 'Today - ' + i + ' days end of day' ); } @@ -48029,31 +48034,40 @@ ); }); - test('weeks year starting sunday format', function (assert) { + test('regression tests', function (assert) { + var lastWeek = moment().subtract({ d: 4 }).hours(1); + assert.equal( + lastWeek.calendar(), + lastWeek.format('[o] dddd [pasado a] LT'), + "1 o'clock bug" + ); + }); + + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1', - 'Jan 1 2012 should be week 1' + '52 52 52º', + 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1', + '1 01 1º', 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2', - 'Jan 8 2012 should be week 2' + '1 01 1º', + 'Jan 8 2012 should be week 1' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), - '2 02 2', - 'Jan 14 2012 should be week 2' + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2º', + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3', - 'Jan 15 2012 should be week 3' + '2 02 2º', + 'Jan 15 2012 should be week 2' ); }); @@ -48452,12 +48466,12 @@ defineCommonLocaleTests(name); } - localeModule('gom-latn'); + localeModule('gom-deva'); test('parse', function (assert) { var i, tests = - 'Janer Jan._Febrer Feb._Mars Mars_Abril Abr._Mai Mai_Jun Jun_Julai Jul._Agost Ago._Setembr Set._Otubr Otu._Novembr Nov._Dezembr Dez.'.split( + 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च_एप्रील एप्री._मे मे_जून जून_जुलय जुल._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split( '_' ); @@ -48468,13 +48482,6 @@ input + ' should be month ' + (i + 1) ); } - function equalTestStrict(input, mmm, monthIndex) { - assert.equal( - moment(input, mmm, true).month(), - monthIndex, - input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) - ); - } for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); @@ -48486,13 +48493,6 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); @@ -48500,30 +48500,30 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Aitar, Febrerachea 14er 2010, 3:25:50 donparam', + 'आयतार, फेब्रुवारीच्या 14वेर 2010, 3:25:50 दनपारां', ], - ['ddd, h A', 'Ait., 3 donparam'], - ['M Mo MM MMMM MMM', '2 2 02 Febrer Feb.'], + ['ddd, h A', 'आयत., 3 दनपारां'], + ['M Mo MM MMMM MMM', '2 2 02 फेब्रुवारी फेब्रु.'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14er 14'], - ['d do dddd ddd dd', '0 0 Aitar Ait. Ai'], + ['D Do DD', '14 14वेर 14'], + ['d do dddd ddd dd', '0 0 आयतार आयत. आ'], ['DDD DDDo DDDD', '45 45 045'], ['w wo ww', '7 7 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'donparam donparam'], - ['[Vorsacho] DDDo[vo dis]', 'Vorsacho 45vo dis'], - ['LTS', 'donparam 3:25:50 vazta'], + ['a A', 'दनपारां दनपारां'], + ['[वर्साचो] DDDo[वो दीस]', 'वर्साचो 45वो दीस'], + ['LTS', 'दनपारां 3:25:50 वाजतां'], ['L', '14-02-2010'], - ['LL', '14 Febrer 2010'], - ['LLL', '14 Febrer 2010 donparam 3:25 vazta'], - ['LLLL', 'Aitar, Febrerachea 14er, 2010, donparam 3:25 vazta'], + ['LL', '14 फेब्रुवारी 2010'], + ['LLL', '14 फेब्रुवारी 2010 दनपारां 3:25 वाजतां'], + ['LLLL', 'आयतार, फेब्रुवारीच्या 14वेर, 2010, दनपारां 3:25 वाजतां'], ['l', '14-2-2010'], - ['ll', '14 Feb. 2010'], - ['lll', '14 Feb. 2010 donparam 3:25 vazta'], - ['llll', 'Ait., 14 Feb. 2010, donparam 3:25 vazta'], + ['ll', '14 फेब्रु. 2010'], + ['lll', '14 फेब्रु. 2010 दनपारां 3:25 वाजतां'], + ['llll', 'आयत., 14 फेब्रु. 2010, दनपारां 3:25 वाजतां'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -48573,7 +48573,7 @@ test('format month', function (assert) { var i, expected = - 'Janer Jan._Febrer Feb._Mars Mars_Abril Abr._Mai Mai_Jun Jun_Julai Jul._Agost Ago._Setembr Set._Otubr Otu._Novembr Nov._Dezembr Dez.'.split( + 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च_एप्रील एप्री._मे मे_जून जून_जुलय जुल._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split( '_' ); @@ -48589,7 +48589,7 @@ test('format week', function (assert) { var i, expected = - "Aitar Ait. Ai_Somar Som. Sm_Mongllar Mon. Mo_Budhvar Bud. Bu_Birestar Bre. Br_Sukrar Suk. Su_Son'var Son. Sn".split( + 'आयतार आयत. आ_सोमार सोम. सो_मंगळार मंगळ. मं_बुधवार बुध. बु_बिरेस्तार ब्रेस्त. ब्रे_सुक्रार सुक्र. सु_शेनवार शेन. शे'.split( '_' ); @@ -48607,155 +48607,155 @@ assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'thodde sekond', + 'थोडे सॅकंड', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'ek minut', + 'एक मिनूट', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'ek minut', + 'एक मिनूट', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 mintam', + '2 मिणटां', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 mintam', + '44 मिणटां', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'ek vor', + 'एक वर', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'ek vor', + 'एक वर', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 voram', + '2 वरां', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 voram', + '5 वरां', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 voram', + '21 वरां', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'ek dis', + 'एक दीस', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'ek dis', + 'एक दीस', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 dis', + '2 दीस', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'ek dis', + 'एक दीस', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 dis', + '5 दीस', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 dis', + '25 दीस', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'ek mhoino', + 'एक म्हयनो', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'ek mhoino', + 'एक म्हयनो', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'ek mhoino', + 'एक म्हयनो', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 mhoine', + '2 म्हयने', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 mhoine', + '2 म्हयने', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 mhoine', + '3 म्हयने', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'ek mhoino', + 'एक म्हयनो', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 mhoine', + '5 म्हयने', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'ek voros', + 'एक वर्स', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 vorsam', + '2 वर्सां', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'ek voros', + 'एक वर्स', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 vorsam', + '5 वर्सां', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'thoddea sekondamni', 'prefix'); - assert.equal(moment(0).from(30000), 'thodde sekond adim', 'suffix'); + assert.equal(moment(30000).from(0), 'थोडया सॅकंडांनी', 'prefix'); + assert.equal(moment(0).from(30000), 'थोडे सॅकंड आदीं', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'thodde sekond adim', + 'थोडे सॅकंड आदीं', 'now from now should display as in the past' ); }); @@ -48763,16 +48763,16 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'thoddea sekondamni', + 'थोडया सॅकंडांनी', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '5 disamni', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 दिसांनी', 'in 5 days'); }); test('ago', function (assert) { assert.equal( moment().subtract({ h: 3 }).fromNow(), - '3 voram adim', + '3 वरां आदीं', '3 hours ago' ); }); @@ -48782,32 +48782,32 @@ assert.equal( moment(a).calendar(), - 'Aiz donparam 12:00 vazta', + 'आयज दनपारां 12:00 वाजतां', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Aiz donparam 12:25 vazta', + 'आयज दनपारां 12:25 वाजतां', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Aiz donparam 1:00 vazta', + 'आयज दनपारां 1:00 वाजतां', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Faleam donparam 12:00 vazta', + 'फाल्यां दनपारां 12:00 वाजतां', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Aiz sokallim 11:00 vazta', + 'आयज सकाळीं 11:00 वाजतां', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Kal donparam 12:00 vazta', + 'काल दनपारां 12:00 वाजतां', 'yesterday at the same time' ); }); @@ -48819,19 +48819,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('[Fuddlo] dddd[,] LT'), + m.format('[फुडलो] dddd[,] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[Fuddlo] dddd[,] LT'), + m.format('[फुडलो] dddd[,] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[Fuddlo] dddd[,] LT'), + m.format('[फुडलो] dddd[,] LT'), 'Today + ' + i + ' days end of day' ); } @@ -48844,19 +48844,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[Fattlo] dddd[,] LT'), + m.format('[फाटलो] dddd[,] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[Fattlo] dddd[,] LT'), + m.format('[फाटलो] dddd[,] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[Fattlo] dddd[,] LT'), + m.format('[फाटलो] dddd[,] LT'), 'Today - ' + i + ' days end of day' ); } @@ -49307,14 +49307,15 @@ defineCommonLocaleTests(name); } - localeModule('gu'); + localeModule('gom-latn'); test('parse', function (assert) { - var tests = - 'જાન્યુઆરી જાન્યુ._ફેબ્રુઆરી ફેબ્રુ._માર્ચ માર્ચ_એપ્રિલ એપ્રિ._મે મે_જૂન જૂન_જુલાઈ જુલા._ઑગસ્ટ ઑગ._સપ્ટેમ્બર સપ્ટે._ઑક્ટ્બર ઑક્ટ્._નવેમ્બર નવે._ડિસેમ્બર ડિસે..'.split( + var i, + tests = + 'Janer Jan._Febrer Feb._Mars Mars_Abril Abr._Mai Mai_Jun Jun_Julai Jul._Agost Ago._Setembr Set._Otubr Otu._Novembr Nov._Dezembr Dez.'.split( '_' - ), - i; + ); + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -49341,13 +49342,10 @@ equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - // Fails only for month 12 (index 11) - // equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][1], 'MMM', i); equalTestStrict(tests[i][0], 'MMMM', i); - // Fails only for month 12 (index 11) - // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - // Fails only for month 12 (index 11) - // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } @@ -49356,81 +49354,84 @@ test('format', function (assert) { var a = [ [ - 'dddd, Do MMMM YYYY, a h:mm:ss વાગ્યે', - 'રવિવાર, ૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫:૫૦ વાગ્યે', + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Aitar, Febrerachea 14er 2010, 3:25:50 donparam', ], - ['ddd, a h વાગ્યે', 'રવિ, બપોર ૩ વાગ્યે'], - ['M Mo MM MMMM MMM', '૨ ૨ ૦૨ ફેબ્રુઆરી ફેબ્રુ.'], - ['YYYY YY', '૨૦૧૦ ૧૦'], - ['D Do DD', '૧૪ ૧૪ ૧૪'], - ['d do dddd ddd dd', '૦ ૦ રવિવાર રવિ ર'], - ['DDD DDDo DDDD', '૪૫ ૪૫ ૦૪૫'], - ['w wo ww', '૮ ૮ ૦૮'], - ['h hh', '૩ ૦૩'], - ['H HH', '૧૫ ૧૫'], - ['m mm', '૨૫ ૨૫'], - ['s ss', '૫૦ ૫૦'], - ['a A', 'બપોર બપોર'], - ['LTS', 'બપોર ૩:૨૫:૫૦ વાગ્યે'], - ['L', '૧૪/૦૨/૨૦૧૦'], - ['LL', '૧૪ ફેબ્રુઆરી ૨૦૧૦'], - ['LLL', '૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], - ['LLLL', 'રવિવાર, ૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], - ['l', '૧૪/૨/૨૦૧૦'], - ['ll', '૧૪ ફેબ્રુ. ૨૦૧૦'], - ['lll', '૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], - ['llll', 'રવિ, ૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['ddd, h A', 'Ait., 3 donparam'], + ['M Mo MM MMMM MMM', '2 2 02 Febrer Feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14er 14'], + ['d do dddd ddd dd', '0 0 Aitar Ait. Ai'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'donparam donparam'], + ['[Vorsacho] DDDo[vo dis]', 'Vorsacho 45vo dis'], + ['LTS', 'donparam 3:25:50 vazta'], + ['L', '14-02-2010'], + ['LL', '14 Febrer 2010'], + ['LLL', '14 Febrer 2010 donparam 3:25 vazta'], + ['LLLL', 'Aitar, Febrerachea 14er, 2010, donparam 3:25 vazta'], + ['l', '14-2-2010'], + ['ll', '14 Feb. 2010'], + ['lll', '14 Feb. 2010 donparam 3:25 vazta'], + ['llll', 'Ait., 14 Feb. 2010, donparam 3:25 vazta'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; + for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '૧', '૧'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '૨', '૨'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '૩', '૩'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '૪', '૪'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '૫', '૫'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '૬', '૬'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '૭', '૭'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '૮', '૮'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '૯', '૯'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '૧૦', '૧૦'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10', '10'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '૧૧', '૧૧'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '૧૨', '૧૨'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '૧૩', '૧૩'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '૧૪', '૧૪'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '૧૫', '૧૫'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '૧૬', '૧૬'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '૧૭', '૧૭'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '૧૮', '૧૮'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '૧૯', '૧૯'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '૨૦', '૨૦'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20', '20'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '૨૧', '૨૧'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '૨૨', '૨૨'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '૨૩', '૨૩'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '૨૪', '૨૪'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '૨૫', '૨૫'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '૨૬', '૨૬'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '૨૭', '૨૭'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '૨૮', '૨૮'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '૨૯', '૨૯'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '૩૦', '૩૦'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30', '30'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '૩૧', '૩૧'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); }); test('format month', function (assert) { - var expected = - 'જાન્યુઆરી જાન્યુ._ફેબ્રુઆરી ફેબ્રુ._માર્ચ માર્ચ_એપ્રિલ એપ્રિ._મે મે_જૂન જૂન_જુલાઈ જુલા._ઑગસ્ટ ઑગ._સપ્ટેમ્બર સપ્ટે._ઑક્ટ્બર ઑક્ટ્._નવેમ્બર નવે._ડિસેમ્બર ડિસે.'.split( + var i, + expected = + 'Janer Jan._Febrer Feb._Mars Mars_Abril Abr._Mai Mai_Jun Jun_Julai Jul._Agost Ago._Setembr Set._Otubr Otu._Novembr Nov._Dezembr Dez.'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -49441,11 +49442,12 @@ }); test('format week', function (assert) { - var expected = - 'રવિવાર રવિ ર_સોમવાર સોમ સો_મંગળવાર મંગળ મં_બુધ્વાર બુધ્ બુ_ગુરુવાર ગુરુ ગુ_શુક્રવાર શુક્ર શુ_શનિવાર શનિ શ'.split( + var i, + expected = + "Aitar Ait. Ai_Somar Som. Sm_Mongllar Mon. Mo_Budhvar Bud. Bu_Birestar Bre. Br_Sukrar Suk. Su_Son'var Son. Sn".split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -49457,157 +49459,158 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); + assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'અમુક પળો', + 'thodde sekond', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'એક મિનિટ', + 'ek minut', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'એક મિનિટ', + 'ek minut', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '૨ મિનિટ', + '2 mintam', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '૪૪ મિનિટ', + '44 mintam', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'એક કલાક', + 'ek vor', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'એક કલાક', + 'ek vor', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '૨ કલાક', + '2 voram', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '૫ કલાક', + '5 voram', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '૨૧ કલાક', + '21 voram', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'એક દિવસ', + 'ek dis', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'એક દિવસ', + 'ek dis', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '૨ દિવસ', + '2 dis', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'એક દિવસ', + 'ek dis', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '૫ દિવસ', + '5 dis', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '૨૫ દિવસ', + '25 dis', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'એક મહિનો', + 'ek mhoino', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'એક મહિનો', + 'ek mhoino', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'એક મહિનો', + 'ek mhoino', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '૨ મહિનો', + '2 mhoine', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '૨ મહિનો', + '2 mhoine', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '૩ મહિનો', + '3 mhoine', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'એક મહિનો', + 'ek mhoino', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '૫ મહિનો', + '5 mhoine', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'એક વર્ષ', + 'ek voros', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '૨ વર્ષ', + '2 vorsam', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'એક વર્ષ', + 'ek voros', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '૫ વર્ષ', + '5 vorsam', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'અમુક પળો મા', 'prefix'); - assert.equal(moment(0).from(30000), 'અમુક પળો પહેલા', 'suffix'); + assert.equal(moment(30000).from(0), 'thoddea sekondamni', 'prefix'); + assert.equal(moment(0).from(30000), 'thodde sekond adim', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'અમુક પળો પહેલા', + 'thodde sekond adim', 'now from now should display as in the past' ); }); @@ -49615,10 +49618,18 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'અમુક પળો મા', - 'અમુક પળો મા' + 'thoddea sekondamni', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 disamni', 'in 5 days'); + }); + + test('ago', function (assert) { + assert.equal( + moment().subtract({ h: 3 }).fromNow(), + '3 voram adim', + '3 hours ago' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '૫ દિવસ મા', '૫ દિવસ મા'); }); test('calendar day', function (assert) { @@ -49626,55 +49637,56 @@ assert.equal( moment(a).calendar(), - 'આજ બપોર ૧૨:૦૦ વાગ્યે', + 'Aiz donparam 12:00 vazta', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'આજ બપોર ૧૨:૨૫ વાગ્યે', + 'Aiz donparam 12:25 vazta', 'Now plus 25 min' ); assert.equal( - moment(a).add({ h: 3 }).calendar(), - 'આજ બપોર ૩:૦૦ વાગ્યે', - 'Now plus 3 hour' + moment(a).add({ h: 1 }).calendar(), + 'Aiz donparam 1:00 vazta', + 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'કાલે બપોર ૧૨:૦૦ વાગ્યે', + 'Faleam donparam 12:00 vazta', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'આજ બપોર ૧૧:૦૦ વાગ્યે', + 'Aiz sokallim 11:00 vazta', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'ગઇકાલે બપોર ૧૨:૦૦ વાગ્યે', + 'Kal donparam 12:00 vazta', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('[Fuddlo] dddd[,] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('[Fuddlo] dddd[,] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('[Fuddlo] dddd[,] LT'), 'Today + ' + i + ' days end of day' ); } @@ -49687,19 +49699,19 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[પાછલા] dddd[,] LT'), + m.format('[Fattlo] dddd[,] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[પાછલા] dddd[,] LT'), + m.format('[Fattlo] dddd[,] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[પાછલા] dddd[,] LT'), + m.format('[Fattlo] dddd[,] LT'), 'Today - ' + i + ' days end of day' ); } @@ -49727,70 +49739,30 @@ ); }); - test('meridiem', function (assert) { - assert.equal( - moment([2011, 2, 23, 2, 30]).format('a'), - 'રાત', - 'before dawn' - ); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'સવાર', 'morning'); - assert.equal( - moment([2011, 2, 23, 14, 30]).format('a'), - 'બપોર', - 'during day' - ); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'સાંજ', 'evening'); - assert.equal( - moment([2011, 2, 23, 19, 30]).format('a'), - 'સાંજ', - 'late evening' - ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'રાત', 'night'); - - assert.equal( - moment([2011, 2, 23, 2, 30]).format('A'), - 'રાત', - 'before dawn' - ); - assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'સવાર', 'morning'); - assert.equal( - moment([2011, 2, 23, 14, 30]).format('A'), - 'બપોર', - ' during day' - ); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'સાંજ', 'evening'); - assert.equal( - moment([2011, 2, 23, 19, 30]).format('A'), - 'સાંજ', - 'late evening' - ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'રાત', 'night'); - }); - - test('weeks year starting sunday formatted', function (assert) { + test('weeks year starting sunday format', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '૧ ૦૧ ૧', + '1 01 1', 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 7]).format('w ww wo'), - '૧ ૦૧ ૧', - 'Jan 7 2012 should be week 1' + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1', + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '૨ ૦૨ ૨', + '2 02 2', 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 14]).format('w ww wo'), - '૨ ૦૨ ૨', + '2 02 2', 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '૩ ૦૩ ૩', + '3 03 3', 'Jan 15 2012 should be week 3' ); }); @@ -50190,11 +50162,11 @@ defineCommonLocaleTests(name); } - localeModule('he'); + localeModule('gu'); test('parse', function (assert) { var tests = - 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split( + 'જાન્યુઆરી જાન્યુ._ફેબ્રુઆરી ફેબ્રુ._માર્ચ માર્ચ_એપ્રિલ એપ્રિ._મે મે_જૂન જૂન_જુલાઈ જુલા._ઑગસ્ટ ઑગ._સપ્ટેમ્બર સપ્ટે._ઑક્ટ્બર ઑક્ટ્._નવેમ્બર નવે._ડિસેમ્બર ડિસે..'.split( '_' ), i; @@ -50224,10 +50196,13 @@ equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(tests[i][1], 'MMM', i); + // Fails only for month 12 (index 11) + // equalTestStrict(tests[i][1], 'MMM', i); equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + // Fails only for month 12 (index 11) + // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + // Fails only for month 12 (index 11) + // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } @@ -50236,31 +50211,30 @@ test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'ראשון, פברואר 14 2010, 3:25:50 אחה"צ', + 'dddd, Do MMMM YYYY, a h:mm:ss વાગ્યે', + 'રવિવાર, ૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫:૫૦ વાગ્યે', ], - ['ddd, h A', 'א׳, 3 אחרי הצהריים'], - ['M Mo MM MMMM MMM', '2 2 02 פברואר פבר׳'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 ראשון א׳ א'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'אחה"צ אחרי הצהריים'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 בפברואר 2010'], - ['LLL', '14 בפברואר 2010 15:25'], - ['LLLL', 'ראשון, 14 בפברואר 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 פבר׳ 2010'], - ['lll', '14 פבר׳ 2010 15:25'], - ['llll', 'א׳, 14 פבר׳ 2010 15:25'], + ['ddd, a h વાગ્યે', 'રવિ, બપોર ૩ વાગ્યે'], + ['M Mo MM MMMM MMM', '૨ ૨ ૦૨ ફેબ્રુઆરી ફેબ્રુ.'], + ['YYYY YY', '૨૦૧૦ ૧૦'], + ['D Do DD', '૧૪ ૧૪ ૧૪'], + ['d do dddd ddd dd', '૦ ૦ રવિવાર રવિ ર'], + ['DDD DDDo DDDD', '૪૫ ૪૫ ૦૪૫'], + ['w wo ww', '૮ ૮ ૦૮'], + ['h hh', '૩ ૦૩'], + ['H HH', '૧૫ ૧૫'], + ['m mm', '૨૫ ૨૫'], + ['s ss', '૫૦ ૫૦'], + ['a A', 'બપોર બપોર'], + ['LTS', 'બપોર ૩:૨૫:૫૦ વાગ્યે'], + ['L', '૧૪/૦૨/૨૦૧૦'], + ['LL', '૧૪ ફેબ્રુઆરી ૨૦૧૦'], + ['LLL', '૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['LLLL', 'રવિવાર, ૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['l', '૧૪/૨/૨૦૧૦'], + ['ll', '૧૪ ફેબ્રુ. ૨૦૧૦'], + ['lll', '૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['llll', 'રવિ, ૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -50269,9 +50243,46 @@ } }); + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '૧', '૧'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '૨', '૨'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '૩', '૩'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '૪', '૪'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '૫', '૫'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '૬', '૬'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '૭', '૭'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '૮', '૮'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '૯', '૯'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '૧૦', '૧૦'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '૧૧', '૧૧'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '૧૨', '૧૨'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '૧૩', '૧૩'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '૧૪', '૧૪'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '૧૫', '૧૫'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '૧૬', '૧૬'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '૧૭', '૧૭'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '૧૮', '૧૮'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '૧૯', '૧૯'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '૨૦', '૨૦'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '૨૧', '૨૧'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '૨૨', '૨૨'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '૨૩', '૨૩'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '૨૪', '૨૪'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '૨૫', '૨૫'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '૨૬', '૨૬'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '૨૭', '૨૭'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '૨૮', '૨૮'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '૨૯', '૨૯'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '૩૦', '૩૦'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '૩૧', '૩૧'); + }); + test('format month', function (assert) { var expected = - 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split( + 'જાન્યુઆરી જાન્યુ._ફેબ્રુઆરી ફેબ્રુ._માર્ચ માર્ચ_એપ્રિલ એપ્રિ._મે મે_જૂન જૂન_જુલાઈ જુલા._ઑગસ્ટ ઑગ._સપ્ટેમ્બર સપ્ટે._ઑક્ટ્બર ઑક્ટ્._નવેમ્બર નવે._ડિસેમ્બર ડિસે.'.split( '_' ), i; @@ -50286,8 +50297,8 @@ test('format week', function (assert) { var expected = - 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split( - '|' + 'રવિવાર રવિ ર_સોમવાર સોમ સો_મંગળવાર મંગળ મં_બુધ્વાર બુધ્ બુ_ગુરુવાર ગુરુ ગુ_શુક્રવાર શુક્ર શુ_શનિવાર શનિ શ'.split( + '_' ), i; for (i = 0; i < expected.length; i++) { @@ -50303,165 +50314,155 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'מספר שניות', + 'અમુક પળો', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'דקה', + 'એક મિનિટ', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'דקה', + 'એક મિનિટ', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 דקות', + '૨ મિનિટ', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 דקות', + '૪૪ મિનિટ', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'שעה', + 'એક કલાક', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'שעה', + 'એક કલાક', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - 'שעתיים', + '૨ કલાક', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 שעות', + '૫ કલાક', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 שעות', + '૨૧ કલાક', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'יום', + 'એક દિવસ', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'יום', + 'એક દિવસ', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - 'יומיים', + '૨ દિવસ', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'יום', + 'એક દિવસ', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 ימים', + '૫ દિવસ', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 ימים', + '૨૫ દિવસ', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'חודש', + 'એક મહિનો', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'חודש', + 'એક મહિનો', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'חודש', + 'એક મહિનો', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - 'חודשיים', + '૨ મહિનો', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - 'חודשיים', + '૨ મહિનો', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 חודשים', + '૩ મહિનો', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'חודש', + 'એક મહિનો', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 חודשים', + '૫ મહિનો', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'שנה', + 'એક વર્ષ', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - 'שנתיים', + '૨ વર્ષ', '548 days = 2 years' ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 3699 }), true), - '10 שנים', - '345 days = 10 years' - ); - assert.equal( - start.from(moment([2007, 1, 28]).add({ d: 7340 }), true), - '20 שנה', - '548 days = 20 years' - ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'שנה', + 'એક વર્ષ', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 שנים', + '૫ વર્ષ', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'בעוד מספר שניות', 'prefix'); - assert.equal(moment(0).from(30000), 'לפני מספר שניות', 'suffix'); + assert.equal(moment(30000).from(0), 'અમુક પળો મા', 'prefix'); + assert.equal(moment(0).from(30000), 'અમુક પળો પહેલા', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'לפני מספר שניות', + 'અમુક પળો પહેલા', 'now from now should display as in the past' ); }); @@ -50469,10 +50470,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'בעוד מספר שניות', - 'in a few seconds' + 'અમુક પળો મા', + 'અમુક પળો મા' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'בעוד 5 ימים', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), '૫ દિવસ મા', '૫ દિવસ મા'); }); test('calendar day', function (assert) { @@ -50480,32 +50481,32 @@ assert.equal( moment(a).calendar(), - 'היום ב־12:00', + 'આજ બપોર ૧૨:૦૦ વાગ્યે', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'היום ב־12:25', + 'આજ બપોર ૧૨:૨૫ વાગ્યે', 'Now plus 25 min' ); assert.equal( - moment(a).add({ h: 1 }).calendar(), - 'היום ב־13:00', - 'Now plus 1 hour' + moment(a).add({ h: 3 }).calendar(), + 'આજ બપોર ૩:૦૦ વાગ્યે', + 'Now plus 3 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'מחר ב־12:00', + 'કાલે બપોર ૧૨:૦૦ વાગ્યે', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'היום ב־11:00', + 'આજ બપોર ૧૧:૦૦ વાગ્યે', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'אתמול ב־12:00', + 'ગઇકાલે બપોર ૧૨:૦૦ વાગ્યે', 'yesterday at the same time' ); }); @@ -50516,19 +50517,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [בשעה] LT'), + m.format('dddd[,] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [בשעה] LT'), + m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [בשעה] LT'), + m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day' ); } @@ -50536,23 +50537,24 @@ test('calendar last week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[ביום] dddd [האחרון בשעה] LT'), + m.format('[પાછલા] dddd[,] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[ביום] dddd [האחרון בשעה] LT'), + m.format('[પાછલા] dddd[,] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[ביום] dddd [האחרון בשעה] LT'), + m.format('[પાછલા] dddd[,] LT'), 'Today - ' + i + ' days end of day' ); } @@ -50580,30 +50582,70 @@ ); }); - test('weeks year starting sunday format', function (assert) { + test('meridiem', function (assert) { + assert.equal( + moment([2011, 2, 23, 2, 30]).format('a'), + 'રાત', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'સવાર', 'morning'); + assert.equal( + moment([2011, 2, 23, 14, 30]).format('a'), + 'બપોર', + 'during day' + ); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'સાંજ', 'evening'); + assert.equal( + moment([2011, 2, 23, 19, 30]).format('a'), + 'સાંજ', + 'late evening' + ); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'રાત', 'night'); + + assert.equal( + moment([2011, 2, 23, 2, 30]).format('A'), + 'રાત', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'સવાર', 'morning'); + assert.equal( + moment([2011, 2, 23, 14, 30]).format('A'), + 'બપોર', + ' during day' + ); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'સાંજ', 'evening'); + assert.equal( + moment([2011, 2, 23, 19, 30]).format('A'), + 'સાંજ', + 'late evening' + ); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'રાત', 'night'); + }); + + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1', + '૧ ૦૧ ૧', 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 7]).format('w ww wo'), - '1 01 1', + '૧ ૦૧ ૧', 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2', + '૨ ૦૨ ૨', 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 14]).format('w ww wo'), - '2 02 2', + '૨ ૦૨ ૨', 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3', + '૩ ૦૩ ૩', 'Jan 15 2012 should be week 3' ); }); @@ -51003,15 +51045,11 @@ defineCommonLocaleTests(name); } - localeModule('hi'); + localeModule('he'); test('parse', function (assert) { - var testsFormat = - 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split( - '_' - ), - testsStandalone = - 'जनवरी जन._फरवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितंबर सित._अक्टूबर अक्टू._नवंबर नव._दिसंबर दिस.'.split( + var tests = + 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split( '_' ), i; @@ -51031,71 +51069,53 @@ } for (i = 0; i < 12; i++) { - testsFormat[i] = testsFormat[i].split(' '); - equalTest(testsFormat[i][0], 'MMM', i); - equalTest(testsFormat[i][1], 'MMM', i); - equalTest(testsFormat[i][0], 'MMMM', i); - equalTest(testsFormat[i][1], 'MMMM', i); - equalTest(testsFormat[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(testsFormat[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(testsFormat[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(testsFormat[i][1].toLocaleUpperCase(), 'MMMM', i); - - equalTestStrict(testsFormat[i][1], 'MMM', i); - equalTestStrict(testsFormat[i][0], 'MMMM', i); - equalTestStrict(testsFormat[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(testsFormat[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(testsFormat[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(testsFormat[i][0].toLocaleUpperCase(), 'MMMM', i); - } - - for (i = 0; i < 12; i++) { - testsStandalone[i] = testsStandalone[i].split(' '); - equalTest(testsStandalone[i][0], 'MMM', i); - equalTest(testsStandalone[i][1], 'MMM', i); - equalTest(testsStandalone[i][0], 'MMMM', i); - equalTest(testsStandalone[i][1], 'MMMM', i); - equalTest(testsStandalone[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(testsStandalone[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(testsStandalone[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(testsStandalone[i][1].toLocaleUpperCase(), 'MMMM', i); + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(testsStandalone[i][1], 'MMM', i); - equalTestStrict(testsStandalone[i][0], 'MMMM', i); - equalTestStrict(testsStandalone[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(testsStandalone[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(testsStandalone[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(testsStandalone[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ [ - 'dddd, Do MMMM YYYY, a h:mm:ss बजे', - 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५:५० बजे', + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'ראשון, פברואר 14 2010, 3:25:50 אחה"צ', ], - ['ddd, a h बजे', 'रवि, दोपहर ३ बजे'], - ['M Mo MM MMMM MMM', '२ २ ०२ फरवरी फ़र.'], - ['YYYY YY', '२०१० १०'], - ['D Do DD', '१४ १४ १४'], - ['d do dddd ddd dd', '० ० रविवार रवि र'], - ['DDD DDDo DDDD', '४५ ४५ ०४५'], - ['w wo ww', '८ ८ ०८'], - ['h hh', '३ ०३'], - ['H HH', '१५ १५'], - ['m mm', '२५ २५'], - ['s ss', '५० ५०'], - ['a A', 'दोपहर दोपहर'], - ['LTS', 'दोपहर ३:२५:५० बजे'], - ['L', '१४/०२/२०१०'], - ['LL', '१४ फ़रवरी २०१०'], - ['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], - ['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], - ['l', '१४/२/२०१०'], - ['ll', '१४ फ़र. २०१०'], - ['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'], - ['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे'], + ['ddd, h A', 'א׳, 3 אחרי הצהריים'], + ['M Mo MM MMMM MMM', '2 2 02 פברואר פבר׳'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 ראשון א׳ א'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'אחה"צ אחרי הצהריים'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 בפברואר 2010'], + ['LLL', '14 בפברואר 2010 15:25'], + ['LLLL', 'ראשון, 14 בפברואר 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 פבר׳ 2010'], + ['lll', '14 פבר׳ 2010 15:25'], + ['llll', 'א׳, 14 פבר׳ 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -51104,46 +51124,9 @@ } }); - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); - - assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); - - assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); - - assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); - }); - test('format month', function (assert) { var expected = - 'जनवरी जन._फरवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितंबर सित._अक्टूबर अक्टू._नवंबर नव._दिसंबर दिस.'.split( + 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split( '_' ), i; @@ -51156,36 +51139,10 @@ } }); - test('format month case', function (assert) { - var months = { - nominative: - 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split( - '_' - ), - accusative: - 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( - '_' - ), - }, - i; - for (i = 0; i < 12; i++) { - assert.equal( - moment([2011, i, 1]).format('D MMMM'), - '१ ' + months.accusative[i], - '१ ' + months.accusative[i] - ); - assert.equal( - moment([2011, i, 1]).format('MMMM'), - months.nominative[i], - '१ ' + months.nominative[i] - ); - } - }); - test('format week', function (assert) { var expected = - 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split( - '_' + 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split( + '|' ), i; for (i = 0; i < expected.length; i++) { @@ -51201,155 +51158,165 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'कुछ ही क्षण', + 'מספר שניות', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'एक मिनट', + 'דקה', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'एक मिनट', + 'דקה', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '२ मिनट', + '2 דקות', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '४४ मिनट', + '44 דקות', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'एक घंटा', + 'שעה', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'एक घंटा', + 'שעה', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '२ घंटे', + 'שעתיים', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '५ घंटे', + '5 שעות', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '२१ घंटे', + '21 שעות', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'एक दिन', + 'יום', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'एक दिन', + 'יום', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '२ दिन', + 'יומיים', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'एक दिन', + 'יום', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '५ दिन', + '5 ימים', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '२५ दिन', + '25 ימים', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'एक महीने', + 'חודש', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'एक महीने', + 'חודש', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'एक महीने', + 'חודש', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '२ महीने', + 'חודשיים', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '२ महीने', + 'חודשיים', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '३ महीने', + '3 חודשים', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'एक महीने', + 'חודש', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '५ महीने', + '5 חודשים', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'एक वर्ष', + 'שנה', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '२ वर्ष', + 'שנתיים', '548 days = 2 years' ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 3699 }), true), + '10 שנים', + '345 days = 10 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 7340 }), true), + '20 שנה', + '548 days = 20 years' + ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'एक वर्ष', + 'שנה', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '५ वर्ष', + '5 שנים', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'कुछ ही क्षण में', 'prefix'); - assert.equal(moment(0).from(30000), 'कुछ ही क्षण पहले', 'suffix'); + assert.equal(moment(30000).from(0), 'בעוד מספר שניות', 'prefix'); + assert.equal(moment(0).from(30000), 'לפני מספר שניות', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'कुछ ही क्षण पहले', + 'לפני מספר שניות', 'now from now should display as in the past' ); }); @@ -51357,10 +51324,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'कुछ ही क्षण में', - 'कुछ ही क्षण में' + 'בעוד מספר שניות', + 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '५ दिन में', '५ दिन में'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'בעוד 5 ימים', 'in 5 days'); }); test('calendar day', function (assert) { @@ -51368,32 +51335,32 @@ assert.equal( moment(a).calendar(), - 'आज दोपहर १२:०० बजे', + 'היום ב־12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'आज दोपहर १२:२५ बजे', + 'היום ב־12:25', 'Now plus 25 min' ); assert.equal( - moment(a).add({ h: 3 }).calendar(), - 'आज दोपहर ३:०० बजे', - 'Now plus 3 hours' + moment(a).add({ h: 1 }).calendar(), + 'היום ב־13:00', + 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'कल दोपहर १२:०० बजे', + 'מחר ב־12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'आज दोपहर ११:०० बजे', + 'היום ב־11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'कल दोपहर १२:०० बजे', + 'אתמול ב־12:00', 'yesterday at the same time' ); }); @@ -51404,19 +51371,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('dddd [בשעה] LT'), 'Today + ' + i + ' days end of day' ); } @@ -51424,24 +51391,23 @@ test('calendar last week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[पिछले] dddd[,] LT'), + m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[पिछले] dddd[,] LT'), + m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[पिछले] dddd[,] LT'), + m.format('[ביום] dddd [האחרון בשעה] LT'), 'Today - ' + i + ' days end of day' ); } @@ -51469,70 +51435,30 @@ ); }); - test('meridiem', function (assert) { - assert.equal( - moment([2011, 2, 23, 2, 30]).format('a'), - 'रात', - 'before dawn' - ); - assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'सुबह', 'morning'); - assert.equal( - moment([2011, 2, 23, 14, 30]).format('a'), - 'दोपहर', - 'during day' - ); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'शाम', 'evening'); - assert.equal( - moment([2011, 2, 23, 19, 30]).format('a'), - 'शाम', - 'late evening' - ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'रात', 'night'); - - assert.equal( - moment([2011, 2, 23, 2, 30]).format('A'), - 'रात', - 'before dawn' - ); - assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'सुबह', 'morning'); - assert.equal( - moment([2011, 2, 23, 14, 30]).format('A'), - 'दोपहर', - ' during day' - ); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'शाम', 'evening'); - assert.equal( - moment([2011, 2, 23, 19, 30]).format('A'), - 'शाम', - 'late evening' - ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'रात', 'night'); - }); - - test('weeks year starting sunday formatted', function (assert) { + test('weeks year starting sunday format', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '१ ०१ १', + '1 01 1', 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 7]).format('w ww wo'), - '१ ०१ १', + '1 01 1', 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '२ ०२ २', + '2 02 2', 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 14]).format('w ww wo'), - '२ ०२ २', + '2 02 2', 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '३ ०३ ३', + '3 03 3', 'Jan 15 2012 should be week 3' ); }); @@ -51932,11 +51858,15 @@ defineCommonLocaleTests(name); } - localeModule('hr'); + localeModule('hi'); test('parse', function (assert) { - var tests = - 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split( + var testsFormat = + 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split( + '_' + ), + testsStandalone = + 'जनवरी जन._फरवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितंबर सित._अक्टूबर अक्टू._नवंबर नव._दिसंबर दिस.'.split( '_' ), i; @@ -51956,53 +51886,71 @@ } for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMM', i); - equalTest(tests[i][1], 'MMM', i); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + testsFormat[i] = testsFormat[i].split(' '); + equalTest(testsFormat[i][0], 'MMM', i); + equalTest(testsFormat[i][1], 'MMM', i); + equalTest(testsFormat[i][0], 'MMMM', i); + equalTest(testsFormat[i][1], 'MMMM', i); + equalTest(testsFormat[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(testsFormat[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(testsFormat[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(testsFormat[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTestStrict(testsFormat[i][1], 'MMM', i); + equalTestStrict(testsFormat[i][0], 'MMMM', i); + equalTestStrict(testsFormat[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(testsFormat[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(testsFormat[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(testsFormat[i][0].toLocaleUpperCase(), 'MMMM', i); + } + + for (i = 0; i < 12; i++) { + testsStandalone[i] = testsStandalone[i].split(' '); + equalTest(testsStandalone[i][0], 'MMM', i); + equalTest(testsStandalone[i][1], 'MMM', i); + equalTest(testsStandalone[i][0], 'MMMM', i); + equalTest(testsStandalone[i][1], 'MMMM', i); + equalTest(testsStandalone[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(testsStandalone[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(testsStandalone[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(testsStandalone[i][1].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(testsStandalone[i][1], 'MMM', i); + equalTestStrict(testsStandalone[i][0], 'MMMM', i); + equalTestStrict(testsStandalone[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(testsStandalone[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(testsStandalone[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(testsStandalone[i][0].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ [ - 'dddd, Do MMMM YYYY, h:mm:ss a', - 'nedjelja, 14. veljače 2010, 3:25:50 pm', + 'dddd, Do MMMM YYYY, a h:mm:ss बजे', + 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५:५० बजे', ], - ['ddd, hA', 'ned., 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 veljača velj.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], - ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '7 7. 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. veljače 2010'], - ['LLL', '14. veljače 2010 15:25'], - ['LLLL', 'nedjelja, 14. veljače 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. velj. 2010'], - ['lll', '14. velj. 2010 15:25'], - ['llll', 'ned., 14. velj. 2010 15:25'], + ['ddd, a h बजे', 'रवि, दोपहर ३ बजे'], + ['M Mo MM MMMM MMM', '२ २ ०२ फरवरी फ़र.'], + ['YYYY YY', '२०१० १०'], + ['D Do DD', '१४ १४ १४'], + ['d do dddd ddd dd', '० ० रविवार रवि र'], + ['DDD DDDo DDDD', '४५ ४५ ०४५'], + ['w wo ww', '८ ८ ०८'], + ['h hh', '३ ०३'], + ['H HH', '१५ १५'], + ['m mm', '२५ २५'], + ['s ss', '५० ५०'], + ['a A', 'दोपहर दोपहर'], + ['LTS', 'दोपहर ३:२५:५० बजे'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फ़रवरी २०१०'], + ['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], + ['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फ़र. २०१०'], + ['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'], + ['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -52012,45 +51960,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '१', '१'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '२', '२'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '३', '३'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '४', '४'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '५', '५'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '६', '६'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '७', '७'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '८', '८'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '९', '९'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '१०', '१०'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '११', '११'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '१२', '१२'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '१३', '१३'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '१४', '१४'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '१५', '१५'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '१६', '१६'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '१७', '१७'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '१८', '१८'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '१९', '१९'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '२०', '२०'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '२१', '२१'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '२२', '२२'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '२३', '२३'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '२४', '२४'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '२५', '२५'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '२६', '२६'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '२७', '२७'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '२८', '२८'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '२९', '२९'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '३०', '३०'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '३१', '३१'); }); test('format month', function (assert) { var expected = - 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split( + 'जनवरी जन._फरवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितंबर सित._अक्टूबर अक्टू._नवंबर नव._दिसंबर दिस.'.split( '_' ), i; @@ -52063,9 +52011,35 @@ } }); + test('format month case', function (assert) { + var months = { + nominative: + 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split( + '_' + ), + accusative: + 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( + '_' + ), + }, + i; + for (i = 0; i < 12; i++) { + assert.equal( + moment([2011, i, 1]).format('D MMMM'), + '१ ' + months.accusative[i], + '१ ' + months.accusative[i] + ); + assert.equal( + moment([2011, i, 1]).format('MMMM'), + months.nominative[i], + '१ ' + months.nominative[i] + ); + } + }); + test('format week', function (assert) { var expected = - 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split( + 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split( '_' ), i; @@ -52082,155 +52056,155 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'par sekundi', + 'कुछ ही क्षण', '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'jedna minuta', + 'एक मिनट', '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'jedna minuta', + 'एक मिनट', '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 minute', + '२ मिनट', '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 minuta', + '४४ मिनट', '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'jedan sat', + 'एक घंटा', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'jedan sat', + 'एक घंटा', '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 sata', + '२ घंटे', '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 sati', + '५ घंटे', '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 sati', + '२१ घंटे', '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'dan', + 'एक दिन', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'dan', + 'एक दिन', '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 dana', + '२ दिन', '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'dan', + 'एक दिन', '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 dana', + '५ दिन', '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 dana', + '२५ दिन', '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'mjesec', + 'एक महीने', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'mjesec', + 'एक महीने', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'mjesec', + 'एक महीने', '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 mjeseca', + '२ महीने', '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 mjeseca', + '२ महीने', '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 mjeseca', + '३ महीने', '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'mjesec', + 'एक महीने', '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 mjeseci', + '५ महीने', '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'godinu', + 'एक वर्ष', '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 godine', + '२ वर्ष', '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'godinu', + 'एक वर्ष', '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 godina', + '५ वर्ष', '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix'); - assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix'); + assert.equal(moment(30000).from(0), 'कुछ ही क्षण में', 'prefix'); + assert.equal(moment(0).from(30000), 'कुछ ही क्षण पहले', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'prije par sekundi', + 'कुछ ही क्षण पहले', 'now from now should display as in the past' ); }); @@ -52238,10 +52212,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'za par sekundi', - 'in a few seconds' + 'कुछ ही क्षण में', + 'कुछ ही क्षण में' ); - assert.equal(moment().add({ d: 5 }).fromNow(), 'za 5 dana', 'in 5 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), '५ दिन में', '५ दिन में'); }); test('calendar day', function (assert) { @@ -52249,72 +52223,55 @@ assert.equal( moment(a).calendar(), - 'danas u 12:00', + 'आज दोपहर १२:०० बजे', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'danas u 12:25', + 'आज दोपहर १२:२५ बजे', 'Now plus 25 min' ); assert.equal( - moment(a).add({ h: 1 }).calendar(), - 'danas u 13:00', - 'Now plus 1 hour' + moment(a).add({ h: 3 }).calendar(), + 'आज दोपहर ३:०० बजे', + 'Now plus 3 hours' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'sutra u 12:00', + 'कल दोपहर १२:०० बजे', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'danas u 11:00', + 'आज दोपहर ११:०० बजे', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'jučer u 12:00', + 'कल दोपहर १२:०० बजे', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - } - for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('dddd[,] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day' ); } @@ -52323,39 +52280,23 @@ test('calendar last week', function (assert) { var i, m; - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[prošlu] [nedjelju] [u] LT'; - case 3: - return '[prošlu] [srijedu] [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - } - for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format(makeFormat(m)), + m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days end of day' ); } @@ -52383,31 +52324,71 @@ ); }); - test('weeks year starting sunday formatted', function (assert) { + test('meridiem', function (assert) { assert.equal( - moment([2011, 11, 26]).format('w ww wo'), - '1 01 1.', - 'Dec 26 2011 should be week 1' + moment([2011, 2, 23, 2, 30]).format('a'), + 'रात', + 'before dawn' ); + assert.equal(moment([2011, 2, 23, 9, 30]).format('a'), 'सुबह', 'morning'); + assert.equal( + moment([2011, 2, 23, 14, 30]).format('a'), + 'दोपहर', + 'during day' + ); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'शाम', 'evening'); + assert.equal( + moment([2011, 2, 23, 19, 30]).format('a'), + 'शाम', + 'late evening' + ); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'रात', 'night'); + + assert.equal( + moment([2011, 2, 23, 2, 30]).format('A'), + 'रात', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 9, 30]).format('A'), 'सुबह', 'morning'); + assert.equal( + moment([2011, 2, 23, 14, 30]).format('A'), + 'दोपहर', + ' during day' + ); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'शाम', 'evening'); + assert.equal( + moment([2011, 2, 23, 19, 30]).format('A'), + 'शाम', + 'late evening' + ); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'रात', 'night'); + }); + + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1.', + '१ ०१ १', 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), - '2 02 2.', - 'Jan 2 2012 should be week 2' + moment([2012, 0, 7]).format('w ww wo'), + '१ ०१ १', + 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2.', + '२ ०२ २', 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), - '3 03 3.', - 'Jan 9 2012 should be week 3' + moment([2012, 0, 14]).format('w ww wo'), + '२ ०२ २', + 'Jan 14 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '३ ०३ ३', + 'Jan 15 2012 should be week 3' ); }); @@ -52806,15 +52787,14 @@ defineCommonLocaleTests(name); } - localeModule('hu'); + localeModule('hr'); test('parse', function (assert) { var tests = - 'január jan._február feb._március márc._április ápr._május máj._június jún._július júl._augusztus aug._szeptember szept._október okt._november nov._december dec.'.split( + 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split( '_' ), i; - function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -52853,29 +52833,31 @@ test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, HH:mm:ss', - 'vasárnap, február 14. 2010, 15:25:50', + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'nedjelja, 14. veljače 2010, 3:25:50 pm', ], - ['ddd, HH', 'vas, 15'], - ['M Mo MM MMMM MMM', '2 2. 02 február feb.'], + ['ddd, hA', 'ned., 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 veljača velj.'], ['YYYY YY', '2010 10'], ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. vasárnap vas v'], + ['d do dddd ddd dd', '0 0. nedjelja ned. ne'], ['DDD DDDo DDDD', '45 45. 045'], - ['w wo ww', '6 6. 06'], + ['w wo ww', '7 7. 07'], + ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['[az év] DDDo [napja]', 'az év 45. napja'], + ['a A', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], ['LTS', '15:25:50'], - ['L', '2010.02.14.'], - ['LL', '2010. február 14.'], - ['LLL', '2010. február 14. 15:25'], - ['LLLL', '2010. február 14., vasárnap 15:25'], - ['l', '2010.2.14.'], - ['ll', '2010. feb. 14.'], - ['lll', '2010. feb. 14. 15:25'], - ['llll', '2010. feb. 14., vas 15:25'], + ['L', '14.02.2010'], + ['LL', '14. veljače 2010'], + ['LLL', '14. veljače 2010 15:25'], + ['LLLL', 'nedjelja, 14. veljače 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. velj. 2010'], + ['lll', '14. velj. 2010 15:25'], + ['llll', 'ned., 14. velj. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -52884,18 +52866,6 @@ } }); - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), 'de', 'am'); - assert.equal(moment([2011, 2, 23, 11, 59]).format('a'), 'de', 'am'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), 'du', 'pm'); - assert.equal(moment([2011, 2, 23, 23, 59]).format('a'), 'du', 'pm'); - - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'DE', 'AM'); - assert.equal(moment([2011, 2, 23, 11, 59]).format('A'), 'DE', 'AM'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'DU', 'PM'); - assert.equal(moment([2011, 2, 23, 23, 59]).format('A'), 'DU', 'PM'); - }); - test('format ordinal', function (assert) { assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); @@ -52935,7 +52905,7 @@ test('format month', function (assert) { var expected = - 'január jan._február feb._március márc._április ápr._május máj._június jún._július júl._augusztus aug._szeptember szept._október okt._november nov._december dec.'.split( + 'siječanj sij._veljača velj._ožujak ožu._travanj tra._svibanj svi._lipanj lip._srpanj srp._kolovoz kol._rujan ruj._listopad lis._studeni stu._prosinac pro.'.split( '_' ), i; @@ -52950,13 +52920,13 @@ test('format week', function (assert) { var expected = - 'vasárnap vas_hétfő hét_kedd kedd_szerda sze_csütörtök csüt_péntek pén_szombat szo'.split( + 'nedjelja ned. ne_ponedjeljak pon. po_utorak uto. ut_srijeda sri. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split( '_' ), i; for (i = 0; i < expected.length; i++) { assert.equal( - moment([2011, 0, 2 + i]).format('dddd ddd'), + moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i] ); @@ -52967,155 +52937,155 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'néhány másodperc', - '44 másodperc = néhány másodperc' + 'par sekundi', + '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'egy perc', - '45 másodperc = egy perc' + 'jedna minuta', + '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'egy perc', - '89 másodperc = egy perc' + 'jedna minuta', + '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 perc', - '90 másodperc = 2 perc' + '2 minute', + '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 perc', - '44 perc = 44 perc' + '44 minuta', + '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'egy óra', - '45 perc = egy óra' + 'jedan sat', + '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'egy óra', - '89 perc = egy óra' + 'jedan sat', + '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 óra', - '90 perc = 2 óra' + '2 sata', + '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 óra', - '5 óra = 5 óra' + '5 sati', + '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 óra', - '21 óra = 21 óra' + '21 sati', + '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'egy nap', - '22 óra = egy nap' + 'dan', + '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'egy nap', - '35 óra = egy nap' + 'dan', + '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 nap', - '36 óra = 2 nap' + '2 dana', + '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'egy nap', - '1 nap = egy nap' + 'dan', + '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 nap', - '5 nap = 5 nap' + '5 dana', + '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 nap', - '25 nap = 25 nap' + '25 dana', + '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'egy hónap', - '26 nap = egy hónap' + 'mjesec', + '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'egy hónap', - '30 nap = egy hónap' + 'mjesec', + '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'egy hónap', - '45 nap = egy hónap' + 'mjesec', + '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 hónap', - '46 nap = 2 hónap' + '2 mjeseca', + '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 hónap', - '75 nap = 2 hónap' + '2 mjeseca', + '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 hónap', - '76 nap = 3 hónap' + '3 mjeseca', + '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'egy hónap', - '1 hónap = egy hónap' + 'mjesec', + '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 hónap', - '5 hónap = 5 hónap' + '5 mjeseci', + '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'egy év', - '345 nap = egy év' + 'godinu', + '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 év', - '548 nap = 2 év' + '2 godine', + '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'egy év', - '1 év = egy év' + 'godinu', + '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 év', - '5 év = 5 év' + '5 godina', + '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'néhány másodperc múlva', 'prefix'); - assert.equal(moment(0).from(30000), 'néhány másodperce', 'suffix'); + assert.equal(moment(30000).from(0), 'za par sekundi', 'prefix'); + assert.equal(moment(0).from(30000), 'prije par sekundi', 'prefix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'néhány másodperce', + 'prije par sekundi', 'now from now should display as in the past' ); }); @@ -53123,14 +53093,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'néhány másodperc múlva', - 'néhány másodperc múlva' - ); - assert.equal( - moment().add({ d: 5 }).fromNow(), - '5 nap múlva', - '5 nap múlva' + 'za par sekundi', + 'in a few seconds' ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'za 5 dana', 'in 5 days'); }); test('calendar day', function (assert) { @@ -53138,91 +53104,114 @@ assert.equal( moment(a).calendar(), - 'ma 12:00-kor', + 'danas u 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'ma 12:25-kor', + 'danas u 12:25', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'ma 13:00-kor', + 'danas u 13:00', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'holnap 12:00-kor', + 'sutra u 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'ma 11:00-kor', + 'danas u 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'tegnap 12:00-kor', + 'jučer u 12:00', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { - var i, - m, - days = - 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split( - '_' - ); + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + } + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('[' + days[m.day()] + '] LT[-kor]'), - 'today + ' + i + ' days current time' + m.format(makeFormat(m)), + 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[' + days[m.day()] + '] LT[-kor]'), - 'today + ' + i + ' days beginning of day' + m.format(makeFormat(m)), + 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[' + days[m.day()] + '] LT[-kor]'), - 'today + ' + i + ' days end of day' + m.format(makeFormat(m)), + 'Today + ' + i + ' days end of day' ); } }); test('calendar last week', function (assert) { - var i, - m, - days = - 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split( - '_' - ); + var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[prošlu] [nedjelju] [u] LT'; + case 3: + return '[prošlu] [srijedu] [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + } for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), - 'today - ' + i + ' days current time' + m.format(makeFormat(m)), + 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), - 'today - ' + i + ' days beginning of day' + m.format(makeFormat(m)), + 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), - 'today - ' + i + ' days end of day' + m.format(makeFormat(m)), + 'Today - ' + i + ' days end of day' ); } }); @@ -53231,49 +53220,915 @@ var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'egy héte'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'egy hét múlva' + 'in 1 week' ); weeksAgo = moment().subtract({ w: 2 }); weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 hete'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - '2 hét múlva' + 'in 2 weeks' ); }); test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2011, 11, 26]).format('w ww wo'), - '52 52 52.', - 'Dec 26 2011 should be week 52' + '1 01 1.', + 'Dec 26 2011 should be week 1' ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '52 52 52.', - 'Jan 1 2012 should be week 52' + '1 01 1.', + 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '1 01 1.', - 'Jan 2 2012 should be week 1' + '2 02 2.', + 'Jan 2 2012 should be week 2' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '1 01 1.', - 'Jan 8 2012 should be week 1' + '2 02 2.', + 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '2 02 2.', - 'Jan 9 2012 should be week 2' + '3 03 3.', + 'Jan 9 2012 should be week 3' + ); + }); + +}))); + + + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + function each(array, callback) { + var i; + for (i = 0; i < array.length; i++) { + callback(array[i], i, array); + } + } + + function setupDeprecationHandler(test, moment, scope) { + test._expectedDeprecations = null; + test._observedDeprecations = null; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; + test.expectedDeprecations = function () { + test._expectedDeprecations = arguments; + test._observedDeprecations = []; + }; + moment.deprecationHandler = function (name, msg) { + var deprecationId = matchedDeprecation( + name, + msg, + test._expectedDeprecations + ); + if (deprecationId === -1) { + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); + } + test._observedDeprecations[deprecationId] = 1; + }; + } + + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; + + if (test._expectedDeprecations != null) { + var missedDeprecations = []; + each(test._expectedDeprecations, function (deprecationPattern, id) { + if (test._observedDeprecations[id] !== 1) { + missedDeprecations.push(deprecationPattern); + } + }); + if (missedDeprecations.length !== 0) { + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); + } + } + } + + function matchedDeprecation(name, msg, deprecations) { + if (deprecations == null) { + return -1; + } + for (var i = 0; i < deprecations.length; ++i) { + if (name != null && name === deprecations[i]) { + return i; + } + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { + return i; + } + } + return -1; + } + + /*global QUnit:false*/ + + var test = QUnit.test, + only = QUnit.only; + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function objectKeys(obj) { + if (Object.keys) { + return Object.keys(obj); + } else { + // IE8 + var res = [], + i; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + } + } + + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } + + function defineCommonLocaleTests(locale, options) { + test('lenient day of month ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal( + testMoment.year(), + 2014, + 'lenient day of month ordinal parsing ' + i + ' year check' + ); + assert.equal( + testMoment.month(), + 0, + 'lenient day of month ordinal parsing ' + i + ' month check' + ); + assert.equal( + testMoment.date(), + i, + 'lenient day of month ordinal parsing ' + i + ' date check' + ); + } + }); + + test('lenient day of month ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal( + testMoment.year(), + 2014, + 'lenient day of month ordinal parsing of number ' + + i + + ' year check' + ); + assert.equal( + testMoment.month(), + 0, + 'lenient day of month ordinal parsing of number ' + + i + + ' month check' + ); + assert.equal( + testMoment.date(), + i, + 'lenient day of month ordinal parsing of number ' + + i + + ' date check' + ); + } + }); + + test('strict day of month ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment.utc(t1.format('A h:mm'), 'A h:mm'); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); + } + } + }); + + test('date format correctness', function (assert) { + var data = moment.localeData()._longDateFormat; + eachOwnProp(data, function (srchToken) { + // Check each format string to make sure it does not contain any + // tokens that need to be expanded. + eachOwnProp(data, function (baseToken) { + // strip escaped sequences + var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); + }); + }); + }); + + test('month parsing correctness', function (assert) { + var i, m; + + if (locale === 'tr') { + // I can't fix it :( + assert.expect(0); + return; + } + function tester(format) { + var r; + r = moment(m.format(format), format); + assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format); + if (locale !== 'ka') { + r = moment(m.format(format).toLocaleUpperCase(), format); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' upper' + ); + } + r = moment(m.format(format).toLocaleLowerCase(), format); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower' + ); + + r = moment(m.format(format), format, true); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' strict' + ); + if (locale !== 'ka') { + r = moment(m.format(format).toLocaleUpperCase(), format, true); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' upper strict' + ); + } + r = moment(m.format(format).toLocaleLowerCase(), format, true); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); + } + + for (i = 0; i < 12; ++i) { + m = moment([2015, i, 15, 18]); + tester('MMM'); + tester('MMM.'); + tester('MMMM'); + tester('MMMM.'); + } + }); + + test('weekday parsing correctness', function (assert) { + var i, m; + + if ( + locale === 'tr' || + locale === 'az' || + locale === 'ro' || + locale === 'mt' || + locale === 'ga' + ) { + // tr, az: There is a lower-case letter (ı), that converted to + // upper then lower changes to i + // ro: there is the letter ț which behaves weird under IE8 + // mt: letter Ħ + // ga: month with spaces + assert.expect(0); + return; + } + function tester(format) { + var r, + baseMsg = + 'weekday ' + + m.weekday() + + ' fmt ' + + format + + ' ' + + m.toISOString(); + r = moment(m.format(format), format); + assert.equal(r.weekday(), m.weekday(), baseMsg); + if (locale !== 'ka') { + r = moment(m.format(format).toLocaleUpperCase(), format); + assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper'); + } + r = moment(m.format(format).toLocaleLowerCase(), format); + assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower'); + r = moment(m.format(format), format, true); + assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict'); + if (locale !== 'ka') { + r = moment(m.format(format).toLocaleUpperCase(), format, true); + assert.equal( + r.weekday(), + m.weekday(), + baseMsg + ' upper strict' + ); + } + r = moment(m.format(format).toLocaleLowerCase(), format, true); + assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict'); + } + + for (i = 0; i < 7; ++i) { + m = moment.utc([2015, 0, i + 1, 18]); + tester('dd'); + tester('ddd'); + tester('dddd'); + } + }); + + test('valid localeData', function (assert) { + assert.equal( + moment().localeData().months().length, + 12, + 'months should return 12 months' + ); + assert.equal( + moment().localeData().monthsShort().length, + 12, + 'monthsShort should return 12 months' + ); + assert.equal( + moment().localeData().weekdays().length, + 7, + 'weekdays should return 7 days' + ); + assert.equal( + moment().localeData().weekdaysShort().length, + 7, + 'weekdaysShort should return 7 days' + ); + assert.equal( + moment().localeData().weekdaysMin().length, + 7, + 'monthsShort should return 7 days' + ); + }); + + test('localeData weekdays can localeSort', function (assert) { + var weekdays = moment().localeData().weekdays(), + weekdaysShort = moment().localeData().weekdaysShort(), + weekdaysMin = moment().localeData().weekdaysMin(), + shift = moment().localeData()._week.dow; + assert.deepEqual( + moment().localeData().weekdays(true), + weekdays.slice(shift, 7).concat(weekdays.slice(0, shift)), + 'weekdays should localeSort' + ); + assert.deepEqual( + moment().localeData().weekdaysShort(true), + weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), + 'weekdaysShort should localeSort' + ); + assert.deepEqual( + moment().localeData().weekdaysMin(true), + weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), + 'weekdaysMin should localeSort' + ); + }); + } + + /*global QUnit:false*/ + + function localeModule(name, lifecycle) { + QUnit.module('locale:' + name, { + beforeEach: function () { + moment.locale(name); + moment.createFromInputFallback = function (config) { + throw new Error('input not handled by moment: ' + config._i); + }; + setupDeprecationHandler(test, moment); + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + afterEach: function () { + moment.locale('en'); + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + defineCommonLocaleTests(name); + } + + localeModule('hu'); + + test('parse', function (assert) { + var tests = + 'január jan._február feb._március márc._április ápr._május máj._június jún._július júl._augusztus aug._szeptember szept._október okt._november nov._december dec.'.split( + '_' + ), + i; + + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); + } + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + [ + 'dddd, MMMM Do YYYY, HH:mm:ss', + 'vasárnap, február 14. 2010, 15:25:50', + ], + ['ddd, HH', 'vas, 15'], + ['M Mo MM MMMM MMM', '2 2. 02 február feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. vasárnap vas v'], + ['DDD DDDo DDDD', '45 45. 045'], + ['w wo ww', '6 6. 06'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['[az év] DDDo [napja]', 'az év 45. napja'], + ['LTS', '15:25:50'], + ['L', '2010.02.14.'], + ['LL', '2010. február 14.'], + ['LLL', '2010. február 14. 15:25'], + ['LLLL', '2010. február 14., vasárnap 15:25'], + ['l', '2010.2.14.'], + ['ll', '2010. feb. 14.'], + ['lll', '2010. feb. 14. 15:25'], + ['llll', '2010. feb. 14., vas 15:25'], + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), 'de', 'am'); + assert.equal(moment([2011, 2, 23, 11, 59]).format('a'), 'de', 'am'); + assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), 'du', 'pm'); + assert.equal(moment([2011, 2, 23, 23, 59]).format('a'), 'du', 'pm'); + + assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'DE', 'AM'); + assert.equal(moment([2011, 2, 23, 11, 59]).format('A'), 'DE', 'AM'); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'DU', 'PM'); + assert.equal(moment([2011, 2, 23, 23, 59]).format('A'), 'DU', 'PM'); + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1.', '1.'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2.', '2.'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3.', '3.'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4.', '4.'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5.', '5.'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6.', '6.'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7.', '7.'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8.', '8.'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9.', '9.'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10.', '10.'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11.', '11.'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12.', '12.'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13.', '13.'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14.', '14.'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15.', '15.'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16.', '16.'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17.', '17.'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18.', '18.'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19.', '19.'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20.', '20.'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21.', '21.'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22.', '22.'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23.', '23.'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24.', '24.'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25.', '25.'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26.', '26.'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27.', '27.'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28.', '28.'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29.', '29.'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30.', '30.'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); + }); + + test('format month', function (assert) { + var expected = + 'január jan._február feb._március márc._április ápr._május máj._június jún._július júl._augusztus aug._szeptember szept._október okt._november nov._december dec.'.split( + '_' + ), + i; + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); + } + }); + + test('format week', function (assert) { + var expected = + 'vasárnap vas_hétfő hét_kedd kedd_szerda sze_csütörtök csüt_péntek pén_szombat szo'.split( + '_' + ), + i; + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd'), + expected[i], + expected[i] + ); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'néhány másodperc', + '44 másodperc = néhány másodperc' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'egy perc', + '45 másodperc = egy perc' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'egy perc', + '89 másodperc = egy perc' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 perc', + '90 másodperc = 2 perc' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 perc', + '44 perc = 44 perc' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'egy óra', + '45 perc = egy óra' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'egy óra', + '89 perc = egy óra' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 óra', + '90 perc = 2 óra' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 óra', + '5 óra = 5 óra' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 óra', + '21 óra = 21 óra' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'egy nap', + '22 óra = egy nap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'egy nap', + '35 óra = egy nap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 nap', + '36 óra = 2 nap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'egy nap', + '1 nap = egy nap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 nap', + '5 nap = 5 nap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 nap', + '25 nap = 25 nap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'egy hónap', + '26 nap = egy hónap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'egy hónap', + '30 nap = egy hónap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'egy hónap', + '45 nap = egy hónap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 hónap', + '46 nap = 2 hónap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 hónap', + '75 nap = 2 hónap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 hónap', + '76 nap = 3 hónap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'egy hónap', + '1 hónap = egy hónap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 hónap', + '5 hónap = 5 hónap' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'egy év', + '345 nap = egy év' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 év', + '548 nap = 2 év' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'egy év', + '1 év = egy év' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 év', + '5 év = 5 év' + ); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'néhány másodperc múlva', 'prefix'); + assert.equal(moment(0).from(30000), 'néhány másodperce', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'néhány másodperce', + 'now from now should display as in the past' + ); + }); + + test('fromNow', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'néhány másodperc múlva', + 'néhány másodperc múlva' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + '5 nap múlva', + '5 nap múlva' + ); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + 'ma 12:00-kor', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'ma 12:25-kor', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'ma 13:00-kor', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'holnap 12:00-kor', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'ma 11:00-kor', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'tegnap 12:00-kor', + 'yesterday at the same time' + ); + }); + + test('calendar next week', function (assert) { + var i, + m, + days = + 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split( + '_' + ); + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('[' + days[m.day()] + '] LT[-kor]'), + 'today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('[' + days[m.day()] + '] LT[-kor]'), + 'today + ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[' + days[m.day()] + '] LT[-kor]'), + 'today + ' + i + ' days end of day' + ); + } + }); + + test('calendar last week', function (assert) { + var i, + m, + days = + 'vasárnap_hétfőn_kedden_szerdán_csütörtökön_pénteken_szombaton'.split( + '_' + ); + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), + 'today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), + 'today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[múlt ' + days[m.day()] + '] LT[-kor]'), + 'today - ' + i + ' days end of day' + ); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'egy héte'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'egy hét múlva' + ); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 hete'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '2 hét múlva' + ); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal( + moment([2011, 11, 26]).format('w ww wo'), + '52 52 52.', + 'Dec 26 2011 should be week 52' + ); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52.', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1.', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1.', + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2.', + 'Jan 9 2012 should be week 2' ); }); @@ -59044,14 +59899,829 @@ defineCommonLocaleTests(name); } - localeModule('jv'); + localeModule('jv'); + + test('parse', function (assert) { + var tests = + 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); + } + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } + + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMM', i); + equalTest(tests[i][1], 'MMM', i); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('format', function (assert) { + var a = [ + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Minggu, Februari 14 2010, 3:25:50 sonten', + ], + ['ddd, hA', 'Min, 3sonten'], + ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Minggu Min Mg'], + ['DDD DDDo DDDD', '45 45 045'], + ['w wo ww', '7 7 07'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'sonten sonten'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15.25.50'], + ['L', '14/02/2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 pukul 15.25'], + ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 pukul 15.25'], + ['llll', 'Min, 14 Feb 2010 pukul 15.25'], + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); + + test('format month', function (assert) { + var expected = + 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split( + '_' + ), + i; + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); + } + }); + + test('format week', function (assert) { + var expected = + 'Minggu Min Mg_Senen Sen Sn_Seloso Sel Sl_Rebu Reb Rb_Kemis Kem Km_Jemuwah Jem Jm_Septu Sep Sp'.split( + '_' + ), + i; + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd dd'), + expected[i], + expected[i] + ); + } + }); + + test('from', function (assert) { + var start = moment([2007, 1, 28]); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'sawetawis detik', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'setunggal menit', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'setunggal menit', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 menit', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 menit', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'setunggal jam', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'setunggal jam', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 jam', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 jam', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 jam', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'sedinten', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'sedinten', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dinten', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'sedinten', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dinten', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dinten', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'sewulan', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'sewulan', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'sewulan', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 wulan', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 wulan', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 wulan', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'sewulan', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 wulan', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'setaun', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 taun', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'setaun', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 taun', + '5 years = 5 years' + ); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'wonten ing sawetawis detik', 'prefix'); + assert.equal( + moment(0).from(30000), + 'sawetawis detik ingkang kepengker', + 'suffix' + ); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'sawetawis detik ingkang kepengker', + 'now from now should display as in the past' + ); + }); + + test('fromNow', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'wonten ing sawetawis detik', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'wonten ing 5 dinten', + 'in 5 days' + ); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + 'Dinten puniko pukul 12.00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Dinten puniko pukul 12.25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Dinten puniko pukul 13.00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Mbenjang pukul 12.00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Dinten puniko pukul 11.00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Kala wingi pukul 12.00', + 'yesterday at the same time' + ); + }); + + test('calendar next week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Today + ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Today + ' + i + ' days end of day' + ); + } + }); + + test('calendar last week', function (assert) { + var i, m; + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [kepengker pukul] LT'), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('dddd [kepengker pukul] LT'), + 'Today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('dddd [kepengker pukul] LT'), + 'Today - ' + i + ' days end of day' + ); + } + }); + + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); + }); + + // Monday is the first day of the week. + // The week that contains Jan 1st is the first week of the year. + + test('weeks year starting sunday formatted', function (assert) { + assert.equal( + moment([2011, 11, 26]).format('w ww wo'), + '1 01 1', + 'Dec 26 2011 should be week 1' + ); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '1 01 1', + 'Jan 1 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '2 02 2', + 'Jan 2 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '2 02 2', + 'Jan 8 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '3 03 3', + 'Jan 9 2012 should be week 3' + ); + }); + +}))); + + + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../../moment')) : + typeof define === 'function' && define.amd ? define(['../../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + function each(array, callback) { + var i; + for (i = 0; i < array.length; i++) { + callback(array[i], i, array); + } + } + + function setupDeprecationHandler(test, moment, scope) { + test._expectedDeprecations = null; + test._observedDeprecations = null; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; + test.expectedDeprecations = function () { + test._expectedDeprecations = arguments; + test._observedDeprecations = []; + }; + moment.deprecationHandler = function (name, msg) { + var deprecationId = matchedDeprecation( + name, + msg, + test._expectedDeprecations + ); + if (deprecationId === -1) { + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); + } + test._observedDeprecations[deprecationId] = 1; + }; + } + + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; + + if (test._expectedDeprecations != null) { + var missedDeprecations = []; + each(test._expectedDeprecations, function (deprecationPattern, id) { + if (test._observedDeprecations[id] !== 1) { + missedDeprecations.push(deprecationPattern); + } + }); + if (missedDeprecations.length !== 0) { + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); + } + } + } + + function matchedDeprecation(name, msg, deprecations) { + if (deprecations == null) { + return -1; + } + for (var i = 0; i < deprecations.length; ++i) { + if (name != null && name === deprecations[i]) { + return i; + } + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { + return i; + } + } + return -1; + } + + /*global QUnit:false*/ + + var test = QUnit.test, + only = QUnit.only; + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function objectKeys(obj) { + if (Object.keys) { + return Object.keys(obj); + } else { + // IE8 + var res = [], + i; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + } + } + + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } + + function defineCommonLocaleTests(locale, options) { + test('lenient day of month ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do'); + assert.equal( + testMoment.year(), + 2014, + 'lenient day of month ordinal parsing ' + i + ' year check' + ); + assert.equal( + testMoment.month(), + 0, + 'lenient day of month ordinal parsing ' + i + ' month check' + ); + assert.equal( + testMoment.date(), + i, + 'lenient day of month ordinal parsing ' + i + ' date check' + ); + } + }); + + test('lenient day of month ordinal parsing of number', function (assert) { + var i, testMoment; + for (i = 1; i <= 31; ++i) { + testMoment = moment('2014 01 ' + i, 'YYYY MM Do'); + assert.equal( + testMoment.year(), + 2014, + 'lenient day of month ordinal parsing of number ' + + i + + ' year check' + ); + assert.equal( + testMoment.month(), + 0, + 'lenient day of month ordinal parsing of number ' + + i + + ' month check' + ); + assert.equal( + testMoment.date(), + i, + 'lenient day of month ordinal parsing of number ' + + i + + ' date check' + ); + } + }); + + test('strict day of month ordinal parsing', function (assert) { + var i, ordinalStr, testMoment; + for (i = 1; i <= 31; ++i) { + ordinalStr = moment([2014, 0, i]).format('YYYY MM Do'); + testMoment = moment(ordinalStr, 'YYYY MM Do', true); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); + } + }); + + test('meridiem invariant', function (assert) { + var h, m, t1, t2; + for (h = 0; h < 24; ++h) { + for (m = 0; m < 60; m += 15) { + t1 = moment.utc([2000, 0, 1, h, m]); + t2 = moment.utc(t1.format('A h:mm'), 'A h:mm'); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); + } + } + }); + + test('date format correctness', function (assert) { + var data = moment.localeData()._longDateFormat; + eachOwnProp(data, function (srchToken) { + // Check each format string to make sure it does not contain any + // tokens that need to be expanded. + eachOwnProp(data, function (baseToken) { + // strip escaped sequences + var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); + }); + }); + }); + + test('month parsing correctness', function (assert) { + var i, m; + + if (locale === 'tr') { + // I can't fix it :( + assert.expect(0); + return; + } + function tester(format) { + var r; + r = moment(m.format(format), format); + assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format); + if (locale !== 'ka') { + r = moment(m.format(format).toLocaleUpperCase(), format); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' upper' + ); + } + r = moment(m.format(format).toLocaleLowerCase(), format); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower' + ); + + r = moment(m.format(format), format, true); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' strict' + ); + if (locale !== 'ka') { + r = moment(m.format(format).toLocaleUpperCase(), format, true); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' upper strict' + ); + } + r = moment(m.format(format).toLocaleLowerCase(), format, true); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); + } + + for (i = 0; i < 12; ++i) { + m = moment([2015, i, 15, 18]); + tester('MMM'); + tester('MMM.'); + tester('MMMM'); + tester('MMMM.'); + } + }); + + test('weekday parsing correctness', function (assert) { + var i, m; + + if ( + locale === 'tr' || + locale === 'az' || + locale === 'ro' || + locale === 'mt' || + locale === 'ga' + ) { + // tr, az: There is a lower-case letter (ı), that converted to + // upper then lower changes to i + // ro: there is the letter ț which behaves weird under IE8 + // mt: letter Ħ + // ga: month with spaces + assert.expect(0); + return; + } + function tester(format) { + var r, + baseMsg = + 'weekday ' + + m.weekday() + + ' fmt ' + + format + + ' ' + + m.toISOString(); + r = moment(m.format(format), format); + assert.equal(r.weekday(), m.weekday(), baseMsg); + if (locale !== 'ka') { + r = moment(m.format(format).toLocaleUpperCase(), format); + assert.equal(r.weekday(), m.weekday(), baseMsg + ' upper'); + } + r = moment(m.format(format).toLocaleLowerCase(), format); + assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower'); + r = moment(m.format(format), format, true); + assert.equal(r.weekday(), m.weekday(), baseMsg + ' strict'); + if (locale !== 'ka') { + r = moment(m.format(format).toLocaleUpperCase(), format, true); + assert.equal( + r.weekday(), + m.weekday(), + baseMsg + ' upper strict' + ); + } + r = moment(m.format(format).toLocaleLowerCase(), format, true); + assert.equal(r.weekday(), m.weekday(), baseMsg + ' lower strict'); + } + + for (i = 0; i < 7; ++i) { + m = moment.utc([2015, 0, i + 1, 18]); + tester('dd'); + tester('ddd'); + tester('dddd'); + } + }); + + test('valid localeData', function (assert) { + assert.equal( + moment().localeData().months().length, + 12, + 'months should return 12 months' + ); + assert.equal( + moment().localeData().monthsShort().length, + 12, + 'monthsShort should return 12 months' + ); + assert.equal( + moment().localeData().weekdays().length, + 7, + 'weekdays should return 7 days' + ); + assert.equal( + moment().localeData().weekdaysShort().length, + 7, + 'weekdaysShort should return 7 days' + ); + assert.equal( + moment().localeData().weekdaysMin().length, + 7, + 'monthsShort should return 7 days' + ); + }); + + test('localeData weekdays can localeSort', function (assert) { + var weekdays = moment().localeData().weekdays(), + weekdaysShort = moment().localeData().weekdaysShort(), + weekdaysMin = moment().localeData().weekdaysMin(), + shift = moment().localeData()._week.dow; + assert.deepEqual( + moment().localeData().weekdays(true), + weekdays.slice(shift, 7).concat(weekdays.slice(0, shift)), + 'weekdays should localeSort' + ); + assert.deepEqual( + moment().localeData().weekdaysShort(true), + weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), + 'weekdaysShort should localeSort' + ); + assert.deepEqual( + moment().localeData().weekdaysMin(true), + weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), + 'weekdaysMin should localeSort' + ); + }); + } + + /*global QUnit:false*/ + + function localeModule(name, lifecycle) { + QUnit.module('locale:' + name, { + beforeEach: function () { + moment.locale(name); + moment.createFromInputFallback = function (config) { + throw new Error('input not handled by moment: ' + config._i); + }; + setupDeprecationHandler(test, moment); + if (lifecycle && lifecycle.setup) { + lifecycle.setup(); + } + }, + afterEach: function () { + moment.locale('en'); + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + defineCommonLocaleTests(name); + } + + localeModule('ka'); test('parse', function (assert) { - var tests = - 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split( + var i, + tests = + 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split( '_' - ), - i; + ); + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -59059,13 +60729,6 @@ input + ' should be month ' + (i + 1) ); } - function equalTestStrict(input, mmm, monthIndex) { - assert.equal( - moment(input, mmm, true).month(), - monthIndex, - input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) - ); - } for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); @@ -59075,15 +60738,9 @@ equalTest(tests[i][1], 'MMMM', i); equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + // the last two are broken until https://github.com/nodejs/node/issues/22518 is fixed + // equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + // equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); } }); @@ -59091,44 +60748,103 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'Minggu, Februari 14 2010, 3:25:50 sonten', + 'კვირა, თებერვალი მე-14 2010, 3:25:50 pm', ], - ['ddd, hA', 'Min, 3sonten'], - ['M Mo MM MMMM MMM', '2 2 02 Februari Feb'], + ['ddd, hA', 'კვი, 3PM'], + ['M Mo MM MMMM MMM', '2 მე-2 02 თებერვალი თებ'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Minggu Min Mg'], - ['DDD DDDo DDDD', '45 45 045'], - ['w wo ww', '7 7 07'], + ['D Do DD', '14 მე-14 14'], + ['d do dddd ddd dd', '0 0 კვირა კვი კვ'], + ['DDD DDDo DDDD', '45 45-ე 045'], + ['w wo ww', '7 მე-7 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', 'sonten sonten'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15.25.50'], + ['a A', 'pm PM'], + ['წლის DDDo დღე', 'წლის 45-ე დღე'], + ['LTS', '15:25:50'], ['L', '14/02/2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 pukul 15.25'], - ['LLLL', 'Minggu, 14 Februari 2010 pukul 15.25'], + ['LL', '14 თებერვალი 2010'], + ['LLL', '14 თებერვალი 2010 15:25'], + ['LLLL', 'კვირა, 14 თებერვალი 2010 15:25'], ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 pukul 15.25'], - ['llll', 'Min, 14 Feb 2010 pukul 15.25'], + ['ll', '14 თებ 2010'], + ['lll', '14 თებ 2010 15:25'], + ['llll', 'კვი, 14 თებ 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; + for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ლი', '1-ლი'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), 'მე-2', 'მე-2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), 'მე-3', 'მე-3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), 'მე-4', 'მე-4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), 'მე-5', 'მე-5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), 'მე-6', 'მე-6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), 'მე-7', 'მე-7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), 'მე-8', 'მე-8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), 'მე-9', 'მე-9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), 'მე-10', 'მე-10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), 'მე-11', 'მე-11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), 'მე-12', 'მე-12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), 'მე-13', 'მე-13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), 'მე-14', 'მე-14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), 'მე-15', 'მე-15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), 'მე-16', 'მე-16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), 'მე-17', 'მე-17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), 'მე-18', 'მე-18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), 'მე-19', 'მე-19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), 'მე-20', 'მე-20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ე', '21-ე'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ე', '22-ე'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ე', '23-ე'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ე', '24-ე'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ე', '25-ე'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ე', '26-ე'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ე', '27-ე'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ე', '28-ე'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ე', '29-ე'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ე', '30-ე'); + + assert.equal( + moment('2011 40', 'YYYY DDD').format('DDDo'), + 'მე-40', + 'მე-40' + ); + assert.equal(moment('2011 50', 'YYYY DDD').format('DDDo'), '50-ე', '50-ე'); + assert.equal( + moment('2011 60', 'YYYY DDD').format('DDDo'), + 'მე-60', + 'მე-60' + ); + assert.equal( + moment('2011 100', 'YYYY DDD').format('DDDo'), + 'მე-100', + 'მე-100' + ); + assert.equal( + moment('2011 101', 'YYYY DDD').format('DDDo'), + '101-ე', + '101-ე' + ); + }); + test('format month', function (assert) { - var expected = - 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Ags_September Sep_Oktober Okt_Nopember Nop_Desember Des'.split( + var i, + expected = + 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -59139,11 +60855,12 @@ }); test('format week', function (assert) { - var expected = - 'Minggu Min Mg_Senen Sen Sn_Seloso Sel Sl_Rebu Reb Rb_Kemis Kem Km_Jemuwah Jem Jm_Septu Sep Sp'.split( + var i, + expected = + 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split( '_' - ), - i; + ); + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -59155,210 +60872,199 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); + assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'sawetawis detik', - '44 seconds = a few seconds' + 'რამდენიმე წამი', + '44 წამი = რამდენიმე წამი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'setunggal menit', - '45 seconds = a minute' + 'წუთი', + '45 წამი = წუთი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'setunggal menit', - '89 seconds = a minute' + 'წუთი', + '89 წამი = წუთი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 menit', - '90 seconds = 2 minutes' + '2 წუთი', + '90 წამი = 2 წუთი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 menit', - '44 minutes = 44 minutes' + '44 წუთი', + '44 წამი = 44 წუთი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'setunggal jam', - '45 minutes = an hour' + 'საათი', + '45 წამი = საათი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'setunggal jam', - '89 minutes = an hour' + 'საათი', + '89 წამი = საათი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 jam', - '90 minutes = 2 hours' + '2 საათი', + '90 წამი = 2 საათი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 jam', - '5 hours = 5 hours' + '5 საათი', + '5 საათი = 5 საათი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 jam', - '21 hours = 21 hours' + '21 საათი', + '21 საათი = 21 საათი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'sedinten', - '22 hours = a day' + 'დღე', + '22 საათი = დღე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'sedinten', - '35 hours = a day' + 'დღე', + '35 საათი = დღე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 dinten', - '36 hours = 2 days' + '2 დღე', + '36 საათი = 2 დღე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'sedinten', - '1 day = a day' + 'დღე', + '1 დღე = დღე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 dinten', - '5 days = 5 days' + '5 დღე', + '5 დღე = 5 დღე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 dinten', - '25 days = 25 days' + '25 დღე', + '25 დღე = 25 დღე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'sewulan', - '26 days = a month' + 'თვე', + '26 დღე = თვე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'sewulan', - '30 days = a month' + 'თვე', + '30 დღე = თვე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'sewulan', - '43 days = a month' + 'თვე', + '45 დღე = თვე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 wulan', - '46 days = 2 months' + '2 თვე', + '46 დღე = 2 თვე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 wulan', - '75 days = 2 months' + '2 თვე', + '75 დღე = 2 თვე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 wulan', - '76 days = 3 months' + '3 თვე', + '76 დღე = 3 თვე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'sewulan', - '1 month = a month' + 'თვე', + '1 თვე = თვე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 wulan', - '5 months = 5 months' + '5 თვე', + '5 თვე = 5 თვე' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'setaun', - '345 days = a year' + 'წელი', + '345 დღე = წელი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 taun', - '548 days = 2 years' + '2 წელი', + '548 დღე = 2 წელი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'setaun', - '1 year = a year' + 'წელი', + '1 წელი = წელი' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 taun', - '5 years = 5 years' + '5 წელი', + '5 წელი = 5 წელი' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'wonten ing sawetawis detik', 'prefix'); - assert.equal( - moment(0).from(30000), - 'sawetawis detik ingkang kepengker', - 'suffix' - ); + assert.equal(moment(30000).from(0), 'რამდენიმე წამში', 'ში სუფიქსი'); + assert.equal(moment(0).from(30000), 'რამდენიმე წამის წინ', 'წინ სუფიქსი'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'sawetawis detik ingkang kepengker', - 'now from now should display as in the past' + 'რამდენიმე წამის წინ', + 'უნდა აჩვენოს როგორც წარსული' ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'wonten ing sawetawis detik', - 'in a few seconds' - ); - assert.equal( - moment().add({ d: 5 }).fromNow(), - 'wonten ing 5 dinten', - 'in 5 days' + 'რამდენიმე წამში', + 'რამდენიმე წამში' ); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 დღეში', '5 დღეში'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal( - moment(a).calendar(), - 'Dinten puniko pukul 12.00', - 'today at the same time' - ); + assert.equal(moment(a).calendar(), 'დღეს 12:00-ზე', 'დღეს ამავე დროს'); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Dinten puniko pukul 12.25', - 'Now plus 25 min' + 'დღეს 12:25-ზე', + 'ახლანდელ დროს დამატებული 25 წუთი' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Dinten puniko pukul 13.00', - 'Now plus 1 hour' + 'დღეს 13:00-ზე', + 'ახლანდელ დროს დამატებული 1 საათი' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Mbenjang pukul 12.00', - 'tomorrow at the same time' + 'ხვალ 12:00-ზე', + 'ხვალ ამავე დროს' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Dinten puniko pukul 11.00', - 'Now minus 1 hour' + 'დღეს 11:00-ზე', + 'ახლანდელ დროს გამოკლებული 1 საათი' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Kala wingi pukul 12.00', - 'yesterday at the same time' + 'გუშინ 12:00-ზე', + 'გუშინ ამავე დროს' ); }); @@ -59368,20 +61074,20 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [pukul] LT'), - 'Today + ' + i + ' days current time' + m.format('[შემდეგ] dddd LT[-ზე]'), + 'დღეს + ' + i + ' დღე ახლანდელ დროს' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [pukul] LT'), - 'Today + ' + i + ' days beginning of day' + m.format('[შემდეგ] dddd LT[-ზე]'), + 'დღეს + ' + i + ' დღე დღის დასაწყისში' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [pukul] LT'), - 'Today + ' + i + ' days end of day' + m.format('[შემდეგ] dddd LT[-ზე]'), + 'დღეს + ' + i + ' დღე დღის დასასრულს' ); } }); @@ -59392,20 +61098,20 @@ m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('dddd [kepengker pukul] LT'), - 'Today - ' + i + ' days current time' + m.format('[წინა] dddd LT[-ზე]'), + 'დღეს - ' + i + ' დღე ახლანდელ დროს' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [kepengker pukul] LT'), - 'Today - ' + i + ' days beginning of day' + m.format('[წინა] dddd LT[-ზე]'), + 'დღეს - ' + i + ' დღე დღის დასაწყისში' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [kepengker pukul] LT'), - 'Today - ' + i + ' days end of day' + m.format('[წინა] dddd LT[-ზე]'), + 'დღეს - ' + i + ' დღე დღის დასასრულს' ); } }); @@ -59414,52 +61120,49 @@ var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 კვირის წინ'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'in 1 week' + '1 კვირაში' ); weeksAgo = moment().subtract({ w: 2 }); weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 კვირის წინ'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - 'in 2 weeks' + '2 კვირაში' ); }); - // Monday is the first day of the week. - // The week that contains Jan 1st is the first week of the year. - test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2011, 11, 26]).format('w ww wo'), - '1 01 1', - 'Dec 26 2011 should be week 1' + '1 01 1-ლი', + 'დეკ 26 2011 უნდა იყოს კვირა 1' ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1', - 'Jan 1 2012 should be week 1' + '1 01 1-ლი', + 'იან 1 2012 უნდა იყოს კვირა 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '2 02 2', - 'Jan 2 2012 should be week 2' + '2 02 მე-2', + 'იან 2 2012 უნდა იყოს კვირა 2' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2', - 'Jan 8 2012 should be week 2' + '2 02 მე-2', + 'იან 8 2012 უნდა იყოს კვირა 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '3 03 3', - 'Jan 9 2012 should be week 3' + '3 03 მე-3', + 'იან 9 2012 უნდა იყოს კვირა 3' ); }); @@ -59858,15 +61561,14 @@ defineCommonLocaleTests(name); } - localeModule('ka'); + localeModule('kk'); test('parse', function (assert) { - var i, - tests = - 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split( + var tests = + 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split( '_' - ); - + ), + i; function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -59874,6 +61576,13 @@ input + ' should be month ' + (i + 1) ); } + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); @@ -59883,113 +61592,97 @@ equalTest(tests[i][1], 'MMMM', i); equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - // the last two are broken until https://github.com/nodejs/node/issues/22518 is fixed - // equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - // equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'კვირა, თებერვალი მე-14 2010, 3:25:50 pm', + 'dddd, Do MMMM YYYY, HH:mm:ss', + 'жексенбі, 14-ші ақпан 2010, 15:25:50', ], - ['ddd, hA', 'კვი, 3PM'], - ['M Mo MM MMMM MMM', '2 მე-2 02 თებერვალი თებ'], + ['ddd, hA', 'жек, 3PM'], + ['M Mo MM MMMM MMM', '2 2-ші 02 ақпан ақп'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 მე-14 14'], - ['d do dddd ddd dd', '0 0 კვირა კვი კვ'], - ['DDD DDDo DDDD', '45 45-ე 045'], - ['w wo ww', '7 მე-7 07'], + ['D Do DD', '14 14-ші 14'], + ['d do dddd ddd dd', '0 0-ші жексенбі жек жк'], + ['DDD DDDo DDDD', '45 45-ші 045'], + ['w wo ww', '7 7-ші 07'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], ['a A', 'pm PM'], - ['წლის DDDo დღე', 'წლის 45-ე დღე'], + ['[жылдың] DDDo [күні]', 'жылдың 45-ші күні'], ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 თებერვალი 2010'], - ['LLL', '14 თებერვალი 2010 15:25'], - ['LLLL', 'კვირა, 14 თებერვალი 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 თებ 2010'], - ['lll', '14 თებ 2010 15:25'], - ['llll', 'კვი, 14 თებ 2010 15:25'], + ['L', '14.02.2010'], + ['LL', '14 ақпан 2010'], + ['LLL', '14 ақпан 2010 15:25'], + ['LLLL', 'жексенбі, 14 ақпан 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 ақп 2010'], + ['lll', '14 ақп 2010 15:25'], + ['llll', 'жек, 14 ақп 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; - for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ლი', '1-ლი'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), 'მე-2', 'მე-2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), 'მე-3', 'მე-3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), 'მე-4', 'მე-4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), 'მე-5', 'მე-5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), 'მე-6', 'მე-6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), 'მე-7', 'მე-7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), 'მე-8', 'მე-8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), 'მე-9', 'მე-9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), 'მე-10', 'მე-10'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ші', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ші', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ші', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ші', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ші', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-шы', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ші', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ші', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-шы', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-шы', '10th'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), 'მე-11', 'მე-11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), 'მე-12', 'მე-12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), 'მე-13', 'მე-13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), 'მე-14', 'მე-14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), 'მე-15', 'მე-15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), 'მე-16', 'მე-16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), 'მე-17', 'მე-17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), 'მე-18', 'მე-18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), 'მე-19', 'მე-19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), 'მე-20', 'მე-20'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ші', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ші', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ші', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ші', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ші', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-шы', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ші', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ші', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-шы', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-шы', '20th'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ე', '21-ე'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ე', '22-ე'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ე', '23-ე'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ე', '24-ე'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ე', '25-ე'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-ე', '26-ე'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ე', '27-ე'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ე', '28-ე'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-ე', '29-ე'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-ე', '30-ე'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ші', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ші', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ші', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ші', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ші', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-шы', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ші', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ші', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-шы', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-шы', '30th'); - assert.equal( - moment('2011 40', 'YYYY DDD').format('DDDo'), - 'მე-40', - 'მე-40' - ); - assert.equal(moment('2011 50', 'YYYY DDD').format('DDDo'), '50-ე', '50-ე'); - assert.equal( - moment('2011 60', 'YYYY DDD').format('DDDo'), - 'მე-60', - 'მე-60' - ); - assert.equal( - moment('2011 100', 'YYYY DDD').format('DDDo'), - 'მე-100', - 'მე-100' - ); - assert.equal( - moment('2011 101', 'YYYY DDD').format('DDDo'), - '101-ე', - '101-ე' - ); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ші', '31st'); }); test('format month', function (assert) { - var i, - expected = - 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split( + var expected = + 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -60000,12 +61693,11 @@ }); test('format week', function (assert) { - var i, - expected = - 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split( + var expected = + 'жексенбі жек жк_дүйсенбі дүй дй_сейсенбі сей сй_сәрсенбі сәр ср_бейсенбі бей бй_жұма жұм жм_сенбі сен сн'.split( '_' - ); - + ), + i; for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -60017,199 +61709,202 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'რამდენიმე წამი', - '44 წამი = რამდენიმე წამი' + 'бірнеше секунд', + '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'წუთი', - '45 წამი = წუთი' + 'бір минут', + '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'წუთი', - '89 წამი = წუთი' + 'бір минут', + '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 წუთი', - '90 წამი = 2 წუთი' + '2 минут', + '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 წუთი', - '44 წამი = 44 წუთი' + '44 минут', + '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'საათი', - '45 წამი = საათი' + 'бір сағат', + '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'საათი', - '89 წამი = საათი' + 'бір сағат', + '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 საათი', - '90 წამი = 2 საათი' + '2 сағат', + '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 საათი', - '5 საათი = 5 საათი' + '5 сағат', + '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 საათი', - '21 საათი = 21 საათი' + '21 сағат', + '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'დღე', - '22 საათი = დღე' + 'бір күн', + '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'დღე', - '35 საათი = დღე' + 'бір күн', + '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 დღე', - '36 საათი = 2 დღე' + '2 күн', + '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'დღე', - '1 დღე = დღე' + 'бір күн', + '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 დღე', - '5 დღე = 5 დღე' + '5 күн', + '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 დღე', - '25 დღე = 25 დღე' + '25 күн', + '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'თვე', - '26 დღე = თვე' + 'бір ай', + '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'თვე', - '30 დღე = თვე' + 'бір ай', + '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'თვე', - '45 დღე = თვე' + 'бір ай', + '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 თვე', - '46 დღე = 2 თვე' + '2 ай', + '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 თვე', - '75 დღე = 2 თვე' + '2 ай', + '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 თვე', - '76 დღე = 3 თვე' + '3 ай', + '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'თვე', - '1 თვე = თვე' + 'бір ай', + '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 თვე', - '5 თვე = 5 თვე' + '5 ай', + '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'წელი', - '345 დღე = წელი' + 'бір жыл', + '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 წელი', - '548 დღე = 2 წელი' + '2 жыл', + '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'წელი', - '1 წელი = წელი' + 'бір жыл', + '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 წელი', - '5 წელი = 5 წელი' + '5 жыл', + '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'რამდენიმე წამში', 'ში სუფიქსი'); - assert.equal(moment(0).from(30000), 'რამდენიმე წამის წინ', 'წინ სუფიქსი'); + assert.equal(moment(30000).from(0), 'бірнеше секунд ішінде', 'prefix'); + assert.equal(moment(0).from(30000), 'бірнеше секунд бұрын', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'რამდენიმე წამის წინ', - 'უნდა აჩვენოს როგორც წარსული' + 'бірнеше секунд бұрын', + 'now from now should display as in the past' ); }); test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'რამდენიმე წამში', - 'რამდენიმე წამში' + 'бірнеше секунд ішінде', + 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '5 დღეში', '5 დღეში'); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 күн ішінде', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'დღეს 12:00-ზე', 'დღეს ამავე დროს'); + assert.equal( + moment(a).calendar(), + 'Бүгін сағат 12:00', + 'today at the same time' + ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'დღეს 12:25-ზე', - 'ახლანდელ დროს დამატებული 25 წუთი' + 'Бүгін сағат 12:25', + 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'დღეს 13:00-ზე', - 'ახლანდელ დროს დამატებული 1 საათი' + 'Бүгін сағат 13:00', + 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'ხვალ 12:00-ზე', - 'ხვალ ამავე დროს' + 'Ертең сағат 12:00', + 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'დღეს 11:00-ზე', - 'ახლანდელ დროს გამოკლებული 1 საათი' + 'Бүгін сағат 11:00', + 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'გუშინ 12:00-ზე', - 'გუშინ ამავე დროს' + 'Кеше сағат 12:00', + 'yesterday at the same time' ); }); @@ -60219,44 +61914,45 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('[შემდეგ] dddd LT[-ზე]'), - 'დღეს + ' + i + ' დღე ახლანდელ დროს' + m.format('dddd [сағат] LT'), + 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[შემდეგ] dddd LT[-ზე]'), - 'დღეს + ' + i + ' დღე დღის დასაწყისში' + m.format('dddd [сағат] LT'), + 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[შემდეგ] dddd LT[-ზე]'), - 'დღეს + ' + i + ' დღე დღის დასასრულს' + m.format('dddd [сағат] LT'), + 'Today + ' + i + ' days end of day' ); } }); test('calendar last week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[წინა] dddd LT[-ზე]'), - 'დღეს - ' + i + ' დღე ახლანდელ დროს' + m.format('[Өткен аптаның] dddd [сағат] LT'), + 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[წინა] dddd LT[-ზე]'), - 'დღეს - ' + i + ' დღე დღის დასაწყისში' + m.format('[Өткен аптаның] dddd [сағат] LT'), + 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[წინა] dddd LT[-ზე]'), - 'დღეს - ' + i + ' დღე დღის დასასრულს' + m.format('[Өткен аптаның] dddd [сағат] LT'), + 'Today - ' + i + ' days end of day' ); } }); @@ -60265,49 +61961,49 @@ var weeksAgo = moment().subtract({ w: 1 }), weeksFromNow = moment().add({ w: 1 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 კვირის წინ'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - '1 კვირაში' + 'in 1 week' ); weeksAgo = moment().subtract({ w: 2 }); weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 კვირის წინ'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); assert.equal( weeksFromNow.calendar(), weeksFromNow.format('L'), - '2 კვირაში' + 'in 2 weeks' ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal( - moment([2011, 11, 26]).format('w ww wo'), - '1 01 1-ლი', - 'დეკ 26 2011 უნდა იყოს კვირა 1' - ); assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1-ლი', - 'იან 1 2012 უნდა იყოს კვირა 1' + '1 01 1-ші', + 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '2 02 მე-2', - 'იან 2 2012 უნდა იყოს კვირა 2' + '2 02 2-ші', + 'Jan 2 2012 should be week 2' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 მე-2', - 'იან 8 2012 უნდა იყოს კვირა 2' + '2 02 2-ші', + 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '3 03 მე-3', - 'იან 9 2012 უნდა იყოს კვირა 3' + '3 03 3-ші', + 'Jan 9 2012 should be week 3' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3-ші', + 'Jan 15 2012 should be week 3' ); }); @@ -60706,14 +62402,15 @@ defineCommonLocaleTests(name); } - localeModule('kk'); + localeModule('km'); test('parse', function (assert) { var tests = - 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split( + 'មករា មករា_កុម្ភៈ កុម្ភៈ_មីនា មីនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split( '_' ), i; + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -60721,6 +62418,7 @@ input + ' should be month ' + (i + 1) ); } + function equalTestStrict(input, mmm, monthIndex) { assert.equal( moment(input, mmm, true).month(), @@ -60752,31 +62450,31 @@ test('format', function (assert) { var a = [ [ - 'dddd, Do MMMM YYYY, HH:mm:ss', - 'жексенбі, 14-ші ақпан 2010, 15:25:50', + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'អាទិត្យ, កុម្ភៈ ទី១៤ ២០១០, ៣:២៥:៥០ ល្ងាច', ], - ['ddd, hA', 'жек, 3PM'], - ['M Mo MM MMMM MMM', '2 2-ші 02 ақпан ақп'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-ші 14'], - ['d do dddd ddd dd', '0 0-ші жексенбі жек жк'], - ['DDD DDDo DDDD', '45 45-ші 045'], - ['w wo ww', '7 7-ші 07'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['[жылдың] DDDo [күні]', 'жылдың 45-ші күні'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 ақпан 2010'], - ['LLL', '14 ақпан 2010 15:25'], - ['LLLL', 'жексенбі, 14 ақпан 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 ақп 2010'], - ['lll', '14 ақп 2010 15:25'], - ['llll', 'жек, 14 ақп 2010 15:25'], + ['ddd, hA', 'អា, ៣ល្ងាច'], + ['M Mo MM MMMM MMM', '២ ទី២ ០២ កុម្ភៈ កុម្ភៈ'], + ['YYYY YY', '២០១០ ១០'], + ['D Do DD', '១៤ ទី១៤ ១៤'], + ['d do dddd ddd dd', '០ ទី០ អាទិត្យ អា អា'], + ['DDD DDDo DDDD', '៤៥ ទី៤៥ ០៤៥'], + ['w wo ww', '៦ ទី៦ ០៦'], + ['h hh', '៣ ០៣'], + ['H HH', '១៥ ១៥'], + ['m mm', '២៥ ២៥'], + ['s ss', '៥០ ៥០'], + ['a A', 'ល្ងាច ល្ងាច'], + ['[the] DDDo [day of the year]', 'the ទី៤៥ day of the year'], + ['LTS', '១៥:២៥:៥០'], + ['L', '១៤/០២/២០១០'], + ['LL', '១៤ កុម្ភៈ ២០១០'], + ['LLL', '១៤ កុម្ភៈ ២០១០ ១៥:២៥'], + ['LLLL', 'អាទិត្យ, ១៤ កុម្ភៈ ២០១០ ១៥:២៥'], + ['l', '១៤/២/២០១០'], + ['ll', '១៤ កុម្ភៈ ២០១០'], + ['lll', '១៤ កុម្ភៈ ២០១០ ១៥:២៥'], + ['llll', 'អា, ១៤ កុម្ភៈ ២០១០ ១៥:២៥'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -60786,45 +62484,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-ші', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-ші', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-ші', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-ші', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-ші', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-шы', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-ші', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-ші', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-шы', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-шы', '10th'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), 'ទី១', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), 'ទី២', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), 'ទី៣', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), 'ទី៤', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), 'ទី៥', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), 'ទី៦', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), 'ទី៧', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), 'ទី៨', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), 'ទី៩', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), 'ទី១០', '10th'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11-ші', '11th'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-ші', '12th'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-ші', '13th'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-ші', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-ші', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-шы', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-ші', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-ші', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-шы', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-шы', '20th'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), 'ទី១១', '11st'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), 'ទី១២', '12nd'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), 'ទី១៣', '13rd'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), 'ទី១៤', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), 'ទី១៥', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), 'ទី១៦', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), 'ទី១៧', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), 'ទី១៨', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), 'ទី១៩', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), 'ទី២០', '20th'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21-ші', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-ші', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-ші', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-ші', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-ші', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-шы', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-ші', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-ші', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-шы', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-шы', '30th'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), 'ទី២១', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), 'ទី២២', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), 'ទី២៣', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), 'ទី២៤', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), 'ទី២៥', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), 'ទី២៦', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), 'ទី២៧', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), 'ទី២៨', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), 'ទី២៩', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), 'ទី៣០', '30th'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ші', '31st'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), 'ទី៣១', '31st'); }); test('format month', function (assert) { var expected = - 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split( + 'មករា មករា_កុម្ភៈ កុម្ភៈ_មីនា មីនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split( '_' ), i; @@ -60839,7 +62537,7 @@ test('format week', function (assert) { var expected = - 'жексенбі жек жк_дүйсенбі дүй дй_сейсенбі сей сй_сәрсенбі сәр ср_бейсенбі бей бй_жұма жұм жм_сенбі сен сн'.split( + 'អាទិត្យ អា អា_ច័ន្ទ ច ច_អង្គារ អ អ_ពុធ ព ព_ព្រហស្បតិ៍ ព្រ ព្រ_សុក្រ សុ សុ_សៅរ៍ ស ស'.split( '_' ), i; @@ -60856,166 +62554,178 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'бірнеше секунд', - '44 seconds = a few seconds' + 'ប៉ុន្មានវិនាទី', + '44 seconds = ប៉ុន្មានវិនាទី' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'бір минут', - '45 seconds = a minute' + 'មួយនាទី', + '45 seconds = មួយនាទី' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'бір минут', - '89 seconds = a minute' + 'មួយនាទី', + '89 seconds = មួយនាទី' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2 минут', - '90 seconds = 2 minutes' + '២ នាទី', + '90 seconds = 2 នាទី' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44 минут', - '44 minutes = 44 minutes' + '៤៤ នាទី', + '44 minutes = 44 នាទី' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'бір сағат', - '45 minutes = an hour' + 'មួយម៉ោង', + '45 minutes = មួយម៉ោង' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'бір сағат', - '89 minutes = an hour' + 'មួយម៉ោង', + '89 minutes = មួយម៉ោង' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2 сағат', - '90 minutes = 2 hours' + '២ ម៉ោង', + '90 minutes = 2 ម៉ោង' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5 сағат', - '5 hours = 5 hours' + '៥ ម៉ោង', + '5 hours = 5 ម៉ោង' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21 сағат', - '21 hours = 21 hours' + '២១ ម៉ោង', + '21 hours = 21 ម៉ោង' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'бір күн', - '22 hours = a day' + 'មួយថ្ងៃ', + '22 hours = មួយថ្ងៃ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'бір күн', - '35 hours = a day' + 'មួយថ្ងៃ', + '35 hours = មួយថ្ងៃ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2 күн', - '36 hours = 2 days' + '២ ថ្ងៃ', + '36 hours = 2 ថ្ងៃ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'бір күн', - '1 day = a day' + 'មួយថ្ងៃ', + '1 day = មួយថ្ងៃ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5 күн', - '5 days = 5 days' + '៥ ថ្ងៃ', + '5 days = 5 ថ្ងៃ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25 күн', - '25 days = 25 days' + '២៥ ថ្ងៃ', + '25 days = 25 ថ្ងៃ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'бір ай', - '26 days = a month' + 'មួយខែ', + '26 days = មួយខែ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'бір ай', - '30 days = a month' + 'មួយខែ', + '30 days = មួយខែ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'бір ай', - '43 days = a month' + 'មួយខែ', + '43 days = មួយខែ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2 ай', - '46 days = 2 months' + '២ ខែ', + '46 days = 2 ខែ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2 ай', - '75 days = 2 months' + '២ ខែ', + '75 days = 2 ខែ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3 ай', - '76 days = 3 months' + '៣ ខែ', + '76 days = 3 ខែ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'бір ай', - '1 month = a month' + 'មួយខែ', + '1 month = មួយខែ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5 ай', - '5 months = 5 months' + '៥ ខែ', + '5 months = 5 ខែ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'бір жыл', - '345 days = a year' + 'មួយឆ្នាំ', + '345 days = មួយឆ្នាំ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2 жыл', - '548 days = 2 years' + '២ ឆ្នាំ', + '548 days = 2 ឆ្នាំ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'бір жыл', - '1 year = a year' + 'មួយឆ្នាំ', + '1 year = មួយឆ្នាំ' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5 жыл', - '5 years = 5 years' + '៥ ឆ្នាំ', + '5 years = 5 ឆ្នាំ' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'бірнеше секунд ішінде', 'prefix'); - assert.equal(moment(0).from(30000), 'бірнеше секунд бұрын', 'suffix'); + assert.equal(moment(30000).from(0), 'ប៉ុន្មានវិនាទីទៀត', 'prefix'); + assert.equal(moment(0).from(30000), 'ប៉ុន្មានវិនាទីមុន', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'бірнеше секунд бұрын', + 'ប៉ុន្មានវិនាទីមុន', 'now from now should display as in the past' ); }); test('fromNow', function (assert) { assert.equal( - moment().add({ s: 30 }).fromNow(), - 'бірнеше секунд ішінде', + moment() + .add({ + s: 30, + }) + .fromNow(), + 'ប៉ុន្មានវិនាទីទៀត', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '5 күн ішінде', 'in 5 days'); + assert.equal( + moment() + .add({ + d: 5, + }) + .fromNow(), + '៥ ថ្ងៃទៀត', + 'in 5 days' + ); }); test('calendar day', function (assert) { @@ -61023,32 +62733,32 @@ assert.equal( moment(a).calendar(), - 'Бүгін сағат 12:00', + 'ថ្ងៃនេះ ម៉ោង ១២:០០', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'Бүгін сағат 12:25', + 'ថ្ងៃនេះ ម៉ោង ១២:២៥', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - 'Бүгін сағат 13:00', + 'ថ្ងៃនេះ ម៉ោង ១៣:០០', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'Ертең сағат 12:00', + 'ស្អែក ម៉ោង ១២:០០', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'Бүгін сағат 11:00', + 'ថ្ងៃនេះ ម៉ោង ១១:០០', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'Кеше сағат 12:00', + 'ម្សិលមិញ ម៉ោង ១២:០០', 'yesterday at the same time' ); }); @@ -61056,22 +62766,24 @@ test('calendar next week', function (assert) { var i, m; for (i = 2; i < 7; i++) { - m = moment().add({ d: i }); + m = moment().add({ + d: i, + }); assert.equal( m.calendar(), - m.format('dddd [сағат] LT'), + m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [сағат] LT'), + m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [сағат] LT'), + m.format('dddd [ម៉ោង] LT'), 'Today + ' + i + ' days end of day' ); } @@ -61081,30 +62793,36 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({ d: i }); + m = moment().subtract({ + d: i, + }); assert.equal( m.calendar(), - m.format('[Өткен аптаның] dddd [сағат] LT'), + m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[Өткен аптаның] dddd [сағат] LT'), + m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[Өткен аптаның] dddd [сағат] LT'), + m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), 'Today - ' + i + ' days end of day' ); } }); test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({ w: 1 }), - weeksFromNow = moment().add({ w: 1 }); + var weeksAgo = moment().subtract({ + w: 1, + }), + weeksFromNow = moment().add({ + w: 1, + }); assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( @@ -61113,8 +62831,12 @@ 'in 1 week' ); - weeksAgo = moment().subtract({ w: 2 }); - weeksFromNow = moment().add({ w: 2 }); + weeksAgo = moment().subtract({ + w: 2, + }); + weeksFromNow = moment().add({ + w: 2, + }); assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); assert.equal( @@ -61127,28 +62849,28 @@ test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1-ші', - 'Jan 1 2012 should be week 1' + '៥២ ៥២ ទី៥២', + 'Jan 1 2012 should be week 52' ); assert.equal( moment([2012, 0, 2]).format('w ww wo'), - '2 02 2-ші', - 'Jan 2 2012 should be week 2' + '១ ០១ ទី១', + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2-ші', - 'Jan 8 2012 should be week 2' + '១ ០១ ទី១', + 'Jan 8 2012 should be week 1' ); assert.equal( moment([2012, 0, 9]).format('w ww wo'), - '3 03 3-ші', - 'Jan 9 2012 should be week 3' + '២ ០២ ទី២', + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3-ші', - 'Jan 15 2012 should be week 3' + '២ ០២ ទី២', + 'Jan 15 2012 should be week 2' ); }); @@ -61547,15 +63269,14 @@ defineCommonLocaleTests(name); } - localeModule('km'); + localeModule('kn'); test('parse', function (assert) { var tests = - 'មករា មករា_កុម្ភៈ កុម្ភៈ_មីនា មីនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split( + 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋ_ನವೆಂಬರ್ ನವೆಂ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂ'.split( '_' ), i; - function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -61563,14 +63284,13 @@ input + ' should be month ' + (i + 1) ); } - - function equalTestStrict(input, mmm, monthIndex) { - assert.equal( - moment(input, mmm, true).month(), - monthIndex, - input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) - ); - } + // function equalTestStrict(input, mmm, monthIndex) { + // assert.equal( + // moment(input, mmm, true).month(), + // monthIndex, + // input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + // ); + // } for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); @@ -61583,43 +63303,43 @@ equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTestStrict(tests[i][1], 'MMM', i); - equalTestStrict(tests[i][0], 'MMMM', i); - equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + // All strict parsing fails only for month 9 (index 8) + // equalTestStrict(tests[i][1], 'MMM', i); + // equalTestStrict(tests[i][0], 'MMMM', i); + // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + // equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + // equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ [ - 'dddd, MMMM Do YYYY, h:mm:ss a', - 'អាទិត្យ, កុម្ភៈ ទី១៤ ២០១០, ៣:២៥:៥០ ល្ងាច', + 'dddd, Do MMMM YYYY, a h:mm:ss', + 'ಭಾನುವಾರ, ೧೪ನೇ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫:೫೦', ], - ['ddd, hA', 'អា, ៣ល្ងាច'], - ['M Mo MM MMMM MMM', '២ ទី២ ០២ កុម្ភៈ កុម្ភៈ'], - ['YYYY YY', '២០១០ ១០'], - ['D Do DD', '១៤ ទី១៤ ១៤'], - ['d do dddd ddd dd', '០ ទី០ អាទិត្យ អា អា'], - ['DDD DDDo DDDD', '៤៥ ទី៤៥ ០៤៥'], - ['w wo ww', '៦ ទី៦ ០៦'], - ['h hh', '៣ ០៣'], - ['H HH', '១៥ ១៥'], - ['m mm', '២៥ ២៥'], - ['s ss', '៥០ ៥០'], - ['a A', 'ល្ងាច ល្ងាច'], - ['[the] DDDo [day of the year]', 'the ទី៤៥ day of the year'], - ['LTS', '១៥:២៥:៥០'], - ['L', '១៤/០២/២០១០'], - ['LL', '១៤ កុម្ភៈ ២០១០'], - ['LLL', '១៤ កុម្ភៈ ២០១០ ១៥:២៥'], - ['LLLL', 'អាទិត្យ, ១៤ កុម្ភៈ ២០១០ ១៥:២៥'], - ['l', '១៤/២/២០១០'], - ['ll', '១៤ កុម្ភៈ ២០១០'], - ['lll', '១៤ កុម្ភៈ ២០១០ ១៥:២៥'], - ['llll', 'អា, ១៤ កុម្ភៈ ២០១០ ១៥:២៥'], + ['ddd, a h ಗಂಟೆ', 'ಭಾನು, ಮಧ್ಯಾಹ್ನ ೩ ಗಂಟೆ'], + ['M Mo MM MMMM MMM', '೨ ೨ನೇ ೦೨ ಫೆಬ್ರವರಿ ಫೆಬ್ರ'], + ['YYYY YY', '೨೦೧೦ ೧೦'], + ['D Do DD', '೧೪ ೧೪ನೇ ೧೪'], + ['d do dddd ddd dd', '೦ ೦ನೇ ಭಾನುವಾರ ಭಾನು ಭಾ'], + ['DDD DDDo DDDD', '೪೫ ೪೫ನೇ ೦೪೫'], + ['w wo ww', '೮ ೮ನೇ ೦೮'], + ['h hh', '೩ ೦೩'], + ['H HH', '೧೫ ೧೫'], + ['m mm', '೨೫ ೨೫'], + ['s ss', '೫೦ ೫೦'], + ['a A', 'ಮಧ್ಯಾಹ್ನ ಮಧ್ಯಾಹ್ನ'], + ['LTS', 'ಮಧ್ಯಾಹ್ನ ೩:೨೫:೫೦'], + ['L', '೧೪/೦೨/೨೦೧೦'], + ['LL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦'], + ['LLL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], + ['LLLL', 'ಭಾನುವಾರ, ೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], + ['l', '೧೪/೨/೨೦೧೦'], + ['ll', '೧೪ ಫೆಬ್ರ ೨೦೧೦'], + ['lll', '೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], + ['llll', 'ಭಾನು, ೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -61629,45 +63349,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), 'ទី១', '1st'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), 'ទី២', '2nd'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), 'ទី៣', '3rd'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), 'ទី៤', '4th'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), 'ទី៥', '5th'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), 'ទី៦', '6th'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), 'ទី៧', '7th'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), 'ទី៨', '8th'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), 'ទី៩', '9th'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), 'ទី១០', '10th'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '೧ನೇ', '೧ನೇ'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '೨ನೇ', '೨ನೇ'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '೩ನೇ', '೩ನೇ'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '೪ನೇ', '೪ನೇ'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '೫ನೇ', '೫ನೇ'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '೬ನೇ', '೬ನೇ'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '೭ನೇ', '೭ನೇ'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '೮ನೇ', '೮ನೇ'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '೯ನೇ', '೯ನೇ'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '೧೦ನೇ', '೧೦ನೇ'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), 'ទី១១', '11st'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), 'ទី១២', '12nd'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), 'ទី១៣', '13rd'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), 'ទី១៤', '14th'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), 'ទី១៥', '15th'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), 'ទី១៦', '16th'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), 'ទី១៧', '17th'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), 'ទី១៨', '18th'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), 'ទី១៩', '19th'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), 'ទី២០', '20th'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '೧೧ನೇ', '೧೧ನೇ'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '೧೨ನೇ', '೧೨ನೇ'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '೧೩ನೇ', '೧೩ನೇ'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '೧೪ನೇ', '೧೪ನೇ'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '೧೫ನೇ', '೧೫ನೇ'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '೧೬ನೇ', '೧೬ನೇ'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '೧೭ನೇ', '೧೭ನೇ'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '೧೮ನೇ', '೧೮ನೇ'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '೧೯ನೇ', '೧೯ನೇ'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '೨೦ನೇ', '೨೦ನೇ'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), 'ទី២១', '21st'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), 'ទី២២', '22nd'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), 'ទី២៣', '23rd'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), 'ទី២៤', '24th'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), 'ទី២៥', '25th'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), 'ទី២៦', '26th'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), 'ទី២៧', '27th'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), 'ទី២៨', '28th'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), 'ទី២៩', '29th'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), 'ទី៣០', '30th'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '೨೧ನೇ', '೨೧ನೇ'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '೨೨ನೇ', '೨೨ನೇ'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '೨೩ನೇ', '೨೩ನೇ'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '೨೪ನೇ', '೨೪ನೇ'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '೨೫ನೇ', '೨೫ನೇ'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '೨೬ನೇ', '೨೬ನೇ'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '೨೭ನೇ', '೨೭ನೇ'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '೨೮ನೇ', '೨೮ನೇ'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '೨೯ನೇ', '೨೯ನೇ'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '೩೦ನೇ', '೩೦ನೇ'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), 'ទី៣១', '31st'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '೩೧ನೇ', '೩೧ನೇ'); }); test('format month', function (assert) { var expected = - 'មករា មករា_កុម្ភៈ កុម្ភៈ_មីនា មីនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split( + 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್ ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋ_ನವೆಂಬರ್ ನವೆಂ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂ'.split( '_' ), i; @@ -61682,7 +63402,7 @@ test('format week', function (assert) { var expected = - 'អាទិត្យ អា អា_ច័ន្ទ ច ច_អង្គារ អ អ_ពុធ ព ព_ព្រហស្បតិ៍ ព្រ ព្រ_សុក្រ សុ សុ_សៅរ៍ ស ស'.split( + 'ಭಾನುವಾರ ಭಾನು ಭಾ_ಸೋಮವಾರ ಸೋಮ ಸೋ_ಮಂಗಳವಾರ ಮಂಗಳ ಮಂ_ಬುಧವಾರ ಬುಧ ಬು_ಗುರುವಾರ ಗುರು ಗು_ಶುಕ್ರವಾರ ಶುಕ್ರ ಶು_ಶನಿವಾರ ಶನಿ ಶ'.split( '_' ), i; @@ -61699,178 +63419,166 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'ប៉ុន្មានវិនាទី', - '44 seconds = ប៉ុន្មានវិនាទី' + 'ಕೆಲವು ಕ್ಷಣಗಳು', + '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'មួយនាទី', - '45 seconds = មួយនាទី' + 'ಒಂದು ನಿಮಿಷ', + '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'មួយនាទី', - '89 seconds = មួយនាទី' + 'ಒಂದು ನಿಮಿಷ', + '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '២ នាទី', - '90 seconds = 2 នាទី' + '೨ ನಿಮಿಷ', + '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '៤៤ នាទី', - '44 minutes = 44 នាទី' + '೪೪ ನಿಮಿಷ', + '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'មួយម៉ោង', - '45 minutes = មួយម៉ោង' + 'ಒಂದು ಗಂಟೆ', + '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'មួយម៉ោង', - '89 minutes = មួយម៉ោង' + 'ಒಂದು ಗಂಟೆ', + '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '២ ម៉ោង', - '90 minutes = 2 ម៉ោង' + '೨ ಗಂಟೆ', + '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '៥ ម៉ោង', - '5 hours = 5 ម៉ោង' + '೫ ಗಂಟೆ', + '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '២១ ម៉ោង', - '21 hours = 21 ម៉ោង' + '೨೧ ಗಂಟೆ', + '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'មួយថ្ងៃ', - '22 hours = មួយថ្ងៃ' + 'ಒಂದು ದಿನ', + '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'មួយថ្ងៃ', - '35 hours = មួយថ្ងៃ' + 'ಒಂದು ದಿನ', + '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '២ ថ្ងៃ', - '36 hours = 2 ថ្ងៃ' + '೨ ದಿನ', + '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'មួយថ្ងៃ', - '1 day = មួយថ្ងៃ' + 'ಒಂದು ದಿನ', + '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '៥ ថ្ងៃ', - '5 days = 5 ថ្ងៃ' + '೫ ದಿನ', + '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '២៥ ថ្ងៃ', - '25 days = 25 ថ្ងៃ' + '೨೫ ದಿನ', + '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'មួយខែ', - '26 days = មួយខែ' + 'ಒಂದು ತಿಂಗಳು', + '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'មួយខែ', - '30 days = មួយខែ' + 'ಒಂದು ತಿಂಗಳು', + '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'មួយខែ', - '43 days = មួយខែ' + 'ಒಂದು ತಿಂಗಳು', + '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '២ ខែ', - '46 days = 2 ខែ' + '೨ ತಿಂಗಳು', + '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '២ ខែ', - '75 days = 2 ខែ' + '೨ ತಿಂಗಳು', + '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '៣ ខែ', - '76 days = 3 ខែ' + '೩ ತಿಂಗಳು', + '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'មួយខែ', - '1 month = មួយខែ' + 'ಒಂದು ತಿಂಗಳು', + '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '៥ ខែ', - '5 months = 5 ខែ' + '೫ ತಿಂಗಳು', + '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'មួយឆ្នាំ', - '345 days = មួយឆ្នាំ' + 'ಒಂದು ವರ್ಷ', + '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '២ ឆ្នាំ', - '548 days = 2 ឆ្នាំ' + '೨ ವರ್ಷ', + '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'មួយឆ្នាំ', - '1 year = មួយឆ្នាំ' + 'ಒಂದು ವರ್ಷ', + '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '៥ ឆ្នាំ', - '5 years = 5 ឆ្នាំ' + '೫ ವರ್ಷ', + '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ប៉ុន្មានវិនាទីទៀត', 'prefix'); - assert.equal(moment(0).from(30000), 'ប៉ុន្មានវិនាទីមុន', 'suffix'); + assert.equal(moment(30000).from(0), 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ', 'prefix'); + assert.equal(moment(0).from(30000), 'ಕೆಲವು ಕ್ಷಣಗಳು ಹಿಂದೆ', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'ប៉ុន្មានវិនាទីមុន', + 'ಕೆಲವು ಕ್ಷಣಗಳು ಹಿಂದೆ', 'now from now should display as in the past' ); }); test('fromNow', function (assert) { assert.equal( - moment() - .add({ - s: 30, - }) - .fromNow(), - 'ប៉ុន្មានវិនាទីទៀត', - 'in a few seconds' - ); - assert.equal( - moment() - .add({ - d: 5, - }) - .fromNow(), - '៥ ថ្ងៃទៀត', - 'in 5 days' + moment().add({ s: 30 }).fromNow(), + 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ', + 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ' ); + assert.equal(moment().add({ d: 5 }).fromNow(), '೫ ದಿನ ನಂತರ', '೫ ದಿನ ನಂತರ'); }); test('calendar day', function (assert) { @@ -61878,32 +63586,32 @@ assert.equal( moment(a).calendar(), - 'ថ្ងៃនេះ ម៉ោង ១២:០០', + 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೧೨:೦೦', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'ថ្ងៃនេះ ម៉ោង ១២:២៥', + 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೧೨:೨೫', 'Now plus 25 min' ); assert.equal( - moment(a).add({ h: 1 }).calendar(), - 'ថ្ងៃនេះ ម៉ោង ១៣:០០', - 'Now plus 1 hour' + moment(a).add({ h: 3 }).calendar(), + 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೩:೦೦', + 'Now plus 3 hours' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'ស្អែក ម៉ោង ១២:០០', + 'ನಾಳೆ ಮಧ್ಯಾಹ್ನ ೧೨:೦೦', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'ថ្ងៃនេះ ម៉ោង ១១:០០', + 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೧೧:೦೦', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'ម្សិលមិញ ម៉ោង ១២:០០', + 'ನಿನ್ನೆ ಮಧ್ಯಾಹ್ನ ೧೨:೦೦', 'yesterday at the same time' ); }); @@ -61911,24 +63619,22 @@ test('calendar next week', function (assert) { var i, m; for (i = 2; i < 7; i++) { - m = moment().add({ - d: i, - }); + m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd [ម៉ោង] LT'), + m.format('dddd[,] LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [ម៉ោង] LT'), + m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [ម៉ោង] LT'), + m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day' ); } @@ -61938,36 +63644,30 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({ - d: i, - }); + m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), + m.format('[ಕೊನೆಯ] dddd[,] LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), + m.format('[ಕೊನೆಯ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), + m.format('[ಕೊನೆಯ] dddd[,] LT'), 'Today - ' + i + ' days end of day' ); } }); test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({ - w: 1, - }), - weeksFromNow = moment().add({ - w: 1, - }); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( @@ -61976,12 +63676,8 @@ 'in 1 week' ); - weeksAgo = moment().subtract({ - w: 2, - }); - weeksFromNow = moment().add({ - w: 2, - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); assert.equal( @@ -61991,31 +63687,79 @@ ); }); + test('meridiem', function (assert) { + assert.equal( + moment([2011, 2, 23, 2, 30]).format('a'), + 'ರಾತ್ರಿ', + 'before dawn' + ); + assert.equal( + moment([2011, 2, 23, 9, 30]).format('a'), + 'ಬೆಳಿಗ್ಗೆ', + 'morning' + ); + assert.equal( + moment([2011, 2, 23, 14, 30]).format('a'), + 'ಮಧ್ಯಾಹ್ನ', + 'during day' + ); + assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'ಸಂಜೆ', 'evening'); + assert.equal( + moment([2011, 2, 23, 19, 30]).format('a'), + 'ಸಂಜೆ', + 'late evening' + ); + assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'ರಾತ್ರಿ', 'night'); + + assert.equal( + moment([2011, 2, 23, 2, 30]).format('A'), + 'ರಾತ್ರಿ', + 'before dawn' + ); + assert.equal( + moment([2011, 2, 23, 9, 30]).format('A'), + 'ಬೆಳಿಗ್ಗೆ', + 'morning' + ); + assert.equal( + moment([2011, 2, 23, 14, 30]).format('A'), + 'ಮಧ್ಯಾಹ್ನ', + ' during day' + ); + assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'ಸಂಜೆ', 'evening'); + assert.equal( + moment([2011, 2, 23, 19, 30]).format('A'), + 'ಸಂಜೆ', + 'late evening' + ); + assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'ರಾತ್ರಿ', 'night'); + }); + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '៥២ ៥២ ទី៥២', - 'Jan 1 2012 should be week 52' + '೧ ೦೧ ೧ನೇ', + 'Jan 1 2012 should be week 1' ); assert.equal( - moment([2012, 0, 2]).format('w ww wo'), - '១ ០១ ទី១', - 'Jan 2 2012 should be week 1' + moment([2012, 0, 7]).format('w ww wo'), + '೧ ೦೧ ೧ನೇ', + 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '១ ០១ ទី១', - 'Jan 8 2012 should be week 1' + '೨ ೦೨ ೨ನೇ', + 'Jan 8 2012 should be week 2' ); assert.equal( - moment([2012, 0, 9]).format('w ww wo'), - '២ ០២ ទី២', - 'Jan 9 2012 should be week 2' + moment([2012, 0, 14]).format('w ww wo'), + '೨ ೦೨ ೨ನೇ', + 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '២ ០២ ទី២', - 'Jan 15 2012 should be week 2' + '೩ ೦೩ ೩ನೇ', + 'Jan 15 2012 should be week 3' ); }); @@ -62414,11 +64158,11 @@ defineCommonLocaleTests(name); } - localeModule('kn'); + localeModule('ko'); test('parse', function (assert) { var tests = - 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋ_ನವೆಂಬರ್ ನವೆಂ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂ'.split( + '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split( '_' ), i; @@ -62429,13 +64173,13 @@ input + ' should be month ' + (i + 1) ); } - // function equalTestStrict(input, mmm, monthIndex) { - // assert.equal( - // moment(input, mmm, true).month(), - // monthIndex, - // input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) - // ); - // } + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); @@ -62448,43 +64192,95 @@ equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - // All strict parsing fails only for month 9 (index 8) - // equalTestStrict(tests[i][1], 'MMM', i); - // equalTestStrict(tests[i][0], 'MMMM', i); - // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); - // equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); - // equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - // equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + } + }); + + test('parse meridiem', function (assert) { + var elements = [ + { + expression: '1981년 9월 8일 오후 2시 30분', + inputFormat: 'YYYY[년] M[월] D[일] A h[시] m[분]', + outputFormat: 'A', + expected: '오후', + }, + { + expression: '1981년 9월 8일 오전 2시 30분', + inputFormat: 'YYYY[년] M[월] D[일] A h[시] m[분]', + outputFormat: 'A h시', + expected: '오전 2시', + }, + { + expression: '14시 30분', + inputFormat: 'H[시] m[분]', + outputFormat: 'A', + expected: '오후', + }, + { + expression: '오후 4시', + inputFormat: 'A h[시]', + outputFormat: 'H', + expected: '16', + }, + ], + i, + l, + it, + actual; + + for (i = 0, l = elements.length; i < l; ++i) { + it = elements[i]; + actual = moment(it.expression, it.inputFormat).format(it.outputFormat); + + assert.equal( + actual, + it.expected, + "'" + + it.outputFormat + + "' of '" + + it.expression + + "' must be '" + + it.expected + + "' but was '" + + actual + + "'." + ); } }); test('format', function (assert) { var a = [ [ - 'dddd, Do MMMM YYYY, a h:mm:ss', - 'ಭಾನುವಾರ, ೧೪ನೇ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫:೫೦', + 'YYYY년 MMMM Do dddd a h:mm:ss', + '2010년 2월 14일 일요일 오후 3:25:50', ], - ['ddd, a h ಗಂಟೆ', 'ಭಾನು, ಮಧ್ಯಾಹ್ನ ೩ ಗಂಟೆ'], - ['M Mo MM MMMM MMM', '೨ ೨ನೇ ೦೨ ಫೆಬ್ರವರಿ ಫೆಬ್ರ'], - ['YYYY YY', '೨೦೧೦ ೧೦'], - ['D Do DD', '೧೪ ೧೪ನೇ ೧೪'], - ['d do dddd ddd dd', '೦ ೦ನೇ ಭಾನುವಾರ ಭಾನು ಭಾ'], - ['DDD DDDo DDDD', '೪೫ ೪೫ನೇ ೦೪೫'], - ['w wo ww', '೮ ೮ನೇ ೦೮'], - ['h hh', '೩ ೦೩'], - ['H HH', '೧೫ ೧೫'], - ['m mm', '೨೫ ೨೫'], - ['s ss', '೫೦ ೫೦'], - ['a A', 'ಮಧ್ಯಾಹ್ನ ಮಧ್ಯಾಹ್ನ'], - ['LTS', 'ಮಧ್ಯಾಹ್ನ ೩:೨೫:೫೦'], - ['L', '೧೪/೦೨/೨೦೧೦'], - ['LL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦'], - ['LLL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], - ['LLLL', 'ಭಾನುವಾರ, ೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], - ['l', '೧೪/೨/೨೦೧೦'], - ['ll', '೧೪ ಫೆಬ್ರ ೨೦೧೦'], - ['lll', '೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], - ['llll', 'ಭಾನು, ೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], + ['ddd A h', '일 오후 3'], + ['M Mo MM MMMM MMM', '2 2월 02 2월 2월'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14일 14'], + ['d do dddd ddd dd', '0 0일 일요일 일 일'], + ['DDD DDDo DDDD', '45 45일 045'], + ['w wo ww', '8 8주 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '오후 오후'], + ['일년 중 DDDo째 되는 날', '일년 중 45일째 되는 날'], + ['LTS', '오후 3:25:50'], + ['L', '2010.02.14.'], + ['LL', '2010년 2월 14일'], + ['LLL', '2010년 2월 14일 오후 3:25'], + ['LLLL', '2010년 2월 14일 일요일 오후 3:25'], + ['l', '2010.02.14.'], + ['ll', '2010년 2월 14일'], + ['lll', '2010년 2월 14일 오후 3:25'], + ['llll', '2010년 2월 14일 일요일 오후 3:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -62494,45 +64290,45 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '೧ನೇ', '೧ನೇ'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '೨ನೇ', '೨ನೇ'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '೩ನೇ', '೩ನೇ'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '೪ನೇ', '೪ನೇ'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '೫ನೇ', '೫ನೇ'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '೬ನೇ', '೬ನೇ'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '೭ನೇ', '೭ನೇ'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '೮ನೇ', '೮ನೇ'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '೯ನೇ', '೯ನೇ'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '೧೦ನೇ', '೧೦ನೇ'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1일', '1일'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2일', '2일'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3일', '3일'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4일', '4일'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5일', '5일'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6일', '6일'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7일', '7일'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8일', '8일'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9일', '9일'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10일', '10일'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '೧೧ನೇ', '೧೧ನೇ'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '೧೨ನೇ', '೧೨ನೇ'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '೧೩ನೇ', '೧೩ನೇ'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '೧೪ನೇ', '೧೪ನೇ'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '೧೫ನೇ', '೧೫ನೇ'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '೧೬ನೇ', '೧೬ನೇ'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '೧೭ನೇ', '೧೭ನೇ'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '೧೮ನೇ', '೧೮ನೇ'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '೧೯ನೇ', '೧೯ನೇ'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '೨೦ನೇ', '೨೦ನೇ'); + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11일', '11일'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12일', '12일'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13일', '13일'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14일', '14일'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15일', '15일'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16일', '16일'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17일', '17일'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18일', '18일'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19일', '19일'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20일', '20일'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '೨೧ನೇ', '೨೧ನೇ'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '೨೨ನೇ', '೨೨ನೇ'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '೨೩ನೇ', '೨೩ನೇ'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '೨೪ನೇ', '೨೪ನೇ'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '೨೫ನೇ', '೨೫ನೇ'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '೨೬ನೇ', '೨೬ನೇ'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '೨೭ನೇ', '೨೭ನೇ'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '೨೮ನೇ', '೨೮ನೇ'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '೨೯ನೇ', '೨೯ನೇ'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '೩೦ನೇ', '೩೦ನೇ'); + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21일', '21일'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22일', '22일'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23일', '23일'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24일', '24일'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25일', '25일'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26일', '26일'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27일', '27일'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28일', '28일'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29일', '29일'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30일', '30일'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '೩೧ನೇ', '೩೧ನೇ'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31일', '31일'); }); test('format month', function (assert) { var expected = - 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್ ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋ_ನವೆಂಬರ್ ನವೆಂ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂ'.split( + '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split( '_' ), i; @@ -62547,7 +64343,7 @@ test('format week', function (assert) { var expected = - 'ಭಾನುವಾರ ಭಾನು ಭಾ_ಸೋಮವಾರ ಸೋಮ ಸೋ_ಮಂಗಳವಾರ ಮಂಗಳ ಮಂ_ಬುಧವಾರ ಬುಧ ಬು_ಗುರುವಾರ ಗುರು ಗು_ಶುಕ್ರವಾರ ಶುಕ್ರ ಶು_ಶನಿವಾರ ಶನಿ ಶ'.split( + '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split( '_' ), i; @@ -62564,155 +64360,155 @@ var start = moment([2007, 1, 28]); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - 'ಕೆಲವು ಕ್ಷಣಗಳು', - '44 seconds = a few seconds' + '몇 초', + '44초 = 몇 초' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - 'ಒಂದು ನಿಮಿಷ', - '45 seconds = a minute' + '1분', + '45초 = 1분' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - 'ಒಂದು ನಿಮಿಷ', - '89 seconds = a minute' + '1분', + '89초 = 1분' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '೨ ನಿಮಿಷ', - '90 seconds = 2 minutes' + '2분', + '90초 = 2분' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '೪೪ ನಿಮಿಷ', - '44 minutes = 44 minutes' + '44분', + '44분 = 44분' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'ಒಂದು ಗಂಟೆ', - '45 minutes = an hour' + '한 시간', + '45분 = 한 시간' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'ಒಂದು ಗಂಟೆ', - '89 minutes = an hour' + '한 시간', + '89분 = 한 시간' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '೨ ಗಂಟೆ', - '90 minutes = 2 hours' + '2시간', + '90분 = 2시간' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '೫ ಗಂಟೆ', - '5 hours = 5 hours' + '5시간', + '5시간 = 5시간' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '೨೧ ಗಂಟೆ', - '21 hours = 21 hours' + '21시간', + '21시간 = 21시간' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'ಒಂದು ದಿನ', - '22 hours = a day' + '하루', + '22시간 = 하루' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'ಒಂದು ದಿನ', - '35 hours = a day' + '하루', + '35시간 = 하루' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '೨ ದಿನ', - '36 hours = 2 days' + '2일', + '36시간 = 2일' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'ಒಂದು ದಿನ', - '1 day = a day' + '하루', + '하루 = 하루' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '೫ ದಿನ', - '5 days = 5 days' + '5일', + '5일 = 5일' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '೨೫ ದಿನ', - '25 days = 25 days' + '25일', + '25일 = 25일' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'ಒಂದು ತಿಂಗಳು', - '26 days = a month' + '한 달', + '26일 = 한 달' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'ಒಂದು ತಿಂಗಳು', - '30 days = a month' + '한 달', + '30일 = 한 달' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'ಒಂದು ತಿಂಗಳು', - '43 days = a month' + '한 달', + '45일 = 한 달' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '೨ ತಿಂಗಳು', - '46 days = 2 months' + '2달', + '46일 = 2달' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '೨ ತಿಂಗಳು', - '75 days = 2 months' + '2달', + '75일 = 2달' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '೩ ತಿಂಗಳು', - '76 days = 3 months' + '3달', + '76일 = 3달' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'ಒಂದು ತಿಂಗಳು', - '1 month = a month' + '한 달', + '1달 = 한 달' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '೫ ತಿಂಗಳು', - '5 months = 5 months' + '5달', + '5달 = 5달' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - 'ಒಂದು ವರ್ಷ', - '345 days = a year' + '일 년', + '345일 = 일 년' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '೨ ವರ್ಷ', - '548 days = 2 years' + '2년', + '548일 = 2년' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - 'ಒಂದು ವರ್ಷ', - '1 year = a year' + '일 년', + '일 년 = 일 년' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '೫ ವರ್ಷ', - '5 years = 5 years' + '5년', + '5년 = 5년' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ', 'prefix'); - assert.equal(moment(0).from(30000), 'ಕೆಲವು ಕ್ಷಣಗಳು ಹಿಂದೆ', 'suffix'); + assert.equal(moment(30000).from(0), '몇 초 후', 'prefix'); + assert.equal(moment(0).from(30000), '몇 초 전', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - 'ಕೆಲವು ಕ್ಷಣಗಳು ಹಿಂದೆ', + '몇 초 전', 'now from now should display as in the past' ); }); @@ -62720,10 +64516,10 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ', - 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ' + '몇 초 후', + 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '೫ ದಿನ ನಂತರ', '೫ ದಿನ ನಂತರ'); + assert.equal(moment().add({ d: 5 }).fromNow(), '5일 후', 'in 5 days'); }); test('calendar day', function (assert) { @@ -62731,32 +64527,32 @@ assert.equal( moment(a).calendar(), - 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೧೨:೦೦', + '오늘 오후 12:00', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೧೨:೨೫', + '오늘 오후 12:25', 'Now plus 25 min' ); assert.equal( - moment(a).add({ h: 3 }).calendar(), - 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೩:೦೦', - 'Now plus 3 hours' + moment(a).add({ h: 1 }).calendar(), + '오늘 오후 1:00', + 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - 'ನಾಳೆ ಮಧ್ಯಾಹ್ನ ೧೨:೦೦', + '내일 오후 12:00', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - 'ಇಂದು ಮಧ್ಯಾಹ್ನ ೧೧:೦೦', + '오늘 오전 11:00', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - 'ನಿನ್ನೆ ಮಧ್ಯಾಹ್ನ ೧೨:೦೦', + '어제 오후 12:00', 'yesterday at the same time' ); }); @@ -62767,19 +64563,19 @@ m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('dddd LT'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('dddd LT'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd[,] LT'), + m.format('dddd LT'), 'Today + ' + i + ' days end of day' ); } @@ -62787,24 +64583,23 @@ test('calendar last week', function (assert) { var i, m; - for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('[ಕೊನೆಯ] dddd[,] LT'), + m.format('지난주 dddd LT'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('[ಕೊನೆಯ] dddd[,] LT'), + m.format('지난주 dddd LT'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('[ಕೊನೆಯ] dddd[,] LT'), + m.format('지난주 dddd LT'), 'Today - ' + i + ' days end of day' ); } @@ -62832,78 +64627,30 @@ ); }); - test('meridiem', function (assert) { - assert.equal( - moment([2011, 2, 23, 2, 30]).format('a'), - 'ರಾತ್ರಿ', - 'before dawn' - ); - assert.equal( - moment([2011, 2, 23, 9, 30]).format('a'), - 'ಬೆಳಿಗ್ಗೆ', - 'morning' - ); - assert.equal( - moment([2011, 2, 23, 14, 30]).format('a'), - 'ಮಧ್ಯಾಹ್ನ', - 'during day' - ); - assert.equal(moment([2011, 2, 23, 17, 30]).format('a'), 'ಸಂಜೆ', 'evening'); - assert.equal( - moment([2011, 2, 23, 19, 30]).format('a'), - 'ಸಂಜೆ', - 'late evening' - ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('a'), 'ರಾತ್ರಿ', 'night'); - - assert.equal( - moment([2011, 2, 23, 2, 30]).format('A'), - 'ರಾತ್ರಿ', - 'before dawn' - ); - assert.equal( - moment([2011, 2, 23, 9, 30]).format('A'), - 'ಬೆಳಿಗ್ಗೆ', - 'morning' - ); - assert.equal( - moment([2011, 2, 23, 14, 30]).format('A'), - 'ಮಧ್ಯಾಹ್ನ', - ' during day' - ); - assert.equal(moment([2011, 2, 23, 17, 30]).format('A'), 'ಸಂಜೆ', 'evening'); - assert.equal( - moment([2011, 2, 23, 19, 30]).format('A'), - 'ಸಂಜೆ', - 'late evening' - ); - assert.equal(moment([2011, 2, 23, 21, 20]).format('A'), 'ರಾತ್ರಿ', 'night'); - }); - - test('weeks year starting sunday formatted', function (assert) { + test('weeks year starting sunday format', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '೧ ೦೧ ೧ನೇ', + '1 01 1주', 'Jan 1 2012 should be week 1' ); assert.equal( moment([2012, 0, 7]).format('w ww wo'), - '೧ ೦೧ ೧ನೇ', + '1 01 1주', 'Jan 7 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '೨ ೦೨ ೨ನೇ', + '2 02 2주', 'Jan 8 2012 should be week 2' ); assert.equal( moment([2012, 0, 14]).format('w ww wo'), - '೨ ೦೨ ೨ನೇ', + '2 02 2주', 'Jan 14 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '೩ ೦೩ ೩ನೇ', + '3 03 3주', 'Jan 15 2012 should be week 3' ); }); @@ -63303,14 +65050,25 @@ defineCommonLocaleTests(name); } - localeModule('ko'); + localeModule('ku-kmr'); test('parse', function (assert) { - var tests = - '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split( - '_' - ), - i; + var i, + tests = [ + 'Rêbendan Rêb', + 'Sibat Sib', + 'Adar Ada', + 'Nîsan Nîs', + 'Gulan Gul', + 'Hezîran Hez', + 'Tîrmeh Tîr', + 'Tebax Teb', + 'Îlon Îlo', + 'Cotmeh Cot', + 'Mijdar Mij', + 'Berfanbar Ber', + ]; + function equalTest(input, mmm, i) { assert.equal( moment(input, mmm).month(), @@ -63318,6 +65076,7 @@ input + ' should be month ' + (i + 1) ); } + function equalTestStrict(input, mmm, monthIndex) { assert.equal( moment(input, mmm, true).month(), @@ -63346,137 +65105,171 @@ } }); - test('parse meridiem', function (assert) { - var elements = [ - { - expression: '1981년 9월 8일 오후 2시 30분', - inputFormat: 'YYYY[년] M[월] D[일] A h[시] m[분]', - outputFormat: 'A', - expected: '오후', - }, - { - expression: '1981년 9월 8일 오전 2시 30분', - inputFormat: 'YYYY[년] M[월] D[일] A h[시] m[분]', - outputFormat: 'A h시', - expected: '오전 2시', - }, - { - expression: '14시 30분', - inputFormat: 'H[시] m[분]', - outputFormat: 'A', - expected: '오후', - }, - { - expression: '오후 4시', - inputFormat: 'A h[시]', - outputFormat: 'H', - expected: '16', - }, - ], - i, - l, - it, - actual; - - for (i = 0, l = elements.length; i < l; ++i) { - it = elements[i]; - actual = moment(it.expression, it.inputFormat).format(it.outputFormat); - - assert.equal( - actual, - it.expected, - "'" + - it.outputFormat + - "' of '" + - it.expression + - "' must be '" + - it.expected + - "' but was '" + - actual + - "'." - ); - } - }); - test('format', function (assert) { var a = [ [ - 'YYYY년 MMMM Do dddd a h:mm:ss', - '2010년 2월 14일 일요일 오후 3:25:50', + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'Yekşem, 14ê Sibat 2010, 3:25:50 pn', ], - ['ddd A h', '일 오후 3'], - ['M Mo MM MMMM MMM', '2 2월 02 2월 2월'], + ['ddd, hA', 'Yek, 3PN'], + ['M Mo MM MMMM MMM', '2 2. 02 Sibat Sib'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 14일 14'], - ['d do dddd ddd dd', '0 0일 일요일 일 일'], - ['DDD DDDo DDDD', '45 45일 045'], - ['w wo ww', '8 8주 08'], + ['D Do DD', '14 14ê 14'], + ['d do dddd ddd dd', '0 0ê Yekşem Yek Ye'], + ['DDD DDDo DDDD', '45 45ê 045'], + ['w wo ww', '6 6. 06'], ['h hh', '3 03'], ['H HH', '15 15'], ['m mm', '25 25'], ['s ss', '50 50'], - ['a A', '오후 오후'], - ['일년 중 DDDo째 되는 날', '일년 중 45일째 되는 날'], - ['LTS', '오후 3:25:50'], - ['L', '2010.02.14.'], - ['LL', '2010년 2월 14일'], - ['LLL', '2010년 2월 14일 오후 3:25'], - ['LLLL', '2010년 2월 14일 일요일 오후 3:25'], - ['l', '2010.02.14.'], - ['ll', '2010년 2월 14일'], - ['lll', '2010년 2월 14일 오후 3:25'], - ['llll', '2010년 2월 14일 일요일 오후 3:25'], + ['a A', 'pn PN'], + ['DDDo [Adarê]', '45ê Adarê'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14ê Sibata 2010an'], + ['LLL', '14ê Sibata 2010an 15:25'], + ['LLLL', 'Yekşem, 14ê Sibata 2010an 15:25'], + ['l', '14.2.2010'], + ['ll', '14ê Sib. 2010an'], + ['lll', '14ê Sib. 2010an 15:25'], + ['llll', 'Yek., 14ê Sib. 2010an 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; + for (i = 0; i < a.length; i++) { assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1일', '1일'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2일', '2일'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3일', '3일'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4일', '4일'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5일', '5일'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6일', '6일'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7일', '7일'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8일', '8일'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9일', '9일'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10일', '10일'); + test('parse era', function (assert) { + assert.equal(moment('2010 AD', 'y N', true).isValid(), true, '2010 AD'); + assert.equal(moment('2010 AD', 'y N', true).year(), 2010, '2010 AD'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), '11일', '11일'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12일', '12일'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13일', '13일'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14일', '14일'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15일', '15일'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16일', '16일'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17일', '17일'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18일', '18일'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19일', '19일'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20일', '20일'); + assert.equal( + moment('2010 Anno Domini', 'y N', true).isValid(), + false, + '2010 Anno Domini' + ); + assert.equal( + moment('2010 Anno Domini', 'y N', false).isValid(), + true, + '2010 Anno Domini' + ); + assert.equal( + moment('2010 Anno Domini', 'y NNNN', true).isValid(), + true, + '2010 Anno Domini' + ); + assert.equal( + moment('2010 Anno Domini', 'y NNNN', true).year(), + 2010, + '2010 Anno Domini' + ); + assert.equal( + moment('2010 Anno Domini', 'y N', false).year(), + 2010, + '2010 Anno Domini' + ); - assert.equal(moment([2011, 0, 21]).format('DDDo'), '21일', '21일'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22일', '22일'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23일', '23일'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24일', '24일'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25일', '25일'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26일', '26일'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27일', '27일'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28일', '28일'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29일', '29일'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30일', '30일'); + assert.equal(moment('469 BC', 'y N', true).isValid(), true, '469 BC'); + assert.equal(moment('469 BC', 'y N', true).year(), -468, '469 BC'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31일', '31일'); + assert.equal( + moment('469 Before Christ', 'y NNNN', true).isValid(), + true, + '469 Before Christ' + ); + assert.equal( + moment('469 Before Christ', 'y NNNN', true).year(), + -468, + '469 Before Christ' + ); + }); + + test('format era', function (assert) { + var a = [ + ['+000001-01-01', 'N, NN, NNN', 'AD, AD, AD'], + ['+000001-01-01', 'NNNN', 'Anno Domini'], + ['+000001-01-01', 'NNNNN', 'AD'], + ['+000001-01-01', 'y', '1'], + + ['+000000-12-31', 'N, NN, NNN', 'BC, BC, BC'], + ['+000000-12-31', 'NNNN', 'Before Christ'], + ['+000000-12-31', 'NNNNN', 'BC'], + ['+000000-12-31', 'y', '1'], + + ['-000001-12-31', 'N, NN, NNN', 'BC, BC, BC'], + ['-000001-12-31', 'NNNN', 'Before Christ'], + ['-000001-12-31', 'NNNNN', 'BC'], + ['-000001-12-31', 'y', '2'], + ], + i, + l; + + for (i = 0, l = a.length; i < l; ++i) { + assert.equal( + moment(a[i][0]).format(a[i][1]), + a[i][2], + a[i][0] + '; ' + a[i][1] + ' ---> ' + a[i][2] + ); + } + }); + + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1ê', '1st'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2yê', '2nd'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3yê', '3rd'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4ê', '4th'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5ê', '5th'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6ê', '6th'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7ê', '7th'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8ê', '8th'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9ê', '9th'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10ê', '10th'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11ê', '11th'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12ê', '12th'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13ê', '13th'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14ê', '14th'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15ê', '15th'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16ê', '16th'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17ê', '17th'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18ê', '18th'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19ê', '19th'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20ê', '20th'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21ê', '21st'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22yê', '22nd'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23yê', '23rd'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24ê', '24th'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25ê', '25th'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26ê', '26th'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27ê', '27th'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28ê', '28th'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29ê', '29th'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30ê', '30th'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ê', '31st'); }); test('format month', function (assert) { - var expected = - '1월 1월_2월 2월_3월 3월_4월 4월_5월 5월_6월 6월_7월 7월_8월 8월_9월 9월_10월 10월_11월 11월_12월 12월'.split( - '_' - ), - i; + var i, + expected = [ + 'Rêbendan Rêb', + 'Sibat Sib', + 'Adar Ada', + 'Nîsan Nîs', + 'Gulan Gul', + 'Hezîran Hez', + 'Tîrmeh Tîr', + 'Tebax Teb', + 'Îlon Îlo', + 'Cotmeh Cot', + 'Mijdar Mij', + 'Berfanbar Ber', + ]; + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, i, 1]).format('MMMM MMM'), @@ -63487,11 +65280,17 @@ }); test('format week', function (assert) { - var expected = - '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split( - '_' - ), - i; + var i, + expected = [ + 'Yekşem Yek Ye', + 'Duşem Du Du', + 'Sêşem Sê Sê', + 'Çarşem Çar Ça', + 'Pêncşem Pên Pê', + 'În În În', + 'Şemî Şem Şe', + ]; + for (i = 0; i < expected.length; i++) { assert.equal( moment([2011, 0, 2 + i]).format('dddd ddd dd'), @@ -63503,157 +65302,158 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); + assert.equal( start.from(moment([2007, 1, 28]).add({ s: 44 }), true), - '몇 초', - '44초 = 몇 초' + 'çend sanîye', + '44 seconds = a few seconds' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 45 }), true), - '1분', - '45초 = 1분' + 'deqîqeyek', + '45 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 89 }), true), - '1분', - '89초 = 1분' + 'deqîqeyek', + '89 seconds = a minute' ); assert.equal( start.from(moment([2007, 1, 28]).add({ s: 90 }), true), - '2분', - '90초 = 2분' + '2 deqîqe', + '90 seconds = 2 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 44 }), true), - '44분', - '44분 = 44분' + '44 deqîqe', + '44 minutes = 44 minutes' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - '한 시간', - '45분 = 한 시간' + 'saetek', + '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - '한 시간', - '89분 = 한 시간' + 'saetek', + '89 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 90 }), true), - '2시간', - '90분 = 2시간' + '2 saet', + '90 minutes = 2 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 5 }), true), - '5시간', - '5시간 = 5시간' + '5 saet', + '5 hours = 5 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 21 }), true), - '21시간', - '21시간 = 21시간' + '21 saet', + '21 hours = 21 hours' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - '하루', - '22시간 = 하루' + 'rojek', + '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - '하루', - '35시간 = 하루' + 'rojek', + '35 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 36 }), true), - '2일', - '36시간 = 2일' + '2 roj', + '36 hours = 2 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - '하루', - '하루 = 하루' + 'rojek', + '1 day = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 5 }), true), - '5일', - '5일 = 5일' + '5 roj', + '5 days = 5 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 25 }), true), - '25일', - '25일 = 25일' + '25 roj', + '25 days = 25 days' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - '한 달', - '26일 = 한 달' + 'mehek', + '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - '한 달', - '30일 = 한 달' + 'mehek', + '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - '한 달', - '45일 = 한 달' + 'mehek', + '43 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 46 }), true), - '2달', - '46일 = 2달' + '2 meh', + '46 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 74 }), true), - '2달', - '75일 = 2달' + '2 meh', + '75 days = 2 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 76 }), true), - '3달', - '76일 = 3달' + '3 meh', + '76 days = 3 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - '한 달', - '1달 = 한 달' + 'mehek', + '1 month = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 5 }), true), - '5달', - '5달 = 5달' + '5 meh', + '5 months = 5 months' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 345 }), true), - '일 년', - '345일 = 일 년' + 'salek', + '345 days = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 548 }), true), - '2년', - '548일 = 2년' + '2 sal', + '548 days = 2 years' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 1 }), true), - '일 년', - '일 년 = 일 년' + 'salek', + '1 year = a year' ); assert.equal( start.from(moment([2007, 1, 28]).add({ y: 5 }), true), - '5년', - '5년 = 5년' + '5 sal', + '5 years = 5 years' ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), '몇 초 후', 'prefix'); - assert.equal(moment(0).from(30000), '몇 초 전', 'suffix'); + assert.equal(moment(30000).from(0), 'di çend sanîyeyan de', 'prefix'); + assert.equal(moment(0).from(30000), 'berî çend sanîyeyan', 'suffix'); }); test('now from now', function (assert) { assert.equal( moment().fromNow(), - '몇 초 전', + 'berî çend sanîyeyan', 'now from now should display as in the past' ); }); @@ -63661,10 +65461,14 @@ test('fromNow', function (assert) { assert.equal( moment().add({ s: 30 }).fromNow(), - '몇 초 후', + 'di çend sanîyeyan de', 'in a few seconds' ); - assert.equal(moment().add({ d: 5 }).fromNow(), '5일 후', 'in 5 days'); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'di 5 rojan de', + 'in 5 days' + ); }); test('calendar day', function (assert) { @@ -63672,55 +65476,56 @@ assert.equal( moment(a).calendar(), - '오늘 오후 12:00', + 'Îro di saet 12:00 de', 'today at the same time' ); assert.equal( moment(a).add({ m: 25 }).calendar(), - '오늘 오후 12:25', + 'Îro di saet 12:25 de', 'Now plus 25 min' ); assert.equal( moment(a).add({ h: 1 }).calendar(), - '오늘 오후 1:00', + 'Îro di saet 13:00 de', 'Now plus 1 hour' ); assert.equal( moment(a).add({ d: 1 }).calendar(), - '내일 오후 12:00', + 'Sibê di saet 12:00 de', 'tomorrow at the same time' ); assert.equal( moment(a).subtract({ h: 1 }).calendar(), - '오늘 오전 11:00', + 'Îro di saet 11:00 de', 'Now minus 1 hour' ); assert.equal( moment(a).subtract({ d: 1 }).calendar(), - '어제 오후 12:00', + 'Duh di saet 12:00 de', 'yesterday at the same time' ); }); test('calendar next week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().add({ d: i }); assert.equal( m.calendar(), - m.format('dddd LT'), + m.format('dddd [di saet] LT [de]'), 'Today + ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd LT'), + m.format('dddd [di saet] LT [de]'), 'Today + ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd LT'), + m.format('dddd [di saet] LT [de]'), 'Today + ' + i + ' days end of day' ); } @@ -63728,23 +65533,24 @@ test('calendar last week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { m = moment().subtract({ d: i }); assert.equal( m.calendar(), - m.format('지난주 dddd LT'), + m.format('dddd[a borî di saet] LT [de]'), 'Today - ' + i + ' days current time' ); m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('지난주 dddd LT'), + m.format('dddd[a borî di saet] LT [de]'), 'Today - ' + i + ' days beginning of day' ); m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('지난주 dddd LT'), + m.format('dddd[a borî di saet] LT [de]'), 'Today - ' + i + ' days end of day' ); } @@ -63772,34 +65578,58 @@ ); }); - test('weeks year starting sunday format', function (assert) { + test('weeks year starting sunday formatted', function (assert) { assert.equal( moment([2012, 0, 1]).format('w ww wo'), - '1 01 1주', - 'Jan 1 2012 should be week 1' + '52 52 52.', + 'Jan 1 2012 should be week 52' ); assert.equal( - moment([2012, 0, 7]).format('w ww wo'), - '1 01 1주', - 'Jan 7 2012 should be week 1' + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1.', + 'Jan 2 2012 should be week 1' ); assert.equal( moment([2012, 0, 8]).format('w ww wo'), - '2 02 2주', - 'Jan 8 2012 should be week 2' + '1 01 1.', + 'Jan 8 2012 should be week 1' ); assert.equal( - moment([2012, 0, 14]).format('w ww wo'), - '2 02 2주', - 'Jan 14 2012 should be week 2' + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2.', + 'Jan 9 2012 should be week 2' ); assert.equal( moment([2012, 0, 15]).format('w ww wo'), - '3 03 3주', - 'Jan 15 2012 should be week 3' + '2 02 2.', + 'Jan 15 2012 should be week 2' ); }); + test('weekdays strict parsing', function (assert) { + var m = moment('2015-01-01T12', moment.ISO_8601, true), + locale = moment.localeData('ku-kmr'), + i; + + for (i = 0; i < 7; ++i) { + assert.equal( + moment(locale.weekdays(m.day(i), ''), 'dddd', true).isValid(), + true, + 'parse weekday ' + i + ); + assert.equal( + moment(locale.weekdaysShort(m.day(i), ''), 'ddd', true).isValid(), + true, + 'parse short weekday ' + i + ); + assert.equal( + moment(locale.weekdaysMin(m.day(i), ''), 'dd', true).isValid(), + true, + 'parse min weekday ' + i + ); + } + }); + }))); @@ -78475,12 +80305,12 @@ ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 45 }), true), - 'en time', + 'én time', '45 minutes = an hour' ); assert.equal( start.from(moment([2007, 1, 28]).add({ m: 89 }), true), - 'en time', + 'én time', '89 minutes = an hour' ); assert.equal( @@ -78500,12 +80330,12 @@ ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 22 }), true), - 'en dag', + 'én dag', '22 hours = a day' ); assert.equal( start.from(moment([2007, 1, 28]).add({ h: 35 }), true), - 'en dag', + 'én dag', '35 hours = a day' ); assert.equal( @@ -78515,7 +80345,7 @@ ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 1 }), true), - 'en dag', + 'én dag', '1 day = a day' ); assert.equal( @@ -78530,17 +80360,17 @@ ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 26 }), true), - 'en måned', + 'én måned', '26 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 30 }), true), - 'en måned', + 'én måned', '30 days = a month' ); assert.equal( start.from(moment([2007, 1, 28]).add({ d: 43 }), true), - 'en måned', + 'én måned', '43 days = a month' ); assert.equal( @@ -78560,7 +80390,7 @@ ); assert.equal( start.from(moment([2007, 1, 28]).add({ M: 1 }), true), - 'en måned', + 'én måned', '1 month = a month' ); assert.equal( @@ -119933,22 +121763,22 @@ diff < -6 ? 'sameElse' : diff < -1 - ? 'lastWeek' - : diff < 0 - ? 'lastDay' - : diff < 1 - ? 'sameDay' - : diff < 2 - ? 'nextDay' - : diff < 7 - ? 'nextWeek' - : myMoment.month() === now.month() && - myMoment.year() === now.year() - ? 'thisMonth' - : nextMonth.month() === myMoment.month() && - nextMonth.year() === myMoment.year() - ? 'nextMonth' - : 'sameElse'; + ? 'lastWeek' + : diff < 0 + ? 'lastDay' + : diff < 1 + ? 'sameDay' + : diff < 2 + ? 'nextDay' + : diff < 7 + ? 'nextWeek' + : myMoment.month() === now.month() && + myMoment.year() === now.year() + ? 'thisMonth' + : nextMonth.month() === myMoment.month() && + nextMonth.year() === myMoment.year() + ? 'nextMonth' + : 'sameElse'; return retVal; }; @@ -122434,8 +124264,8 @@ ); assert.equal( moment('2012-05-25', 'YYYY-M-DD', true).isValid(), - true, - 'valid one-digit month' + false, + 'isValid one-digit month' ); assert.equal( moment('2012-05-25', 'YYYY-MM-DD', true).isValid(), @@ -122455,8 +124285,8 @@ ); assert.equal( moment('2012-05-02', 'YYYY-MM-D', true).isValid(), - true, - 'valid two-digit day' + false, + 'isValid two-digit day' ); assert.equal( moment('2012-05-02', 'YYYY-MM-DD', true).isValid(), @@ -122492,6 +124322,114 @@ 'invalid three-digit milisecond' ); + assert.equal( + moment('2002-05-02 09:30:26', 'YYYY-MM-DD H:mm:ss', true).isValid(), + false, + 'invalid two-digit hour' + ); + + assert.equal( + moment('2002-05-02 11:30:26', 'YYYY-MM-DD H:mm:ss', true).isValid(), + true, + 'valid two-digit hour' + ); + + assert.equal( + moment('2002-05-02 09:30:26', 'YYYY-MM-DD h:mm:ss', true).isValid(), + false, + 'invalid two-digit hour' + ); + + assert.equal( + moment('2002-05-02 11:30:26', 'YYYY-MM-DD h:mm:ss', true).isValid(), + true, + 'valid two-digit hour' + ); + + assert.equal( + moment('2002-05-02 09:30:26', 'YYYY-MM-DD k:mm:ss', true).isValid(), + false, + 'invalid two-digit hour' + ); + + assert.equal( + moment('2002-05-02 11:30:26', 'YYYY-MM-DD k:mm:ss', true).isValid(), + true, + 'valid two-digit hour' + ); + + assert.equal( + moment('2002-05-02 11:09:26', 'YYYY-MM-DD hh:m:ss', true).isValid(), + false, + 'invalid two-digit minute' + ); + + assert.equal( + moment('2002-05-02 11:12:26', 'YYYY-MM-DD hh:m:ss', true).isValid(), + true, + 'valid two-digit minute' + ); + + assert.equal( + moment('2002-05-02 11:09:06', 'YYYY-MM-DD hh:mm:s', true).isValid(), + false, + 'invalid two-digit second' + ); + + assert.equal( + moment('2002-05-02 11:09:16', 'YYYY-MM-DD hh:mm:s', true).isValid(), + true, + 'valid two-digit second' + ); + + assert.equal( + moment('2012-W07', 'YYYY-[W]W', true).isValid(), + false, + 'invalid two-digit week' + ); + + assert.equal( + moment('2012-W17', 'YYYY-[W]W', true).isValid(), + true, + 'valid two-digit week' + ); + + assert.equal( + moment('2012-W07', 'YYYY-[W]w', true).isValid(), + false, + 'invalid two-digit week' + ); + + assert.equal( + moment('2012-W17', 'YYYY-[W]w', true).isValid(), + true, + 'valid two-digit week' + ); + + assert.equal( + moment('08 June 2012', ['D MMMM YYYY'], true).isValid(), + false, + 'invalid two-digit day' + ); + + assert.equal( + moment('18 June 2012', ['D MMMM YYYY'], true).isValid(), + true, + 'valid two-digit day' + ); + + assert.equal( + moment('2012-05-02', 'YYYY-M-DD', true).isValid(), + false, + 'invalid two-digit month' + ); + + assert.equal( + moment('2012-11-02', 'YYYY-M-DD', true).isValid(), + true, + 'valid two-digit month' + ); + assert.equal( moment('1', 'SS', true).isValid(), false, @@ -123304,10 +125242,6 @@ return Object.prototype.hasOwnProperty.call(a, b); } - function addUnitAlias(unit, shorthand) { - var lowerCase = unit.toLowerCase(); - } - var hookCallback; function hooks() { @@ -123321,30 +125255,6 @@ ); } - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - function absFloor(number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; - } - function zeroFill(number, targetLength, forceSign) { var absNumber = '' + Math.abs(number), zerosToFill = targetLength - absNumber.length, @@ -123396,6 +125306,8 @@ match1to4 = /\d{1,4}/, // 0 - 9999 match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 matchSigned = /[+-]?\d+/, // -inf - inf + match1to2NoLeadingZero = /^[1-9]\d?/, // 1-99 + match1to2HasZero = /^([1-9]\d|\d)/, // 0-99 regexes; regexes = {}; @@ -123415,6 +125327,26 @@ ); } + function absFloor(number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; + } + var tokens = {}; function addParseToken(token, callback) { @@ -123442,12 +125374,57 @@ }); } + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + var YEAR = 0, MONTH = 1, HOUR = 3, MINUTE = 4, SECOND = 5; + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? zeroFill(y, 4) : '+' + y; + }); + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = + input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); + + // HOOKS + + hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + function mod(n, x) { return ((n % x) + x) % x; } @@ -123559,64 +125536,14 @@ // FORMATTING - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? zeroFill(y, 4) : '+' + y; - }); - - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); - - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - - // ALIASES - - addUnitAlias('year'); - - // PARSING - - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); - - addParseToken(['YYYYY', 'YYYYYY'], YEAR); - addParseToken('YYYY', function (input, array) { - array[YEAR] = - input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); - }); - addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); - }); - - // HOOKS - - hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - // FORMATTING - addFormatToken('w', ['ww', 2], 'wo', 'week'); addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - // ALIASES - - addUnitAlias('week'); - addUnitAlias('isoWeek'); - // PARSING - addRegexToken('w', match1to2); + addRegexToken('w', match1to2, match1to2NoLeadingZero); addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); + addRegexToken('W', match1to2, match1to2NoLeadingZero); addRegexToken('WW', match1to2, match2); addWeekParseToken( @@ -123645,12 +125572,6 @@ addFormatToken('e', 0, 0, 'weekday'); addFormatToken('E', 0, 0, 'isoWeekday'); - // ALIASES - - addUnitAlias('day'); - addUnitAlias('weekday'); - addUnitAlias('isoWeekday'); - // PARSING addRegexToken('d', match1to2); @@ -123733,10 +125654,6 @@ meridiem('a', true); meridiem('A', false); - // ALIASES - - addUnitAlias('hour'); - // PARSING function matchMeridiem(isStrict, locale) { @@ -123745,9 +125662,9 @@ addRegexToken('a', matchMeridiem); addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); + addRegexToken('H', match1to2, match1to2HasZero); + addRegexToken('h', match1to2, match1to2NoLeadingZero); + addRegexToken('k', match1to2, match1to2NoLeadingZero); addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); addRegexToken('kk', match1to2, match2); @@ -123839,13 +125756,9 @@ return this.localeData().months(this, format); }); - // ALIASES - - addUnitAlias('month'); - // PARSING - addRegexToken('M', match1to2); + addRegexToken('M', match1to2, match1to2NoLeadingZero); addRegexToken('MM', match1to2, match2); addRegexToken('MMM', function (isStrict, locale) { return locale.monthsShortRegex(isStrict); @@ -127557,6 +129470,12 @@ durationObject.foo(5); }); + test('valueOf and asMilliseconds have the same function', function (assert) { + var t1 = +moment.duration({ months: 2 }), + t2 = moment.duration({ months: 2 }).asMilliseconds(); + assert.ok(t1 === t2, 'the final value should be equal'); + }); + }))); @@ -136150,6 +138069,29 @@ } }); + test('destructive operation', function (assert) { + assert.equal( + moment('2018-05-15').add(100, 'years').isValid(), + true, + 'add 100 years is valid' + ); + assert.equal( + moment('2018-05-15').add(1000000, 'years').isValid(), + false, + 'add 1000000 years is invalid' + ); + assert.equal( + moment('2018-05-15').subtract(100, 'years').isValid(), + true, + 'subtract 100 years is valid' + ); + assert.equal( + moment('2018-05-15').subtract(1000000, 'years').isValid(), + false, + 'subtract 1000000 years is invalid' + ); + }); + }))); @@ -143269,6 +145211,14 @@ assert.equal(moment([2008, 11, 29]).weekYear(), 2009); assert.equal(moment([2009, 11, 27]).weekYear(), 2009); assert.equal(moment([2009, 11, 28]).weekYear(), 2010); + + moment.locale('dow:1 doy:4', { week: { dow: 1, doy: 4 } }); + assert.equal(moment([2015, 11, 27]).locale('dow:1 doy:4').weekYear(), 2015); + assert.equal( + moment([2015, 11, 27]).locale('dow:1 doy:4').weekYear(2015).date(), + 27 + ); + moment.defineLocale('dow:1 doy:4', null); }); // Verifies that the week number, week day computation is correct for all dow, doy combinations @@ -147283,27 +149233,9 @@ assert.equal(moment().zone(-90).format('ZZ'), '+0130', '-90 -> +0130'); assert.equal(moment().zone(-120).format('ZZ'), '+0200', '-120 -> +0200'); - assert.equal( - moment() - .zone(+60) - .format('ZZ'), - '-0100', - '+60 -> -0100' - ); - assert.equal( - moment() - .zone(+90) - .format('ZZ'), - '-0130', - '+90 -> -0130' - ); - assert.equal( - moment() - .zone(+120) - .format('ZZ'), - '-0200', - '+120 -> -0200' - ); + assert.equal(moment().zone(+60).format('ZZ'), '-0100', '+60 -> -0100'); + assert.equal(moment().zone(+90).format('ZZ'), '-0130', '+90 -> -0130'); + assert.equal(moment().zone(+120).format('ZZ'), '-0200', '+120 -> -0200'); }); test('parse zone without a timezone', function (assert) { diff --git a/moment.js b/moment.js index 05a63b141..4cde9f221 100644 --- a/moment.js +++ b/moment.js @@ -1,5 +1,5 @@ //! moment.js -//! version : 2.29.4 +//! version : 2.30.0 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com @@ -155,24 +155,25 @@ } function isValid(m) { - if (m._isValid == null) { - var flags = getParsingFlags(m), - parsedParts = some.call(flags.parsedDateParts, function (i) { - return i != null; - }), - isNowValid = - !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidEra && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); - + var flags = null, + parsedParts = false, + isNowValid = m._d && !isNaN(m._d.getTime()); + if (isNowValid) { + flags = getParsingFlags(m); + parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); + isNowValid = + flags.overflow < 0 && + !flags.empty && + !flags.invalidEra && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.weekdayMismatch && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); if (m._strict) { isNowValid = isNowValid && @@ -180,12 +181,11 @@ flags.unusedTokens.length === 0 && flags.bigHour === undefined; } - - if (Object.isFrozen == null || !Object.isFrozen(m)) { - m._isValid = isNowValid; - } else { - return isNowValid; - } + } + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } else { + return isNowValid; } return m._isValid; } @@ -630,12 +630,56 @@ return isFunction(format) ? format(output) : format.replace(/%s/i, output); } - var aliases = {}; - - function addUnitAlias(unit, shorthand) { - var lowerCase = unit.toLowerCase(); - aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; - } + var aliases = { + D: 'date', + dates: 'date', + date: 'date', + d: 'day', + days: 'day', + day: 'day', + e: 'weekday', + weekdays: 'weekday', + weekday: 'weekday', + E: 'isoWeekday', + isoweekdays: 'isoWeekday', + isoweekday: 'isoWeekday', + DDD: 'dayOfYear', + dayofyears: 'dayOfYear', + dayofyear: 'dayOfYear', + h: 'hour', + hours: 'hour', + hour: 'hour', + ms: 'millisecond', + milliseconds: 'millisecond', + millisecond: 'millisecond', + m: 'minute', + minutes: 'minute', + minute: 'minute', + M: 'month', + months: 'month', + month: 'month', + Q: 'quarter', + quarters: 'quarter', + quarter: 'quarter', + s: 'second', + seconds: 'second', + second: 'second', + gg: 'weekYear', + weekyears: 'weekYear', + weekyear: 'weekYear', + GG: 'isoWeekYear', + isoweekyears: 'isoWeekYear', + isoweekyear: 'isoWeekYear', + w: 'week', + weeks: 'week', + week: 'week', + W: 'isoWeek', + isoweeks: 'isoWeek', + isoweek: 'isoWeek', + y: 'year', + years: 'year', + year: 'year', + }; function normalizeUnits(units) { return typeof units === 'string' @@ -660,11 +704,24 @@ return normalizedInput; } - var priorities = {}; - - function addUnitPriority(unit, priority) { - priorities[unit] = priority; - } + var priorities = { + date: 9, + day: 11, + weekday: 11, + isoWeekday: 11, + dayOfYear: 4, + hour: 13, + millisecond: 16, + minute: 14, + month: 8, + quarter: 7, + second: 15, + weekYear: 1, + isoWeekYear: 1, + week: 5, + isoWeek: 5, + year: 1, + }; function getPrioritizedUnits(unitsObj) { var units = [], @@ -680,96 +737,6 @@ return units; } - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - function absFloor(number) { - if (number < 0) { - // -0 -> 0 - return Math.ceil(number) || 0; - } else { - return Math.floor(number); - } - } - - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - value = absFloor(coercedNumber); - } - - return value; - } - - function makeGetSet(unit, keepTime) { - return function (value) { - if (value != null) { - set$1(this, unit, value); - hooks.updateOffset(this, keepTime); - return this; - } else { - return get(this, unit); - } - }; - } - - function get(mom, unit) { - return mom.isValid() - ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() - : NaN; - } - - function set$1(mom, unit, value) { - if (mom.isValid() && !isNaN(value)) { - if ( - unit === 'FullYear' && - isLeapYear(mom.year()) && - mom.month() === 1 && - mom.date() === 29 - ) { - value = toInt(value); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit]( - value, - mom.month(), - daysInMonth(value, mom.month()) - ); - } else { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); - } - } - } - - // MOMENTS - - function stringGet(units) { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](); - } - return this; - } - - function stringSet(units, value) { - if (typeof units === 'object') { - units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units), - i, - prioritizedLen = prioritized.length; - for (i = 0; i < prioritizedLen; i++) { - this[prioritized[i].unit](units[prioritized[i].unit]); - } - } else { - units = normalizeUnits(units); - if (isFunction(this[units])) { - return this[units](value); - } - } - return this; - } - var match1 = /\d/, // 0 - 9 match2 = /\d\d/, // 00 - 99 match3 = /\d{3}/, // 000 - 999 @@ -790,6 +757,8 @@ // includes scottish gaelic two word and hyphenated months matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, + match1to2NoLeadingZero = /^[1-9]\d?/, // 1-99 + match1to2HasZero = /^([1-9]\d|\d)/, // 0-99 regexes; regexes = {}; @@ -828,6 +797,26 @@ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } + function absFloor(number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; + } + var tokens = {}; function addParseToken(token, callback) { @@ -861,6 +850,10 @@ } } + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + var YEAR = 0, MONTH = 1, DATE = 2, @@ -871,6 +864,173 @@ WEEK = 7, WEEKDAY = 8; + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? zeroFill(y, 4) : '+' + y; + }); + + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); + + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + + // PARSING + + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); + + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = + input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); + + // HELPERS + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + // HOOKS + + hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', true); + + function getIsLeapYear() { + return isLeapYear(this.year()); + } + + function makeGetSet(unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; + } + + function get(mom, unit) { + if (!mom.isValid()) { + return NaN; + } + + var d = mom._d, + isUTC = mom._isUTC; + + switch (unit) { + case 'Milliseconds': + return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds(); + case 'Seconds': + return isUTC ? d.getUTCSeconds() : d.getSeconds(); + case 'Minutes': + return isUTC ? d.getUTCMinutes() : d.getMinutes(); + case 'Hours': + return isUTC ? d.getUTCHours() : d.getHours(); + case 'Date': + return isUTC ? d.getUTCDate() : d.getDate(); + case 'Day': + return isUTC ? d.getUTCDay() : d.getDay(); + case 'Month': + return isUTC ? d.getUTCMonth() : d.getMonth(); + case 'FullYear': + return isUTC ? d.getUTCFullYear() : d.getFullYear(); + default: + return NaN; // Just in case + } + } + + function set$1(mom, unit, value) { + var d, isUTC, year, month, date; + + if (!mom.isValid() || isNaN(value)) { + return; + } + + d = mom._d; + isUTC = mom._isUTC; + + switch (unit) { + case 'Milliseconds': + return void (isUTC + ? d.setUTCMilliseconds(value) + : d.setMilliseconds(value)); + case 'Seconds': + return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value)); + case 'Minutes': + return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value)); + case 'Hours': + return void (isUTC ? d.setUTCHours(value) : d.setHours(value)); + case 'Date': + return void (isUTC ? d.setUTCDate(value) : d.setDate(value)); + // case 'Day': // Not real + // return void (isUTC ? d.setUTCDay(value) : d.setDay(value)); + // case 'Month': // Not used because we need to pass two variables + // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value)); + case 'FullYear': + break; // See below ... + default: + return; // Just in case + } + + year = value; + month = mom.month(); + date = mom.date(); + date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date; + void (isUTC + ? d.setUTCFullYear(year, month, date) + : d.setFullYear(year, month, date)); + } + + // MOMENTS + + function stringGet(units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; + } + + function stringSet(units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units), + i, + prioritizedLen = prioritized.length; + for (i = 0; i < prioritizedLen; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; + } + function mod(n, x) { return ((n % x) + x) % x; } @@ -919,17 +1079,9 @@ return this.localeData().months(this, format); }); - // ALIASES - - addUnitAlias('month', 'M'); - - // PRIORITY - - addUnitPriority('month', 8); - // PARSING - addRegexToken('M', match1to2); + addRegexToken('M', match1to2, match1to2NoLeadingZero); addRegexToken('MM', match1to2, match2); addRegexToken('MMM', function (isStrict, locale) { return locale.monthsShortRegex(isStrict); @@ -1095,8 +1247,6 @@ // MOMENTS function setMonth(mom, value) { - var dayOfMonth; - if (!mom.isValid()) { // No op return mom; @@ -1114,8 +1264,13 @@ } } - dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + var month = value, + date = mom.date(); + + date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month)); + void (mom._isUTC + ? mom._d.setUTCMonth(month, date) + : mom._d.setMonth(month, date)); return mom; } @@ -1182,27 +1337,24 @@ longPieces = [], mixedPieces = [], i, - mom; + mom, + shortP, + longP; for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); - shortPieces.push(this.monthsShort(mom, '')); - longPieces.push(this.months(mom, '')); - mixedPieces.push(this.months(mom, '')); - mixedPieces.push(this.monthsShort(mom, '')); + shortP = regexEscape(this.monthsShort(mom, '')); + longP = regexEscape(this.months(mom, '')); + shortPieces.push(shortP); + longPieces.push(longP); + mixedPieces.push(longP); + mixedPieces.push(shortP); } // Sorting makes sure if one month (or abbr) is a prefix of another it // will match the longer piece. shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); - for (i = 0; i < 12; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - } - for (i = 0; i < 24; i++) { - mixedPieces[i] = regexEscape(mixedPieces[i]); - } this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._monthsShortRegex = this._monthsRegex; @@ -1216,69 +1368,6 @@ ); } - // FORMATTING - - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? zeroFill(y, 4) : '+' + y; - }); - - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); - - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - - // ALIASES - - addUnitAlias('year', 'y'); - - // PRIORITIES - - addUnitPriority('year', 1); - - // PARSING - - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); - - addParseToken(['YYYYY', 'YYYYYY'], YEAR); - addParseToken('YYYY', function (input, array) { - array[YEAR] = - input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); - }); - addParseToken('YY', function (input, array) { - array[YEAR] = hooks.parseTwoDigitYear(input); - }); - addParseToken('Y', function (input, array) { - array[YEAR] = parseInt(input, 10); - }); - - // HELPERS - - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } - - // HOOKS - - hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; - - // MOMENTS - - var getSetYear = makeGetSet('FullYear', true); - - function getIsLeapYear() { - return isLeapYear(this.year()); - } - function createDate(y, m, d, h, M, s, ms) { // can't just apply() to create a date: // https://stackoverflow.com/q/181348 @@ -1384,21 +1473,11 @@ addFormatToken('w', ['ww', 2], 'wo', 'week'); addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PRIORITIES - - addUnitPriority('week', 5); - addUnitPriority('isoWeek', 5); - // PARSING - addRegexToken('w', match1to2); + addRegexToken('w', match1to2, match1to2NoLeadingZero); addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); + addRegexToken('W', match1to2, match1to2NoLeadingZero); addRegexToken('WW', match1to2, match2); addWeekParseToken( @@ -1460,17 +1539,6 @@ addFormatToken('e', 0, 0, 'weekday'); addFormatToken('E', 0, 0, 'isoWeekday'); - // ALIASES - - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); - - // PRIORITY - addUnitPriority('day', 11); - addUnitPriority('weekday', 11); - addUnitPriority('isoWeekday', 11); - // PARSING addRegexToken('d', match1to2); @@ -1550,24 +1618,24 @@ return m === true ? shiftWeekdays(weekdays, this._week.dow) : m - ? weekdays[m.day()] - : weekdays; + ? weekdays[m.day()] + : weekdays; } function localeWeekdaysShort(m) { return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m - ? this._weekdaysShort[m.day()] - : this._weekdaysShort; + ? this._weekdaysShort[m.day()] + : this._weekdaysShort; } function localeWeekdaysMin(m) { return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m - ? this._weekdaysMin[m.day()] - : this._weekdaysMin; + ? this._weekdaysMin[m.day()] + : this._weekdaysMin; } function handleStrictParse$1(weekdayName, format, strict) { @@ -1716,7 +1784,8 @@ if (!this.isValid()) { return input != null ? this : NaN; } - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + + var day = get(this, 'Day'); if (input != null) { input = parseWeekday(input, this.localeData()); return this.add(input - day, 'd'); @@ -1915,13 +1984,6 @@ meridiem('a', true); meridiem('A', false); - // ALIASES - - addUnitAlias('hour', 'h'); - - // PRIORITY - addUnitPriority('hour', 13); - // PARSING function matchMeridiem(isStrict, locale) { @@ -1930,9 +1992,9 @@ addRegexToken('a', matchMeridiem); addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); + addRegexToken('H', match1to2, match1to2HasZero); + addRegexToken('h', match1to2, match1to2NoLeadingZero); + addRegexToken('k', match1to2, match1to2NoLeadingZero); addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); addRegexToken('kk', match1to2, match2); @@ -2082,7 +2144,8 @@ function isLocaleNameSane(name) { // Prevent names that look like filesystem paths, i.e contain '/' or '\' - return name.match('^[^/\\\\]*$') != null; + // Ensure name is available and function returns boolean + return !!(name && name.match('^[^/\\\\]*$')); } function loadLocale(name) { @@ -2274,21 +2337,21 @@ a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) - ? DATE - : a[HOUR] < 0 || - a[HOUR] > 24 || - (a[HOUR] === 24 && - (a[MINUTE] !== 0 || - a[SECOND] !== 0 || - a[MILLISECOND] !== 0)) - ? HOUR - : a[MINUTE] < 0 || a[MINUTE] > 59 - ? MINUTE - : a[SECOND] < 0 || a[SECOND] > 59 - ? SECOND - : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 - ? MILLISECOND - : -1; + ? DATE + : a[HOUR] < 0 || + a[HOUR] > 24 || + (a[HOUR] === 24 && + (a[MINUTE] !== 0 || + a[SECOND] !== 0 || + a[MILLISECOND] !== 0)) + ? HOUR + : a[MINUTE] < 0 || a[MINUTE] > 59 + ? MINUTE + : a[SECOND] < 0 || a[SECOND] > 59 + ? SECOND + : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 + ? MILLISECOND + : -1; if ( getParsingFlags(m)._overflowDayOfYear && @@ -3729,16 +3792,16 @@ return diff < -6 ? 'sameElse' : diff < -1 - ? 'lastWeek' - : diff < 0 - ? 'lastDay' - : diff < 1 - ? 'sameDay' - : diff < 2 - ? 'nextDay' - : diff < 7 - ? 'nextWeek' - : 'sameElse'; + ? 'lastWeek' + : diff < 0 + ? 'lastDay' + : diff < 1 + ? 'sameDay' + : diff < 2 + ? 'nextDay' + : diff < 7 + ? 'nextWeek' + : 'sameElse'; } function calendar$1(time, formats) { @@ -4546,16 +4609,22 @@ mixedPieces = [], i, l, + erasName, + erasAbbr, + erasNarrow, eras = this.eras(); for (i = 0, l = eras.length; i < l; ++i) { - namePieces.push(regexEscape(eras[i].name)); - abbrPieces.push(regexEscape(eras[i].abbr)); - narrowPieces.push(regexEscape(eras[i].narrow)); + erasName = regexEscape(eras[i].name); + erasAbbr = regexEscape(eras[i].abbr); + erasNarrow = regexEscape(eras[i].narrow); - mixedPieces.push(regexEscape(eras[i].name)); - mixedPieces.push(regexEscape(eras[i].abbr)); - mixedPieces.push(regexEscape(eras[i].narrow)); + namePieces.push(erasName); + abbrPieces.push(erasAbbr); + narrowPieces.push(erasNarrow); + mixedPieces.push(erasName); + mixedPieces.push(erasAbbr); + mixedPieces.push(erasNarrow); } this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); @@ -4588,14 +4657,6 @@ // ALIASES - addUnitAlias('weekYear', 'gg'); - addUnitAlias('isoWeekYear', 'GG'); - - // PRIORITY - - addUnitPriority('weekYear', 1); - addUnitPriority('isoWeekYear', 1); - // PARSING addRegexToken('G', matchSigned); @@ -4625,7 +4686,7 @@ this, input, this.week(), - this.weekday(), + this.weekday() + this.localeData()._week.dow, this.localeData()._week.dow, this.localeData()._week.doy ); @@ -4687,14 +4748,6 @@ addFormatToken('Q', 0, 'Qo', 'quarter'); - // ALIASES - - addUnitAlias('quarter', 'Q'); - - // PRIORITY - - addUnitPriority('quarter', 7); - // PARSING addRegexToken('Q', match1); @@ -4714,16 +4767,9 @@ addFormatToken('D', ['DD', 2], 'Do', 'date'); - // ALIASES - - addUnitAlias('date', 'D'); - - // PRIORITY - addUnitPriority('date', 9); - // PARSING - addRegexToken('D', match1to2); + addRegexToken('D', match1to2, match1to2NoLeadingZero); addRegexToken('DD', match1to2, match2); addRegexToken('Do', function (isStrict, locale) { // TODO: Remove "ordinalParse" fallback in next major release. @@ -4745,13 +4791,6 @@ addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - // ALIASES - - addUnitAlias('dayOfYear', 'DDD'); - - // PRIORITY - addUnitPriority('dayOfYear', 4); - // PARSING addRegexToken('DDD', match1to3); @@ -4776,17 +4815,9 @@ addFormatToken('m', ['mm', 2], 0, 'minute'); - // ALIASES - - addUnitAlias('minute', 'm'); - - // PRIORITY - - addUnitPriority('minute', 14); - // PARSING - addRegexToken('m', match1to2); + addRegexToken('m', match1to2, match1to2HasZero); addRegexToken('mm', match1to2, match2); addParseToken(['m', 'mm'], MINUTE); @@ -4798,17 +4829,9 @@ addFormatToken('s', ['ss', 2], 0, 'second'); - // ALIASES - - addUnitAlias('second', 's'); - - // PRIORITY - - addUnitPriority('second', 15); - // PARSING - addRegexToken('s', match1to2); + addRegexToken('s', match1to2, match1to2HasZero); addRegexToken('ss', match1to2, match2); addParseToken(['s', 'ss'], SECOND); @@ -4846,14 +4869,6 @@ return this.millisecond() * 1000000; }); - // ALIASES - - addUnitAlias('millisecond', 'ms'); - - // PRIORITY - - addUnitPriority('millisecond', 16); - // PARSING addRegexToken('S', match1to3, match1); @@ -5161,12 +5176,12 @@ toInt((number % 100) / 10) === 1 ? 'th' : b === 1 - ? 'st' - : b === 2 - ? 'nd' - : b === 3 - ? 'rd' - : 'th'; + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, }); @@ -5339,19 +5354,6 @@ } } - // TODO: Use this.as('ms')? - function valueOf$1() { - if (!this.isValid()) { - return NaN; - } - return ( - this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6 - ); - } - function makeAs(alias) { return function () { return this.as(alias); @@ -5366,7 +5368,8 @@ asWeeks = makeAs('w'), asMonths = makeAs('M'), asQuarters = makeAs('Q'), - asYears = makeAs('y'); + asYears = makeAs('y'), + valueOf$1 = asMilliseconds; function clone$1() { return createDuration(this); @@ -5635,7 +5638,7 @@ //! moment.js - hooks.version = '2.29.4'; + hooks.version = '2.30.0'; setHookCallback(createLocal);