From: Iskren Chernev Date: Fri, 1 May 2020 01:06:33 +0000 (+0300) Subject: Build 2.25.0 X-Git-Tag: 2.25.0^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36a817d94eab0f070bbcc7d8431631ee71400b89;p=thirdparty%2Fmoment.git Build 2.25.0 --- diff --git a/component.json b/component.json index 8f56b88d5..f7d871c75 100644 --- a/component.json +++ b/component.json @@ -31,13 +31,15 @@ "locale/de.js", "locale/dv.js", "locale/el.js", - "locale/en-SG.js", "locale/en-au.js", "locale/en-ca.js", "locale/en-gb.js", "locale/en-ie.js", "locale/en-il.js", + "locale/en-in.js", "locale/en-nz.js", + "locale/en-sg.js", + "locale/en-SG.js", "locale/eo.js", "locale/es-do.js", "locale/es-us.js", @@ -46,6 +48,7 @@ "locale/eu.js", "locale/fa.js", "locale/fi.js", + "locale/fil.js", "locale/fo.js", "locale/fr-ca.js", "locale/fr-ch.js", @@ -54,6 +57,7 @@ "locale/ga.js", "locale/gd.js", "locale/gl.js", + "locale/gom-deva.js", "locale/gom-latn.js", "locale/gu.js", "locale/he.js", @@ -93,6 +97,7 @@ "locale/nl-be.js", "locale/nl.js", "locale/nn.js", + "locale/oc-lnc.js", "locale/pa-in.js", "locale/pl.js", "locale/pt-br.js", @@ -131,6 +136,7 @@ "locale/yo.js", "locale/zh-cn.js", "locale/zh-hk.js", + "locale/zh-mo.js", "locale/zh-tw.js" ], "scripts": [ diff --git a/locale/af.js b/locale/af.js index 0b2bb26e5..e77b15b23 100644 --- a/locale/af.js +++ b/locale/af.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Afrikaans [af] +//! author : Werner Mollentze : https://github.com/wernerm ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,64 +9,72 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var af = moment.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('_'), + 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 (input) { + isPM: function (input) { return /^nm$/i.test(input); }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'vm' : 'VM'; } else { return isLower ? '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' + 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ôre om] LT', - nextWeek : 'dddd [om] LT', - lastDay : '[Gister om] LT', - lastWeek : '[Laas] dddd [om] LT', - sameElse : 'L' + calendar: { + sameDay: '[Vandag om] LT', + nextDay: '[Môre 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' + 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 (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week: { + dow: 1, // Maandag is die eerste dag van die week. + doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar. }, - week : { - dow : 1, // Maandag is die eerste dag van die week. - doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - } }); return af; diff --git a/locale/ar-dz.js b/locale/ar-dz.js index e6efd0a26..9ad2ad6e5 100644 --- a/locale/ar-dz.js +++ b/locale/ar-dz.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Arabic (Algeria) [ar-dz] +//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,50 +9,55 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var arDz = moment.defineLocale('ar-dz', { - 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' + 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', }, - calendar : { + calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + 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 سنوات' + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } }); return arDz; diff --git a/locale/ar-kw.js b/locale/ar-kw.js index 6a72e9bac..fcca10c9d 100644 --- a/locale/ar-kw.js +++ b/locale/ar-kw.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Arabic (Kuwait) [ar-kw] +//! author : Nusret Parlak: https://github.com/nusretparlak ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,50 +9,55 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var arKw = moment.defineLocale('ar-kw', { - 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' + 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', }, - calendar : { + calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + 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 سنوات' + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); return arKw; diff --git a/locale/ar-ly.js b/locale/ar-ly.js index 0df68c8b4..276a02e6c 100644 --- a/locale/ar-ly.js +++ b/locale/ar-ly.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Arabic (Lybia) [ar-ly] +//! author : Ali Hmer: https://github.com/kikoanis ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,113 +9,172 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var symbolMap = { - '1': '1', - '2': '2', - '3': '3', - '4': '4', - '5': '5', - '6': '6', - '7': '7', - '8': '8', - '9': '9', - '0': '0' - }, 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; - }, plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر' - ]; + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '0': '0', + }, + 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; + }, + plurals = { + s: [ + 'أقل من ثانية', + 'ثانية واحدة', + ['ثانيتان', 'ثانيتين'], + '%d ثوان', + '%d ثانية', + '%d ثانية', + ], + m: [ + 'أقل من دقيقة', + 'دقيقة واحدة', + ['دقيقتان', 'دقيقتين'], + '%d دقائق', + '%d دقيقة', + '%d دقيقة', + ], + h: [ + 'أقل من ساعة', + 'ساعة واحدة', + ['ساعتان', 'ساعتين'], + '%d ساعات', + '%d ساعة', + '%d ساعة', + ], + d: [ + 'أقل من يوم', + 'يوم واحد', + ['يومان', 'يومين'], + '%d أيام', + '%d يومًا', + '%d يوم', + ], + M: [ + 'أقل من شهر', + 'شهر واحد', + ['شهران', 'شهرين'], + '%d أشهر', + '%d شهرا', + '%d شهر', + ], + y: [ + 'أقل من عام', + 'عام واحد', + ['عامان', 'عامين'], + '%d أعوام', + '%d عامًا', + '%d عام', + ], + }, + pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, + months = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; var arLy = moment.defineLocale('ar-ly', { - months : months, - monthsShort : months, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - 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' + months: months, + monthsShort: months, + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + 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: /ص|م/, - isPM : function (input) { + isPM: function (input) { return 'م' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, - calendar : { + calendar: { sameDay: '[اليوم عند الساعة] LT', nextDay: '[غدًا عند الساعة] LT', nextWeek: 'dddd [عند الساعة] LT', lastDay: '[أمس عند الساعة] LT', lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - ss : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: pluralize('s'), + ss: pluralize('s'), + m: pluralize('m'), + mm: pluralize('m'), + h: pluralize('h'), + hh: pluralize('h'), + d: pluralize('d'), + dd: pluralize('d'), + M: pluralize('M'), + MM: pluralize('M'), + y: pluralize('y'), + yy: pluralize('y'), }, preparse: function (string) { return string.replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); return arLy; diff --git a/locale/ar-ma.js b/locale/ar-ma.js index 42db49a7e..c21e1f6c3 100644 --- a/locale/ar-ma.js +++ b/locale/ar-ma.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Arabic (Morocco) [ar-ma] +//! author : ElFadili Yassine : https://github.com/ElFadiliY +//! author : Abdel Said : https://github.com/abdelsaid ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,50 +10,55 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var arMa = moment.defineLocale('ar-ma', { - 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' + 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', }, - calendar : { + calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + 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 سنوات' + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); return arMa; diff --git a/locale/ar-sa.js b/locale/ar-sa.js index 1c6d46d51..44f9ff9be 100644 --- a/locale/ar-sa.js +++ b/locale/ar-sa.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Arabic (Saudi Arabia) [ar-sa] +//! author : Suhail Alkowaileet : https://github.com/xsoh ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,95 +9,105 @@ 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' - }; + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }; var arSa = moment.defineLocale('ar-sa', { - 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' + 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) { + isPM: function (input) { return 'م' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, - calendar : { + calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + 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 سنوات' + 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]; - }).replace(/،/g, ','); + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); + 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. }, - 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 arSa; diff --git a/locale/ar-tn.js b/locale/ar-tn.js index 8437717b6..a32af75fd 100644 --- a/locale/ar-tn.js +++ b/locale/ar-tn.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Arabic (Tunisia) [ar-tn] +//! author : Nader Toukabri : https://github.com/naderio ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,21 +9,26 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var arTn = moment.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, + 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' + LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[اليوم على الساعة] LT', @@ -29,13 +36,13 @@ nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'في %s', past: 'منذ %s', s: 'ثوان', - ss : '%d ثانية', + ss: '%d ثانية', m: 'دقيقة', mm: '%d دقائق', h: 'ساعة', @@ -45,12 +52,12 @@ M: 'شهر', MM: '%d أشهر', y: 'سنة', - yy: '%d سنوات' + yy: '%d سنوات', }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); return arTn; diff --git a/locale/ar.js b/locale/ar.js index 1549cc151..4c3e041ed 100644 --- a/locale/ar.js +++ b/locale/ar.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Arabic [ar] +//! author : Abdel Said: https://github.com/abdelsaid +//! author : Ahmed Elkhatib +//! author : forabi https://github.com/forabi ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,126 +11,188 @@ 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' - }, 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; - }, plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر' - ]; + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }, + 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; + }, + plurals = { + s: [ + 'أقل من ثانية', + 'ثانية واحدة', + ['ثانيتان', 'ثانيتين'], + '%d ثوان', + '%d ثانية', + '%d ثانية', + ], + m: [ + 'أقل من دقيقة', + 'دقيقة واحدة', + ['دقيقتان', 'دقيقتين'], + '%d دقائق', + '%d دقيقة', + '%d دقيقة', + ], + h: [ + 'أقل من ساعة', + 'ساعة واحدة', + ['ساعتان', 'ساعتين'], + '%d ساعات', + '%d ساعة', + '%d ساعة', + ], + d: [ + 'أقل من يوم', + 'يوم واحد', + ['يومان', 'يومين'], + '%d أيام', + '%d يومًا', + '%d يوم', + ], + M: [ + 'أقل من شهر', + 'شهر واحد', + ['شهران', 'شهرين'], + '%d أشهر', + '%d شهرا', + '%d شهر', + ], + y: [ + 'أقل من عام', + 'عام واحد', + ['عامان', 'عامين'], + '%d أعوام', + '%d عامًا', + '%d عام', + ], + }, + pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, + months = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; var ar = moment.defineLocale('ar', { - months : months, - monthsShort : months, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - 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' + months: months, + monthsShort: months, + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + 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: /ص|م/, - isPM : function (input) { + isPM: function (input) { return 'م' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, - calendar : { + calendar: { sameDay: '[اليوم عند الساعة] LT', nextDay: '[غدًا عند الساعة] LT', nextWeek: 'dddd [عند الساعة] LT', lastDay: '[أمس عند الساعة] LT', lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - ss : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: pluralize('s'), + ss: pluralize('s'), + m: pluralize('m'), + mm: pluralize('m'), + h: pluralize('h'), + hh: pluralize('h'), + d: pluralize('d'), + dd: pluralize('d'), + M: pluralize('M'), + MM: pluralize('M'), + y: pluralize('y'), + yy: pluralize('y'), }, preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); return ar; diff --git a/locale/az.js b/locale/az.js index 348ddffea..f68ad1735 100644 --- a/locale/az.js +++ b/locale/az.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Azerbaijani [az] +//! author : topchiyev : https://github.com/topchiyev ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +9,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var suffixes = { 1: '-inci', @@ -26,53 +29,57 @@ 10: '-uncu', 30: '-uncu', 60: '-ıncı', - 90: '-ıncı' + 90: '-ıncı', }; var az = moment.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əsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), - weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.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' + 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əsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split( + '_' + ), + weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.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', }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' + calendar: { + sameDay: '[bugün saat] LT', + nextDay: '[sabah saat] LT', + nextWeek: '[gələn həftə] dddd [saat] LT', + lastDay: '[dünən] LT', + lastWeek: '[keçən həftə] dddd [saat] LT', + sameElse: 'L', }, - relativeTime : { - future : '%s sonra', - past : '%s əvvəl', - s : 'birneçə saniyə', - ss : '%d saniyə', - m : 'bir dəqiqə', - mm : '%d dəqiqə', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir il', - yy : '%d il' + relativeTime: { + future: '%s sonra', + past: '%s əvvəl', + s: 'birneçə saniyə', + ss: '%d saniyə', + m: 'bir dəqiqə', + mm: '%d dəqiqə', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir il', + yy: '%d il', }, meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM : function (input) { + isPM: function (input) { return /^(gündüz|axşam)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'gecə'; } else if (hour < 12) { @@ -84,19 +91,20 @@ } }, dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal : function (number) { - if (number === 0) { // special case for zero + ordinal: function (number) { + if (number === 0) { + // special case for zero return number + '-ıncı'; } var a = number % 10, - b = number % 100 - a, + b = (number % 100) - a, c = number >= 100 ? 100 : null; return number + (suffixes[a] || suffixes[b] || suffixes[c]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return az; diff --git a/locale/be.js b/locale/be.js index 10db1c192..0768acbfa 100644 --- a/locale/be.js +++ b/locale/be.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Belarusian [be] +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,53 +11,66 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function plural(word, num) { var forms = word.split('_'); - 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]); + 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]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { - 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - 'dd': 'дзень_дні_дзён', - 'MM': 'месяц_месяцы_месяцаў', - 'yy': 'год_гады_гадоў' + ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', + mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + dd: 'дзень_дні_дзён', + MM: 'месяц_месяцы_месяцаў', + yy: 'год_гады_гадоў', }; if (key === 'm') { return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } - else if (key === 'h') { + } else if (key === 'h') { return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } - else { + } else { return number + ' ' + plural(format[key], +number); } } var be = moment.defineLocale('be', { - months : { - format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), - standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_') + months: { + format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( + '_' + ), + standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( + '_' + ), }, - monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : { - format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), - standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/ + monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split( + '_' + ), + weekdays: { + format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split( + '_' + ), + standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split( + '_' + ), + isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/, }, - weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - 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' + weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + 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 : { + calendar: { sameDay: '[Сёння ў] LT', nextDay: '[Заўтра ў] LT', lastDay: '[Учора ў] LT', @@ -73,28 +90,28 @@ return '[У мінулы] dddd [ў] LT'; } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'праз %s', - past : '%s таму', - s : 'некалькі секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : relativeTimeWithPlural, - hh : relativeTimeWithPlural, - d : 'дзень', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural + relativeTime: { + future: 'праз %s', + past: '%s таму', + s: 'некалькі секунд', + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: relativeTimeWithPlural, + hh: relativeTimeWithPlural, + d: 'дзень', + dd: relativeTimeWithPlural, + M: 'месяц', + MM: relativeTimeWithPlural, + y: 'год', + yy: relativeTimeWithPlural, }, meridiemParse: /ночы|раніцы|дня|вечара/, - isPM : function (input) { + isPM: function (input) { return /^(дня|вечара)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночы'; } else if (hour < 12) { @@ -113,17 +130,21 @@ case 'DDD': case 'w': case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + return (number % 10 === 2 || number % 10 === 3) && + number % 100 !== 12 && + number % 100 !== 13 + ? number + '-і' + : number + '-ы'; case 'D': return number + '-га'; default: return number; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return be; diff --git a/locale/bg.js b/locale/bg.js index c70ba304b..05b6cf8ed 100644 --- a/locale/bg.js +++ b/locale/bg.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Bulgarian [bg] +//! author : Krasen Borisov : https://github.com/kraz ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,59 +9,64 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var bg = moment.defineLocale('bg', { - months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), - weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.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' + months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split( + '_' + ), + monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split( + '_' + ), + weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.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 : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { + calendar: { + sameDay: '[Днес в] LT', + nextDay: '[Утре в] LT', + nextWeek: 'dddd [в] LT', + lastDay: '[Вчера в] LT', + lastWeek: function () { switch (this.day()) { case 0: case 3: case 6: - return '[В изминалата] dddd [в] LT'; + return '[Миналата] dddd [в] LT'; case 1: case 2: case 4: case 5: - return '[В изминалия] dddd [в] LT'; + return '[Миналия] dddd [в] LT'; } }, - sameElse : 'L' + 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 години' + relativeTime: { + future: 'след %s', + past: 'преди %s', + s: 'няколко секунди', + ss: '%d секунди', + m: 'минута', + mm: '%d минути', + h: 'час', + hh: '%d часа', + d: 'ден', + dd: '%d дена', + M: 'месец', + MM: '%d месеца', + y: 'година', + yy: '%d години', }, dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { + ordinal: function (number) { var lastDigit = number % 10, last2Digits = number % 100; if (number === 0) { @@ -78,10 +85,10 @@ return number + '-ти'; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return bg; diff --git a/locale/bm.js b/locale/bm.js index 2bb50f519..302410cb0 100644 --- a/locale/bm.js +++ b/locale/bm.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Bambara [bm] +//! author : Estelle Comment : https://github.com/estellecomment ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,49 +9,52 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var bm = moment.defineLocale('bm', { - months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'), - monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), - weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), - weekdaysShort : 'Kar_Ntɛ_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ɛrɛ] HH:mm', - LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm' + months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split( + '_' + ), + monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), + weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), + weekdaysShort: 'Kar_Ntɛ_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ɛrɛ] HH:mm', + LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', }, - calendar : { - sameDay : '[Bi lɛrɛ] LT', - nextDay : '[Sini lɛrɛ] LT', - nextWeek : 'dddd [don lɛrɛ] LT', - lastDay : '[Kunu lɛrɛ] LT', - lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT', - sameElse : 'L' + calendar: { + sameDay: '[Bi lɛrɛ] LT', + nextDay: '[Sini lɛrɛ] LT', + nextWeek: 'dddd [don lɛrɛ] LT', + lastDay: '[Kunu lɛrɛ] LT', + lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT', + sameElse: 'L', }, - relativeTime : { - future : '%s kɔnɔ', - past : 'a bɛ %s bɔ', - s : 'sanga dama dama', - ss : 'sekondi %d', - m : 'miniti kelen', - mm : 'miniti %d', - h : 'lɛrɛ kelen', - hh : 'lɛrɛ %d', - d : 'tile kelen', - dd : 'tile %d', - M : 'kalo kelen', - MM : 'kalo %d', - y : 'san kelen', - yy : 'san %d' + relativeTime: { + future: '%s kɔnɔ', + past: 'a bɛ %s bɔ', + s: 'sanga dama dama', + ss: 'sekondi %d', + m: 'miniti kelen', + mm: 'miniti %d', + h: 'lɛrɛ kelen', + hh: 'lɛrɛ %d', + d: 'tile kelen', + dd: 'tile %d', + M: 'kalo kelen', + MM: 'kalo %d', + y: 'san kelen', + yy: 'san %d', + }, + 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. }, - 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 bm; diff --git a/locale/bn.js b/locale/bn.js index 8fe715862..e97f0f61d 100644 --- a/locale/bn.js +++ b/locale/bn.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Bengali [bn] +//! author : Kaushik Gandhi : https://github.com/kaushikgandhi ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,69 +9,76 @@ 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' - }; + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০', + }, + numberMap = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0', + }; var bn = moment.defineLocale('bn', { - months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), - weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.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 সময়' + months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( + '_' + ), + monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( + '_' + ), + weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( + '_' + ), + weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), + weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.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 : '[আজ] LT', - nextDay : '[আগামীকাল] LT', - nextWeek : 'dddd, LT', - lastDay : '[গতকাল] LT', - lastWeek : '[গত] dddd, LT', - sameElse : 'L' + 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 বছর' + 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) { @@ -82,19 +91,21 @@ }); }, meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if ((meridiem === 'রাত' && hour >= 4) || - (meridiem === 'দুপুর' && hour < 5) || - meridiem === 'বিকাল') { + if ( + (meridiem === 'রাত' && hour >= 4) || + (meridiem === 'দুপুর' && hour < 5) || + meridiem === 'বিকাল' + ) { return hour + 12; } else { return hour; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'রাত'; } else if (hour < 10) { @@ -107,10 +118,10 @@ return 'রাত'; } }, - 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. - } + 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 bn; diff --git a/locale/bo.js b/locale/bo.js index 6a9801639..1b514e4b9 100644 --- a/locale/bo.js +++ b/locale/bo.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Tibetan [bo] +//! author : Thupten N. Chakrishar : https://github.com/vajradog ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,69 +9,80 @@ 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' - }; + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠', + }, + numberMap = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0', + }; var bo = moment.defineLocale('bo', { - months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), - weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.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' + months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split( + '_' + ), + monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split( + '_' + ), + monthsShortRegex: /^(ཟླ་\d{1,2})/, + monthsParseExact: true, + weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split( + '_' + ), + weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split( + '_' + ), + weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.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 : '[དི་རིང] LT', - nextDay : '[སང་ཉིན] LT', - nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', - lastDay : '[ཁ་སང] LT', - lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - sameElse : 'L' + calendar: { + sameDay: '[དི་རིང] LT', + nextDay: '[སང་ཉིན] LT', + nextWeek: '[བདུན་ཕྲག་རྗེས་མ], 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 ལོ' + 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) { @@ -82,19 +95,21 @@ }); }, meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if ((meridiem === 'མཚན་མོ' && hour >= 4) || - (meridiem === 'ཉིན་གུང' && hour < 5) || - meridiem === 'དགོང་དག') { + if ( + (meridiem === 'མཚན་མོ' && hour >= 4) || + (meridiem === 'ཉིན་གུང' && hour < 5) || + meridiem === 'དགོང་དག' + ) { return hour + 12; } else { return hour; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'མཚན་མོ'; } else if (hour < 10) { @@ -107,10 +122,10 @@ return 'མཚན་མོ'; } }, - 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. - } + 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 bo; diff --git a/locale/br.js b/locale/br.js index 42994ca65..ee8cdb9e9 100644 --- a/locale/br.js +++ b/locale/br.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Breton [br] +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,12 +9,13 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function relativeTimeWithMutation(number, withoutSuffix, key) { var format = { - 'mm': 'munutenn', - 'MM': 'miz', - 'dd': 'devezh' + mm: 'munutenn', + MM: 'miz', + dd: 'devezh', }; return number + ' ' + mutation(format[key], number); } @@ -42,9 +45,9 @@ } function softMutation(text) { var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' + m: 'v', + b: 'v', + d: 'z', }; if (mutationTable[text.charAt(0)] === undefined) { return text; @@ -53,53 +56,55 @@ } var br = moment.defineLocale('br', { - months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), - monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h[e]mm A', - LTS : 'h[e]mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY h[e]mm A', - LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' + months: "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split( + '_' + ), + monthsShort: "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split('_'), + weekdays: "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split('_'), + weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + weekdaysParseExact: true, + 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\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' + calendar: { + sameDay: '[Hiziv da] LT', + nextDay: "[Warc'hoazh da] LT", + nextWeek: 'dddd [da] LT', + lastDay: "[Dec'h da] LT", + lastWeek: 'dddd [paset da] LT', + sameElse: 'L', }, - relativeTime : { - future : 'a-benn %s', - past : '%s \'zo', - s : 'un nebeud segondennoù', - ss : '%d eilenn', - m : 'ur vunutenn', - mm : relativeTimeWithMutation, - h : 'un eur', - hh : '%d eur', - d : 'un devezh', - dd : relativeTimeWithMutation, - M : 'ur miz', - MM : relativeTimeWithMutation, - y : 'ur bloaz', - yy : specialMutationForYears + relativeTime: { + future: 'a-benn %s', + past: "%s 'zo", + s: 'un nebeud segondennoù', + ss: '%d eilenn', + m: 'ur vunutenn', + mm: relativeTimeWithMutation, + h: 'un eur', + hh: '%d eur', + d: 'un devezh', + dd: relativeTimeWithMutation, + M: 'ur miz', + MM: relativeTimeWithMutation, + y: 'ur bloaz', + yy: specialMutationForYears, }, dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; + ordinal: function (number) { + var output = number === 1 ? 'añ' : 'vet'; return number + output; }, - 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. - } + 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 br; diff --git a/locale/bs.js b/locale/bs.js index 5e3e42860..6086f0a9a 100644 --- a/locale/bs.js +++ b/locale/bs.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Bosnian [bs] +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +10,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function translate(number, withoutSuffix, key) { var result = number + ' '; @@ -71,25 +75,31 @@ } var bs = moment.defineLocale('bs', { - months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedjelju] [u] LT'; @@ -104,8 +114,8 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[jučer u] LT', - lastWeek : function () { + lastDay: '[jučer u] LT', + lastWeek: function () { switch (this.day()) { case 0: case 3: @@ -119,30 +129,30 @@ return '[prošli] dddd [u] LT'; } }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'par sekundi', + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: 'dan', + dd: translate, + M: 'mjesec', + MM: translate, + y: 'godinu', + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return bs; diff --git a/locale/ca.js b/locale/ca.js index 9a823b937..c603b9763 100644 --- a/locale/ca.js +++ b/locale/ca.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Catalan [ca] +//! author : Juan G. Hurtado : https://github.com/juanghurtado ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,79 +9,98 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var ca = moment.defineLocale('ca', { - months : { - standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), - format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'), - isFormat: /D[oD]?(\s)+MMMM/ + months: { + standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split( + '_' + ), + format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split( + '_' + ), + isFormat: /D[oD]?(\s)+MMMM/, }, - monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), - weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [de] YYYY', - ll : 'D MMM YYYY', - LLL : 'D MMMM [de] YYYY [a les] H:mm', - lll : 'D MMM YYYY, H:mm', - LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm', - llll : 'ddd D MMM YYYY, H:mm' + monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split( + '_' + ), + weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + ll: 'D MMM YYYY', + LLL: 'D MMMM [de] YYYY [a les] H:mm', + lll: 'D MMM YYYY, H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', + llll: 'ddd D MMM YYYY, H:mm', }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + calendar: { + sameDay: function () { + return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + nextDay: function () { + return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + nextWeek: function () { + return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + lastDay: function () { + return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [passat a ' + + (this.hours() !== 1 ? 'les' : 'la') + + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'd\'aquí %s', - past : 'fa %s', - s : 'uns segons', - ss : '%d segons', - m : 'un minut', - mm : '%d minuts', - h : 'una hora', - hh : '%d hores', - d : 'un dia', - dd : '%d dies', - M : 'un mes', - MM : '%d mesos', - y : 'un any', - yy : '%d anys' + relativeTime: { + future: "d'aquí %s", + past: 'fa %s', + s: 'uns segons', + ss: '%d segons', + m: 'un minut', + mm: '%d minuts', + h: 'una hora', + hh: '%d hores', + d: 'un dia', + dd: '%d dies', + M: 'un mes', + MM: '%d mesos', + y: 'un any', + yy: '%d anys', }, dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal : function (number, period) { - var output = (number === 1) ? 'r' : - (number === 2) ? 'n' : - (number === 3) ? 'r' : - (number === 4) ? 't' : 'è'; + ordinal: function (number, period) { + var output = + number === 1 + ? 'r' + : number === 2 + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } return number + output; }, - 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. - } + 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 ca; diff --git a/locale/cs.js b/locale/cs.js index bb9e3572d..ec25c413a 100644 --- a/locale/cs.js +++ b/locale/cs.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Czech [cs] +//! author : petrbela : https://github.com/petrbela ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,103 +9,112 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), - monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); - - var monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i]; - // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. - // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - var monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; + var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( + '_' + ), + monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), + monthsParse = [ + /^led/i, + /^úno/i, + /^bře/i, + /^dub/i, + /^kvě/i, + /^(čvn|červen$|června)/i, + /^(čvc|červenec|července)/i, + /^srp/i, + /^zář/i, + /^říj/i, + /^lis/i, + /^pro/i, + ], + // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. + // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. + monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; function plural(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); + return n > 1 && n < 5 && ~~(n / 10) !== 1; } function translate(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 's': // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'sekundy' : 'sekund'); } else { return result + 'sekundami'; } - break; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'minuty' : 'minut'); } else { return result + 'minutami'; } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; case 'hh': // 9 hours / in 9 hours / 9 hours ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'hodiny' : 'hodin'); } else { return result + 'hodinami'; } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'd': // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'den' : 'dnem'; case 'dd': // 9 days / in 9 days / 9 days ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'dny' : 'dní'); } else { return result + 'dny'; } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'M': // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'měsíc' : 'měsícem'; case 'MM': // 9 months / in 9 months / 9 months ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'měsíce' : 'měsíců'); } else { return result + 'měsíci'; } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'y': // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokem'; case 'yy': // 9 years / in 9 years / 9 years ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'roky' : 'let'); } else { return result + 'lety'; } - break; } } var cs = moment.defineLocale('cs', { - months : months, - monthsShort : monthsShort, - monthsRegex : monthsRegex, - monthsShortRegex : monthsRegex, + months: months, + monthsShort: monthsShort, + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - monthsStrictRegex : /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, - monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, - weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat : { + monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, + monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, + weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'), + longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm', - l : 'D. M. YYYY' + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', + l: 'D. M. YYYY', }, - calendar : { + calendar: { sameDay: '[dnes v] LT', nextDay: '[zítra v] LT', nextWeek: function () { @@ -140,30 +151,30 @@ return '[minulou sobotu v] LT'; } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'za %s', - past : 'před %s', - s : translate, - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate + relativeTime: { + future: 'za %s', + past: 'před %s', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + 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. }, - dayOfMonthOrdinalParse : /\d{1,2}\./, - ordinal : '%d.', - 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 cs; diff --git a/locale/cv.js b/locale/cv.js index 1db1488c7..891eb00c9 100644 --- a/locale/cv.js +++ b/locale/cv.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Chuvash [cv] +//! author : Anatoly Mironov : https://github.com/mirontoli ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,54 +9,63 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var cv = moment.defineLocale('cv', { - months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' + months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split( + '_' + ), + monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split( + '_' + ), + weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD-MM-YYYY', + LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', }, - calendar : { + calendar: { sameDay: '[Паян] LT [сехетре]', nextDay: '[Ыран] LT [сехетре]', lastDay: '[Ӗнер] LT [сехетре]', nextWeek: '[Ҫитес] dddd LT [сехетре]', lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; + relativeTime: { + future: function (output) { + var affix = /сехет$/i.exec(output) + ? 'рен' + : /ҫул$/i.exec(output) + ? 'тан' + : 'ран'; return output + affix; }, - past : '%s каялла', - s : 'пӗр-ик ҫеккунт', - ss : '%d ҫеккунт', - m : 'пӗр минут', - mm : '%d минут', - h : 'пӗр сехет', - hh : '%d сехет', - d : 'пӗр кун', - dd : '%d кун', - M : 'пӗр уйӑх', - MM : '%d уйӑх', - y : 'пӗр ҫул', - yy : '%d ҫул' + past: '%s каялла', + s: 'пӗр-ик ҫеккунт', + ss: '%d ҫеккунт', + m: 'пӗр минут', + mm: '%d минут', + h: 'пӗр сехет', + hh: '%d сехет', + d: 'пӗр кун', + dd: '%d кун', + M: 'пӗр уйӑх', + MM: '%d уйӑх', + y: 'пӗр ҫул', + yy: '%d ҫул', }, dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, - ordinal : '%d-мӗш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d-мӗш', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return cv; diff --git a/locale/cy.js b/locale/cy.js index 84cbd463e..1bcd649a2 100644 --- a/locale/cy.js +++ b/locale/cy.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Welsh [cy] +//! author : Robert Allen : https://github.com/robgallen +//! author : https://github.com/ryangreaves ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,22 +10,29 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var cy = moment.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split( + '_' + ), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split( + '_' + ), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split( + '_' + ), weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, // time formats are the same as en-gb longDateFormat: { LT: 'HH:mm', - LTS : 'HH:mm:ss', + 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' + LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Heddiw am] LT', @@ -30,7 +40,7 @@ nextWeek: 'dddd [am] LT', lastDay: '[Ddoe am] LT', lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'mewn %s', @@ -46,7 +56,7 @@ M: 'mis', MM: '%d mis', y: 'blwyddyn', - yy: '%d flynedd' + yy: '%d flynedd', }, dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh @@ -54,8 +64,27 @@ var b = number, output = '', lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + '', + 'af', + 'il', + 'ydd', + 'ydd', + 'ed', + 'ed', + 'ed', + 'fed', + 'fed', + 'fed', // 1af to 10fed + 'eg', + 'fed', + 'eg', + 'eg', + 'fed', + 'eg', + 'eg', + 'fed', + 'eg', + 'fed', // 11eg to 20fed ]; if (b > 20) { if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { @@ -68,10 +97,10 @@ } return number + output; }, - 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. - } + 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 cy; diff --git a/locale/da.js b/locale/da.js index 22a1a5b99..2ed05839c 100644 --- a/locale/da.js +++ b/locale/da.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Danish [da] +//! author : Ulrik Nielsen : https://github.com/mrbase ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,51 +9,54 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var da = moment.defineLocale('da', { - months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - 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.] D. MMMM YYYY [kl.] HH:mm' + months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'), + weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), + 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.] D. MMMM YYYY [kl.] HH:mm', }, - calendar : { - sameDay : '[i dag kl.] LT', - nextDay : '[i morgen kl.] LT', - nextWeek : 'på dddd [kl.] LT', - lastDay : '[i går kl.] LT', - lastWeek : '[i] dddd[s kl.] LT', - sameElse : 'L' + calendar: { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'på dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[i] dddd[s kl.] LT', + sameElse: 'L', }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'få sekunder', - ss : '%d sekunder', - m : 'et minut', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dage', - M : 'en måned', - MM : '%d måneder', - y : 'et år', - yy : '%d år' + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'få sekunder', + ss: '%d sekunder', + m: 'et minut', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dage', + M: 'en måned', + MM: '%d måneder', + y: 'et år', + yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 da; diff --git a/locale/de-at.js b/locale/de-at.js index e3ac47b42..5346e19ed 100644 --- a/locale/de-at.js +++ b/locale/de-at.js @@ -1,4 +1,9 @@ //! moment.js locale configuration +//! locale : German (Austria) [de-at] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +//! author : Mikolaj Dadela : https://github.com/mik01aj ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,67 +12,74 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } var deAt = moment.defineLocale('de-at', { - months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { + months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.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' + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' + lastWeek: '[letzten] dddd [um] LT [Uhr]', }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime, + mm: '%d Minuten', + h: processRelativeTime, + hh: '%d Stunden', + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 deAt; diff --git a/locale/de-ch.js b/locale/de-ch.js index 2676afbc7..dbcdd5922 100644 --- a/locale/de-ch.js +++ b/locale/de-ch.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : German (Switzerland) [de-ch] +//! author : sschueller : https://github.com/sschueller ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,67 +9,74 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } var deCh = moment.defineLocale('de-ch', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.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' + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' + lastWeek: '[letzten] dddd [um] LT [Uhr]', }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime, + mm: '%d Minuten', + h: processRelativeTime, + hh: '%d Stunden', + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 deCh; diff --git a/locale/de.js b/locale/de.js index d5c084a2c..e29ec2c64 100644 --- a/locale/de.js +++ b/locale/de.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : German [de] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Mikolaj Dadela : https://github.com/mik01aj ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,67 +11,74 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } var de = moment.defineLocale('de', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.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' + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' + lastWeek: '[letzten] dddd [um] LT [Uhr]', }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime, + mm: '%d Minuten', + h: processRelativeTime, + hh: '%d Stunden', + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 de; diff --git a/locale/dv.js b/locale/dv.js index 8729b02c0..e6cc8f649 100644 --- a/locale/dv.js +++ b/locale/dv.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Maldivian [dv] +//! author : Jawish Hameed : https://github.com/jawish ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,79 +9,80 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var months = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު' - ], weekdays = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު' - ]; + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު', + ], + weekdays = [ + 'އާދިއްތަ', + 'ހޯމަ', + 'އަންގާރަ', + 'ބުދަ', + 'ބުރާސްފަތި', + 'ހުކުރު', + 'ހޮނިހިރު', + ]; var dv = moment.defineLocale('dv', { - months : months, - monthsShort : months, - weekdays : weekdays, - weekdaysShort : weekdays, - weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), - longDateFormat : { - - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/M/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' + months: months, + monthsShort: months, + weekdays: weekdays, + weekdaysShort: weekdays, + weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/M/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', }, meridiemParse: /މކ|މފ/, - isPM : function (input) { + isPM: function (input) { return 'މފ' === input; }, - meridiem : function (hour, minute, isLower) { + 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' + 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' + 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, ','); @@ -87,10 +90,10 @@ postformat: function (string) { return string.replace(/,/g, '،'); }, - week : { - dow : 7, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + week: { + dow: 7, // Sunday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); return dv; diff --git a/locale/el.js b/locale/el.js index f01fa772a..356585f67 100644 --- a/locale/el.js +++ b/locale/el.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Greek [el] +//! author : Aggelos Karalias : https://github.com/mehiel ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -8,51 +10,65 @@ }(this, (function (moment) { 'use strict'; function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + return ( + (typeof Function !== 'undefined' && input instanceof Function) || + Object.prototype.toString.call(input) === '[object Function]' + ); } + //! moment.js locale configuration var el = moment.defineLocale('el', { - monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), - monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), - months : function (momentToFormat, format) { + monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split( + '_' + ), + monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split( + '_' + ), + months: function (momentToFormat, format) { if (!momentToFormat) { return this._monthsNominativeEl; - } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + } else if ( + typeof format === 'string' && + /D/.test(format.substring(0, format.indexOf('MMMM'))) + ) { + // if there is a day number before 'MMMM' return this._monthsGenitiveEl[momentToFormat.month()]; } else { return this._monthsNominativeEl[momentToFormat.month()]; } }, - monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), - weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem : function (hours, minutes, isLower) { + monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split( + '_' + ), + weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'μμ' : 'ΜΜ'; } else { return isLower ? 'πμ' : 'ΠΜ'; } }, - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'μ'); + isPM: function (input) { + return (input + '').toLowerCase()[0] === 'μ'; }, - meridiemParse : /[ΠΜ]\.?Μ?\.?/i, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' + meridiemParse: /[ΠΜ]\.?Μ?\.?/i, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function () { + calendarEl: { + sameDay: '[Σήμερα {}] LT', + nextDay: '[Αύριο {}] LT', + nextWeek: 'dddd [{}] LT', + lastDay: '[Χθες {}] LT', + lastWeek: function () { switch (this.day()) { case 6: return '[το προηγούμενο] dddd [{}] LT'; @@ -60,38 +76,38 @@ return '[την προηγούμενη] dddd [{}] LT'; } }, - sameElse : 'L' + sameElse: 'L', }, - calendar : function (key, mom) { + calendar: function (key, mom) { var output = this._calendarEl[key], hours = mom && mom.hours(); if (isFunction(output)) { output = output.apply(mom); } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); + return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις'); }, - relativeTime : { - future : 'σε %s', - past : '%s πριν', - s : 'λίγα δευτερόλεπτα', - ss : '%d δευτερόλεπτα', - m : 'ένα λεπτό', - mm : '%d λεπτά', - h : 'μία ώρα', - hh : '%d ώρες', - d : 'μία μέρα', - dd : '%d μέρες', - M : 'ένας μήνας', - MM : '%d μήνες', - y : 'ένας χρόνος', - yy : '%d χρόνια' + relativeTime: { + future: 'σε %s', + past: '%s πριν', + s: 'λίγα δευτερόλεπτα', + ss: '%d δευτερόλεπτα', + m: 'ένα λεπτό', + mm: '%d λεπτά', + h: 'μία ώρα', + hh: '%d ώρες', + d: 'μία μέρα', + dd: '%d μέρες', + M: 'ένας μήνας', + MM: '%d μήνες', + y: 'ένας χρόνος', + yy: '%d χρόνια', }, dayOfMonthOrdinalParse: /\d{1,2}η/, ordinal: '%dη', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4st is the first week of the year. + }, }); return el; diff --git a/locale/en-au.js b/locale/en-au.js index 372023786..d415e2bdb 100644 --- a/locale/en-au.js +++ b/locale/en-au.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : English (Australia) [en-au] +//! author : Jared Morse : https://github.com/jarcoal ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,58 +9,69 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var enAu = moment.defineLocale('en-au', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 enAu; diff --git a/locale/en-ca.js b/locale/en-ca.js index 5d0dab08b..bc574f1a4 100644 --- a/locale/en-ca.js +++ b/locale/en-ca.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : English (Canada) [en-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,54 +9,65 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var enCa = moment.defineLocale('en-ca', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'YYYY-MM-DD', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'YYYY-MM-DD', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY h:mm A', + LLLL: 'dddd, MMMM D, YYYY h:mm A', }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; - } + }, }); return enCa; diff --git a/locale/en-gb.js b/locale/en-gb.js index 85302e5d0..828791e25 100644 --- a/locale/en-gb.js +++ b/locale/en-gb.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : English (United Kingdom) [en-gb] +//! author : Chris Gedrim : https://github.com/chrisgedrim ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,58 +9,69 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var enGb = moment.defineLocale('en-gb', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 enGb; diff --git a/locale/en-ie.js b/locale/en-ie.js index de0984cff..086cf395d 100644 --- a/locale/en-ie.js +++ b/locale/en-ie.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : English (Ireland) [en-ie] +//! author : Chris Cartlidge : https://github.com/chriscartlidge ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,58 +9,69 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var enIe = moment.defineLocale('en-ie', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 enIe; diff --git a/locale/en-il.js b/locale/en-il.js index b18eab86a..e52503ce8 100644 --- a/locale/en-il.js +++ b/locale/en-il.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : English (Israel) [en-il] +//! author : Chris Gedrim : https://github.com/chrisgedrim ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,53 +9,65 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var enIl = moment.defineLocale('en-il', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; - } + }, }); return enIl; diff --git a/locale/en-in.js b/locale/en-in.js new file mode 100644 index 000000000..68db5108a --- /dev/null +++ b/locale/en-in.js @@ -0,0 +1,79 @@ +//! moment.js locale configuration +//! locale : English (India) [en-in] +//! author : Jatin Agrawal : https://github.com/jatinag22 + +;(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 enIn = moment.defineLocale('en-in', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + 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 enIn; + +}))); diff --git a/locale/en-nz.js b/locale/en-nz.js index f4325d4c9..3bc7e9f60 100644 --- a/locale/en-nz.js +++ b/locale/en-nz.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : English (New Zealand) [en-nz] +//! author : Luke McGregor : https://github.com/lukemcgregor ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,58 +9,69 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var enNz = moment.defineLocale('en-nz', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 enNz; diff --git a/locale/en-sg.js b/locale/en-sg.js new file mode 100644 index 000000000..4de803c13 --- /dev/null +++ b/locale/en-sg.js @@ -0,0 +1,79 @@ +//! moment.js locale configuration +//! locale : English (Singapore) [en-sg] +//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension + +;(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 enSg = moment.defineLocale('en-sg', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + 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 enSg; + +}))); diff --git a/locale/eo.js b/locale/eo.js index 283ebed89..799dad0cd 100644 --- a/locale/eo.js +++ b/locale/eo.js @@ -1,4 +1,9 @@ //! moment.js locale configuration +//! locale : Esperanto [eo] +//! author : Colin Dean : https://github.com/colindean +//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia +//! comment : miestasmia corrected the translation by colindean +//! comment : Vivakvo corrected the translation by colindean and miestasmia ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,62 +12,66 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var eo = moment.defineLocale('eo', { - months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), - weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), - weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), - weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D[-a de] MMMM, YYYY', - LLL : 'D[-a de] MMMM, YYYY HH:mm', - LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm' + months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split( + '_' + ), + monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'), + weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), + weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), + weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: '[la] D[-an de] MMMM, YYYY', + LLL: '[la] D[-an de] MMMM, YYYY HH:mm', + LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm', + llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm', }, meridiemParse: /[ap]\.t\.m/i, isPM: function (input) { return input.charAt(0).toLowerCase() === 'p'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'p.t.m.' : 'P.T.M.'; } else { return isLower ? 'a.t.m.' : 'A.T.M.'; } }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' + calendar: { + sameDay: '[Hodiaŭ je] LT', + nextDay: '[Morgaŭ je] LT', + nextWeek: 'dddd[n je] LT', + lastDay: '[Hieraŭ je] LT', + lastWeek: '[pasintan] dddd[n je] LT', + sameElse: 'L', }, - relativeTime : { - future : 'post %s', - past : 'antaŭ %s', - s : 'sekundoj', - ss : '%d sekundoj', - m : 'minuto', - mm : '%d minutoj', - h : 'horo', - hh : '%d horoj', - d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo - dd : '%d tagoj', - M : 'monato', - MM : '%d monatoj', - y : 'jaro', - yy : '%d jaroj' + relativeTime: { + future: 'post %s', + past: 'antaŭ %s', + s: 'kelkaj sekundoj', + ss: '%d sekundoj', + m: 'unu minuto', + mm: '%d minutoj', + h: 'unu horo', + hh: '%d horoj', + d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo + dd: '%d tagoj', + M: 'unu monato', + MM: '%d monatoj', + y: 'unu jaro', + yy: '%d jaroj', }, dayOfMonthOrdinalParse: /\d{1,2}a/, - ordinal : '%da', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%da', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return eo; diff --git a/locale/es-do.js b/locale/es-do.js index 829c2de87..d550f1130 100644 --- a/locale/es-do.js +++ b/locale/es-do.js @@ -1,4 +1,5 @@ //! moment.js locale configuration +//! locale : Spanish (Dominican Republic) [es-do] ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,16 +8,33 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; var esDo = moment.defineLocale('es-do', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortDot; } else if (/-MMM-/.test(format)) { @@ -32,58 +50,62 @@ monthsParse: monthsParse, longMonthsParse: monthsParse, shortMonthsParse: monthsParse, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY h:mm A', - LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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. }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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 esDo; diff --git a/locale/es-us.js b/locale/es-us.js index 8e07d077d..c0207eb02 100644 --- a/locale/es-us.js +++ b/locale/es-us.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Spanish (United States) [es-us] +//! author : bustta : https://github.com/bustta +//! author : chrisrodz : https://github.com/chrisrodz ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,16 +10,33 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; var esUs = moment.defineLocale('es-us', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortDot; } else if (/-MMM-/.test(format)) { @@ -32,58 +52,62 @@ monthsParse: monthsParse, longMonthsParse: monthsParse, shortMonthsParse: monthsParse, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'MM/DD/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY h:mm A', - LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'MM/DD/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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. }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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 esUs; diff --git a/locale/es.js b/locale/es.js index aed680260..e4e6d4166 100644 --- a/locale/es.js +++ b/locale/es.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Spanish [es] +//! author : Julio Napurí : https://github.com/julionc ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,16 +9,33 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; var es = moment.defineLocale('es', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortDot; } else if (/-MMM-/.test(format)) { @@ -25,65 +44,70 @@ return monthsShortDot[m.month()]; } }, - monthsRegex : monthsRegex, - monthsShortRegex : monthsRegex, - monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, + monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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. }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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. - } + invalidDate: 'Fecha invalida', }); return es; diff --git a/locale/et.js b/locale/et.js index 8a81b0408..d5ec94e0b 100644 --- a/locale/et.js +++ b/locale/et.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Estonian [et] +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,20 +10,21 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'ss': [number + 'sekundi', number + 'sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] + s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + ss: [number + 'sekundi', number + 'sekundit'], + m: ['ühe minuti', 'üks minut'], + mm: [number + ' minuti', number + ' minutit'], + h: ['ühe tunni', 'tund aega', 'üks tund'], + hh: [number + ' tunni', number + ' tundi'], + d: ['ühe päeva', 'üks päev'], + M: ['kuu aja', 'kuu aega', 'üks kuu'], + MM: [number + ' kuu', number + ' kuud'], + y: ['ühe aasta', 'aasta', 'üks aasta'], + yy: [number + ' aasta', number + ' aastat'], }; if (withoutSuffix) { return format[key][2] ? format[key][2] : format[key][1]; @@ -29,49 +33,55 @@ } var et = moment.defineLocale('et', { - months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), - monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), - weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), - weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' + months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split( + '_' + ), + monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split( + '_' + ), + weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split( + '_' + ), + weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' + calendar: { + sameDay: '[Täna,] LT', + nextDay: '[Homme,] LT', + nextWeek: '[Järgmine] dddd LT', + lastDay: '[Eile,] LT', + lastWeek: '[Eelmine] dddd LT', + sameElse: 'L', }, - relativeTime : { - future : '%s pärast', - past : '%s tagasi', - s : processRelativeTime, - ss : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : '%d päeva', - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime + relativeTime: { + future: '%s pärast', + past: '%s tagasi', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: '%d päeva', + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 et; diff --git a/locale/eu.js b/locale/eu.js index 2c7781b94..b9843a476 100644 --- a/locale/eu.js +++ b/locale/eu.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Basque [eu] +//! author : Eneko Illarramendi : https://github.com/eillarra ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,57 +9,64 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var eu = moment.defineLocale('eu', { - months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), - monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), - monthsParseExact : true, - weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), - weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l : 'YYYY-M-D', - ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] HH:mm', - llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' + months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split( + '_' + ), + monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split( + '_' + ), + weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), + weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY[ko] MMMM[ren] D[a]', + LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l: 'YYYY-M-D', + ll: 'YYYY[ko] MMM D[a]', + lll: 'YYYY[ko] MMM D[a] HH:mm', + llll: 'ddd, YYYY[ko] MMM D[a] HH:mm', }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' + calendar: { + sameDay: '[gaur] LT[etan]', + nextDay: '[bihar] LT[etan]', + nextWeek: 'dddd LT[etan]', + lastDay: '[atzo] LT[etan]', + lastWeek: '[aurreko] dddd LT[etan]', + sameElse: 'L', }, - relativeTime : { - future : '%s barru', - past : 'duela %s', - s : 'segundo batzuk', - ss : '%d segundo', - m : 'minutu bat', - mm : '%d minutu', - h : 'ordu bat', - hh : '%d ordu', - d : 'egun bat', - dd : '%d egun', - M : 'hilabete bat', - MM : '%d hilabete', - y : 'urte bat', - yy : '%d urte' + relativeTime: { + future: '%s barru', + past: 'duela %s', + s: 'segundo batzuk', + ss: '%d segundo', + m: 'minutu bat', + mm: '%d minutu', + h: 'ordu bat', + hh: '%d ordu', + d: 'egun bat', + dd: '%d egun', + M: 'hilabete bat', + MM: '%d hilabete', + y: 'urte bat', + yy: '%d urte', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return eu; diff --git a/locale/fa.js b/locale/fa.js index e84f7ca1d..fff48cf70 100644 --- a/locale/fa.js +++ b/locale/fa.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Persian [fa] +//! author : Ebrahim Byagowi : https://github.com/ebraminio ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,97 +9,111 @@ 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' - }; + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰', + }, + numberMap = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0', + }; var fa = moment.defineLocale('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.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' + months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + '_' + ), + monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + '_' + ), + weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( + '_' + ), + weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.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 /بعد از ظهر/.test(input); }, - meridiem : function (hour, minute, isLower) { + 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' + 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 سال' + 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]; - }).replace(/،/g, ','); + return string + .replace(/[۰-۹]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); }, dayOfMonthOrdinalParse: /\d{1,2}م/, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + ordinal: '%dم', + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); return fa; diff --git a/locale/fi.js b/locale/fi.js index b01159935..c47f73520 100644 --- a/locale/fi.js +++ b/locale/fi.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Finnish [fi] +//! author : Tarmo Aidantausta : https://github.com/bleadof ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,11 +9,22 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), + var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split( + ' ' + ), numbersFuture = [ - 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9] + 'nolla', + 'yhden', + 'kahden', + 'kolmen', + 'neljän', + 'viiden', + 'kuuden', + numbersPast[7], + numbersPast[8], + numbersPast[9], ]; function translate(number, withoutSuffix, key, isFuture) { var result = ''; @@ -50,57 +63,67 @@ return result; } function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; + return number < 10 + ? isFuture + ? numbersFuture[number] + : numbersPast[number] + : number; } var fi = moment.defineLocale('fi', { - months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), - monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), - weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), - weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l : 'D.M.YYYY', - ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] HH.mm', - llll : 'ddd, Do MMM YYYY, [klo] HH.mm' + months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split( + '_' + ), + monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split( + '_' + ), + weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split( + '_' + ), + weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), + weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM[ta] YYYY', + LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', + l: 'D.M.YYYY', + ll: 'Do MMM YYYY', + lll: 'Do MMM YYYY, [klo] HH.mm', + llll: 'ddd, Do MMM YYYY, [klo] HH.mm', }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' + calendar: { + sameDay: '[tänään] [klo] LT', + nextDay: '[huomenna] [klo] LT', + nextWeek: 'dddd [klo] LT', + lastDay: '[eilen] [klo] LT', + lastWeek: '[viime] dddd[na] [klo] LT', + sameElse: 'L', }, - relativeTime : { - future : '%s päästä', - past : '%s sitten', - s : translate, - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate + relativeTime: { + future: '%s päästä', + past: '%s sitten', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 fi; diff --git a/locale/fil.js b/locale/fil.js new file mode 100644 index 000000000..20db5259e --- /dev/null +++ b/locale/fil.js @@ -0,0 +1,69 @@ +//! moment.js locale configuration +//! locale : Tagalog (Philippines) [tl-ph] +//! author : Dan Hagman : https://github.com/hagmandan +//! author : Matthew Co : https://github.com/matthewdeeco + +;(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 fil = moment.defineLocale('fil', { + months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( + '_' + ), + monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( + '_' + ), + weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'MM/D/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY HH:mm', + LLLL: 'dddd, MMMM DD, YYYY HH:mm', + }, + calendar: { + sameDay: 'LT [ngayong araw]', + nextDay: '[Bukas ng] LT', + nextWeek: 'LT [sa susunod na] dddd', + lastDay: 'LT [kahapon]', + lastWeek: 'LT [noong nakaraang] dddd', + sameElse: 'L', + }, + relativeTime: { + future: 'sa loob ng %s', + past: '%s ang nakalipas', + s: 'ilang segundo', + ss: '%d segundo', + m: 'isang minuto', + mm: '%d minuto', + h: 'isang oras', + hh: '%d oras', + d: 'isang araw', + dd: '%d araw', + M: 'isang buwan', + MM: '%d buwan', + y: 'isang taon', + yy: '%d taon', + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal: function (number) { + return number; + }, + 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 fil; + +}))); diff --git a/locale/fo.js b/locale/fo.js index 8e81cfe68..94c4f3555 100644 --- a/locale/fo.js +++ b/locale/fo.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Faroese [fo] +//! author : Ragnar Johannesen : https://github.com/ragnar123 +//! author : Kristian Sakarisson : https://github.com/sakarisson ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,51 +10,56 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var fo = moment.defineLocale('fo', { - months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), - weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), - 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' + months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split( + '_' + ), + weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), + 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 : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' + calendar: { + sameDay: '[Í dag kl.] LT', + nextDay: '[Í morgin kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[Í gjár kl.] LT', + lastWeek: '[síðstu] dddd [kl] LT', + sameElse: 'L', }, - relativeTime : { - future : 'um %s', - past : '%s síðani', - s : 'fá sekund', - ss : '%d sekundir', - m : 'ein minuttur', - mm : '%d minuttir', - h : 'ein tími', - hh : '%d tímar', - d : 'ein dagur', - dd : '%d dagar', - M : 'ein mánaður', - MM : '%d mánaðir', - y : 'eitt ár', - yy : '%d ár' + relativeTime: { + future: 'um %s', + past: '%s síðani', + s: 'fá sekund', + ss: '%d sekundir', + m: 'ein minuttur', + mm: '%d minuttir', + h: 'ein tími', + hh: '%d tímar', + d: 'ein dagur', + dd: '%d dagar', + M: 'ein mánaður', + MM: '%d mánaðir', + y: 'eitt ár', + yy: '%d ár', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 fo; diff --git a/locale/fr-ca.js b/locale/fr-ca.js index ad1f77d5e..a170e9735 100644 --- a/locale/fr-ca.js +++ b/locale/fr-ca.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : French (Canada) [fr-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,49 +9,54 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var frCa = moment.defineLocale('fr-ca', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { // Words with masculine grammatical gender: mois, trimestre, jour default: @@ -65,7 +72,7 @@ case 'W': return number + (number === 1 ? 're' : 'e'); } - } + }, }); return frCa; diff --git a/locale/fr-ch.js b/locale/fr-ch.js index 54033d14b..d371fa71d 100644 --- a/locale/fr-ch.js +++ b/locale/fr-ch.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : French (Switzerland) [fr-ch] +//! author : Gaspard Bucher : https://github.com/gaspard ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,49 +9,54 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var frCh = moment.defineLocale('fr-ch', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.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' + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.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', }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { // Words with masculine grammatical gender: mois, trimestre, jour default: @@ -66,10 +73,10 @@ return number + (number === 1 ? 're' : 'e'); } }, - 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. - } + 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 frCh; diff --git a/locale/fr.js b/locale/fr.js index 928670733..e79d52e0e 100644 --- a/locale/fr.js +++ b/locale/fr.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : French [fr] +//! author : John Fischer : https://github.com/jfroffice ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,49 +9,54 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var fr = moment.defineLocale('fr', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.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' + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.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', }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { // TODO: Return 'e' when day of month > 1. Move this case inside // block for masculine words below. @@ -71,10 +78,10 @@ return number + (number === 1 ? 're' : 'e'); } }, - 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. - } + 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 fr; diff --git a/locale/fy.js b/locale/fy.js index 9a672bf4f..ed5da084b 100644 --- a/locale/fy.js +++ b/locale/fy.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Frisian [fy] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,13 +9,20 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split( + '_' + ), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split( + '_' + ); var fy = moment.defineLocale('fy', { - months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), - monthsShort : function (m, format) { + months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortWithDots; } else if (/-MMM-/.test(format)) { @@ -22,51 +31,56 @@ return monthsShortWithDots[m.month()]; } }, - monthsParseExact : true, - weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), - weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.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' + monthsParseExact: true, + weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split( + '_' + ), + weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.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', }, - calendar : { + calendar: { sameDay: '[hjoed om] LT', nextDay: '[moarn om] LT', nextWeek: 'dddd [om] LT', lastDay: '[juster om] LT', lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'oer %s', - past : '%s lyn', - s : 'in pear sekonden', - ss : '%d sekonden', - m : 'ien minút', - mm : '%d minuten', - h : 'ien oere', - hh : '%d oeren', - d : 'ien dei', - dd : '%d dagen', - M : 'ien moanne', - MM : '%d moannen', - y : 'ien jier', - yy : '%d jierren' + relativeTime: { + future: 'oer %s', + past: '%s lyn', + s: 'in pear sekonden', + ss: '%d sekonden', + m: 'ien minút', + mm: '%d minuten', + h: 'ien oere', + hh: '%d oeren', + d: 'ien dei', + dd: '%d dagen', + M: 'ien moanne', + MM: '%d moannen', + y: 'ien jier', + yy: '%d jierren', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + 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. }, - 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 fy; diff --git a/locale/ga.js b/locale/ga.js index a5b92de48..96f988c80 100644 --- a/locale/ga.js +++ b/locale/ga.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Irish or Irish Gaelic [ga] +//! author : André Silva : https://github.com/askpt ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,19 +9,47 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; - + //! moment.js locale configuration var months = [ - 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig' - ]; - - var monthsShort = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll']; - - var weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn']; - - var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat']; - - var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa']; + 'Eanáir', + 'Feabhra', + 'Márta', + 'Aibreán', + 'Bealtaine', + 'Meitheamh', + 'Iúil', + 'Lúnasa', + 'Meán Fómhair', + 'Deireadh Fómhair', + 'Samhain', + 'Nollaig', + ], + monthsShort = [ + 'Ean', + 'Feabh', + 'Márt', + 'Aib', + 'Beal', + 'Meith', + 'Iúil', + 'Lún', + 'M.F.', + 'D.F.', + 'Samh', + 'Noll', + ], + weekdays = [ + 'Dé Domhnaigh', + 'Dé Luain', + 'Dé Máirt', + 'Dé Céadaoin', + 'Déardaoin', + 'Dé hAoine', + 'Dé Sathairn', + ], + weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], + weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa']; var ga = moment.defineLocale('ga', { months: months, @@ -34,15 +64,15 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' + LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Inniu ag] LT', nextDay: '[Amárach ag] LT', nextWeek: 'dddd [ag] LT', - lastDay: '[Inné aig] LT', + lastDay: '[Inné ag] LT', lastWeek: 'dddd [seo caite] [ag] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'i %s', @@ -56,9 +86,9 @@ d: 'lá', dd: '%d lá', M: 'mí', - MM: '%d mí', + MM: '%d míonna', y: 'bliain', - yy: '%d bliain' + yy: '%d bliain', }, dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, ordinal: function (number) { @@ -67,8 +97,8 @@ }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); return ga; diff --git a/locale/gd.js b/locale/gd.js index 4d0d88a74..b053838e6 100644 --- a/locale/gd.js +++ b/locale/gd.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Scottish Gaelic [gd] +//! author : Jon Ashdown : https://github.com/jonashdown ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,67 +9,96 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var months = [ - 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' - ]; - - var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh']; - - var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne']; - - var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis']; - - var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; + 'Am Faoilleach', + 'An Gearran', + 'Am Màrt', + 'An Giblean', + 'An Cèitean', + 'An t-Ògmhios', + 'An t-Iuchar', + 'An Lùnastal', + 'An t-Sultain', + 'An Dàmhair', + 'An t-Samhain', + 'An Dùbhlachd', + ], + monthsShort = [ + 'Faoi', + 'Gear', + 'Màrt', + 'Gibl', + 'Cèit', + 'Ògmh', + 'Iuch', + 'Lùn', + 'Sult', + 'Dàmh', + 'Samh', + 'Dùbh', + ], + weekdays = [ + 'Didòmhnaich', + 'Diluain', + 'Dimàirt', + 'Diciadain', + 'Diardaoin', + 'Dihaoine', + 'Disathairne', + ], + weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], + weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; var gd = moment.defineLocale('gd', { - months : months, - monthsShort : monthsShort, - monthsParseExact : true, - weekdays : weekdays, - weekdaysShort : weekdaysShort, - weekdaysMin : weekdaysMin, - 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' + months: months, + monthsShort: monthsShort, + monthsParseExact: true, + weekdays: weekdays, + weekdaysShort: weekdaysShort, + weekdaysMin: weekdaysMin, + 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 : '[An-diugh aig] LT', - nextDay : '[A-màireach aig] LT', - nextWeek : 'dddd [aig] LT', - lastDay : '[An-dè aig] LT', - lastWeek : 'dddd [seo chaidh] [aig] LT', - sameElse : 'L' + calendar: { + sameDay: '[An-diugh aig] LT', + nextDay: '[A-màireach aig] LT', + nextWeek: 'dddd [aig] LT', + lastDay: '[An-dè aig] LT', + lastWeek: 'dddd [seo chaidh] [aig] LT', + sameElse: 'L', }, - relativeTime : { - future : 'ann an %s', - past : 'bho chionn %s', - s : 'beagan diogan', - ss : '%d diogan', - m : 'mionaid', - mm : '%d mionaidean', - h : 'uair', - hh : '%d uairean', - d : 'latha', - dd : '%d latha', - M : 'mìos', - MM : '%d mìosan', - y : 'bliadhna', - yy : '%d bliadhna' + relativeTime: { + future: 'ann an %s', + past: 'bho chionn %s', + s: 'beagan diogan', + ss: '%d diogan', + m: 'mionaid', + mm: '%d mionaidean', + h: 'uair', + hh: '%d uairean', + d: 'latha', + dd: '%d latha', + M: 'mìos', + MM: '%d mìosan', + y: 'bliadhna', + yy: '%d bliadhna', }, - dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/, - ordinal : function (number) { + dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, + ordinal: function (number) { var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; return number + output; }, - 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. - } + 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 gd; diff --git a/locale/gl.js b/locale/gl.js index 1cc4177cc..a663e20e0 100644 --- a/locale/gl.js +++ b/locale/gl.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Galician [gl] +//! author : Juan G. Hurtado : https://github.com/juanghurtado ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,68 +9,75 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var gl = moment.defineLocale('gl', { - months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'), - monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), + months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split( + '_' + ), + monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + calendar: { + sameDay: function () { + return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + nextDay: function () { + return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + nextWeek: function () { + return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'; }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + lastDay: function () { + return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT'; }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + lastWeek: function () { + return ( + '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : function (str) { + relativeTime: { + future: function (str) { if (str.indexOf('un') === 0) { return 'n' + str; } return 'en ' + str; }, - past : 'hai %s', - s : 'uns segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'unha hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un ano', - yy : '%d anos' + past: 'hai %s', + s: 'uns segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'unha hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un ano', + yy: '%d anos', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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. }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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 gl; diff --git a/locale/gom-deva.js b/locale/gom-deva.js new file mode 100644 index 000000000..eae9364aa --- /dev/null +++ b/locale/gom-deva.js @@ -0,0 +1,135 @@ +//! moment.js locale configuration +//! locale : Konkani Devanagari script [gom-deva] +//! author : The Discoverer : https://github.com/WikiDiscoverer + +;(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(number, withoutSuffix, key, isFuture) { + var format = { + s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], + ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], + m: ['एका मिणटान', 'एक मिनूट'], + mm: [number + ' मिणटांनी', number + ' मिणटां'], + h: ['एका वरान', 'एक वर'], + hh: [number + ' वरांनी', number + ' वरां'], + d: ['एका दिसान', 'एक दीस'], + dd: [number + ' दिसांनी', number + ' दीस'], + M: ['एका म्हयन्यान', 'एक म्हयनो'], + MM: [number + ' म्हयन्यानी', number + ' म्हयने'], + y: ['एका वर्सान', 'एक वर्स'], + yy: [number + ' वर्सांनी', number + ' वर्सां'], + }; + return isFuture ? format[key][0] : format[key][1]; + } + + var gomDeva = moment.defineLocale('gom-deva', { + months: { + standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( + '_' + ), + format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split( + '_' + ), + isFormat: /MMMM(\s)+D[oD]?/, + }, + monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'), + weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'), + weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'), + weekdaysParseExact: true, + 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, MMMM Do, YYYY, A h:mm [वाजतां]', + llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]', + }, + calendar: { + sameDay: '[आयज] LT', + nextDay: '[फाल्यां] LT', + nextWeek: '[फुडलो] dddd[,] LT', + lastDay: '[काल] LT', + lastWeek: '[फाटलो] dddd[,] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s', + past: '%s आदीं', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, + }, + dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, + ordinal: function (number, period) { + switch (period) { + // the ordinal 'वेर' only applies to day of the month + case 'D': + return number + 'वेर'; + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + case 'w': + case 'W': + return number; + } + }, + 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. + }, + meridiemParse: /राती|सकाळीं|दनपारां|सांजे/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राती') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळीं') { + return hour; + } else if (meridiem === 'दनपारां') { + return hour > 12 ? hour : hour + 12; + } else if (meridiem === 'सांजे') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'राती'; + } else if (hour < 12) { + return 'सकाळीं'; + } else if (hour < 16) { + return 'दनपारां'; + } else if (hour < 20) { + return 'सांजे'; + } else { + return 'राती'; + } + }, + }); + + return gomDeva; + +}))); diff --git a/locale/gom-latn.js b/locale/gom-latn.js index bfad12e73..8be90c2e9 100644 --- a/locale/gom-latn.js +++ b/locale/gom-latn.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Konkani Latin script [gom-latn] +//! author : The Discoverer : https://github.com/WikiDiscoverer ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,68 +9,79 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { - 's': ['thodde secondanim', 'thodde second'], - 'ss': [number + ' secondanim', number + ' second'], - 'm': ['eka mintan', 'ek minute'], - 'mm': [number + ' mintanim', number + ' mintam'], - 'h': ['eka voran', 'ek vor'], - 'hh': [number + ' voranim', number + ' voram'], - 'd': ['eka disan', 'ek dis'], - 'dd': [number + ' disanim', number + ' dis'], - 'M': ['eka mhoinean', 'ek mhoino'], - 'MM': [number + ' mhoineanim', number + ' mhoine'], - 'y': ['eka vorsan', 'ek voros'], - 'yy': [number + ' vorsanim', number + ' vorsam'] + s: ['thoddea sekondamni', 'thodde sekond'], + ss: [number + ' sekondamni', number + ' sekond'], + m: ['eka mintan', 'ek minut'], + mm: [number + ' mintamni', number + ' mintam'], + h: ['eka voran', 'ek vor'], + hh: [number + ' voramni', number + ' voram'], + d: ['eka disan', 'ek dis'], + dd: [number + ' disamni', number + ' dis'], + M: ['eka mhoinean', 'ek mhoino'], + MM: [number + ' mhoineamni', number + ' mhoine'], + y: ['eka vorsan', 'ek voros'], + yy: [number + ' vorsamni', number + ' vorsam'], }; - return withoutSuffix ? format[key][0] : format[key][1]; + return isFuture ? format[key][0] : format[key][1]; } var gomLatn = moment.defineLocale('gom-latn', { - months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'), - monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'), - weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), - weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'A h:mm [vazta]', - LTS : 'A h:mm:ss [vazta]', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY A h:mm [vazta]', - LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]', - llll: 'ddd, D MMM YYYY, A h:mm [vazta]' + months: { + standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split( + '_' + ), + format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split( + '_' + ), + isFormat: /MMMM(\s)+D[oD]?/, }, - calendar : { + monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'), + weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), + weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'A h:mm [vazta]', + LTS: 'A h:mm:ss [vazta]', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY A h:mm [vazta]', + LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]', + llll: 'ddd, D MMM YYYY, A h:mm [vazta]', + }, + calendar: { sameDay: '[Aiz] LT', nextDay: '[Faleam] LT', - nextWeek: '[Ieta to] dddd[,] LT', + nextWeek: '[Fuddlo] dddd[,] LT', lastDay: '[Kal] LT', - lastWeek: '[Fatlo] dddd[,] LT', - sameElse: 'L' + lastWeek: '[Fattlo] dddd[,] LT', + sameElse: 'L', }, - relativeTime : { - future : '%s', - past : '%s adim', - s : processRelativeTime, - ss : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime + relativeTime: { + future: '%s', + past: '%s adim', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, }, - dayOfMonthOrdinalParse : /\d{1,2}(er)/, - ordinal : function (number, period) { + dayOfMonthOrdinalParse: /\d{1,2}(er)/, + ordinal: function (number, period) { switch (period) { // the ordinal 'er' only applies to day of the month case 'D': @@ -83,18 +96,18 @@ return number; } }, - 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. + 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. }, - meridiemParse: /rati|sokalli|donparam|sanje/, - meridiemHour : function (hour, meridiem) { + meridiemParse: /rati|sokallim|donparam|sanje/, + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'rati') { return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'sokalli') { + } else if (meridiem === 'sokallim') { return hour; } else if (meridiem === 'donparam') { return hour > 12 ? hour : hour + 12; @@ -102,11 +115,11 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'rati'; } else if (hour < 12) { - return 'sokalli'; + return 'sokallim'; } else if (hour < 16) { return 'donparam'; } else if (hour < 20) { @@ -114,7 +127,7 @@ } else { return 'rati'; } - } + }, }); return gomLatn; diff --git a/locale/gu.js b/locale/gu.js index 9f80dbd7f..d5e5d9561 100644 --- a/locale/gu.js +++ b/locale/gu.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Gujarati [gu] +//! author : Kaushik Thanki : https://github.com/Kaushik1987 ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +9,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var symbolMap = { '1': '૧', @@ -18,7 +21,7 @@ '7': '૭', '8': '૮', '9': '૯', - '0': '૦' + '0': '૦', }, numberMap = { '૧': '1', @@ -30,14 +33,20 @@ '૭': '7', '૮': '8', '૯': '9', - '૦': '0' + '૦': '0', }; var gu = moment.defineLocale('gu', { - months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'), - monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'), + months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split( + '_' + ), + monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split( + '_' + ), monthsParseExact: true, - weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'), + weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split( + '_' + ), weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), longDateFormat: { @@ -46,7 +55,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm વાગ્યે', - LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે' + LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે', }, calendar: { sameDay: '[આજ] LT', @@ -54,7 +63,7 @@ nextWeek: 'dddd, LT', lastDay: '[ગઇકાલે] LT', lastWeek: '[પાછલા] dddd, LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: '%s મા', @@ -70,7 +79,7 @@ M: 'એક મહિનો', MM: '%d મહિનો', y: 'એક વર્ષ', - yy: '%d વર્ષ' + yy: '%d વર્ષ', }, preparse: function (string) { return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { @@ -114,8 +123,8 @@ }, 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. - } + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, }); return gu; diff --git a/locale/he.js b/locale/he.js index 7a22e8d7f..00fc4311b 100644 --- a/locale/he.js +++ b/locale/he.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Hebrew [he] +//! author : Tomer Cohen : https://github.com/tomer +//! author : Moshe Simantov : https://github.com/DevelopmentIL +//! author : Tal Ater : https://github.com/TalAter ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,76 +11,81 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var he = moment.defineLocale('he', { - months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), - monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), - weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), - 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', - l : 'D/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' + months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split( + '_' + ), + monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split( + '_' + ), + weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'), + 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', + l: 'D/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm', }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' + 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 : function (number) { + relativeTime: { + future: 'בעוד %s', + past: 'לפני %s', + s: 'מספר שניות', + ss: '%d שניות', + m: 'דקה', + mm: '%d דקות', + h: 'שעה', + hh: function (number) { if (number === 2) { return 'שעתיים'; } return number + ' שעות'; }, - d : 'יום', - dd : function (number) { + d: 'יום', + dd: function (number) { if (number === 2) { return 'יומיים'; } return number + ' ימים'; }, - M : 'חודש', - MM : function (number) { + M: 'חודש', + MM: function (number) { if (number === 2) { return 'חודשיים'; } return number + ' חודשים'; }, - y : 'שנה', - yy : function (number) { + y: 'שנה', + yy: function (number) { if (number === 2) { return 'שנתיים'; } else if (number % 10 === 0 && number !== 10) { return number + ' שנה'; } return number + ' שנים'; - } + }, }, meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, - isPM : function (input) { + isPM: function (input) { return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 5) { return 'לפנות בוקר'; } else if (hour < 10) { @@ -88,7 +97,7 @@ } else { return 'בערב'; } - } + }, }); return he; diff --git a/locale/hi.js b/locale/hi.js index a07860a04..3615f4d09 100644 --- a/locale/hi.js +++ b/locale/hi.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Hindi [hi] +//! author : Mayank Singhal : https://github.com/mayanksinghal ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,70 +9,75 @@ 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' - }; + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; var hi = moment.defineLocale('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( + '_' + ), + monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.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 बजे' + weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.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 : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' + 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 वर्ष' + 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) { @@ -85,7 +92,7 @@ // Hindi notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -99,7 +106,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'रात'; } else if (hour < 10) { @@ -112,10 +119,10 @@ return 'रात'; } }, - 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. - } + 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 hi; diff --git a/locale/hr.js b/locale/hr.js index bf1597b6b..6184618ff 100644 --- a/locale/hr.js +++ b/locale/hr.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Croatian [hr] +//! author : Bojan Marković : https://github.com/bmarkovic ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +9,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function translate(number, withoutSuffix, key) { var result = number + ' '; @@ -71,28 +74,36 @@ } var hr = moment.defineLocale('hr', { - months : { - format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'), - standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_') + months: { + format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split( + '_' + ), + standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split( + '_' + ), }, - monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM YYYY', + LLL: 'Do MMMM YYYY H:mm', + LLLL: 'dddd, Do MMMM YYYY H:mm', }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedjelju] [u] LT'; @@ -107,12 +118,13 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[jučer u] LT', - lastWeek : function () { + lastDay: '[jučer u] LT', + lastWeek: function () { switch (this.day()) { case 0: + return '[prošlu] [nedjelju] [u] LT'; case 3: - return '[prošlu] dddd [u] LT'; + return '[prošlu] [srijedu] [u] LT'; case 6: return '[prošle] [subote] [u] LT'; case 1: @@ -122,30 +134,30 @@ return '[prošli] dddd [u] LT'; } }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'par sekundi', + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: 'dan', + dd: translate, + M: 'mjesec', + MM: translate, + y: 'godinu', + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return hr; diff --git a/locale/hu.js b/locale/hu.js index 53e9bb6eb..3a6685c94 100644 --- a/locale/hu.js +++ b/locale/hu.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Hungarian [hu] +//! author : Adam Brunner : https://github.com/adambrunner ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,15 +9,22 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split( + ' ' + ); function translate(number, withoutSuffix, key, isFuture) { var num = number; switch (key) { case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + return isFuture || withoutSuffix + ? 'néhány másodperc' + : 'néhány másodperce'; case 'ss': - return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce'; + return num + (isFuture || withoutSuffix) + ? ' másodperc' + : ' másodperce'; case 'm': return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); case 'mm': @@ -40,68 +49,77 @@ return ''; } function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + return ( + (isFuture ? '' : '[múlt] ') + + '[' + + weekEndings[this.day()] + + '] LT[-kor]' + ); } var hu = moment.defineLocale('hu', { - months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), - monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), - weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D. H:mm', - LLLL : 'YYYY. MMMM D., dddd H:mm' + months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split( + '_' + ), + weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY. MMMM D.', + LLL: 'YYYY. MMMM D. H:mm', + LLLL: 'YYYY. MMMM D., dddd H:mm', }, meridiemParse: /de|du/i, isPM: function (input) { return input.charAt(1).toLowerCase() === 'u'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower === true ? 'de' : 'DE'; } else { return isLower === true ? 'du' : 'DU'; } }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { + calendar: { + sameDay: '[ma] LT[-kor]', + nextDay: '[holnap] LT[-kor]', + nextWeek: function () { return week.call(this, true); }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { + lastDay: '[tegnap] LT[-kor]', + lastWeek: function () { return week.call(this, false); }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : '%s múlva', - past : '%s', - s : translate, - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate + relativeTime: { + future: '%s múlva', + past: '%s', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 hu; diff --git a/locale/hy-am.js b/locale/hy-am.js index 1be1d85f1..e495232dd 100644 --- a/locale/hy-am.js +++ b/locale/hy-am.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Armenian [hy-am] +//! author : Armendarabyan : https://github.com/armendarabyan ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,25 +9,32 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var hyAm = moment.defineLocale('hy-am', { - months : { - format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'), - standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_') + months: { + format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split( + '_' + ), + standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split( + '_' + ), }, - monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'), - weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - 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' + monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split( + '_' + ), + weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + 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 : { + calendar: { sameDay: '[այսօր] LT', nextDay: '[վաղը] LT', lastDay: '[երեկ] LT', @@ -35,29 +44,29 @@ lastWeek: function () { return '[անցած] dddd [օրը ժամը] LT'; }, - sameElse: 'L' + 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 տարի' + relativeTime: { + future: '%s հետո', + past: '%s առաջ', + s: 'մի քանի վայրկյան', + ss: '%d վայրկյան', + m: 'րոպե', + mm: '%d րոպե', + h: 'ժամ', + hh: '%d ժամ', + d: 'օր', + dd: '%d օր', + M: 'ամիս', + MM: '%d ամիս', + y: 'տարի', + yy: '%d տարի', }, meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, isPM: function (input) { return /^(ցերեկվա|երեկոյան)$/.test(input); }, - meridiem : function (hour) { + meridiem: function (hour) { if (hour < 4) { return 'գիշերվա'; } else if (hour < 12) { @@ -83,10 +92,10 @@ return number; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return hyAm; diff --git a/locale/id.js b/locale/id.js index c3e8b9e35..682ecf7a8 100644 --- a/locale/id.js +++ b/locale/id.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Indonesian [id] +//! author : Mohammad Satrio Utomo : https://github.com/tyok +//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,23 +10,26 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var id = moment.defineLocale('id', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), + weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|siang|sore|malam/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -35,7 +41,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { @@ -46,34 +52,34 @@ return 'malam'; } }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Besok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kemarin pukul] LT', + lastWeek: 'dddd [lalu pukul] LT', + sameElse: 'L', }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lalu', - s : 'beberapa detik', - ss : '%d detik', - m : 'semenit', - mm : '%d menit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' + relativeTime: { + future: 'dalam %s', + past: '%s yang lalu', + s: 'beberapa detik', + ss: '%d detik', + m: 'semenit', + mm: '%d menit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); return id; diff --git a/locale/is.js b/locale/is.js index 9856e927a..480fa567a 100644 --- a/locale/is.js +++ b/locale/is.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Icelandic [is] +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +9,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function plural(n) { if (n % 100 === 11) { @@ -20,24 +23,36 @@ var result = number + ' '; switch (key) { case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + return withoutSuffix || isFuture + ? 'nokkrar sekúndur' + : 'nokkrum sekúndum'; case 'ss': if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum'); + return ( + result + + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum') + ); } return result + 'sekúnda'; case 'm': return withoutSuffix ? 'mínúta' : 'mínútu'; case 'mm': if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + return ( + result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum') + ); } else if (withoutSuffix) { return result + 'mínúta'; } return result + 'mínútu'; case 'hh': if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + return ( + result + + (withoutSuffix || isFuture + ? 'klukkustundir' + : 'klukkustundum') + ); } return result + 'klukkustund'; case 'd': @@ -81,49 +96,53 @@ } var is = moment.defineLocale('is', { - months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), - weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' + months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split( + '_' + ), + weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm', }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' + calendar: { + sameDay: '[í dag kl.] LT', + nextDay: '[á morgun kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[í gær kl.] LT', + lastWeek: '[síðasta] dddd [kl.] LT', + sameElse: 'L', }, - relativeTime : { - future : 'eftir %s', - past : 'fyrir %s síðan', - s : translate, - ss : translate, - m : translate, - mm : translate, - h : 'klukkustund', - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate + relativeTime: { + future: 'eftir %s', + past: 'fyrir %s síðan', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: 'klukkustund', + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 is; diff --git a/locale/it-ch.js b/locale/it-ch.js index fcf2d4b03..8042827dd 100644 --- a/locale/it-ch.js +++ b/locale/it-ch.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Italian (Switzerland) [it-ch] +//! author : xfh : https://github.com/xfh ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,22 +9,27 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var itCh = moment.defineLocale('it-ch', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), - weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), - 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' + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( + '_' + ), + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( + '_' + ), + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + 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 : { + calendar: { sameDay: '[Oggi alle] LT', nextDay: '[Domani alle] LT', nextWeek: 'dddd [alle] LT', @@ -35,32 +42,32 @@ return '[lo scorso] dddd [alle] LT'; } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + relativeTime: { + future: function (s) { + return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; }, - past : '%s fa', - s : 'alcuni secondi', - ss : '%d secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' + past: '%s fa', + s: 'alcuni secondi', + ss: '%d secondi', + m: 'un minuto', + mm: '%d minuti', + h: "un'ora", + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni', }, - dayOfMonthOrdinalParse : /\d{1,2}º/, + dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 itCh; diff --git a/locale/it.js b/locale/it.js index f42ff8fa5..4fa1efc0d 100644 --- a/locale/it.js +++ b/locale/it.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Italian [it] +//! author : Lorenzo : https://github.com/aliem +//! author: Mattia Larentis: https://github.com/nostalgiaz +//! author: Marco : https://github.com/Manfre98 ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,60 +11,105 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var it = moment.defineLocale('it', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), - weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), - 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' + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( + '_' + ), + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( + '_' + ), + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + 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: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', + calendar: { + sameDay: function () { + return ( + '[Oggi a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + nextDay: function () { + return ( + '[Domani a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + nextWeek: function () { + return ( + 'dddd [a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + lastDay: function () { + return ( + '[Ieri a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, lastWeek: function () { switch (this.day()) { case 0: - return '[la scorsa] dddd [alle] LT'; + return ( + '[La scorsa] dddd [a' + + (this.hours() > 1 + ? 'lle ' + : this.hours() === 0 + ? ' ' + : "ll'") + + ']LT' + ); default: - return '[lo scorso] dddd [alle] LT'; + return ( + '[Lo scorso] dddd [a' + + (this.hours() > 1 + ? 'lle ' + : this.hours() === 0 + ? ' ' + : "ll'") + + ']LT' + ); } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + relativeTime: { + future: function (s) { + return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; }, - past : '%s fa', - s : 'alcuni secondi', - ss : '%d secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' + past: '%s fa', + s: 'alcuni secondi', + ss: '%d secondi', + m: 'un minuto', + mm: '%d minuti', + h: "un'ora", + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni', }, - dayOfMonthOrdinalParse : /\d{1,2}º/, + dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 it; diff --git a/locale/ja.js b/locale/ja.js index 4e4efd6ae..88d845483 100644 --- a/locale/ja.js +++ b/locale/ja.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Japanese [ja] +//! author : LI Long : https://github.com/baryon ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,59 +9,125 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var ja = moment.defineLocale('ja', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort : '日_月_火_水_木_金_土'.split('_'), - weekdaysMin : '日_月_火_水_木_金_土'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日 dddd HH:mm', - l : 'YYYY/MM/DD', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日(ddd) HH:mm' + eras: [ + { + since: '2019-05-01', + offset: 1, + name: '令和', + narrow: '㋿', + abbr: 'R', + }, + { + since: '1989-01-08', + until: '2019-04-30', + offset: 1, + name: '平成', + narrow: '㍻', + abbr: 'H', + }, + { + since: '1926-12-25', + until: '1989-01-07', + offset: 1, + name: '昭和', + narrow: '㍼', + abbr: 'S', + }, + { + since: '1912-07-30', + until: '1926-12-24', + offset: 1, + name: '大正', + narrow: '㍽', + abbr: 'T', + }, + { + since: '1873-01-01', + until: '1912-07-29', + offset: 6, + name: '明治', + narrow: '㍾', + abbr: 'M', + }, + { + since: '0001-01-01', + until: '1873-12-31', + offset: 1, + name: '西暦', + narrow: 'AD', + abbr: 'AD', + }, + { + since: '0000-12-31', + until: -Infinity, + offset: 1, + name: '紀元前', + narrow: 'BC', + abbr: 'BC', + }, + ], + eraYearOrdinalRegex: /(元|\d+)年/, + eraYearOrdinalParse: function (input, match) { + return match[1] === '元' ? 1 : parseInt(match[1] || input, 10); + }, + months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort: '日_月_火_水_木_金_土'.split('_'), + weekdaysMin: '日_月_火_水_木_金_土'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日 dddd HH:mm', + l: 'YYYY/MM/DD', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日(ddd) HH:mm', }, meridiemParse: /午前|午後/i, - isPM : function (input) { + isPM: function (input) { return input === '午後'; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return '午前'; } else { return '午後'; } }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : function (now) { - if (now.week() < this.week()) { + calendar: { + sameDay: '[今日] LT', + nextDay: '[明日] LT', + nextWeek: function (now) { + if (now.week() !== this.week()) { return '[来週]dddd LT'; } else { return 'dddd LT'; } }, - lastDay : '[昨日] LT', - lastWeek : function (now) { - if (this.week() < now.week()) { + lastDay: '[昨日] LT', + lastWeek: function (now) { + if (this.week() !== now.week()) { return '[先週]dddd LT'; } else { return 'dddd LT'; } }, - sameElse : 'L' + sameElse: 'L', }, - dayOfMonthOrdinalParse : /\d{1,2}日/, - ordinal : function (number, period) { + dayOfMonthOrdinalParse: /\d{1,2}日/, + ordinal: function (number, period) { switch (period) { + case 'y': + return number === 1 ? '元年' : number + '年'; case 'd': case 'D': case 'DDD': @@ -68,22 +136,22 @@ return number; } }, - relativeTime : { - future : '%s後', - past : '%s前', - s : '数秒', - ss : '%d秒', - m : '1分', - mm : '%d分', - h : '1時間', - hh : '%d時間', - d : '1日', - dd : '%d日', - M : '1ヶ月', - MM : '%dヶ月', - y : '1年', - yy : '%d年' - } + relativeTime: { + future: '%s後', + past: '%s前', + s: '数秒', + ss: '%d秒', + m: '1分', + mm: '%d分', + h: '1時間', + hh: '%d時間', + d: '1日', + dd: '%d日', + M: '1ヶ月', + MM: '%dヶ月', + y: '1年', + yy: '%d年', + }, }); return ja; diff --git a/locale/jv.js b/locale/jv.js index b2bb4f41c..ab6655fe9 100644 --- a/locale/jv.js +++ b/locale/jv.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Javanese [jv] +//! author : Rony Lantip : https://github.com/lantip +//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,23 +10,26 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var jv = moment.defineLocale('jv', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -35,7 +41,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'enjing'; } else if (hours < 15) { @@ -46,34 +52,34 @@ return 'ndalu'; } }, - calendar : { - sameDay : '[Dinten puniko pukul] LT', - nextDay : '[Mbenjang pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kala wingi pukul] LT', - lastWeek : 'dddd [kepengker pukul] LT', - sameElse : 'L' + calendar: { + sameDay: '[Dinten puniko pukul] LT', + nextDay: '[Mbenjang pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kala wingi pukul] LT', + lastWeek: 'dddd [kepengker pukul] LT', + sameElse: 'L', }, - relativeTime : { - future : 'wonten ing %s', - past : '%s ingkang kepengker', - s : 'sawetawis detik', - ss : '%d detik', - m : 'setunggal menit', - mm : '%d menit', - h : 'setunggal jam', - hh : '%d jam', - d : 'sedinten', - dd : '%d dinten', - M : 'sewulan', - MM : '%d wulan', - y : 'setaun', - yy : '%d taun' + relativeTime: { + future: 'wonten ing %s', + past: '%s ingkang kepengker', + s: 'sawetawis detik', + ss: '%d detik', + m: 'setunggal menit', + mm: '%d menit', + h: 'setunggal jam', + hh: '%d jam', + d: 'sedinten', + dd: '%d dinten', + M: 'sewulan', + MM: '%d wulan', + y: 'setaun', + yy: '%d taun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); return jv; diff --git a/locale/ka.js b/locale/ka.js index 0ec5eb24e..5bb33b0e8 100644 --- a/locale/ka.js +++ b/locale/ka.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Georgian [ka] +//! author : Irakli Janiashvili : https://github.com/IrakliJani ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,80 +9,93 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var ka = moment.defineLocale('ka', { - months : { - standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split( + '_' + ), + monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays: { + standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split( + '_' + ), + format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split( + '_' + ), + isFormat: /(წინა|შემდეგ)/, }, - monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : { - standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'), - isFormat: /(წინა|შემდეგ)/ + weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + 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', }, - weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' + calendar: { + sameDay: '[დღეს] LT[-ზე]', + nextDay: '[ხვალ] LT[-ზე]', + lastDay: '[გუშინ] LT[-ზე]', + nextWeek: '[შემდეგ] dddd LT[-ზე]', + lastWeek: '[წინა] dddd LT-ზე', + sameElse: 'L', }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, 'ში') : - s + 'ში'; + relativeTime: { + future: function (s) { + return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ( + $0, + $1, + $2 + ) { + return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში'; + }); }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + past: function (s) { + if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) { return s.replace(/(ი|ე)$/, 'ის წინ'); } - if ((/წელი/).test(s)) { + if (/წელი/.test(s)) { return s.replace(/წელი$/, 'წლის წინ'); } + return s; }, - s : 'რამდენიმე წამი', - ss : '%d წამი', - m : 'წუთი', - mm : '%d წუთი', - h : 'საათი', - hh : '%d საათი', - d : 'დღე', - dd : '%d დღე', - M : 'თვე', - MM : '%d თვე', - y : 'წელი', - yy : '%d წელი' + s: 'რამდენიმე წამი', + ss: '%d წამი', + m: 'წუთი', + mm: '%d წუთი', + h: 'საათი', + hh: '%d საათი', + d: 'დღე', + dd: '%d დღე', + M: 'თვე', + MM: '%d თვე', + y: 'წელი', + yy: '%d წელი', }, dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal : function (number) { + ordinal: function (number) { if (number === 0) { return number; } if (number === 1) { return number + '-ლი'; } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + if ( + number < 20 || + (number <= 100 && number % 20 === 0) || + number % 100 === 0 + ) { return 'მე-' + number; } return number + '-ე'; }, - week : { - dow : 1, - doy : 7 - } + week: { + dow: 1, + doy: 7, + }, }); return ka; diff --git a/locale/kk.js b/locale/kk.js index c468f6701..38f2e8c1c 100644 --- a/locale/kk.js +++ b/locale/kk.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Kazakh [kk] +//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +9,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var suffixes = { 0: '-ші', @@ -28,57 +31,61 @@ 70: '-ші', 80: '-ші', 90: '-шы', - 100: '-ші' + 100: '-ші', }; var kk = moment.defineLocale('kk', { - months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'), - monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), - weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'), - weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), - weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'), - 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' + months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split( + '_' + ), + monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), + weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split( + '_' + ), + weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), + weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'), + 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 : '[Бүгін сағат] LT', - nextDay : '[Ертең сағат] LT', - nextWeek : 'dddd [сағат] LT', - lastDay : '[Кеше сағат] LT', - lastWeek : '[Өткен аптаның] dddd [сағат] LT', - sameElse : 'L' + 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 жыл' + relativeTime: { + future: '%s ішінде', + past: '%s бұрын', + s: 'бірнеше секунд', + ss: '%d секунд', + m: 'бір минут', + mm: '%d минут', + h: 'бір сағат', + hh: '%d сағат', + d: 'бір күн', + dd: '%d күн', + M: 'бір ай', + MM: '%d ай', + y: 'бір жыл', + yy: '%d жыл', }, dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, - ordinal : function (number) { + ordinal: function (number) { var a = number % 10, b = number >= 100 ? 100 : null; return number + (suffixes[number] || suffixes[a] || suffixes[b]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return kk; diff --git a/locale/km.js b/locale/km.js index fee36238a..a4457886d 100644 --- a/locale/km.js +++ b/locale/km.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Cambodian [km] +//! author : Kruy Vanna : https://github.com/kruyvanna ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,30 +9,32 @@ 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' - }; + '1': '១', + '2': '២', + '3': '៣', + '4': '៤', + '5': '៥', + '6': '៦', + '7': '៧', + '8': '៨', + '9': '៩', + '0': '០', + }, + numberMap = { + '១': '1', + '២': '2', + '៣': '3', + '៤': '4', + '៥': '5', + '៦': '6', + '៧': '7', + '៨': '8', + '៩': '9', + '០': '0', + }; var km = moment.defineLocale('km', { months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( @@ -49,7 +53,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' + LLLL: 'dddd, D MMMM YYYY HH:mm', }, meridiemParse: /ព្រឹក|ល្ងាច/, isPM: function (input) { @@ -68,7 +72,7 @@ nextWeek: 'dddd [ម៉ោង] LT', lastDay: '[ម្សិលមិញ ម៉ោង] LT', lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: '%sទៀត', @@ -84,10 +88,10 @@ M: 'មួយខែ', MM: '%d ខែ', y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ' + yy: '%d ឆ្នាំ', }, - dayOfMonthOrdinalParse : /ទី\d{1,2}/, - ordinal : 'ទី%d', + dayOfMonthOrdinalParse: /ទី\d{1,2}/, + ordinal: 'ទី%d', preparse: function (string) { return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { return numberMap[match]; @@ -100,8 +104,8 @@ }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); return km; diff --git a/locale/kn.js b/locale/kn.js index 8d0ae9d87..84ff9b83e 100644 --- a/locale/kn.js +++ b/locale/kn.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Kannada [kn] +//! author : Rajeev Naik : https://github.com/rajeevnaikte ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,70 +9,77 @@ 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' - }; + '1': '೧', + '2': '೨', + '3': '೩', + '4': '೪', + '5': '೫', + '6': '೬', + '7': '೭', + '8': '೮', + '9': '೯', + '0': '೦', + }, + numberMap = { + '೧': '1', + '೨': '2', + '೩': '3', + '೪': '4', + '೫': '5', + '೬': '6', + '೭': '7', + '೮': '8', + '೯': '9', + '೦': '0', + }; var kn = moment.defineLocale('kn', { - months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'), - monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'), + months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split( + '_' + ), + monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split( + '_' + ), monthsParseExact: true, - weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'), - weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), - weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.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' + weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split( + '_' + ), + weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), + weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.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 : '[ಇಂದು] LT', - nextDay : '[ನಾಳೆ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ನಿನ್ನೆ] LT', - lastWeek : '[ಕೊನೆಯ] dddd, LT', - sameElse : 'L' + 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 ವರ್ಷ' + 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) { @@ -83,7 +92,7 @@ }); }, meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -97,7 +106,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ರಾತ್ರಿ'; } else if (hour < 10) { @@ -111,13 +120,13 @@ } }, dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, - ordinal : function (number) { + ordinal: function (number) { return number + 'ನೇ'; }, - 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. - } + 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 kn; diff --git a/locale/ko.js b/locale/ko.js index 40f1bb5dc..c81c13ea6 100644 --- a/locale/ko.js +++ b/locale/ko.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Korean [ko] +//! author : Kyungwook, Park : https://github.com/kyungw00k +//! author : Jeeeyul Lee ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,51 +10,54 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var ko = moment.defineLocale('ko', { - months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort : '일_월_화_수_목_금_토'.split('_'), - weekdaysMin : '일_월_화_수_목_금_토'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 A h:mm', - LLLL : 'YYYY년 MMMM D일 dddd A h:mm', - l : 'YYYY.MM.DD.', - ll : 'YYYY년 MMMM D일', - lll : 'YYYY년 MMMM D일 A h:mm', - llll : 'YYYY년 MMMM D일 dddd A h:mm' + months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split( + '_' + ), + weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort: '일_월_화_수_목_금_토'.split('_'), + weekdaysMin: '일_월_화_수_목_금_토'.split('_'), + longDateFormat: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY년 MMMM D일', + LLL: 'YYYY년 MMMM D일 A h:mm', + LLLL: 'YYYY년 MMMM D일 dddd A h:mm', + l: 'YYYY.MM.DD.', + ll: 'YYYY년 MMMM D일', + lll: 'YYYY년 MMMM D일 A h:mm', + llll: 'YYYY년 MMMM D일 dddd A h:mm', }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' + calendar: { + sameDay: '오늘 LT', + nextDay: '내일 LT', + nextWeek: 'dddd LT', + lastDay: '어제 LT', + lastWeek: '지난주 dddd LT', + sameElse: 'L', }, - relativeTime : { - future : '%s 후', - past : '%s 전', - s : '몇 초', - ss : '%d초', - m : '1분', - mm : '%d분', - h : '한 시간', - hh : '%d시간', - d : '하루', - dd : '%d일', - M : '한 달', - MM : '%d달', - y : '일 년', - yy : '%d년' + relativeTime: { + future: '%s 후', + past: '%s 전', + s: '몇 초', + ss: '%d초', + m: '1분', + mm: '%d분', + h: '한 시간', + hh: '%d시간', + d: '하루', + dd: '%d일', + M: '한 달', + MM: '%d달', + y: '일 년', + yy: '%d년', }, - dayOfMonthOrdinalParse : /\d{1,2}(일|월|주)/, - ordinal : function (number, period) { + dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/, + ordinal: function (number, period) { switch (period) { case 'd': case 'D': @@ -66,13 +72,13 @@ return number; } }, - meridiemParse : /오전|오후/, - isPM : function (token) { + meridiemParse: /오전|오후/, + isPM: function (token) { return token === '오후'; }, - meridiem : function (hour, minute, isUpper) { + meridiem: function (hour, minute, isUpper) { return hour < 12 ? '오전' : '오후'; - } + }, }); return ko; diff --git a/locale/ku.js b/locale/ku.js index 05b9dbe2e..2c4f7e28f 100644 --- a/locale/ku.js +++ b/locale/ku.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Kurdish [ku] +//! author : Shahram Mebashar : https://github.com/ShahramMebashar ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,110 +9,119 @@ 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' - }, - months = [ - 'کانونی دووەم', - 'شوبات', - 'ئازار', - 'نیسان', - 'ئایار', - 'حوزەیران', - 'تەمموز', - 'ئاب', - 'ئەیلوول', - 'تشرینی یەكەم', - 'تشرینی دووەم', - 'كانونی یەکەم' - ]; - + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }, + months = [ + 'کانونی دووەم', + 'شوبات', + 'ئازار', + 'نیسان', + 'ئایار', + 'حوزەیران', + 'تەمموز', + 'ئاب', + 'ئەیلوول', + 'تشرینی یەكەم', + 'تشرینی دووەم', + 'كانونی یەکەم', + ]; var ku = moment.defineLocale('ku', { - months : months, - monthsShort : months, - 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' + months: months, + monthsShort: months, + 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 /ئێواره‌/.test(input); }, - meridiem : function (hour, minute, isLower) { + 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' + 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 ساڵ' + 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]; - }).replace(/،/g, ','); + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); return ku; diff --git a/locale/ky.js b/locale/ky.js index 8bd29a365..6dce60615 100644 --- a/locale/ky.js +++ b/locale/ky.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Kyrgyz [ky] +//! author : Chyngyz Arystan uulu : https://github.com/chyngyz ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +9,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var suffixes = { 0: '-чү', @@ -28,57 +31,63 @@ 70: '-чи', 80: '-чи', 90: '-чу', - 100: '-чү' + 100: '-чү', }; var ky = moment.defineLocale('ky', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'), - weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), - weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), - 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' + months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( + '_' + ), + monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split( + '_' + ), + weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split( + '_' + ), + weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), + weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), + 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 : '[Бүгүн саат] LT', - nextDay : '[Эртең саат] LT', - nextWeek : 'dddd [саат] LT', - lastDay : '[Кечээ саат] LT', - lastWeek : '[Өткөн аптанын] dddd [күнү] [саат] LT', - sameElse : 'L' + 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 жыл' + relativeTime: { + future: '%s ичинде', + past: '%s мурун', + s: 'бирнече секунд', + ss: '%d секунд', + m: 'бир мүнөт', + mm: '%d мүнөт', + h: 'бир саат', + hh: '%d саат', + d: 'бир күн', + dd: '%d күн', + M: 'бир ай', + MM: '%d ай', + y: 'бир жыл', + yy: '%d жыл', }, dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, - ordinal : function (number) { + ordinal: function (number) { var a = number % 10, b = number >= 100 ? 100 : null; return number + (suffixes[number] || suffixes[a] || suffixes[b]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return ky; diff --git a/locale/lb.js b/locale/lb.js index 599a6e58b..72a975efe 100644 --- a/locale/lb.js +++ b/locale/lb.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Luxembourgish [lb] +//! author : mweimerskirch : https://github.com/mweimerskirch +//! author : David Raison : https://github.com/kwisatz ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,14 +10,15 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'M': ['ee Mount', 'engem Mount'], - 'y': ['ee Joer', 'engem Joer'] + m: ['eng Minutt', 'enger Minutt'], + h: ['eng Stonn', 'enger Stonn'], + d: ['een Dag', 'engem Dag'], + M: ['ee Mount', 'engem Mount'], + y: ['ee Joer', 'engem Joer'], }; return withoutSuffix ? format[key][0] : format[key][1]; } @@ -55,7 +59,8 @@ return false; } else if (number < 100) { // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; + var lastDigit = number % 10, + firstDigit = number / 10; if (lastDigit === 0) { return eifelerRegelAppliesToNumber(firstDigit); } @@ -74,20 +79,26 @@ } var lb = moment.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split( + '_' + ), weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm [Auer]', LTS: 'H:mm:ss [Auer]', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]', }, calendar: { sameDay: '[Haut um] LT', @@ -104,30 +115,30 @@ default: return '[Leschte] dddd [um] LT'; } - } + }, }, - relativeTime : { - future : processFutureTime, - past : processPastTime, - s : 'e puer Sekonnen', - ss : '%d Sekonnen', - m : processRelativeTime, - mm : '%d Minutten', - h : processRelativeTime, - hh : '%d Stonnen', - d : processRelativeTime, - dd : '%d Deeg', - M : processRelativeTime, - MM : '%d Méint', - y : processRelativeTime, - yy : '%d Joer' + relativeTime: { + future: processFutureTime, + past: processPastTime, + s: 'e puer Sekonnen', + ss: '%d Sekonnen', + m: processRelativeTime, + mm: '%d Minutten', + h: processRelativeTime, + hh: '%d Stonnen', + d: processRelativeTime, + dd: '%d Deeg', + M: processRelativeTime, + MM: '%d Méint', + y: processRelativeTime, + yy: '%d Joer', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); return lb; diff --git a/locale/lo.js b/locale/lo.js index 7cd6cfc8d..29aab3c09 100644 --- a/locale/lo.js +++ b/locale/lo.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Lao [lo] +//! author : Ryan Hart : https://github.com/ryanhart2 ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,61 +9,66 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var lo = moment.defineLocale('lo', { - 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' + 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) { + 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' + calendar: { + sameDay: '[ມື້ນີ້ເວລາ] LT', + nextDay: '[ມື້ອື່ນເວລາ] LT', + nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT', + lastDay: '[ມື້ວານນີ້ເວລາ] LT', + lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', + sameElse: 'L', }, - relativeTime : { - future : 'ອີກ %s', - past : '%sຜ່ານມາ', - s : 'ບໍ່ເທົ່າໃດວິນາທີ', - ss : '%d ວິນາທີ' , - m : '1 ນາທີ', - mm : '%d ນາທີ', - h : '1 ຊົ່ວໂມງ', - hh : '%d ຊົ່ວໂມງ', - d : '1 ມື້', - dd : '%d ມື້', - M : '1 ເດືອນ', - MM : '%d ເດືອນ', - y : '1 ປີ', - yy : '%d ປີ' + relativeTime: { + future: 'ອີກ %s', + past: '%sຜ່ານມາ', + s: 'ບໍ່ເທົ່າໃດວິນາທີ', + ss: '%d ວິນາທີ', + m: '1 ນາທີ', + mm: '%d ນາທີ', + h: '1 ຊົ່ວໂມງ', + hh: '%d ຊົ່ວໂມງ', + d: '1 ມື້', + dd: '%d ມື້', + M: '1 ເດືອນ', + MM: '%d ເດືອນ', + y: '1 ປີ', + yy: '%d ປີ', }, dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, - ordinal : function (number) { + ordinal: function (number) { return 'ທີ່' + number; - } + }, }); return lo; diff --git a/locale/lt.js b/locale/lt.js index bc7d7e7a0..c076a13a8 100644 --- a/locale/lt.js +++ b/locale/lt.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Lithuanian [lt] +//! author : Mindaugas Mozūras : https://github.com/mmozuras ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,19 +9,20 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var units = { - 'ss' : 'sekundė_sekundžių_sekundes', - 'm' : 'minutė_minutės_minutę', - 'mm': 'minutės_minučių_minutes', - 'h' : 'valanda_valandos_valandą', - 'hh': 'valandos_valandų_valandas', - 'd' : 'diena_dienos_dieną', - 'dd': 'dienos_dienų_dienas', - 'M' : 'mėnuo_mėnesio_mėnesį', - 'MM': 'mėnesiai_mėnesių_mėnesius', - 'y' : 'metai_metų_metus', - 'yy': 'metai_metų_metus' + ss: 'sekundė_sekundžių_sekundes', + m: 'minutė_minutės_minutę', + mm: 'minutės_minučių_minutes', + h: 'valanda_valandos_valandą', + hh: 'valandos_valandų_valandas', + d: 'diena_dienos_dieną', + dd: 'dienos_dienų_dienas', + M: 'mėnuo_mėnesio_mėnesį', + MM: 'mėnesiai_mėnesių_mėnesius', + y: 'metai_metų_metus', + yy: 'metai_metų_metus', }; function translateSeconds(number, withoutSuffix, key, isFuture) { if (withoutSuffix) { @@ -29,7 +32,11 @@ } } function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + return withoutSuffix + ? forms(key)[0] + : isFuture + ? forms(key)[1] + : forms(key)[2]; } function special(number) { return number % 10 === 0 || (number > 10 && number < 20); @@ -40,7 +47,9 @@ function translate(number, withoutSuffix, key, isFuture) { var result = number + ' '; if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); + return ( + result + translateSingular(number, withoutSuffix, key[0], isFuture) + ); } else if (withoutSuffix) { return result + (special(number) ? forms(key)[1] : forms(key)[0]); } else { @@ -52,64 +61,72 @@ } } var lt = moment.defineLocale('lt', { - months : { - format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), - standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), - isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/ + months: { + format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split( + '_' + ), + standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split( + '_' + ), + isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/, }, - monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : { - format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'), - standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'), - isFormat: /dddd HH:mm/ + monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays: { + format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split( + '_' + ), + standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split( + '_' + ), + isFormat: /dddd HH:mm/, }, - weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l : 'YYYY-MM-DD', - ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' + weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY [m.] MMMM D [d.]', + LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l: 'YYYY-MM-DD', + ll: 'YYYY [m.] MMMM D [d.]', + lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]', }, - calendar : { - sameDay : '[Šiandien] LT', - nextDay : '[Rytoj] LT', - nextWeek : 'dddd LT', - lastDay : '[Vakar] LT', - lastWeek : '[Praėjusį] dddd LT', - sameElse : 'L' + calendar: { + sameDay: '[Šiandien] LT', + nextDay: '[Rytoj] LT', + nextWeek: 'dddd LT', + lastDay: '[Vakar] LT', + lastWeek: '[Praėjusį] dddd LT', + sameElse: 'L', }, - relativeTime : { - future : 'po %s', - past : 'prieš %s', - s : translateSeconds, - ss : translate, - m : translateSingular, - mm : translate, - h : translateSingular, - hh : translate, - d : translateSingular, - dd : translate, - M : translateSingular, - MM : translate, - y : translateSingular, - yy : translate + relativeTime: { + future: 'po %s', + past: 'prieš %s', + s: translateSeconds, + ss: translate, + m: translateSingular, + mm: translate, + h: translateSingular, + hh: translate, + d: translateSingular, + dd: translate, + M: translateSingular, + MM: translate, + y: translateSingular, + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}-oji/, - ordinal : function (number) { + ordinal: function (number) { return number + '-oji'; }, - 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. - } + 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 lt; diff --git a/locale/lv.js b/locale/lv.js index b5b8ea843..e9a744824 100644 --- a/locale/lv.js +++ b/locale/lv.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Latvian [lv] +//! author : Kristaps Karlsons : https://github.com/skakri +//! author : Jānis Elmeris : https://github.com/JanisE ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,19 +10,20 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var units = { - 'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'), - 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'h': 'stundas_stundām_stunda_stundas'.split('_'), - 'hh': 'stundas_stundām_stunda_stundas'.split('_'), - 'd': 'dienas_dienām_diena_dienas'.split('_'), - 'dd': 'dienas_dienām_diena_dienas'.split('_'), - 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'y': 'gada_gadiem_gads_gadi'.split('_'), - 'yy': 'gada_gadiem_gads_gadi'.split('_') + ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'), + m: 'minūtes_minūtēm_minūte_minūtes'.split('_'), + mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'), + h: 'stundas_stundām_stunda_stundas'.split('_'), + hh: 'stundas_stundām_stunda_stundas'.split('_'), + d: 'dienas_dienām_diena_dienas'.split('_'), + dd: 'dienas_dienām_diena_dienas'.split('_'), + M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + y: 'gada_gadiem_gads_gadi'.split('_'), + yy: 'gada_gadiem_gads_gadi'.split('_'), }; /** * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. @@ -45,50 +49,54 @@ } var lv = moment.defineLocale('lv', { - months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), - weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY.', - LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, HH:mm', - LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' + months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split( + '_' + ), + weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY.', + LL: 'YYYY. [gada] D. MMMM', + LLL: 'YYYY. [gada] D. MMMM, HH:mm', + LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm', }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' + calendar: { + sameDay: '[Šodien pulksten] LT', + nextDay: '[Rīt pulksten] LT', + nextWeek: 'dddd [pulksten] LT', + lastDay: '[Vakar pulksten] LT', + lastWeek: '[Pagājušā] dddd [pulksten] LT', + sameElse: 'L', }, - relativeTime : { - future : 'pēc %s', - past : 'pirms %s', - s : relativeSeconds, - ss : relativeTimeWithPlural, - m : relativeTimeWithSingular, - mm : relativeTimeWithPlural, - h : relativeTimeWithSingular, - hh : relativeTimeWithPlural, - d : relativeTimeWithSingular, - dd : relativeTimeWithPlural, - M : relativeTimeWithSingular, - MM : relativeTimeWithPlural, - y : relativeTimeWithSingular, - yy : relativeTimeWithPlural + relativeTime: { + future: 'pēc %s', + past: 'pirms %s', + s: relativeSeconds, + ss: relativeTimeWithPlural, + m: relativeTimeWithSingular, + mm: relativeTimeWithPlural, + h: relativeTimeWithSingular, + hh: relativeTimeWithPlural, + d: relativeTimeWithSingular, + dd: relativeTimeWithPlural, + M: relativeTimeWithSingular, + MM: relativeTimeWithPlural, + y: relativeTimeWithSingular, + yy: relativeTimeWithPlural, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 lv; diff --git a/locale/me.js b/locale/me.js index 6608d0959..bd78eb024 100644 --- a/locale/me.js +++ b/locale/me.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Montenegrin [me] +//! author : Miodrag Nikač : https://github.com/miodragnikac ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,9 +9,11 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var translator = { - words: { //Different grammatical cases + words: { + //Different grammatical cases ss: ['sekund', 'sekunda', 'sekundi'], m: ['jedan minut', 'jednog minuta'], mm: ['minut', 'minuta', 'minuta'], @@ -17,36 +21,50 @@ hh: ['sat', 'sata', 'sati'], dd: ['dan', 'dana', 'dana'], MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'] + yy: ['godina', 'godine', 'godina'], }, correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + return ( + number + + ' ' + + translator.correctGrammaticalCase(number, wordKey) + ); } - } + }, }; var me = moment.defineLocale('me', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), - monthsParseExact : true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', + LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' + LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[danas u] LT', @@ -67,8 +85,8 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[juče u] LT', - lastWeek : function () { + lastDay: '[juče u] LT', + lastWeek: function () { var lastWeekDays = [ '[prošle] [nedjelje] [u] LT', '[prošlog] [ponedjeljka] [u] LT', @@ -76,34 +94,34 @@ '[prošle] [srijede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' + '[prošle] [subote] [u] LT', ]; return lastWeekDays[this.day()]; }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'nekoliko sekundi', - ss : translator.translate, - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mjesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'nekoliko sekundi', + ss: translator.translate, + m: translator.translate, + mm: translator.translate, + h: translator.translate, + hh: translator.translate, + d: 'dan', + dd: translator.translate, + M: 'mjesec', + MM: translator.translate, + y: 'godinu', + yy: translator.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return me; diff --git a/locale/mi.js b/locale/mi.js index 29f1c7a38..747bf2591 100644 --- a/locale/mi.js +++ b/locale/mi.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Maori [mi] +//! author : John Corrigan : https://github.com/johnideal ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,10 +9,15 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var mi = moment.defineLocale('mi', { - months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'), - monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'), + months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split( + '_' + ), + monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split( + '_' + ), monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, @@ -24,7 +31,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY [i] HH:mm', - LLLL: 'dddd, D MMMM YYYY [i] HH:mm' + LLLL: 'dddd, D MMMM YYYY [i] HH:mm', }, calendar: { sameDay: '[i teie mahana, i] LT', @@ -32,7 +39,7 @@ nextWeek: 'dddd [i] LT', lastDay: '[inanahi i] LT', lastWeek: 'dddd [whakamutunga i] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'i roto i %s', @@ -48,14 +55,14 @@ M: 'he marama', MM: '%d marama', y: 'he tau', - yy: '%d tau' + yy: '%d tau', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 mi; diff --git a/locale/mk.js b/locale/mk.js index 051f683ff..c66500dcc 100644 --- a/locale/mk.js +++ b/locale/mk.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Macedonian [mk] +//! author : Borislav Mickov : https://github.com/B0k0 +//! author : Sashko Todorov : https://github.com/bkyceh ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,27 +10,32 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var mk = moment.defineLocale('mk', { - months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), - weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.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' + months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split( + '_' + ), + monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split( + '_' + ), + weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.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 : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : '[Во] dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { + calendar: { + sameDay: '[Денес во] LT', + nextDay: '[Утре во] LT', + nextWeek: '[Во] dddd [во] LT', + lastDay: '[Вчера во] LT', + lastWeek: function () { switch (this.day()) { case 0: case 3: @@ -40,26 +48,26 @@ return '[Изминатиот] dddd [во] LT'; } }, - sameElse : 'L' + 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 години' + relativeTime: { + future: 'за %s', + past: 'пред %s', + s: 'неколку секунди', + ss: '%d секунди', + m: 'една минута', + mm: '%d минути', + h: 'еден час', + hh: '%d часа', + d: 'еден ден', + dd: '%d дена', + M: 'еден месец', + MM: '%d месеци', + y: 'една година', + yy: '%d години', }, dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { + ordinal: function (number) { var lastDigit = number % 10, last2Digits = number % 100; if (number === 0) { @@ -78,10 +86,10 @@ return number + '-ти'; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return mk; diff --git a/locale/ml.js b/locale/ml.js index 806db47b9..552f61ff7 100644 --- a/locale/ml.js +++ b/locale/ml.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Malayalam [ml] +//! author : Floyd Pink : https://github.com/floydpink ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,60 +9,69 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var ml = moment.defineLocale('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), - monthsParseExact : true, - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.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 -നു' + months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split( + '_' + ), + monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split( + '_' + ), + weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.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 : '[ഇന്ന്] LT', - nextDay : '[നാളെ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ഇന്നലെ] LT', - lastWeek : '[കഴിഞ്ഞ] dddd, LT', - sameElse : 'L' + 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 വർഷം' + relativeTime: { + future: '%s കഴിഞ്ഞ്', + past: '%s മുൻപ്', + s: 'അൽപ നിമിഷങ്ങൾ', + ss: '%d സെക്കൻഡ്', + m: 'ഒരു മിനിറ്റ്', + mm: '%d മിനിറ്റ്', + h: 'ഒരു മണിക്കൂർ', + hh: '%d മണിക്കൂർ', + d: 'ഒരു ദിവസം', + dd: '%d ദിവസം', + M: 'ഒരു മാസം', + MM: '%d മാസം', + y: 'ഒരു വർഷം', + yy: '%d വർഷം', }, meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if ((meridiem === 'രാത്രി' && hour >= 4) || - meridiem === 'ഉച്ച കഴിഞ്ഞ്' || - meridiem === 'വൈകുന്നേരം') { + if ( + (meridiem === 'രാത്രി' && hour >= 4) || + meridiem === 'ഉച്ച കഴിഞ്ഞ്' || + meridiem === 'വൈകുന്നേരം' + ) { return hour + 12; } else { return hour; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'രാത്രി'; } else if (hour < 12) { @@ -72,7 +83,7 @@ } else { return 'രാത്രി'; } - } + }, }); return ml; diff --git a/locale/mn.js b/locale/mn.js index f4b95c816..fc3d02730 100644 --- a/locale/mn.js +++ b/locale/mn.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Mongolian [mn] +//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7 ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +9,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function translate(number, withoutSuffix, key, isFuture) { switch (key) { @@ -35,58 +38,62 @@ } var mn = moment.defineLocale('mn', { - months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'), - monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'), - monthsParseExact : true, - weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), - weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), - weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY оны MMMMын D', - LLL : 'YYYY оны MMMMын D HH:mm', - LLLL : 'dddd, YYYY оны MMMMын D HH:mm' + months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split( + '_' + ), + monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), + weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), + weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY оны MMMMын D', + LLL: 'YYYY оны MMMMын D HH:mm', + LLLL: 'dddd, YYYY оны MMMMын D HH:mm', }, meridiemParse: /ҮӨ|ҮХ/i, - isPM : function (input) { + isPM: function (input) { return input === 'ҮХ'; }, - meridiem : function (hour, minute, isLower) { + 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' + calendar: { + sameDay: '[Өнөөдөр] LT', + nextDay: '[Маргааш] LT', + nextWeek: '[Ирэх] dddd LT', + lastDay: '[Өчигдөр] LT', + lastWeek: '[Өнгөрсөн] dddd LT', + sameElse: 'L', }, - relativeTime : { - future : '%s дараа', - past : '%s өмнө', - s : translate, - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate + relativeTime: { + future: '%s дараа', + past: '%s өмнө', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2} өдөр/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { case 'd': case 'D': @@ -95,7 +102,7 @@ default: return number; } - } + }, }); return mn; diff --git a/locale/mr.js b/locale/mr.js index 984559fdf..84f4e6454 100644 --- a/locale/mr.js +++ b/locale/mr.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Marathi [mr] +//! author : Harshad Kale : https://github.com/kalehv +//! author : Vivek Athalye : https://github.com/vnathalye ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,94 +10,145 @@ 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' - }; + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; - function relativeTimeMr(number, withoutSuffix, string, isFuture) - { + function relativeTimeMr(number, withoutSuffix, string, isFuture) { var output = ''; if (withoutSuffix) { switch (string) { - case 's': output = 'काही सेकंद'; break; - case 'ss': output = '%d सेकंद'; break; - case 'm': output = 'एक मिनिट'; break; - case 'mm': output = '%d मिनिटे'; break; - case 'h': output = 'एक तास'; break; - case 'hh': output = '%d तास'; break; - case 'd': output = 'एक दिवस'; break; - case 'dd': output = '%d दिवस'; break; - case 'M': output = 'एक महिना'; break; - case 'MM': output = '%d महिने'; break; - case 'y': output = 'एक वर्ष'; break; - case 'yy': output = '%d वर्षे'; break; + case 's': + output = 'काही सेकंद'; + break; + case 'ss': + output = '%d सेकंद'; + break; + case 'm': + output = 'एक मिनिट'; + break; + case 'mm': + output = '%d मिनिटे'; + break; + case 'h': + output = 'एक तास'; + break; + case 'hh': + output = '%d तास'; + break; + case 'd': + output = 'एक दिवस'; + break; + case 'dd': + output = '%d दिवस'; + break; + case 'M': + output = 'एक महिना'; + break; + case 'MM': + output = '%d महिने'; + break; + case 'y': + output = 'एक वर्ष'; + break; + case 'yy': + output = '%d वर्षे'; + break; } - } - else { + } else { switch (string) { - case 's': output = 'काही सेकंदां'; break; - case 'ss': output = '%d सेकंदां'; break; - case 'm': output = 'एका मिनिटा'; break; - case 'mm': output = '%d मिनिटां'; break; - case 'h': output = 'एका तासा'; break; - case 'hh': output = '%d तासां'; break; - case 'd': output = 'एका दिवसा'; break; - case 'dd': output = '%d दिवसां'; break; - case 'M': output = 'एका महिन्या'; break; - case 'MM': output = '%d महिन्यां'; break; - case 'y': output = 'एका वर्षा'; break; - case 'yy': output = '%d वर्षां'; break; + case 's': + output = 'काही सेकंदां'; + break; + case 'ss': + output = '%d सेकंदां'; + break; + case 'm': + output = 'एका मिनिटा'; + break; + case 'mm': + output = '%d मिनिटां'; + break; + case 'h': + output = 'एका तासा'; + break; + case 'hh': + output = '%d तासां'; + break; + case 'd': + output = 'एका दिवसा'; + break; + case 'dd': + output = '%d दिवसां'; + break; + case 'M': + output = 'एका महिन्या'; + break; + case 'MM': + output = '%d महिन्यां'; + break; + case 'y': + output = 'एका वर्षा'; + break; + case 'yy': + output = '%d वर्षां'; + break; } } return output.replace(/%d/i, number); } var mr = moment.defineLocale('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), - monthsParseExact : true, - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.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 वाजता' + months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( + '_' + ), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.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 : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', + calendar: { + sameDay: '[आज] LT', + nextDay: '[उद्या] LT', + nextWeek: 'dddd, LT', + lastDay: '[काल] LT', lastWeek: '[मागील] dddd, LT', - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { + relativeTime: { future: '%sमध्ये', past: '%sपूर्वी', s: relativeTimeMr, @@ -108,7 +162,7 @@ M: relativeTimeMr, MM: relativeTimeMr, y: relativeTimeMr, - yy: relativeTimeMr + yy: relativeTimeMr, }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { @@ -120,25 +174,25 @@ return symbolMap[match]; }); }, - meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, - meridiemHour : function (hour, meridiem) { + meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if (meridiem === 'रात्री') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळी') { + if (meridiem === 'पहाटे' || meridiem === 'सकाळी') { return hour; - } else if (meridiem === 'दुपारी') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'सायंकाळी') { - return hour + 12; + } else if ( + meridiem === 'दुपारी' || + meridiem === 'सायंकाळी' || + meridiem === 'रात्री' + ) { + return hour >= 12 ? hour : hour + 12; } }, meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात्री'; - } else if (hour < 10) { + if (hour >= 0 && hour < 6) { + return 'पहाटे'; + } else if (hour < 12) { return 'सकाळी'; } else if (hour < 17) { return 'दुपारी'; @@ -148,10 +202,10 @@ return 'रात्री'; } }, - 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. - } + 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 mr; diff --git a/locale/ms-my.js b/locale/ms-my.js index 92014be24..8d66c2b03 100644 --- a/locale/ms-my.js +++ b/locale/ms-my.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Malay [ms-my] +//! note : DEPRECATED, the correct one is [ms] +//! author : Weldan Jamili : https://github.com/weldan ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,20 +10,23 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var msMy = moment.defineLocale('ms-my', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (hour, meridiem) { @@ -35,7 +41,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { @@ -46,34 +52,34 @@ return 'malam'; } }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Esok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kelmarin pukul] LT', + lastWeek: 'dddd [lepas pukul] LT', + sameElse: 'L', }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - ss : '%d saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + ss: '%d saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); return msMy; diff --git a/locale/ms.js b/locale/ms.js index b499b5c53..37782fb40 100644 --- a/locale/ms.js +++ b/locale/ms.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Malay [ms] +//! author : Weldan Jamili : https://github.com/weldan ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,20 +9,23 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var ms = moment.defineLocale('ms', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (hour, meridiem) { @@ -35,7 +40,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { @@ -46,34 +51,34 @@ return 'malam'; } }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Esok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kelmarin pukul] LT', + lastWeek: 'dddd [lepas pukul] LT', + sameElse: 'L', }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - ss : '%d saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + ss: '%d saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); return ms; diff --git a/locale/mt.js b/locale/mt.js index 4a34c5deb..5a61655c4 100644 --- a/locale/mt.js +++ b/locale/mt.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Maltese (Malta) [mt] +//! author : Alessandro Maruccia : https://github.com/alesma ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,51 +9,56 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var mt = moment.defineLocale('mt', { - months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'), - monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), - weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'), - weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), - weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), - 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' + months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split( + '_' + ), + monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), + weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split( + '_' + ), + weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), + weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), + 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 : '[Illum fil-]LT', - nextDay : '[Għada fil-]LT', - nextWeek : 'dddd [fil-]LT', - lastDay : '[Il-bieraħ fil-]LT', - lastWeek : 'dddd [li għadda] [fil-]LT', - sameElse : 'L' + calendar: { + sameDay: '[Illum fil-]LT', + nextDay: '[Għada fil-]LT', + nextWeek: 'dddd [fil-]LT', + lastDay: '[Il-bieraħ fil-]LT', + lastWeek: 'dddd [li għadda] [fil-]LT', + sameElse: 'L', }, - relativeTime : { - future : 'f’ %s', - past : '%s ilu', - s : 'ftit sekondi', - ss : '%d sekondi', - m : 'minuta', - mm : '%d minuti', - h : 'siegħa', - hh : '%d siegħat', - d : 'ġurnata', - dd : '%d ġranet', - M : 'xahar', - MM : '%d xhur', - y : 'sena', - yy : '%d sni' + relativeTime: { + future: 'f’ %s', + past: '%s ilu', + s: 'ftit sekondi', + ss: '%d sekondi', + m: 'minuta', + mm: '%d minuti', + h: 'siegħa', + hh: '%d siegħat', + d: 'ġurnata', + dd: '%d ġranet', + M: 'xahar', + MM: '%d xhur', + y: 'sena', + yy: '%d sni', }, - dayOfMonthOrdinalParse : /\d{1,2}º/, + dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 mt; diff --git a/locale/my.js b/locale/my.js index ca3102a4a..77be4fee8 100644 --- a/locale/my.js +++ b/locale/my.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Burmese [my] +//! author : Squar team, mysquar.com +//! author : David Rossellat : https://github.com/gholadr +//! author : Tin Aung Lin : https://github.com/thanyawzinmin ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,35 +11,41 @@ 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' - }; + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀', + }, + numberMap = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0', + }; var my = moment.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split( + '_' + ), monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split( + '_' + ), weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), @@ -45,7 +55,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' + LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[ယနေ.] LT [မှာ]', @@ -53,13 +63,13 @@ nextWeek: 'dddd LT [မှာ]', lastDay: '[မနေ.က] LT [မှာ]', lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'လာမည့် %s မှာ', past: 'လွန်ခဲ့သော %s က', s: 'စက္ကန်.အနည်းငယ်', - ss : '%d စက္ကန့်', + ss: '%d စက္ကန့်', m: 'တစ်မိနစ်', mm: '%d မိနစ်', h: 'တစ်နာရီ', @@ -69,7 +79,7 @@ M: 'တစ်လ', MM: '%d လ', y: 'တစ်နှစ်', - yy: '%d နှစ်' + yy: '%d နှစ်', }, preparse: function (string) { return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { @@ -83,8 +93,8 @@ }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); return my; diff --git a/locale/nb.js b/locale/nb.js index f22981042..0138f0953 100644 --- a/locale/nb.js +++ b/locale/nb.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Norwegian Bokmål [nb] +//! authors : Espen Hovlandsdal : https://github.com/rexxars +//! Sigurd Gartmann : https://github.com/sigurdga +//! Stephen Ramthun : https://github.com/stephenramthun ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,53 +11,58 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var nb = moment.defineLocale('nb', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), + weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', }, - calendar : { + calendar: { sameDay: '[i dag kl.] LT', nextDay: '[i morgen kl.] LT', nextWeek: 'dddd [kl.] LT', lastDay: '[i går kl.] LT', lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'noen sekunder', - ss : '%d sekunder', - m : 'ett minutt', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dager', - M : 'en måned', - MM : '%d måneder', - y : 'ett år', - yy : '%d år' + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'noen sekunder', + ss: '%d sekunder', + m: 'ett minutt', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dager', + M: 'en måned', + MM: '%d måneder', + y: 'ett år', + yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 nb; diff --git a/locale/ne.js b/locale/ne.js index 21c03a85b..e2c737eab 100644 --- a/locale/ne.js +++ b/locale/ne.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Nepalese [ne] +//! author : suvash : https://github.com/suvash ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,47 +9,54 @@ 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' - }; + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; var ne = moment.defineLocale('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), - monthsParseExact : true, - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'), - weekdaysParseExact : true, - 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 बजे' + months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split( + '_' + ), + monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split( + '_' + ), + weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'), + weekdaysParseExact: true, + 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 बजे', }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { @@ -60,7 +69,7 @@ }); }, meridiemParse: /राति|बिहान|दिउँसो|साँझ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -74,7 +83,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 3) { return 'राति'; } else if (hour < 12) { @@ -87,34 +96,34 @@ return 'राति'; } }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोलि] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' + 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 बर्ष', }, - relativeTime : { - future : '%sमा', - past : '%s अगाडि', - s : 'केही क्षण', - ss : '%d सेकेण्ड', - m : 'एक मिनेट', - mm : '%d मिनेट', - h : 'एक घण्टा', - hh : '%d घण्टा', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महिना', - MM : '%d महिना', - y : 'एक बर्ष', - yy : '%d बर्ष' + 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. }, - 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 ne; diff --git a/locale/nl-be.js b/locale/nl-be.js index 479e29139..8d1dec9b1 100644 --- a/locale/nl-be.js +++ b/locale/nl-be.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Dutch (Belgium) [nl-be] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,16 +10,35 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; - var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( + '_' + ), + monthsParse = [ + /^jan/i, + /^feb/i, + /^maart|mrt.?$/i, + /^apr/i, + /^mei$/i, + /^jun[i.]?$/i, + /^jul[i.]?$/i, + /^aug/i, + /^sep/i, + /^okt/i, + /^nov/i, + /^dec/i, + ], + monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; var nlBe = moment.defineLocale('nl-be', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortWithDots; } else if (/-MMM-/.test(format)) { @@ -31,54 +53,59 @@ monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'zo_ma_di_wo_do_vr_za'.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' + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( + '_' + ), + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.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', }, - calendar : { + calendar: { sameDay: '[vandaag om] LT', nextDay: '[morgen om] LT', nextWeek: 'dddd [om] LT', lastDay: '[gisteren om] LT', lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - ss : '%d seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + ss: '%d seconden', + m: 'één minuut', + mm: '%d minuten', + h: 'één uur', + hh: '%d uur', + d: 'één dag', + dd: '%d dagen', + M: 'één maand', + MM: '%d maanden', + y: 'één jaar', + yy: '%d jaar', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + 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. }, - 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 nlBe; diff --git a/locale/nl.js b/locale/nl.js index 11e78b9a3..bc6dac757 100644 --- a/locale/nl.js +++ b/locale/nl.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Dutch [nl] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,16 +10,35 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; - var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( + '_' + ), + monthsParse = [ + /^jan/i, + /^feb/i, + /^maart|mrt.?$/i, + /^apr/i, + /^mei$/i, + /^jun[i.]?$/i, + /^jul[i.]?$/i, + /^aug/i, + /^sep/i, + /^okt/i, + /^nov/i, + /^dec/i, + ], + monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; var nl = moment.defineLocale('nl', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortWithDots; } else if (/-MMM-/.test(format)) { @@ -31,54 +53,59 @@ monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'zo_ma_di_wo_do_vr_za'.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' + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( + '_' + ), + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.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', }, - calendar : { + calendar: { sameDay: '[vandaag om] LT', nextDay: '[morgen om] LT', nextWeek: 'dddd [om] LT', lastDay: '[gisteren om] LT', lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - ss : '%d seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + ss: '%d seconden', + m: 'één minuut', + mm: '%d minuten', + h: 'één uur', + hh: '%d uur', + d: 'één dag', + dd: '%d dagen', + M: 'één maand', + MM: '%d maanden', + y: 'één jaar', + yy: '%d jaar', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + 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. }, - 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 nl; diff --git a/locale/nn.js b/locale/nn.js index 5fa355043..638cefb92 100644 --- a/locale/nn.js +++ b/locale/nn.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Nynorsk [nn] +//! authors : https://github.com/mechuwind +//! Stephen Ramthun : https://github.com/stephenramthun ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,51 +10,58 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var nn = moment.defineLocale('nn', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), - weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'), + weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', }, - calendar : { + calendar: { sameDay: '[I dag klokka] LT', nextDay: '[I morgon klokka] LT', nextWeek: 'dddd [klokka] LT', lastDay: '[I går klokka] LT', lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'om %s', - past : '%s sidan', - s : 'nokre sekund', - ss : '%d sekund', - m : 'eit minutt', - mm : '%d minutt', - h : 'ein time', - hh : '%d timar', - d : 'ein dag', - dd : '%d dagar', - M : 'ein månad', - MM : '%d månader', - y : 'eit år', - yy : '%d år' + relativeTime: { + future: 'om %s', + past: '%s sidan', + s: 'nokre sekund', + ss: '%d sekund', + m: 'eit minutt', + mm: '%d minutt', + h: 'ein time', + hh: '%d timar', + d: 'ein dag', + dd: '%d dagar', + M: 'ein månad', + MM: '%d månader', + y: 'eit år', + yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 nn; diff --git a/locale/oc-lnc.js b/locale/oc-lnc.js new file mode 100644 index 000000000..7301280e2 --- /dev/null +++ b/locale/oc-lnc.js @@ -0,0 +1,94 @@ +//! moment.js locale configuration +//! locale : Occitan, lengadocian dialecte [oc-lnc] +//! author : Quentin PAGÈS : https://github.com/Quenty31 + +;(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 ocLnc = moment.defineLocale('oc-lnc', { + months: { + standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split( + '_' + ), + format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split( + '_' + ), + isFormat: /D[oD]?(\s)+MMMM/, + }, + monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split( + '_' + ), + weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'), + weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + ll: 'D MMM YYYY', + LLL: 'D MMMM [de] YYYY [a] H:mm', + lll: 'D MMM YYYY, H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a] H:mm', + llll: 'ddd D MMM YYYY, H:mm', + }, + calendar: { + sameDay: '[uèi a] LT', + nextDay: '[deman a] LT', + nextWeek: 'dddd [a] LT', + lastDay: '[ièr a] LT', + lastWeek: 'dddd [passat a] LT', + sameElse: 'L', + }, + relativeTime: { + future: "d'aquí %s", + past: 'fa %s', + s: 'unas segondas', + ss: '%d segondas', + m: 'una minuta', + mm: '%d minutas', + h: 'una ora', + hh: '%d oras', + d: 'un jorn', + dd: '%d jorns', + M: 'un mes', + MM: '%d meses', + y: 'un an', + yy: '%d ans', + }, + dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal: function (number, period) { + var output = + number === 1 + ? 'r' + : number === 2 + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, + }, + }); + + return ocLnc; + +}))); diff --git a/locale/pa-in.js b/locale/pa-in.js index 58ae12836..ff01b87ff 100644 --- a/locale/pa-in.js +++ b/locale/pa-in.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Punjabi (India) [pa-in] +//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,70 +9,77 @@ 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' - }; + '1': '੧', + '2': '੨', + '3': '੩', + '4': '੪', + '5': '੫', + '6': '੬', + '7': '੭', + '8': '੮', + '9': '੯', + '0': '੦', + }, + numberMap = { + '੧': '1', + '੨': '2', + '੩': '3', + '੪': '4', + '੫': '5', + '੬': '6', + '੭': '7', + '੮': '8', + '੯': '9', + '੦': '0', + }; var paIn = moment.defineLocale('pa-in', { // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi. - months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'), - weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.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 ਵਜੇ' + months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( + '_' + ), + monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( + '_' + ), + weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split( + '_' + ), + weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.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 : '[ਅਜ] LT', - nextDay : '[ਕਲ] LT', - nextWeek : '[ਅਗਲਾ] dddd, LT', - lastDay : '[ਕਲ] LT', - lastWeek : '[ਪਿਛਲੇ] dddd, LT', - sameElse : 'L' + 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 ਸਾਲ' + 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) { @@ -85,7 +94,7 @@ // Punjabi notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -99,7 +108,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ਰਾਤ'; } else if (hour < 10) { @@ -112,10 +121,10 @@ return 'ਰਾਤ'; } }, - 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. - } + 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 paIn; diff --git a/locale/pl.js b/locale/pl.js index 4c9c71a0c..1d2b5f29e 100644 --- a/locale/pl.js +++ b/locale/pl.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Polish [pl] +//! author : Rafal Hirsz : https://github.com/evoL ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,11 +9,16 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); + var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split( + '_' + ), + monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split( + '_' + ); function plural(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; } function translate(number, withoutSuffix, key) { var result = number + ' '; @@ -23,7 +30,7 @@ case 'mm': return result + (plural(number) ? 'minuty' : 'minut'); case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; + return withoutSuffix ? 'godzina' : 'godzinę'; case 'hh': return result + (plural(number) ? 'godziny' : 'godzin'); case 'MM': @@ -34,33 +41,41 @@ } var pl = moment.defineLocale('pl', { - months : function (momentToFormat, format) { + months: function (momentToFormat, format) { if (!momentToFormat) { return monthsNominative; } else if (format === '') { // Hack: if format empty we know this is used to generate // RegExp by moment. Give then back both valid forms of months // in RegExp ready format. - return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + return ( + '(' + + monthsSubjective[momentToFormat.month()] + + '|' + + monthsNominative[momentToFormat.month()] + + ')' + ); } else if (/D MMMM/.test(format)) { return monthsSubjective[momentToFormat.month()]; } else { return monthsNominative[momentToFormat.month()]; } }, - monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), - weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), - weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - 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' + monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split( + '_' + ), + weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), + weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + 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 : { + calendar: { sameDay: '[Dziś o] LT', nextDay: '[Jutro o] LT', nextWeek: function () { @@ -94,30 +109,30 @@ return '[W zeszły] dddd [o] LT'; } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'za %s', - past : '%s temu', - s : 'kilka sekund', - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : '1 dzień', - dd : '%d dni', - M : 'miesiąc', - MM : translate, - y : 'rok', - yy : translate + relativeTime: { + future: 'za %s', + past: '%s temu', + s: 'kilka sekund', + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: '1 dzień', + dd: '%d dni', + M: 'miesiąc', + MM: translate, + y: 'rok', + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 pl; diff --git a/locale/pt-br.js b/locale/pt-br.js index 6cad5911c..d903b7231 100644 --- a/locale/pt-br.js +++ b/locale/pt-br.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Portuguese (Brazil) [pt-br] +//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,52 +9,57 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var ptBr = moment.defineLocale('pt-br', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( + '_' + ), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split( + '_' + ), + weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), + weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', }, - calendar : { + calendar: { sameDay: '[Hoje às] LT', nextDay: '[Amanhã às] LT', nextWeek: 'dddd [às] LT', lastDay: '[Ontem às] LT', lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday + return this.day() === 0 || this.day() === 6 + ? '[Último] dddd [às] LT' // Saturday + Sunday + : '[Última] dddd [às] LT'; // Monday - Friday }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'poucos segundos', - ss : '%d segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'poucos segundos', + ss: '%d segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos', }, dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº' + ordinal: '%dº', }); return ptBr; diff --git a/locale/pt.js b/locale/pt.js index 534f1c86f..6d6bd869f 100644 --- a/locale/pt.js +++ b/locale/pt.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Portuguese [pt] +//! author : Jefferson : https://github.com/jalex79 ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,56 +9,61 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var pt = moment.defineLocale('pt', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( + '_' + ), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split( + '_' + ), + weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[Hoje às] LT', nextDay: '[Amanhã às] LT', nextWeek: 'dddd [às] LT', lastDay: '[Ontem às] LT', lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday + return this.day() === 0 || this.day() === 6 + ? '[Último] dddd [às] LT' // Saturday + Sunday + : '[Última] dddd [às] LT'; // Monday - Friday }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'segundos', - ss : '%d segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'segundos', + ss: '%d segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos', }, dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº', - 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. - } + ordinal: '%dº', + 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 pt; diff --git a/locale/ro.js b/locale/ro.js index 15bea092d..ae846ef46 100644 --- a/locale/ro.js +++ b/locale/ro.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Romanian [ro] +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly +//! author : Emanuel Cepoi : https://github.com/cepem ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,15 +11,16 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { - 'ss': 'secunde', - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' + ss: 'secunde', + mm: 'minute', + hh: 'ore', + dd: 'zile', + MM: 'luni', + yy: 'ani', }, separator = ' '; if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { @@ -25,48 +30,52 @@ } var ro = moment.defineLocale('ro', { - months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), - monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split( + '_' + ), + monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' + weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY H:mm', + LLLL: 'dddd, D MMMM YYYY H:mm', }, - calendar : { + calendar: { sameDay: '[azi la] LT', nextDay: '[mâine la] LT', nextWeek: 'dddd [la] LT', lastDay: '[ieri la] LT', lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'peste %s', - past : '%s în urmă', - s : 'câteva secunde', - ss : relativeTimeWithPlural, - m : 'un minut', - mm : relativeTimeWithPlural, - h : 'o oră', - hh : relativeTimeWithPlural, - d : 'o zi', - dd : relativeTimeWithPlural, - M : 'o lună', - MM : relativeTimeWithPlural, - y : 'un an', - yy : relativeTimeWithPlural + relativeTime: { + future: 'peste %s', + past: '%s în urmă', + s: 'câteva secunde', + ss: relativeTimeWithPlural, + m: 'un minut', + mm: relativeTimeWithPlural, + h: 'o oră', + hh: relativeTimeWithPlural, + d: 'o zi', + dd: relativeTimeWithPlural, + M: 'o lună', + MM: relativeTimeWithPlural, + y: 'un an', + yy: relativeTimeWithPlural, + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); return ro; diff --git a/locale/ru.js b/locale/ru.js index 7afb7b5d5..863223e02 100644 --- a/locale/ru.js +++ b/locale/ru.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Russian [ru] +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire +//! author : Коренберг Марк : https://github.com/socketpair ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,52 +11,81 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function plural(word, num) { var forms = word.split('_'); - 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]); + 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]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { - 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' + ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', + mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + hh: 'час_часа_часов', + dd: 'день_дня_дней', + MM: 'месяц_месяца_месяцев', + yy: 'год_года_лет', }; if (key === 'm') { return withoutSuffix ? 'минута' : 'минуту'; - } - else { + } else { return number + ' ' + plural(format[key], +number); } } - var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; + var monthsParse = [ + /^янв/i, + /^фев/i, + /^мар/i, + /^апр/i, + /^ма[йя]/i, + /^июн/i, + /^июл/i, + /^авг/i, + /^сен/i, + /^окт/i, + /^ноя/i, + /^дек/i, + ]; // http://new.gramota.ru/spravka/rules/139-prop : § 103 // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 var ru = moment.defineLocale('ru', { - months : { - format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), - standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') + months: { + format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split( + '_' + ), + standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( + '_' + ), }, - monthsShort : { + monthsShort: { // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? - format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), - standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') + format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( + '_' + ), + standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( + '_' + ), }, - weekdays : { - standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'), - isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ + weekdays: { + standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split( + '_' + ), + format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split( + '_' + ), + isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/, }, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, + weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, @@ -65,15 +98,15 @@ // Выражение, которое соотвествует только сокращённым формам monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., H:mm', - LLLL : 'dddd, D MMMM YYYY г., H:mm' + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY г.', + LLL: 'D MMMM YYYY г., H:mm', + LLLL: 'dddd, D MMMM YYYY г., H:mm', }, - calendar : { + calendar: { sameDay: '[Сегодня, в] LT', nextDay: '[Завтра, в] LT', lastDay: '[Вчера, в] LT', @@ -121,29 +154,29 @@ } } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'через %s', - past : '%s назад', - s : 'несколько секунд', - ss : relativeTimeWithPlural, - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : 'час', - hh : relativeTimeWithPlural, - d : 'день', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural + relativeTime: { + future: 'через %s', + past: '%s назад', + s: 'несколько секунд', + ss: relativeTimeWithPlural, + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: 'час', + hh: relativeTimeWithPlural, + d: 'день', + dd: relativeTimeWithPlural, + M: 'месяц', + MM: relativeTimeWithPlural, + y: 'год', + yy: relativeTimeWithPlural, }, meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { + isPM: function (input) { return /^(дня|вечера)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночи'; } else if (hour < 12) { @@ -170,10 +203,10 @@ return number; } }, - 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. - } + 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 ru; diff --git a/locale/sd.js b/locale/sd.js index 12992382b..56ff8c7f4 100644 --- a/locale/sd.js +++ b/locale/sd.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Sindhi [sd] +//! author : Narain Sagar : https://github.com/narainsagar ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,78 +9,71 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var months = [ - 'جنوري', - 'فيبروري', - 'مارچ', - 'اپريل', - 'مئي', - 'جون', - 'جولاءِ', - 'آگسٽ', - 'سيپٽمبر', - 'آڪٽوبر', - 'نومبر', - 'ڊسمبر' - ]; - var days = [ - 'آچر', - 'سومر', - 'اڱارو', - 'اربع', - 'خميس', - 'جمع', - 'ڇنڇر' - ]; + 'جنوري', + 'فيبروري', + 'مارچ', + 'اپريل', + 'مئي', + 'جون', + 'جولاءِ', + 'آگسٽ', + 'سيپٽمبر', + 'آڪٽوبر', + 'نومبر', + 'ڊسمبر', + ], + days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر']; var sd = moment.defineLocale('sd', { - months : months, - monthsShort : months, - weekdays : days, - weekdaysShort : days, - weekdaysMin : days, - 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' + months: months, + monthsShort: months, + weekdays: days, + weekdaysShort: days, + weekdaysMin: days, + 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) { + isPM: function (input) { return 'شام' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'صبح'; } return 'شام'; }, - calendar : { - sameDay : '[اڄ] LT', - nextDay : '[سڀاڻي] LT', - nextWeek : 'dddd [اڳين هفتي تي] LT', - lastDay : '[ڪالهه] LT', - lastWeek : '[گزريل هفتي] dddd [تي] LT', - sameElse : 'L' + 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 سال' + 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, ','); @@ -86,10 +81,10 @@ postformat: function (string) { return string.replace(/,/g, '،'); }, - 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. - } + 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 sd; diff --git a/locale/se.js b/locale/se.js index 4b0467803..65e2f12df 100644 --- a/locale/se.js +++ b/locale/se.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Northern Sami [se] +//! authors : Bård Rolstad Henriksen : https://github.com/karamell ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,51 +9,58 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var se = moment.defineLocale('se', { - months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), - monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), - weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), - weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), - weekdaysMin : 's_v_m_g_d_b_L'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'MMMM D. [b.] YYYY', - LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm', - LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' + months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split( + '_' + ), + monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split( + '_' + ), + weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split( + '_' + ), + weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), + weekdaysMin: 's_v_m_g_d_b_L'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'MMMM D. [b.] YYYY', + LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', + LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', }, - calendar : { + calendar: { sameDay: '[otne ti] LT', nextDay: '[ihttin ti] LT', nextWeek: 'dddd [ti] LT', lastDay: '[ikte ti] LT', lastWeek: '[ovddit] dddd [ti] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : '%s geažes', - past : 'maŋit %s', - s : 'moadde sekunddat', + relativeTime: { + future: '%s geažes', + past: 'maŋit %s', + s: 'moadde sekunddat', ss: '%d sekunddat', - m : 'okta minuhta', - mm : '%d minuhtat', - h : 'okta diimmu', - hh : '%d diimmut', - d : 'okta beaivi', - dd : '%d beaivvit', - M : 'okta mánnu', - MM : '%d mánut', - y : 'okta jahki', - yy : '%d jagit' + m: 'okta minuhta', + mm: '%d minuhtat', + h: 'okta diimmu', + hh: '%d diimmut', + d: 'okta beaivi', + dd: '%d beaivvit', + M: 'okta mánnu', + MM: '%d mánut', + y: 'okta jahki', + yy: '%d jagit', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 se; diff --git a/locale/si.js b/locale/si.js index 52dc60807..8cc6ac69d 100644 --- a/locale/si.js +++ b/locale/si.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Sinhalese [si] +//! author : Sampath Sitinamaluwa : https://github.com/sampathsris ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,62 +9,69 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration /*jshint -W100*/ var si = moment.defineLocale('si', { - months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), - monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), - weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), - weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), - weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'a h:mm', - LTS : 'a h:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY MMMM D', - LLL : 'YYYY MMMM D, a h:mm', - LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' + months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split( + '_' + ), + monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split( + '_' + ), + weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split( + '_' + ), + weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'a h:mm', + LTS: 'a h:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY MMMM D', + LLL: 'YYYY MMMM D, a h:mm', + LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss', }, - calendar : { - sameDay : '[අද] LT[ට]', - nextDay : '[හෙට] LT[ට]', - nextWeek : 'dddd LT[ට]', - lastDay : '[ඊයේ] LT[ට]', - lastWeek : '[පසුගිය] dddd LT[ට]', - sameElse : 'L' + 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' + relativeTime: { + future: '%sකින්', + past: '%sකට පෙර', + s: 'තත්පර කිහිපය', + ss: 'තත්පර %d', + m: 'මිනිත්තුව', + mm: 'මිනිත්තු %d', + h: 'පැය', + hh: 'පැය %d', + d: 'දිනය', + dd: 'දින %d', + M: 'මාසය', + MM: 'මාස %d', + y: 'වසර', + yy: 'වසර %d', }, dayOfMonthOrdinalParse: /\d{1,2} වැනි/, - ordinal : function (number) { + ordinal: function (number) { return number + ' වැනි'; }, - meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, - isPM : function (input) { + meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, + isPM: function (input) { return input === 'ප.ව.' || input === 'පස් වරු'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'ප.ව.' : 'පස් වරු'; } else { return isLower ? 'පෙ.ව.' : 'පෙර වරු'; } - } + }, }); return si; diff --git a/locale/sk.js b/locale/sk.js index 6938f95e6..bd60f7bae 100644 --- a/locale/sk.js +++ b/locale/sk.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Slovak [sk] +//! author : Martin Minka : https://github.com/k2s +//! based on work of petrbela : https://github.com/petrbela ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,87 +10,84 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration - var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), + var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split( + '_' + ), monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); function plural(n) { - return (n > 1) && (n < 5); + return n > 1 && n < 5; } function translate(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 's': // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'sekundy' : 'sekúnd'); } else { return result + 'sekundami'; } - break; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'minúty' : 'minút'); } else { return result + 'minútami'; } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; case 'hh': // 9 hours / in 9 hours / 9 hours ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'hodiny' : 'hodín'); } else { return result + 'hodinami'; } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'd': // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'deň' : 'dňom'; case 'dd': // 9 days / in 9 days / 9 days ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'dni' : 'dní'); } else { return result + 'dňami'; } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'M': // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; case 'MM': // 9 months / in 9 months / 9 months ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'mesiace' : 'mesiacov'); } else { return result + 'mesiacmi'; } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'y': // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokom'; case 'yy': // 9 years / in 9 years / 9 years ago if (withoutSuffix || isFuture) { return result + (plural(number) ? 'roky' : 'rokov'); } else { return result + 'rokmi'; } - break; } } var sk = moment.defineLocale('sk', { - months : months, - monthsShort : monthsShort, - weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat : { + months: months, + monthsShort: monthsShort, + weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'), + longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', }, - calendar : { + calendar: { sameDay: '[dnes o] LT', nextDay: '[zajtra o] LT', nextWeek: function () { @@ -124,30 +124,30 @@ return '[minulú sobotu o] LT'; } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'za %s', - past : 'pred %s', - s : translate, - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate + relativeTime: { + future: 'za %s', + past: 'pred %s', + s: translate, + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: translate, + dd: translate, + M: translate, + MM: translate, + y: translate, + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 sk; diff --git a/locale/sl.js b/locale/sl.js index ecdd0cb42..73f1b1734 100644 --- a/locale/sl.js +++ b/locale/sl.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Slovenian [sl] +//! author : Robert Sedovšek : https://github.com/sedovsek ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,12 +9,15 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function processRelativeTime(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { case 's': - return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + return withoutSuffix || isFuture + ? 'nekaj sekund' + : 'nekaj sekundami'; case 'ss': if (number === 1) { result += withoutSuffix ? 'sekundo' : 'sekundi'; @@ -91,26 +96,30 @@ } var sl = moment.defineLocale('sl', { - months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' + weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', + calendar: { + sameDay: '[danes ob] LT', + nextDay: '[jutri ob] LT', - nextWeek : function () { + nextWeek: function () { switch (this.day()) { case 0: return '[v] [nedeljo] [ob] LT'; @@ -125,8 +134,8 @@ return '[v] dddd [ob] LT'; } }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { + lastDay: '[včeraj ob] LT', + lastWeek: function () { switch (this.day()) { case 0: return '[prejšnjo] [nedeljo] [ob] LT'; @@ -141,30 +150,30 @@ return '[prejšnji] dddd [ob] LT'; } }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'čez %s', - past : 'pred %s', - s : processRelativeTime, - ss : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime + relativeTime: { + future: 'čez %s', + past: 'pred %s', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return sl; diff --git a/locale/sq.js b/locale/sq.js index eb081df06..154e3d603 100644 --- a/locale/sq.js +++ b/locale/sq.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Albanian [sq] +//! author : Flakërim Ismani : https://github.com/flakerimi +//! author : Menelion Elensúle : https://github.com/Oire +//! author : Oerd Cukalla : https://github.com/oerd ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,59 +11,64 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var sq = moment.defineLocale('sq', { - months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), - monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), - weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), - weekdaysParseExact : true, + months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split( + '_' + ), + monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split( + '_' + ), + weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), + weekdaysParseExact: true, meridiemParse: /PD|MD/, isPM: function (input) { return input.charAt(0) === 'M'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { return hours < 12 ? 'PD' : 'MD'; }, - 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' + 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 : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' + calendar: { + sameDay: '[Sot në] LT', + nextDay: '[Nesër në] LT', + nextWeek: 'dddd [në] LT', + lastDay: '[Dje në] LT', + lastWeek: 'dddd [e kaluar në] LT', + sameElse: 'L', }, - relativeTime : { - future : 'në %s', - past : '%s më parë', - s : 'disa sekonda', - ss : '%d sekonda', - m : 'një minutë', - mm : '%d minuta', - h : 'një orë', - hh : '%d orë', - d : 'një ditë', - dd : '%d ditë', - M : 'një muaj', - MM : '%d muaj', - y : 'një vit', - yy : '%d vite' + relativeTime: { + future: 'në %s', + past: '%s më parë', + s: 'disa sekonda', + ss: '%d sekonda', + m: 'një minutë', + mm: '%d minuta', + h: 'një orë', + hh: '%d orë', + d: 'një ditë', + dd: '%d ditë', + M: 'një muaj', + MM: '%d muaj', + y: 'një vit', + yy: '%d vite', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 sq; diff --git a/locale/sr-cyrl.js b/locale/sr-cyrl.js index e22a22fc8..14d47b250 100644 --- a/locale/sr-cyrl.js +++ b/locale/sr-cyrl.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Serbian Cyrillic [sr-cyrl] +//! author : Milan Janačković : https://github.com/milan-j ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,9 +9,11 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var translator = { - words: { //Different grammatical cases + words: { + //Different grammatical cases ss: ['секунда', 'секунде', 'секунди'], m: ['један минут', 'једне минуте'], mm: ['минут', 'минуте', 'минута'], @@ -17,36 +21,48 @@ hh: ['сат', 'сата', 'сати'], dd: ['дан', 'дана', 'дана'], MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] + yy: ['година', 'године', 'година'], }, correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + return ( + number + + ' ' + + translator.correctGrammaticalCase(number, wordKey) + ); } - } + }, }; var srCyrl = moment.defineLocale('sr-cyrl', { - months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'), - monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), + months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( + '_' + ), + monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split( + '_' + ), monthsParseExact: true, weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', + LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' + LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[данас у] LT', @@ -66,8 +82,8 @@ return '[у] dddd [у] LT'; } }, - lastDay : '[јуче у] LT', - lastWeek : function () { + lastDay: '[јуче у] LT', + lastWeek: function () { var lastWeekDays = [ '[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', @@ -75,34 +91,34 @@ '[прошле] [среде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' + '[прошле] [суботе] [у] LT', ]; return lastWeekDays[this.day()]; }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'за %s', - past : 'пре %s', - s : 'неколико секунди', - ss : translator.translate, - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'дан', - dd : translator.translate, - M : 'месец', - MM : translator.translate, - y : 'годину', - yy : translator.translate + relativeTime: { + future: 'за %s', + past: 'пре %s', + s: 'неколико секунди', + ss: translator.translate, + m: translator.translate, + mm: translator.translate, + h: translator.translate, + hh: translator.translate, + d: 'дан', + dd: translator.translate, + M: 'месец', + MM: translator.translate, + y: 'годину', + yy: translator.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return srCyrl; diff --git a/locale/sr.js b/locale/sr.js index cb0b7ec9f..8cf996e6a 100644 --- a/locale/sr.js +++ b/locale/sr.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Serbian [sr] +//! author : Milan Janačković : https://github.com/milan-j ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,9 +9,11 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var translator = { - words: { //Different grammatical cases + words: { + //Different grammatical cases ss: ['sekunda', 'sekunde', 'sekundi'], m: ['jedan minut', 'jedne minute'], mm: ['minut', 'minute', 'minuta'], @@ -17,36 +21,50 @@ hh: ['sat', 'sata', 'sati'], dd: ['dan', 'dana', 'dana'], MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] + yy: ['godina', 'godine', 'godina'], }, correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + return ( + number + + ' ' + + translator.correctGrammaticalCase(number, wordKey) + ); } - } + }, }; var sr = moment.defineLocale('sr', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'), + weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split( + '_' + ), weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', + LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' + LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[danas u] LT', @@ -66,8 +84,8 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[juče u] LT', - lastWeek : function () { + lastDay: '[juče u] LT', + lastWeek: function () { var lastWeekDays = [ '[prošle] [nedelje] [u] LT', '[prošlog] [ponedeljka] [u] LT', @@ -75,34 +93,34 @@ '[prošle] [srede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' + '[prošle] [subote] [u] LT', ]; return lastWeekDays[this.day()]; }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'za %s', - past : 'pre %s', - s : 'nekoliko sekundi', - ss : translator.translate, - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate + relativeTime: { + future: 'za %s', + past: 'pre %s', + s: 'nekoliko sekundi', + ss: translator.translate, + m: translator.translate, + mm: translator.translate, + h: translator.translate, + hh: translator.translate, + d: 'dan', + dd: translator.translate, + M: 'mesec', + MM: translator.translate, + y: 'godinu', + yy: translator.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return sr; diff --git a/locale/ss.js b/locale/ss.js index a401149c9..1bcf4effd 100644 --- a/locale/ss.js +++ b/locale/ss.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : siSwati [ss] +//! author : Nicolai Davies : https://github.com/nicolaidavies ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,48 +9,53 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var ss = moment.defineLocale('ss', { - months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'), - monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), - weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'), - weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), - weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' + months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split( + '_' + ), + monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), + weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split( + '_' + ), + weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), + weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', }, - calendar : { - sameDay : '[Namuhla nga] LT', - nextDay : '[Kusasa nga] LT', - nextWeek : 'dddd [nga] LT', - lastDay : '[Itolo nga] LT', - lastWeek : 'dddd [leliphelile] [nga] LT', - sameElse : 'L' + calendar: { + sameDay: '[Namuhla nga] LT', + nextDay: '[Kusasa nga] LT', + nextWeek: 'dddd [nga] LT', + lastDay: '[Itolo nga] LT', + lastWeek: 'dddd [leliphelile] [nga] LT', + sameElse: 'L', }, - relativeTime : { - future : 'nga %s', - past : 'wenteka nga %s', - s : 'emizuzwana lomcane', - ss : '%d mzuzwana', - m : 'umzuzu', - mm : '%d emizuzu', - h : 'lihora', - hh : '%d emahora', - d : 'lilanga', - dd : '%d emalanga', - M : 'inyanga', - MM : '%d tinyanga', - y : 'umnyaka', - yy : '%d iminyaka' + relativeTime: { + future: 'nga %s', + past: 'wenteka nga %s', + s: 'emizuzwana lomcane', + ss: '%d mzuzwana', + m: 'umzuzu', + mm: '%d emizuzu', + h: 'lihora', + hh: '%d emahora', + d: 'lilanga', + dd: '%d emalanga', + M: 'inyanga', + MM: '%d tinyanga', + y: 'umnyaka', + yy: '%d iminyaka', }, meridiemParse: /ekuseni|emini|entsambama|ebusuku/, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'ekuseni'; } else if (hours < 15) { @@ -59,7 +66,7 @@ return 'ebusuku'; } }, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -75,11 +82,11 @@ } }, dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : '%d', - 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. - } + ordinal: '%d', + 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 ss; diff --git a/locale/sv.js b/locale/sv.js index 494fedba0..90fe441fc 100644 --- a/locale/sv.js +++ b/locale/sv.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Swedish [sv] +//! author : Jens Alm : https://github.com/ulmus ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,60 +9,69 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var sv = moment.defineLocale('sv', { - months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D MMMM YYYY [kl.] HH:mm', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd D MMM YYYY HH:mm' + months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd D MMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[Idag] LT', nextDay: '[Imorgon] LT', lastDay: '[Igår] LT', nextWeek: '[På] dddd LT', lastWeek: '[I] dddd[s] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'om %s', - past : 'för %s sedan', - s : 'några sekunder', - ss : '%d sekunder', - m : 'en minut', - mm : '%d minuter', - h : 'en timme', - hh : '%d timmar', - d : 'en dag', - dd : '%d dagar', - M : 'en månad', - MM : '%d månader', - y : 'ett år', - yy : '%d år' + relativeTime: { + future: 'om %s', + past: 'för %s sedan', + s: 'några sekunder', + ss: '%d sekunder', + m: 'en minut', + mm: '%d minuter', + h: 'en timme', + hh: '%d timmar', + d: 'en dag', + dd: '%d dagar', + M: 'en månad', + MM: '%d månader', + y: 'ett år', + yy: '%d år', }, - dayOfMonthOrdinalParse: /\d{1,2}(e|a)/, - ordinal : function (number) { + dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; + output = + ~~((number % 100) / 10) === 1 + ? ':e' + : b === 1 + ? ':a' + : b === 2 + ? ':a' + : b === 3 + ? ':e' + : ':e'; return number + output; }, - 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. - } + 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 sv; diff --git a/locale/sw.js b/locale/sw.js index 2c066b643..3e5839a01 100644 --- a/locale/sw.js +++ b/locale/sw.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Swahili [sw] +//! author : Fahad Kassim : https://github.com/fadsel ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,50 +9,55 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var sw = moment.defineLocale('sw', { - months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'), - weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), - weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.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' + months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), + weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split( + '_' + ), + weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), + weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.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', }, - calendar : { - sameDay : '[leo saa] LT', - nextDay : '[kesho saa] LT', - nextWeek : '[wiki ijayo] dddd [saat] LT', - lastDay : '[jana] LT', - lastWeek : '[wiki iliyopita] dddd [saat] LT', - sameElse : 'L' + calendar: { + sameDay: '[leo saa] LT', + nextDay: '[kesho saa] LT', + nextWeek: '[wiki ijayo] dddd [saat] LT', + lastDay: '[jana] LT', + lastWeek: '[wiki iliyopita] dddd [saat] LT', + sameElse: 'L', }, - relativeTime : { - future : '%s baadaye', - past : 'tokea %s', - s : 'hivi punde', - ss : 'sekunde %d', - m : 'dakika moja', - mm : 'dakika %d', - h : 'saa limoja', - hh : 'masaa %d', - d : 'siku moja', - dd : 'masiku %d', - M : 'mwezi mmoja', - MM : 'miezi %d', - y : 'mwaka mmoja', - yy : 'miaka %d' + relativeTime: { + future: '%s baadaye', + past: 'tokea %s', + s: 'hivi punde', + ss: 'sekunde %d', + m: 'dakika moja', + mm: 'dakika %d', + h: 'saa limoja', + hh: 'masaa %d', + d: 'siku moja', + dd: 'masiku %d', + M: 'mwezi mmoja', + MM: 'miezi %d', + y: 'mwaka mmoja', + yy: 'miaka %d', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); return sw; diff --git a/locale/ta.js b/locale/ta.js index f7a87d7b0..139f1ecb0 100644 --- a/locale/ta.js +++ b/locale/ta.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Tamil [ta] +//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,71 +9,81 @@ 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' - }; + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦', + }, + numberMap = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0', + }; var ta = moment.defineLocale('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - 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' + months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( + '_' + ), + monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( + '_' + ), + weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split( + '_' + ), + weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split( + '_' + ), + weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + 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 : '[இன்று] LT', - nextDay : '[நாளை] LT', - nextWeek : 'dddd, LT', - lastDay : '[நேற்று] LT', - lastWeek : '[கடந்த வாரம்] dddd, LT', - sameElse : 'L' + 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 ஆண்டுகள்' + relativeTime: { + future: '%s இல்', + past: '%s முன்', + s: 'ஒரு சில விநாடிகள்', + ss: '%d விநாடிகள்', + m: 'ஒரு நிமிடம்', + mm: '%d நிமிடங்கள்', + h: 'ஒரு மணி நேரம்', + hh: '%d மணி நேரம்', + d: 'ஒரு நாள்', + dd: '%d நாட்கள்', + M: 'ஒரு மாதம்', + MM: '%d மாதங்கள்', + y: 'ஒரு வருடம்', + yy: '%d ஆண்டுகள்', }, dayOfMonthOrdinalParse: /\d{1,2}வது/, - ordinal : function (number) { + ordinal: function (number) { return number + 'வது'; }, preparse: function (string) { @@ -86,11 +98,11 @@ }, // refer http://ta.wikipedia.org/s/1er1 meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 2) { return ' யாமம்'; } else if (hour < 6) { - return ' வைகறை'; // வைகறை + return ' வைகறை'; // வைகறை } else if (hour < 10) { return ' காலை'; // காலை } else if (hour < 14) { @@ -103,7 +115,7 @@ return ' யாமம்'; } }, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -117,10 +129,10 @@ return hour + 12; } }, - 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. - } + 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 ta; diff --git a/locale/te.js b/locale/te.js index abb40bf1f..e1d69bd41 100644 --- a/locale/te.js +++ b/locale/te.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Telugu [te] +//! author : Krishna Chaitanya Thota : https://github.com/kcthota ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,50 +9,57 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var te = moment.defineLocale('te', { - months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), - monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), - monthsParseExact : true, - weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'), - weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), - weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.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' + months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split( + '_' + ), + monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split( + '_' + ), + weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), + weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.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 : '[నేడు] LT', - nextDay : '[రేపు] LT', - nextWeek : 'dddd, LT', - lastDay : '[నిన్న] LT', - lastWeek : '[గత] dddd, LT', - sameElse : 'L' + 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 సంవత్సరాలు' + relativeTime: { + future: '%s లో', + past: '%s క్రితం', + s: 'కొన్ని క్షణాలు', + ss: '%d సెకన్లు', + m: 'ఒక నిమిషం', + mm: '%d నిమిషాలు', + h: 'ఒక గంట', + hh: '%d గంటలు', + d: 'ఒక రోజు', + dd: '%d రోజులు', + M: 'ఒక నెల', + MM: '%d నెలలు', + y: 'ఒక సంవత్సరం', + yy: '%d సంవత్సరాలు', }, - dayOfMonthOrdinalParse : /\d{1,2}వ/, - ordinal : '%dవ', + dayOfMonthOrdinalParse: /\d{1,2}వ/, + ordinal: '%dవ', meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -64,7 +73,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'రాత్రి'; } else if (hour < 10) { @@ -77,10 +86,10 @@ return 'రాత్రి'; } }, - 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. - } + 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 te; diff --git a/locale/tet.js b/locale/tet.js index efa53da1e..931384a60 100644 --- a/locale/tet.js +++ b/locale/tet.js @@ -1,4 +1,8 @@ //! moment.js locale configuration +//! locale : Tetun Dili (East Timor) [tet] +//! author : Joshua Brooks : https://github.com/joshbrooks +//! author : Onorio De J. Afonso : https://github.com/marobo +//! author : Sonia Simoes : https://github.com/soniasimoes ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,58 +11,67 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var tet = moment.defineLocale('tet', { - months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), - weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), - weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), - 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' + months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split( + '_' + ), + monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), + weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), + weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), + 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 : { + calendar: { sameDay: '[Ohin iha] LT', nextDay: '[Aban iha] LT', nextWeek: 'dddd [iha] LT', lastDay: '[Horiseik iha] LT', lastWeek: 'dddd [semana kotuk] [iha] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'iha %s', - past : '%s liuba', - s : 'minutu balun', - ss : 'minutu %d', - m : 'minutu ida', - mm : 'minutu %d', - h : 'oras ida', - hh : 'oras %d', - d : 'loron ida', - dd : 'loron %d', - M : 'fulan ida', - MM : 'fulan %d', - y : 'tinan ida', - yy : 'tinan %d' + relativeTime: { + future: 'iha %s', + past: '%s liuba', + s: 'segundu balun', + ss: 'segundu %d', + m: 'minutu ida', + mm: 'minutu %d', + h: 'oras ida', + hh: 'oras %d', + d: 'loron ida', + dd: 'loron %d', + M: 'fulan ida', + MM: 'fulan %d', + y: 'tinan ida', + yy: 'tinan %d', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 tet; diff --git a/locale/tg.js b/locale/tg.js index c28336808..a8ae77756 100644 --- a/locale/tg.js +++ b/locale/tg.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Tajik [tg] +//! author : Orif N. Jr. : https://github.com/orif-jr ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +9,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var suffixes = { 0: '-ум', @@ -30,45 +33,49 @@ 70: '-ум', 80: '-ум', 90: '-ум', - 100: '-ум' + 100: '-ум', }; var tg = moment.defineLocale('tg', { - months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'), - weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), - weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), - 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' + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( + '_' + ), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split( + '_' + ), + weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), + weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), + 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 : '[Имрӯз соати] LT', - nextDay : '[Пагоҳ соати] LT', - lastDay : '[Дирӯз соати] LT', - nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT', - lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT', - sameElse : 'L' + calendar: { + sameDay: '[Имрӯз соати] LT', + nextDay: '[Пагоҳ соати] LT', + lastDay: '[Дирӯз соати] LT', + nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT', + lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT', + sameElse: 'L', }, - relativeTime : { - future : 'баъди %s', - past : '%s пеш', - s : 'якчанд сония', - m : 'як дақиқа', - mm : '%d дақиқа', - h : 'як соат', - hh : '%d соат', - d : 'як рӯз', - dd : '%d рӯз', - M : 'як моҳ', - MM : '%d моҳ', - y : 'як сол', - yy : '%d сол' + relativeTime: { + future: 'баъди %s', + past: '%s пеш', + s: 'якчанд сония', + m: 'як дақиқа', + mm: '%d дақиқа', + h: 'як соат', + hh: '%d соат', + d: 'як рӯз', + dd: '%d рӯз', + M: 'як моҳ', + MM: '%d моҳ', + y: 'як сол', + yy: '%d сол', }, meridiemParse: /шаб|субҳ|рӯз|бегоҳ/, meridiemHour: function (hour, meridiem) { @@ -104,10 +111,10 @@ b = number >= 100 ? 100 : null; return number + (suffixes[number] || suffixes[a] || suffixes[b]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 1th is the first week of the year. + }, }); return tg; diff --git a/locale/th.js b/locale/th.js index 87489a4e0..4e82f1b1d 100644 --- a/locale/th.js +++ b/locale/th.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Thai [th] +//! author : Kridsada Thanabulpong : https://github.com/sirn ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,58 +9,63 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var th = moment.defineLocale('th', { - months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), + months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split( + '_' + ), + monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา H:mm', - LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm' + weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY เวลา H:mm', + LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm', }, meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, isPM: function (input) { return input === 'หลังเที่ยง'; }, - meridiem : function (hour, minute, isLower) { + 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' + calendar: { + sameDay: '[วันนี้ เวลา] LT', + nextDay: '[พรุ่งนี้ เวลา] LT', + nextWeek: 'dddd[หน้า เวลา] LT', + lastDay: '[เมื่อวานนี้ เวลา] LT', + lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'อีก %s', + past: '%sที่แล้ว', + s: 'ไม่กี่วินาที', + ss: '%d วินาที', + m: '1 นาที', + mm: '%d นาที', + h: '1 ชั่วโมง', + hh: '%d ชั่วโมง', + d: '1 วัน', + dd: '%d วัน', + M: '1 เดือน', + MM: '%d เดือน', + y: '1 ปี', + yy: '%d ปี', }, - relativeTime : { - future : 'อีก %s', - past : '%sที่แล้ว', - s : 'ไม่กี่วินาที', - ss : '%d วินาที', - m : '1 นาที', - mm : '%d นาที', - h : '1 ชั่วโมง', - hh : '%d ชั่วโมง', - d : '1 วัน', - dd : '%d วัน', - M : '1 เดือน', - MM : '%d เดือน', - y : '1 ปี', - yy : '%d ปี' - } }); return th; diff --git a/locale/tl-ph.js b/locale/tl-ph.js index 3f7e45ee9..871b07841 100644 --- a/locale/tl-ph.js +++ b/locale/tl-ph.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Tagalog (Philippines) [tl-ph] +//! author : Dan Hagman : https://github.com/hagmandan ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,53 +9,58 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var tlPh = moment.defineLocale('tl-ph', { - months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), - monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), - weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'MM/D/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY HH:mm', - LLLL : 'dddd, MMMM DD, YYYY HH:mm' + months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( + '_' + ), + monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( + '_' + ), + weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'MM/D/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY HH:mm', + LLLL: 'dddd, MMMM DD, YYYY HH:mm', }, - calendar : { + calendar: { sameDay: 'LT [ngayong araw]', nextDay: '[Bukas ng] LT', nextWeek: 'LT [sa susunod na] dddd', lastDay: 'LT [kahapon]', lastWeek: 'LT [noong nakaraang] dddd', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'sa loob ng %s', - past : '%s ang nakalipas', - s : 'ilang segundo', - ss : '%d segundo', - m : 'isang minuto', - mm : '%d minuto', - h : 'isang oras', - hh : '%d oras', - d : 'isang araw', - dd : '%d araw', - M : 'isang buwan', - MM : '%d buwan', - y : 'isang taon', - yy : '%d taon' + relativeTime: { + future: 'sa loob ng %s', + past: '%s ang nakalipas', + s: 'ilang segundo', + ss: '%d segundo', + m: 'isang minuto', + mm: '%d minuto', + h: 'isang oras', + hh: '%d oras', + d: 'isang araw', + dd: '%d araw', + M: 'isang buwan', + MM: '%d buwan', + y: 'isang taon', + yy: '%d taon', }, dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { + ordinal: function (number) { return number; }, - 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. - } + 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 tlPh; diff --git a/locale/tlh.js b/locale/tlh.js index 7ea953b8a..22c1fc30d 100644 --- a/locale/tlh.js +++ b/locale/tlh.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Klingon [tlh] +//! author : Dominika Kruk : https://github.com/amaranthrose ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,30 +9,33 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); function translateFuture(output) { var time = output; - time = (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 = + 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'; return time; } function translatePast(output) { var time = output; - time = (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 = + 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'; return time; } @@ -54,66 +59,76 @@ function numberAsNoun(number) { var hundred = Math.floor((number % 1000) / 100), - ten = Math.floor((number % 100) / 10), - one = number % 10, - word = ''; + ten = Math.floor((number % 100) / 10), + one = number % 10, + word = ''; if (hundred > 0) { word += numbersNouns[hundred] + 'vatlh'; } if (ten > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH'; + word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH'; } if (one > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[one]; + word += (word !== '' ? ' ' : '') + numbersNouns[one]; } - return (word === '') ? 'pagh' : word; + return word === '' ? 'pagh' : word; } var tlh = moment.defineLocale('tlh', { - months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'), - monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'), - monthsParseExact : true, - weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - 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' + months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split( + '_' + ), + monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + 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 : { + calendar: { sameDay: '[DaHjaj] LT', nextDay: '[wa’leS] LT', nextWeek: 'LLL', lastDay: '[wa’Hu’] LT', lastWeek: 'LLL', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : translateFuture, - past : translatePast, - s : 'puS lup', - ss : translate, - m : 'wa’ tup', - mm : translate, - h : 'wa’ rep', - hh : translate, - d : 'wa’ jaj', - dd : translate, - M : 'wa’ jar', - MM : translate, - y : 'wa’ DIS', - yy : translate + relativeTime: { + future: translateFuture, + past: translatePast, + s: 'puS lup', + ss: translate, + m: 'wa’ tup', + mm: translate, + h: 'wa’ rep', + hh: translate, + d: 'wa’ jaj', + dd: translate, + M: 'wa’ jar', + MM: translate, + y: 'wa’ DIS', + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 tlh; diff --git a/locale/tr.js b/locale/tr.js index e3fa275a1..93c278823 100644 --- a/locale/tr.js +++ b/locale/tr.js @@ -1,3 +1,7 @@ +//! moment.js locale configuration +//! locale : Turkish [tr] +//! authors : Erhan Gundogan : https://github.com/erhangundogan, +//! Burak Yiğit Kaya: https://github.com/BYK ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -6,64 +10,70 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration + var suffixes = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - 60: '\'ıncı', - 90: '\'ıncı' + 1: "'inci", + 5: "'inci", + 8: "'inci", + 70: "'inci", + 80: "'inci", + 2: "'nci", + 7: "'nci", + 20: "'nci", + 50: "'nci", + 3: "'üncü", + 4: "'üncü", + 100: "'üncü", + 6: "'ncı", + 9: "'uncu", + 10: "'uncu", + 30: "'uncu", + 60: "'ıncı", + 90: "'ıncı", }; var tr = moment.defineLocale('tr', { - months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), - monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), - weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - 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' + months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split( + '_' + ), + monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split( + '_' + ), + weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + 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ün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[gelecek] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen] dddd [saat] LT', - sameElse : 'L' + calendar: { + sameDay: '[bugün saat] LT', + nextDay: '[yarın saat] LT', + nextWeek: '[gelecek] dddd [saat] LT', + lastDay: '[dün] LT', + lastWeek: '[geçen] dddd [saat] LT', + sameElse: 'L', }, - relativeTime : { - future : '%s sonra', - past : '%s önce', - s : 'birkaç saniye', - ss : '%d saniye', - m : 'bir dakika', - mm : '%d dakika', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir yıl', - yy : '%d yıl' + relativeTime: { + future: '%s sonra', + past: '%s önce', + s: 'birkaç saniye', + ss: '%d saniye', + m: 'bir dakika', + mm: '%d dakika', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir yıl', + yy: '%d yıl', }, ordinal: function (number, period) { switch (period) { @@ -73,19 +83,20 @@ case 'DD': return number; default: - if (number === 0) { // special case for zero - return number + '\'ıncı'; + if (number === 0) { + // special case for zero + return number + "'ıncı"; } var a = number % 10, - b = number % 100 - a, + b = (number % 100) - a, c = number >= 100 ? 100 : null; return number + (suffixes[a] || suffixes[b] || suffixes[c]); } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return tr; diff --git a/locale/tzl.js b/locale/tzl.js index d32601bc4..5eb1c067e 100644 --- a/locale/tzl.js +++ b/locale/tzl.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Talossan [tzl] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v +//! author : Iustì Canun ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,82 +10,89 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. // This is currently too difficult (maybe even impossible) to add. var tzl = moment.defineLocale('tzl', { - months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), - monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM [dallas] YYYY', - LLL : 'D. MMMM [dallas] YYYY HH.mm', - LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm' + months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split( + '_' + ), + monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM [dallas] YYYY', + LLL: 'D. MMMM [dallas] YYYY HH.mm', + LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', }, meridiemParse: /d\'o|d\'a/i, - isPM : function (input) { - return 'd\'o' === input.toLowerCase(); + isPM: function (input) { + return "d'o" === input.toLowerCase(); }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours > 11) { - return isLower ? 'd\'o' : 'D\'O'; + return isLower ? "d'o" : "D'O"; } else { - return isLower ? 'd\'a' : 'D\'A'; + return isLower ? "d'a" : "D'A"; } }, - calendar : { - sameDay : '[oxhi à] LT', - nextDay : '[demà à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[ieiri à] LT', - lastWeek : '[sür el] dddd [lasteu à] LT', - sameElse : 'L' + calendar: { + sameDay: '[oxhi à] LT', + nextDay: '[demà à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[ieiri à] LT', + lastWeek: '[sür el] dddd [lasteu à] LT', + sameElse: 'L', }, - relativeTime : { - future : 'osprei %s', - past : 'ja%s', - s : processRelativeTime, - ss : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime + relativeTime: { + future: 'osprei %s', + past: 'ja%s', + s: processRelativeTime, + ss: processRelativeTime, + m: processRelativeTime, + mm: processRelativeTime, + h: processRelativeTime, + hh: processRelativeTime, + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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. + }, }); function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { - 's': ['viensas secunds', '\'iensas secunds'], - 'ss': [number + ' secunds', '' + number + ' secunds'], - 'm': ['\'n míut', '\'iens míut'], - 'mm': [number + ' míuts', '' + number + ' míuts'], - 'h': ['\'n þora', '\'iensa þora'], - 'hh': [number + ' þoras', '' + number + ' þoras'], - 'd': ['\'n ziua', '\'iensa ziua'], - 'dd': [number + ' ziuas', '' + number + ' ziuas'], - 'M': ['\'n mes', '\'iens mes'], - 'MM': [number + ' mesen', '' + number + ' mesen'], - 'y': ['\'n ar', '\'iens ar'], - 'yy': [number + ' ars', '' + number + ' ars'] + s: ['viensas secunds', "'iensas secunds"], + ss: [number + ' secunds', '' + number + ' secunds'], + m: ["'n míut", "'iens míut"], + mm: [number + ' míuts', '' + number + ' míuts'], + h: ["'n þora", "'iensa þora"], + hh: [number + ' þoras', '' + number + ' þoras'], + d: ["'n ziua", "'iensa ziua"], + dd: [number + ' ziuas', '' + number + ' ziuas'], + M: ["'n mes", "'iens mes"], + MM: [number + ' mesen', '' + number + ' mesen'], + y: ["'n ar", "'iens ar"], + yy: [number + ' ars', '' + number + ' ars'], }; - return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]); + return isFuture + ? format[key][0] + : withoutSuffix + ? format[key][0] + : format[key][1]; } return tzl; diff --git a/locale/tzm-latn.js b/locale/tzm-latn.js index b7a2aed1b..d362c28ae 100644 --- a/locale/tzm-latn.js +++ b/locale/tzm-latn.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Central Atlas Tamazight Latin [tzm-latn] +//! author : Abdel Said : https://github.com/abdelsaid ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,49 +9,54 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var tzmLatn = moment.defineLocale('tzm-latn', { - months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - 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' + months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( + '_' + ), + monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( + '_' + ), + weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + 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 : { + calendar: { sameDay: '[asdkh g] LT', nextDay: '[aska g] LT', nextWeek: 'dddd [g] LT', lastDay: '[assant g] LT', lastWeek: 'dddd [g] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'dadkh s yan %s', - past : 'yan %s', - s : 'imik', - ss : '%d imik', - m : 'minuḍ', - mm : '%d minuḍ', - h : 'saɛa', - hh : '%d tassaɛin', - d : 'ass', - dd : '%d ossan', - M : 'ayowr', - MM : '%d iyyirn', - y : 'asgas', - yy : '%d isgasn' + relativeTime: { + future: 'dadkh s yan %s', + past: 'yan %s', + s: 'imik', + ss: '%d imik', + m: 'minuḍ', + mm: '%d minuḍ', + h: 'saɛa', + hh: '%d tassaɛin', + d: 'ass', + dd: '%d ossan', + M: 'ayowr', + MM: '%d iyyirn', + y: 'asgas', + yy: '%d isgasn', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); return tzmLatn; diff --git a/locale/tzm.js b/locale/tzm.js index 48d712373..0427f4c22 100644 --- a/locale/tzm.js +++ b/locale/tzm.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Central Atlas Tamazight [tzm] +//! author : Abdel Said : https://github.com/abdelsaid ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,49 +9,54 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var tzm = moment.defineLocale('tzm', { - months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat : { - LT : 'HH:mm', + months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + 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' + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', nextWeek: 'dddd [ⴴ] LT', lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', - past : 'ⵢⴰⵏ %s', - s : 'ⵉⵎⵉⴽ', - ss : '%d ⵉⵎⵉⴽ', - m : 'ⵎⵉⵏⵓⴺ', - mm : '%d ⵎⵉⵏⵓⴺ', - h : 'ⵙⴰⵄⴰ', - hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', - d : 'ⴰⵙⵙ', - dd : '%d oⵙⵙⴰⵏ', - M : 'ⴰⵢoⵓⵔ', - MM : '%d ⵉⵢⵢⵉⵔⵏ', - y : 'ⴰⵙⴳⴰⵙ', - yy : '%d ⵉⵙⴳⴰⵙⵏ' + relativeTime: { + future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past: 'ⵢⴰⵏ %s', + s: 'ⵉⵎⵉⴽ', + ss: '%d ⵉⵎⵉⴽ', + m: 'ⵎⵉⵏⵓⴺ', + mm: '%d ⵎⵉⵏⵓⴺ', + h: 'ⵙⴰⵄⴰ', + hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d: 'ⴰⵙⵙ', + dd: '%d oⵙⵙⴰⵏ', + M: 'ⴰⵢoⵓⵔ', + MM: '%d ⵉⵢⵢⵉⵔⵏ', + y: 'ⴰⵙⴳⴰⵙ', + yy: '%d ⵉⵙⴳⴰⵙⵏ', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); return tzm; diff --git a/locale/ug-cn.js b/locale/ug-cn.js index d6c9d6549..09cea4066 100644 --- a/locale/ug-cn.js +++ b/locale/ug-cn.js @@ -1,4 +1,6 @@ //! moment.js language configuration +//! locale : Uyghur (China) [ug-cn] +//! author: boyaq : https://github.com/boyaq ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,6 +9,7 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js language configuration var ugCn = moment.defineLocale('ug-cn', { months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( @@ -26,7 +29,7 @@ L: 'YYYY-MM-DD', LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', - LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm' + LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', }, meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/, meridiemHour: function (hour, meridiem) { @@ -67,7 +70,7 @@ nextWeek: '[كېلەركى] dddd [سائەت] LT', lastDay: '[تۆنۈگۈن] LT', lastWeek: '[ئالدىنقى] dddd [سائەت] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: '%s كېيىن', @@ -83,7 +86,7 @@ M: 'بىر ئاي', MM: '%d ئاي', y: 'بىر يىل', - yy: '%d يىل' + yy: '%d يىل', }, dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/, @@ -109,8 +112,8 @@ week: { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 dow: 1, // Monday is the first day of the week. - doy: 7 // The week that contains Jan 1st is the first week of the year. - } + doy: 7, // The week that contains Jan 1st is the first week of the year. + }, }); return ugCn; diff --git a/locale/uk.js b/locale/uk.js index 70761a180..d2a80e51e 100644 --- a/locale/uk.js +++ b/locale/uk.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Ukrainian [uk] +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,49 +10,61 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration function plural(word, num) { var forms = word.split('_'); - 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]); + 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]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { - 'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', - 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', - 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' + ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', + mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', + dd: 'день_дні_днів', + MM: 'місяць_місяці_місяців', + yy: 'рік_роки_років', }; if (key === 'm') { return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { + } else if (key === 'h') { return withoutSuffix ? 'година' : 'годину'; - } - else { + } else { return number + ' ' + plural(format[key], +number); } } function weekdaysCaseReplace(m, format) { var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }; + nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split( + '_' + ), + accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split( + '_' + ), + genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split( + '_' + ), + }, + nounCase; if (m === true) { - return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1)); + return weekdays['nominative'] + .slice(1, 7) + .concat(weekdays['nominative'].slice(0, 1)); } if (!m) { return weekdays['nominative']; } - var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); + nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) + ? 'accusative' + : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) + ? 'genitive' + : 'nominative'; return weekdays[nounCase][m.day()]; } function processHoursFunction(str) { @@ -59,23 +74,29 @@ } var uk = moment.defineLocale('uk', { - months : { - 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), - 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') + months: { + format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split( + '_' + ), + standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split( + '_' + ), }, - monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - 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' + monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split( + '_' + ), + weekdays: weekdaysCaseReplace, + weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + 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 : { + calendar: { sameDay: processHoursFunction('[Сьогодні '), nextDay: processHoursFunction('[Завтра '), lastDay: processHoursFunction('[Вчора '), @@ -93,30 +114,30 @@ return processHoursFunction('[Минулого] dddd [').call(this); } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'за %s', - past : '%s тому', - s : 'декілька секунд', - ss : relativeTimeWithPlural, - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : 'годину', - hh : relativeTimeWithPlural, - d : 'день', - dd : relativeTimeWithPlural, - M : 'місяць', - MM : relativeTimeWithPlural, - y : 'рік', - yy : relativeTimeWithPlural + relativeTime: { + future: 'за %s', + past: '%s тому', + s: 'декілька секунд', + ss: relativeTimeWithPlural, + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: 'годину', + hh: relativeTimeWithPlural, + d: 'день', + dd: relativeTimeWithPlural, + M: 'місяць', + MM: relativeTimeWithPlural, + y: 'рік', + yy: relativeTimeWithPlural, }, // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason meridiemParse: /ночі|ранку|дня|вечора/, isPM: function (input) { return /^(дня|вечора)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночі'; } else if (hour < 12) { @@ -142,10 +163,10 @@ return number; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); return uk; diff --git a/locale/ur.js b/locale/ur.js index 160931258..9720dcf52 100644 --- a/locale/ur.js +++ b/locale/ur.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Urdu [ur] +//! author : Sawood Alam : https://github.com/ibnesayeed +//! author : Zack : https://github.com/ZackVision ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,78 +10,71 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var months = [ - 'جنوری', - 'فروری', - 'مارچ', - 'اپریل', - 'مئی', - 'جون', - 'جولائی', - 'اگست', - 'ستمبر', - 'اکتوبر', - 'نومبر', - 'دسمبر' - ]; - var days = [ - 'اتوار', - 'پیر', - 'منگل', - 'بدھ', - 'جمعرات', - 'جمعہ', - 'ہفتہ' - ]; + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر', + ], + days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']; var ur = moment.defineLocale('ur', { - months : months, - monthsShort : months, - weekdays : days, - weekdaysShort : days, - weekdaysMin : days, - 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' + months: months, + monthsShort: months, + weekdays: days, + weekdaysShort: days, + weekdaysMin: days, + 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) { + isPM: function (input) { return 'شام' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'صبح'; } return 'شام'; }, - calendar : { - sameDay : '[آج بوقت] LT', - nextDay : '[کل بوقت] LT', - nextWeek : 'dddd [بوقت] LT', - lastDay : '[گذشتہ روز بوقت] LT', - lastWeek : '[گذشتہ] dddd [بوقت] LT', - sameElse : 'L' + 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 سال' + 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, ','); @@ -86,10 +82,10 @@ postformat: function (string) { return string.replace(/,/g, '،'); }, - 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. - } + 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 ur; diff --git a/locale/uz-latn.js b/locale/uz-latn.js index 41a348cbb..93403ec63 100644 --- a/locale/uz-latn.js +++ b/locale/uz-latn.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Uzbek Latin [uz-latn] +//! author : Rasulbek Mirzayev : github.com/Rasulbeeek ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,49 +9,54 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var uzLatn = moment.defineLocale('uz-latn', { - months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'), - monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), - weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'), - weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), - weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' + months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split( + '_' + ), + monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), + weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split( + '_' + ), + weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), + weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm', }, - calendar : { - sameDay : '[Bugun soat] LT [da]', - nextDay : '[Ertaga] LT [da]', - nextWeek : 'dddd [kuni soat] LT [da]', - lastDay : '[Kecha soat] LT [da]', - lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]', - sameElse : 'L' + calendar: { + sameDay: '[Bugun soat] LT [da]', + nextDay: '[Ertaga] LT [da]', + nextWeek: 'dddd [kuni soat] LT [da]', + lastDay: '[Kecha soat] LT [da]', + lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", + sameElse: 'L', }, - relativeTime : { - future : 'Yaqin %s ichida', - past : 'Bir necha %s oldin', - s : 'soniya', - ss : '%d soniya', - m : 'bir daqiqa', - mm : '%d daqiqa', - h : 'bir soat', - hh : '%d soat', - d : 'bir kun', - dd : '%d kun', - M : 'bir oy', - MM : '%d oy', - y : 'bir yil', - yy : '%d yil' + relativeTime: { + future: 'Yaqin %s ichida', + past: 'Bir necha %s oldin', + s: 'soniya', + ss: '%d soniya', + m: 'bir daqiqa', + mm: '%d daqiqa', + h: 'bir soat', + hh: '%d soat', + d: 'bir kun', + dd: '%d kun', + M: 'bir oy', + MM: '%d oy', + y: 'bir yil', + yy: '%d yil', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); return uzLatn; diff --git a/locale/uz.js b/locale/uz.js index 0e4ad22d2..a8a87fc89 100644 --- a/locale/uz.js +++ b/locale/uz.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Uzbek [uz] +//! author : Sardor Muminov : https://github.com/muminoff ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,49 +9,52 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var uz = moment.defineLocale('uz', { - months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( + '_' + ), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm', }, - calendar : { - sameDay : '[Бугун соат] LT [да]', - nextDay : '[Эртага] LT [да]', - nextWeek : 'dddd [куни соат] LT [да]', - lastDay : '[Кеча соат] LT [да]', - lastWeek : '[Утган] dddd [куни соат] LT [да]', - sameElse : 'L' + 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 йил' + relativeTime: { + future: 'Якин %s ичида', + past: 'Бир неча %s олдин', + s: 'фурсат', + ss: '%d фурсат', + m: 'бир дакика', + mm: '%d дакика', + h: 'бир соат', + hh: '%d соат', + d: 'бир кун', + dd: '%d кун', + M: 'бир ой', + MM: '%d ой', + y: 'бир йил', + yy: '%d йил', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 4th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } }); return uz; diff --git a/locale/vi.js b/locale/vi.js index 6fcbeafc9..0587d4ab6 100644 --- a/locale/vi.js +++ b/locale/vi.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Vietnamese [vi] +//! author : Bang Nguyen : https://github.com/bangnk +//! author : Chien Kira : https://github.com/chienkira ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,70 +10,77 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var vi = moment.defineLocale('vi', { - months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), - monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), - monthsParseExact : true, - weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), - weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysParseExact : true, + months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split( + '_' + ), + monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split( + '_' + ), + weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysParseExact: true, meridiemParse: /sa|ch/i, - isPM : function (input) { + isPM: function (input) { return /^ch$/i.test(input); }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'sa' : 'SA'; } else { return isLower ? 'ch' : 'CH'; } }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY HH:mm', - LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', - l : 'DD/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [năm] YYYY', + LLL: 'D MMMM [năm] YYYY HH:mm', + LLLL: 'dddd, D MMMM [năm] YYYY HH:mm', + l: 'DD/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[Hôm nay lúc] LT', nextDay: '[Ngày mai lúc] LT', nextWeek: 'dddd [tuần tới lúc] LT', lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' + lastWeek: 'dddd [tuần trước lúc] LT', + sameElse: 'L', }, - relativeTime : { - future : '%s tới', - past : '%s trước', - s : 'vài giây', - ss : '%d giây' , - m : 'một phút', - mm : '%d phút', - h : 'một giờ', - hh : '%d giờ', - d : 'một ngày', - dd : '%d ngày', - M : 'một tháng', - MM : '%d tháng', - y : 'một năm', - yy : '%d năm' + relativeTime: { + future: '%s tới', + past: '%s trước', + s: 'vài giây', + ss: '%d giây', + m: 'một phút', + mm: '%d phút', + h: 'một giờ', + hh: '%d giờ', + d: 'một ngày', + dd: '%d ngày', + M: 'một tháng', + MM: '%d tháng', + y: 'một năm', + yy: '%d năm', }, dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { + ordinal: function (number) { return number; }, - 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. - } + 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 vi; diff --git a/locale/x-pseudo.js b/locale/x-pseudo.js index 9723c7ba4..e688a940d 100644 --- a/locale/x-pseudo.js +++ b/locale/x-pseudo.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Pseudo [x-pseudo] +//! author : Andrew Hood : https://github.com/andrewhood125 ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,59 +9,72 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var xPseudo = moment.defineLocale('x-pseudo', { - months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), - monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), - monthsParseExact : true, - weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), - weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), - weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' + months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split( + '_' + ), + monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split( + '_' + ), + weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), + weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', }, - calendar : { - sameDay : '[T~ódá~ý át] LT', - nextDay : '[T~ómó~rró~w át] LT', - nextWeek : 'dddd [át] LT', - lastDay : '[Ý~ést~érdá~ý át] LT', - lastWeek : '[L~ást] dddd [át] LT', - sameElse : 'L' + calendar: { + sameDay: '[T~ódá~ý át] LT', + nextDay: '[T~ómó~rró~w át] LT', + nextWeek: 'dddd [át] LT', + lastDay: '[Ý~ést~érdá~ý át] LT', + lastWeek: '[L~ást] dddd [át] LT', + sameElse: 'L', }, - relativeTime : { - future : 'í~ñ %s', - past : '%s á~gó', - s : 'á ~féw ~sécó~ñds', - ss : '%d s~écóñ~ds', - m : 'á ~míñ~úté', - mm : '%d m~íñú~tés', - h : 'á~ñ hó~úr', - hh : '%d h~óúrs', - d : 'á ~dáý', - dd : '%d d~áýs', - M : 'á ~móñ~th', - MM : '%d m~óñt~hs', - y : 'á ~ýéár', - yy : '%d ý~éárs' + relativeTime: { + future: 'í~ñ %s', + past: '%s á~gó', + s: 'á ~féw ~sécó~ñds', + ss: '%d s~écóñ~ds', + m: 'á ~míñ~úté', + mm: '%d m~íñú~tés', + h: 'á~ñ hó~úr', + hh: '%d h~óúrs', + d: 'á ~dáý', + dd: '%d d~áýs', + M: 'á ~móñ~th', + MM: '%d m~óñt~hs', + y: 'á ~ýéár', + yy: '%d ý~éárs', }, dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 xPseudo; diff --git a/locale/yo.js b/locale/yo.js index 1a356dcac..9fe818b58 100644 --- a/locale/yo.js +++ b/locale/yo.js @@ -1,4 +1,6 @@ //! moment.js locale configuration +//! locale : Yoruba Nigeria [yo] +//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,51 +9,54 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var yo = moment.defineLocale('yo', { - months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'), - monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), - weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), - weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), - weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' + months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split( + '_' + ), + monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), + weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), + weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), + weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', }, - calendar : { - sameDay : '[Ònì ni] LT', - nextDay : '[Ọ̀la ni] LT', - nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT', - lastDay : '[Àna ni] LT', - lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT', - sameElse : 'L' + calendar: { + sameDay: '[Ònì ni] LT', + nextDay: '[Ọ̀la ni] LT', + nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT", + lastDay: '[Àna ni] LT', + lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT', + sameElse: 'L', }, - relativeTime : { - future : 'ní %s', - past : '%s kọjá', - s : 'ìsẹjú aayá die', - ss :'aayá %d', - m : 'ìsẹjú kan', - mm : 'ìsẹjú %d', - h : 'wákati kan', - hh : 'wákati %d', - d : 'ọjọ́ kan', - dd : 'ọjọ́ %d', - M : 'osù kan', - MM : 'osù %d', - y : 'ọdún kan', - yy : 'ọdún %d' + relativeTime: { + future: 'ní %s', + past: '%s kọjá', + s: 'ìsẹjú aayá die', + ss: 'aayá %d', + m: 'ìsẹjú kan', + mm: 'ìsẹjú %d', + h: 'wákati kan', + hh: 'wákati %d', + d: 'ọjọ́ kan', + dd: 'ọjọ́ %d', + M: 'osù kan', + MM: 'osù %d', + y: 'ọdún kan', + yy: 'ọdún %d', + }, + dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/, + ordinal: 'ọjọ́ %d', + 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. }, - dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/, - ordinal : 'ọjọ́ %d', - 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 yo; diff --git a/locale/zh-cn.js b/locale/zh-cn.js index b051f33c2..a11589869 100644 --- a/locale/zh-cn.js +++ b/locale/zh-cn.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Chinese (China) [zh-cn] +//! author : suupic : https://github.com/suupic +//! author : Zeno Zeng : https://github.com/zenozeng ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,32 +10,36 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var zhCn = moment.defineLocale('zh-cn', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日Ah点mm分', - LLLL : 'YYYY年M月D日ddddAh点mm分', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日Ah点mm分', + LLLL: 'YYYY年M月D日ddddAh点mm分', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { return hour; } else if (meridiem === '下午' || meridiem === '晚上') { return hour + 12; @@ -41,7 +48,7 @@ return hour >= 11 ? hour : hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; @@ -57,16 +64,16 @@ return '晚上'; } }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' + calendar: { + sameDay: '[今天]LT', + nextDay: '[明天]LT', + nextWeek: '[下]ddddLT', + lastDay: '[昨天]LT', + lastWeek: '[上]ddddLT', + sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { case 'd': case 'D': @@ -81,27 +88,27 @@ return number; } }, - relativeTime : { - future : '%s内', - past : '%s前', - s : '几秒', - ss : '%d 秒', - m : '1 分钟', - mm : '%d 分钟', - h : '1 小时', - hh : '%d 小时', - d : '1 天', - dd : '%d 天', - M : '1 个月', - MM : '%d 个月', - y : '1 年', - yy : '%d 年' + relativeTime: { + future: '%s后', + past: '%s前', + s: '几秒', + ss: '%d 秒', + m: '1 分钟', + mm: '%d 分钟', + h: '1 小时', + hh: '%d 小时', + d: '1 天', + dd: '%d 天', + M: '1 个月', + MM: '%d 个月', + y: '1 年', + yy: '%d 年', }, - week : { + week: { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - 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. - } + 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 zhCn; diff --git a/locale/zh-hk.js b/locale/zh-hk.js index 0ad0ae31a..de900fd15 100644 --- a/locale/zh-hk.js +++ b/locale/zh-hk.js @@ -1,4 +1,9 @@ //! moment.js locale configuration +//! locale : Chinese (Hong Kong) [zh-hk] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris +//! author : Konstantin : https://github.com/skfd +//! author : Anthony : https://github.com/anthonylau ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,27 +12,32 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var zhHk = moment.defineLocale('zh-hk', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日dddd HH:mm', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -39,15 +49,15 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; } else if (hm < 900) { return '早上'; - } else if (hm < 1130) { + } else if (hm < 1200) { return '上午'; - } else if (hm < 1230) { + } else if (hm === 1200) { return '中午'; } else if (hm < 1800) { return '下午'; @@ -55,46 +65,46 @@ return '晚上'; } }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' + calendar: { + sameDay: '[今天]LT', + nextDay: '[明天]LT', + nextWeek: '[下]ddddLT', + lastDay: '[昨天]LT', + lastWeek: '[上]ddddLT', + sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { - case 'd' : - case 'D' : - case 'DDD' : + case 'd': + case 'D': + case 'DDD': return number + '日'; - case 'M' : + case 'M': return number + '月'; - case 'w' : - case 'W' : + case 'w': + case 'W': return number + '週'; - default : + default: return number; } }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - ss : '%d 秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } + relativeTime: { + future: '%s後', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, }); return zhHk; diff --git a/locale/zh-mo.js b/locale/zh-mo.js new file mode 100644 index 000000000..b32feab01 --- /dev/null +++ b/locale/zh-mo.js @@ -0,0 +1,111 @@ +//! moment.js locale configuration +//! locale : Chinese (Macau) [zh-mo] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris +//! author : Tan Yuanhong : https://github.com/le0tan + +;(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 zhMo = moment.defineLocale('zh-mo', { + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'D/M/YYYY', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar: { + sameDay: '[今天] LT', + nextDay: '[明天] LT', + nextWeek: '[下]dddd LT', + lastDay: '[昨天] LT', + lastWeek: '[上]dddd LT', + sameElse: 'L', + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '週'; + default: + return number; + } + }, + relativeTime: { + future: '%s內', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, + }); + + return zhMo; + +}))); diff --git a/locale/zh-tw.js b/locale/zh-tw.js index 6875cfed1..4f80ecec9 100644 --- a/locale/zh-tw.js +++ b/locale/zh-tw.js @@ -1,4 +1,7 @@ //! moment.js locale configuration +//! locale : Chinese (Taiwan) [zh-tw] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' @@ -7,27 +10,32 @@ factory(global.moment) }(this, (function (moment) { 'use strict'; + //! moment.js locale configuration var zhTw = moment.defineLocale('zh-tw', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日dddd HH:mm', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -39,7 +47,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; @@ -55,46 +63,46 @@ return '晚上'; } }, - calendar : { - sameDay : '[今天] LT', - nextDay : '[明天] LT', - nextWeek : '[下]dddd LT', - lastDay : '[昨天] LT', - lastWeek : '[上]dddd LT', - sameElse : 'L' + calendar: { + sameDay: '[今天] LT', + nextDay: '[明天] LT', + nextWeek: '[下]dddd LT', + lastDay: '[昨天] LT', + lastWeek: '[上]dddd LT', + sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { - case 'd' : - case 'D' : - case 'DDD' : + case 'd': + case 'D': + case 'DDD': return number + '日'; - case 'M' : + case 'M': return number + '月'; - case 'w' : - case 'W' : + case 'w': + case 'W': return number + '週'; - default : + default: return number; } }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - ss : '%d 秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } + relativeTime: { + future: '%s後', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, }); return zhTw; diff --git a/min/locales.js b/min/locales.js index 9b8b20617..1bfb6ca8e 100644 --- a/min/locales.js +++ b/min/locales.js @@ -8,423 +8,513 @@ //! moment.js locale configuration moment.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('_'), + 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 (input) { + isPM: function (input) { return /^nm$/i.test(input); }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'vm' : 'VM'; } else { return isLower ? '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ôre 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' + 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ôre 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 (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week: { + dow: 1, // Maandag is die eerste dag van die week. + doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar. }, - week : { - dow : 1, // Maandag is die eerste dag van die week. - doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - } }); //! moment.js locale configuration moment.defineLocale('ar-dz', { - 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' - }, - calendar : { + 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', + }, + 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 سنوات' - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } + 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 سنوات', + }, + week: { + dow: 0, // Sunday 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 moment.defineLocale('ar-kw', { - 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' - }, - calendar : { + 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', + }, + 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 سنوات' - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + 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 سنوات', + }, + week: { + dow: 0, // Sunday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap = { - '1': '1', - '2': '2', - '3': '3', - '4': '4', - '5': '5', - '6': '6', - '7': '7', - '8': '8', - '9': '9', - '0': '0' - }, 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; - }, plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر' - ]; + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '0': '0', + }, + 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; + }, + plurals = { + s: [ + 'أقل من ثانية', + 'ثانية واحدة', + ['ثانيتان', 'ثانيتين'], + '%d ثوان', + '%d ثانية', + '%d ثانية', + ], + m: [ + 'أقل من دقيقة', + 'دقيقة واحدة', + ['دقيقتان', 'دقيقتين'], + '%d دقائق', + '%d دقيقة', + '%d دقيقة', + ], + h: [ + 'أقل من ساعة', + 'ساعة واحدة', + ['ساعتان', 'ساعتين'], + '%d ساعات', + '%d ساعة', + '%d ساعة', + ], + d: [ + 'أقل من يوم', + 'يوم واحد', + ['يومان', 'يومين'], + '%d أيام', + '%d يومًا', + '%d يوم', + ], + M: [ + 'أقل من شهر', + 'شهر واحد', + ['شهران', 'شهرين'], + '%d أشهر', + '%d شهرا', + '%d شهر', + ], + y: [ + 'أقل من عام', + 'عام واحد', + ['عامان', 'عامين'], + '%d أعوام', + '%d عامًا', + '%d عام', + ], + }, + pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, + months = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; moment.defineLocale('ar-ly', { - months : months, - monthsShort : months, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - 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' + months: months, + monthsShort: months, + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + 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: /ص|م/, - isPM : function (input) { + isPM: function (input) { return 'م' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, - calendar : { + calendar: { sameDay: '[اليوم عند الساعة] LT', nextDay: '[غدًا عند الساعة] LT', nextWeek: 'dddd [عند الساعة] LT', lastDay: '[أمس عند الساعة] LT', lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - ss : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') + sameElse: 'L', + }, + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: pluralize('s'), + ss: pluralize('s'), + m: pluralize('m'), + mm: pluralize('m'), + h: pluralize('h'), + hh: pluralize('h'), + d: pluralize('d'), + dd: pluralize('d'), + M: pluralize('M'), + MM: pluralize('M'), + y: pluralize('y'), + yy: pluralize('y'), }, preparse: function (string) { return string.replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); //! moment.js locale configuration moment.defineLocale('ar-ma', { - 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' - }, - calendar : { + 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', + }, + 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 سنوات' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + 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 سنوات', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap$1 = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }; + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }; moment.defineLocale('ar-sa', { - 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' + 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) { + isPM: function (input) { return 'م' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, - calendar : { + 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 سنوات' + 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]; - }).replace(/،/g, ','); + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$1[match]; - }).replace(/,/g, '،'); + 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. }, - 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 moment.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, + 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' + LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[اليوم على الساعة] LT', @@ -432,13 +522,13 @@ nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'في %s', past: 'منذ %s', s: 'ثوان', - ss : '%d ثانية', + ss: '%d ثانية', m: 'دقيقة', mm: '%d دقائق', h: 'ساعة', @@ -448,135 +538,196 @@ M: 'شهر', MM: '%d أشهر', y: 'سنة', - yy: '%d سنوات' + yy: '%d سنوات', }, 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. - } + doy: 4, // The week that contains Jan 4th 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' - }, pluralForm$1 = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; - }, plurals$1 = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize$1 = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm$1(number), - str = plurals$1[u][pluralForm$1(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, months$1 = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر' - ]; + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap$1 = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }, + pluralForm$1 = function (n) { + return n === 0 + ? 0 + : n === 1 + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; + }, + plurals$1 = { + s: [ + 'أقل من ثانية', + 'ثانية واحدة', + ['ثانيتان', 'ثانيتين'], + '%d ثوان', + '%d ثانية', + '%d ثانية', + ], + m: [ + 'أقل من دقيقة', + 'دقيقة واحدة', + ['دقيقتان', 'دقيقتين'], + '%d دقائق', + '%d دقيقة', + '%d دقيقة', + ], + h: [ + 'أقل من ساعة', + 'ساعة واحدة', + ['ساعتان', 'ساعتين'], + '%d ساعات', + '%d ساعة', + '%d ساعة', + ], + d: [ + 'أقل من يوم', + 'يوم واحد', + ['يومان', 'يومين'], + '%d أيام', + '%d يومًا', + '%d يوم', + ], + M: [ + 'أقل من شهر', + 'شهر واحد', + ['شهران', 'شهرين'], + '%d أشهر', + '%d شهرا', + '%d شهر', + ], + y: [ + 'أقل من عام', + 'عام واحد', + ['عامان', 'عامين'], + '%d أعوام', + '%d عامًا', + '%d عام', + ], + }, + pluralize$1 = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm$1(number), + str = plurals$1[u][pluralForm$1(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, + months$1 = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; moment.defineLocale('ar', { - months : months$1, - monthsShort : months$1, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - 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' + months: months$1, + monthsShort: months$1, + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + 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: /ص|م/, - isPM : function (input) { + isPM: function (input) { return 'م' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, - calendar : { + calendar: { sameDay: '[اليوم عند الساعة] LT', nextDay: '[غدًا عند الساعة] LT', nextWeek: 'dddd [عند الساعة] LT', lastDay: '[أمس عند الساعة] LT', lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize$1('s'), - ss : pluralize$1('s'), - m : pluralize$1('m'), - mm : pluralize$1('m'), - h : pluralize$1('h'), - hh : pluralize$1('h'), - d : pluralize$1('d'), - dd : pluralize$1('d'), - M : pluralize$1('M'), - MM : pluralize$1('M'), - y : pluralize$1('y'), - yy : pluralize$1('y') + sameElse: 'L', + }, + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: pluralize$1('s'), + ss: pluralize$1('s'), + m: pluralize$1('m'), + mm: pluralize$1('m'), + h: pluralize$1('h'), + hh: pluralize$1('h'), + d: pluralize$1('d'), + dd: pluralize$1('d'), + M: pluralize$1('M'), + MM: pluralize$1('M'), + y: pluralize$1('y'), + yy: pluralize$1('y'), }, preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap$1[match]; - }).replace(/،/g, ','); + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap$1[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$2[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap$2[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); //! moment.js locale configuration @@ -599,53 +750,57 @@ 10: '-uncu', 30: '-uncu', 60: '-ıncı', - 90: '-ıncı' + 90: '-ıncı', }; moment.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əsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), - weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.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' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s əvvəl', - s : 'birneçə saniyə', - ss : '%d saniyə', - m : 'bir dəqiqə', - mm : '%d dəqiqə', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir il', - yy : '%d il' + 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əsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split( + '_' + ), + weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.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', + }, + calendar: { + sameDay: '[bugün saat] LT', + nextDay: '[sabah saat] LT', + nextWeek: '[gələn həftə] dddd [saat] LT', + lastDay: '[dünən] LT', + lastWeek: '[keçən həftə] dddd [saat] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s sonra', + past: '%s əvvəl', + s: 'birneçə saniyə', + ss: '%d saniyə', + m: 'bir dəqiqə', + mm: '%d dəqiqə', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir il', + yy: '%d il', }, meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM : function (input) { + isPM: function (input) { return /^(gündüz|axşam)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'gecə'; } else if (hour < 12) { @@ -657,69 +812,82 @@ } }, dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal : function (number) { - if (number === 0) { // special case for zero + ordinal: function (number) { + if (number === 0) { + // special case for zero return number + '-ıncı'; } var a = number % 10, - b = number % 100 - a, + b = (number % 100) - a, c = number >= 100 ? 100 : null; return number + (suffixes[a] || suffixes[b] || suffixes[c]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration function plural(word, num) { var forms = word.split('_'); - 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]); + 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]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { - 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - 'dd': 'дзень_дні_дзён', - 'MM': 'месяц_месяцы_месяцаў', - 'yy': 'год_гады_гадоў' + ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', + mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + dd: 'дзень_дні_дзён', + MM: 'месяц_месяцы_месяцаў', + yy: 'год_гады_гадоў', }; if (key === 'm') { return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } - else if (key === 'h') { + } else if (key === 'h') { return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } - else { + } else { return number + ' ' + plural(format[key], +number); } } moment.defineLocale('be', { - months : { - format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), - standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_') - }, - monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : { - format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), - standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/ - }, - weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - 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 : { + months: { + format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( + '_' + ), + standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( + '_' + ), + }, + monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split( + '_' + ), + weekdays: { + format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split( + '_' + ), + standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split( + '_' + ), + isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/, + }, + weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + 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: '[Сёння ў] LT', nextDay: '[Заўтра ў] LT', lastDay: '[Учора ў] LT', @@ -739,28 +907,28 @@ return '[У мінулы] dddd [ў] LT'; } }, - sameElse: 'L' - }, - relativeTime : { - future : 'праз %s', - past : '%s таму', - s : 'некалькі секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : relativeTimeWithPlural, - hh : relativeTimeWithPlural, - d : 'дзень', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural + sameElse: 'L', + }, + relativeTime: { + future: 'праз %s', + past: '%s таму', + s: 'некалькі секунд', + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: relativeTimeWithPlural, + hh: relativeTimeWithPlural, + d: 'дзень', + dd: relativeTimeWithPlural, + M: 'месяц', + MM: relativeTimeWithPlural, + y: 'год', + yy: relativeTimeWithPlural, }, meridiemParse: /ночы|раніцы|дня|вечара/, - isPM : function (input) { + isPM: function (input) { return /^(дня|вечара)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночы'; } else if (hour < 12) { @@ -779,73 +947,81 @@ case 'DDD': case 'w': case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + return (number % 10 === 2 || number % 10 === 3) && + number % 100 !== 12 && + number % 100 !== 13 + ? number + '-і' + : number + '-ы'; case 'D': return number + '-га'; default: return number; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('bg', { - months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), - weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.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 : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { + months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split( + '_' + ), + monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split( + '_' + ), + weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.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: '[Днес в] LT', + nextDay: '[Утре в] LT', + nextWeek: 'dddd [в] LT', + lastDay: '[Вчера в] LT', + lastWeek: function () { switch (this.day()) { case 0: case 3: case 6: - return '[В изминалата] dddd [в] LT'; + return '[Миналата] dddd [в] LT'; case 1: case 2: case 4: case 5: - return '[В изминалия] dddd [в] LT'; + return '[Миналия] 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 години' + 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 години', }, dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { + ordinal: function (number) { var lastDigit = number % 10, last2Digits = number % 100; if (number === 0) { @@ -864,122 +1040,130 @@ return number + '-ти'; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('bm', { - months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'), - monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), - weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), - weekdaysShort : 'Kar_Ntɛ_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ɛrɛ] HH:mm', - LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm' - }, - calendar : { - sameDay : '[Bi lɛrɛ] LT', - nextDay : '[Sini lɛrɛ] LT', - nextWeek : 'dddd [don lɛrɛ] LT', - lastDay : '[Kunu lɛrɛ] LT', - lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s kɔnɔ', - past : 'a bɛ %s bɔ', - s : 'sanga dama dama', - ss : 'sekondi %d', - m : 'miniti kelen', - mm : 'miniti %d', - h : 'lɛrɛ kelen', - hh : 'lɛrɛ %d', - d : 'tile kelen', - dd : 'tile %d', - M : 'kalo kelen', - MM : 'kalo %d', - y : 'san kelen', - yy : 'san %d' - }, - 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. - } + months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split( + '_' + ), + monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), + weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), + weekdaysShort: 'Kar_Ntɛ_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ɛrɛ] HH:mm', + LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', + }, + calendar: { + sameDay: '[Bi lɛrɛ] LT', + nextDay: '[Sini lɛrɛ] LT', + nextWeek: 'dddd [don lɛrɛ] LT', + lastDay: '[Kunu lɛrɛ] LT', + lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s kɔnɔ', + past: 'a bɛ %s bɔ', + s: 'sanga dama dama', + ss: 'sekondi %d', + m: 'miniti kelen', + mm: 'miniti %d', + h: 'lɛrɛ kelen', + hh: 'lɛrɛ %d', + d: 'tile kelen', + dd: 'tile %d', + M: 'kalo kelen', + MM: 'kalo %d', + y: 'san kelen', + yy: 'san %d', + }, + 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$3 = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০' - }, - numberMap$2 = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0' - }; + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০', + }, + numberMap$2 = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0', + }; moment.defineLocale('bn', { - months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), - weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.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 : '[আজ] 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 বছর' + months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( + '_' + ), + monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( + '_' + ), + weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( + '_' + ), + weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), + weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.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: '[আজ] 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) { @@ -992,19 +1176,21 @@ }); }, meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if ((meridiem === 'রাত' && hour >= 4) || - (meridiem === 'দুপুর' && hour < 5) || - meridiem === 'বিকাল') { + if ( + (meridiem === 'রাত' && hour >= 4) || + (meridiem === 'দুপুর' && hour < 5) || + meridiem === 'বিকাল' + ) { return hour + 12; } else { return hour; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'রাত'; } else if (hour < 10) { @@ -1017,76 +1203,86 @@ return 'রাত'; } }, - 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. - } + 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$4 = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠' - }, - numberMap$3 = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0' - }; + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠', + }, + numberMap$3 = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0', + }; moment.defineLocale('bo', { - months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), - weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.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 : '[དི་རིང] LT', - nextDay : '[སང་ཉིན] LT', - nextWeek : '[བདུན་ཕྲག་རྗེས་མ], 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 ལོ' + months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split( + '_' + ), + monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split( + '_' + ), + monthsShortRegex: /^(ཟླ་\d{1,2})/, + monthsParseExact: true, + weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split( + '_' + ), + weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split( + '_' + ), + weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.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: '[དི་རིང] LT', + nextDay: '[སང་ཉིན] LT', + nextWeek: '[བདུན་ཕྲག་རྗེས་མ], 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) { @@ -1099,19 +1295,21 @@ }); }, meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if ((meridiem === 'མཚན་མོ' && hour >= 4) || - (meridiem === 'ཉིན་གུང' && hour < 5) || - meridiem === 'དགོང་དག') { + if ( + (meridiem === 'མཚན་མོ' && hour >= 4) || + (meridiem === 'ཉིན་གུང' && hour < 5) || + meridiem === 'དགོང་དག' + ) { return hour + 12; } else { return hour; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'མཚན་མོ'; } else if (hour < 10) { @@ -1124,19 +1322,19 @@ return 'མཚན་མོ'; } }, - 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. - } + 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 function relativeTimeWithMutation(number, withoutSuffix, key) { var format = { - 'mm': 'munutenn', - 'MM': 'miz', - 'dd': 'devezh' + mm: 'munutenn', + MM: 'miz', + dd: 'devezh', }; return number + ' ' + mutation(format[key], number); } @@ -1166,9 +1364,9 @@ } function softMutation(text) { var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' + m: 'v', + b: 'v', + d: 'z', }; if (mutationTable[text.charAt(0)] === undefined) { return text; @@ -1177,53 +1375,55 @@ } moment.defineLocale('br', { - months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), - monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h[e]mm A', - LTS : 'h[e]mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY h[e]mm A', - LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'a-benn %s', - past : '%s \'zo', - s : 'un nebeud segondennoù', - ss : '%d eilenn', - m : 'ur vunutenn', - mm : relativeTimeWithMutation, - h : 'un eur', - hh : '%d eur', - d : 'un devezh', - dd : relativeTimeWithMutation, - M : 'ur miz', - MM : relativeTimeWithMutation, - y : 'ur bloaz', - yy : specialMutationForYears + months: "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split( + '_' + ), + monthsShort: "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split('_'), + weekdays: "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split('_'), + weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + weekdaysParseExact: true, + 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'hoazh da] LT", + nextWeek: 'dddd [da] LT', + lastDay: "[Dec'h da] LT", + lastWeek: 'dddd [paset da] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'a-benn %s', + past: "%s 'zo", + s: 'un nebeud segondennoù', + ss: '%d eilenn', + m: 'ur vunutenn', + mm: relativeTimeWithMutation, + h: 'un eur', + hh: '%d eur', + d: 'un devezh', + dd: relativeTimeWithMutation, + M: 'ur miz', + MM: relativeTimeWithMutation, + y: 'ur bloaz', + yy: specialMutationForYears, }, dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; + ordinal: function (number) { + var output = number === 1 ? 'añ' : 'vet'; return number + output; }, - 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. - } + 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 @@ -1291,25 +1491,31 @@ } moment.defineLocale('bs', { - months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedjelju] [u] LT'; @@ -1324,8 +1530,8 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[jučer u] LT', - lastWeek : function () { + lastDay: '[jučer u] LT', + lastWeek: function () { switch (this.day()) { case 0: case 3: @@ -1339,206 +1545,232 @@ return '[prošli] dddd [u] LT'; } }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'par sekundi', + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: 'dan', + dd: translate, + M: 'mjesec', + MM: translate, + y: 'godinu', + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('ca', { - months : { - standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), - format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'), - isFormat: /D[oD]?(\s)+MMMM/ - }, - monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), - weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [de] YYYY', - ll : 'D MMM YYYY', - LLL : 'D MMMM [de] YYYY [a les] H:mm', - lll : 'D MMM YYYY, H:mm', - LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm', - llll : 'ddd D MMM YYYY, H:mm' - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + months: { + standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split( + '_' + ), + format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split( + '_' + ), + isFormat: /D[oD]?(\s)+MMMM/, + }, + monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split( + '_' + ), + weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + ll: 'D MMM YYYY', + LLL: 'D MMMM [de] YYYY [a les] H:mm', + lll: 'D MMM YYYY, H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', + llll: 'ddd D MMM YYYY, H:mm', + }, + calendar: { + sameDay: function () { + return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + nextDay: function () { + return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + nextWeek: function () { + return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + lastDay: function () { + return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [passat a ' + + (this.hours() !== 1 ? 'les' : 'la') + + '] LT' + ); }, - sameElse : 'L' - }, - relativeTime : { - future : 'd\'aquí %s', - past : 'fa %s', - s : 'uns segons', - ss : '%d segons', - m : 'un minut', - mm : '%d minuts', - h : 'una hora', - hh : '%d hores', - d : 'un dia', - dd : '%d dies', - M : 'un mes', - MM : '%d mesos', - y : 'un any', - yy : '%d anys' + sameElse: 'L', + }, + relativeTime: { + future: "d'aquí %s", + past: 'fa %s', + s: 'uns segons', + ss: '%d segons', + m: 'un minut', + mm: '%d minuts', + h: 'una hora', + hh: '%d hores', + d: 'un dia', + dd: '%d dies', + M: 'un mes', + MM: '%d mesos', + y: 'un any', + yy: '%d anys', }, dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal : function (number, period) { - var output = (number === 1) ? 'r' : - (number === 2) ? 'n' : - (number === 3) ? 'r' : - (number === 4) ? 't' : 'è'; + ordinal: function (number, period) { + var output = + number === 1 + ? 'r' + : number === 2 + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } return number + output; }, - 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. - } + 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 months$2 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), - monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); - - var monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i]; - // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. - // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - var monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; + var months$2 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( + '_' + ), + monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), + monthsParse = [ + /^led/i, + /^úno/i, + /^bře/i, + /^dub/i, + /^kvě/i, + /^(čvn|červen$|června)/i, + /^(čvc|červenec|července)/i, + /^srp/i, + /^zář/i, + /^říj/i, + /^lis/i, + /^pro/i, + ], + // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. + // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. + monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; function plural$1(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); + return n > 1 && n < 5 && ~~(n / 10) !== 1; } function translate$1(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 's': // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'sekundy' : 'sekund'); } else { return result + 'sekundami'; } - break; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'minuty' : 'minut'); } else { return result + 'minutami'; } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; case 'hh': // 9 hours / in 9 hours / 9 hours ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'hodiny' : 'hodin'); } else { return result + 'hodinami'; } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'd': // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'den' : 'dnem'; case 'dd': // 9 days / in 9 days / 9 days ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'dny' : 'dní'); } else { return result + 'dny'; } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'M': // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'měsíc' : 'měsícem'; case 'MM': // 9 months / in 9 months / 9 months ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'měsíce' : 'měsíců'); } else { return result + 'měsíci'; } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'y': // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokem'; case 'yy': // 9 years / in 9 years / 9 years ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'roky' : 'let'); } else { return result + 'lety'; } - break; } } moment.defineLocale('cs', { - months : months$2, - monthsShort : monthsShort, - monthsRegex : monthsRegex, - monthsShortRegex : monthsRegex, + months: months$2, + monthsShort: monthsShort, + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - monthsStrictRegex : /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, - monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, - weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat : { + monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, + monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, + weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'), + longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm', - l : 'D. M. YYYY' - }, - calendar : { + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', + l: 'D. M. YYYY', + }, + calendar: { sameDay: '[dnes v] LT', nextDay: '[zítra v] LT', nextWeek: function () { @@ -1575,100 +1807,114 @@ return '[minulou sobotu v] LT'; } }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'před %s', - s : translate$1, - ss : translate$1, - m : translate$1, - mm : translate$1, - h : translate$1, - hh : translate$1, - d : translate$1, - dd : translate$1, - M : translate$1, - MM : translate$1, - y : translate$1, - yy : translate$1 - }, - dayOfMonthOrdinalParse : /\d{1,2}\./, - ordinal : '%d.', - 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. - } + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'před %s', + s: translate$1, + ss: translate$1, + m: translate$1, + mm: translate$1, + h: translate$1, + hh: translate$1, + d: translate$1, + dd: translate$1, + M: translate$1, + MM: translate$1, + y: translate$1, + yy: translate$1, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + 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 moment.defineLocale('cv', { - months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' - }, - calendar : { + months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split( + '_' + ), + monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split( + '_' + ), + weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD-MM-YYYY', + LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + }, + calendar: { sameDay: '[Паян] LT [сехетре]', nextDay: '[Ыран] LT [сехетре]', lastDay: '[Ӗнер] LT [сехетре]', nextWeek: '[Ҫитес] dddd LT [сехетре]', lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; + relativeTime: { + future: function (output) { + var affix = /сехет$/i.exec(output) + ? 'рен' + : /ҫул$/i.exec(output) + ? 'тан' + : 'ран'; return output + affix; }, - past : '%s каялла', - s : 'пӗр-ик ҫеккунт', - ss : '%d ҫеккунт', - m : 'пӗр минут', - mm : '%d минут', - h : 'пӗр сехет', - hh : '%d сехет', - d : 'пӗр кун', - dd : '%d кун', - M : 'пӗр уйӑх', - MM : '%d уйӑх', - y : 'пӗр ҫул', - yy : '%d ҫул' + past: '%s каялла', + s: 'пӗр-ик ҫеккунт', + ss: '%d ҫеккунт', + m: 'пӗр минут', + mm: '%d минут', + h: 'пӗр сехет', + hh: '%d сехет', + d: 'пӗр кун', + dd: '%d кун', + M: 'пӗр уйӑх', + MM: '%d уйӑх', + y: 'пӗр ҫул', + yy: '%d ҫул', }, dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, - ordinal : '%d-мӗш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d-мӗш', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split( + '_' + ), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split( + '_' + ), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split( + '_' + ), weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, // time formats are the same as en-gb longDateFormat: { LT: 'HH:mm', - LTS : 'HH:mm:ss', + 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' + LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Heddiw am] LT', @@ -1676,7 +1922,7 @@ nextWeek: 'dddd [am] LT', lastDay: '[Ddoe am] LT', lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'mewn %s', @@ -1692,7 +1938,7 @@ M: 'mis', MM: '%d mis', y: 'blwyddyn', - yy: '%d flynedd' + yy: '%d flynedd', }, dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh @@ -1700,8 +1946,27 @@ var b = number, output = '', lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + '', + 'af', + 'il', + 'ydd', + 'ydd', + 'ed', + 'ed', + 'ed', + 'fed', + 'fed', + 'fed', // 1af to 10fed + 'eg', + 'fed', + 'eg', + 'eg', + 'fed', + 'eg', + 'eg', + 'fed', + 'eg', + 'fed', // 11eg to 20fed ]; if (b > 20) { if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { @@ -1714,326 +1979,346 @@ } return number + output; }, - 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. - } + 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 moment.defineLocale('da', { - months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - 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.] D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { - sameDay : '[i dag kl.] LT', - nextDay : '[i morgen kl.] LT', - nextWeek : 'på dddd [kl.] LT', - lastDay : '[i går kl.] LT', - lastWeek : '[i] dddd[s kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'få sekunder', - ss : '%d sekunder', - m : 'et minut', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dage', - M : 'en måned', - MM : '%d måneder', - y : 'et år', - yy : '%d år' + months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'), + weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), + 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.] D. MMMM YYYY [kl.] HH:mm', + }, + calendar: { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'på dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[i] dddd[s kl.] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'få sekunder', + ss: '%d sekunder', + m: 'et minut', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dage', + M: 'en måned', + MM: '%d måneder', + y: 'et år', + yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } moment.defineLocale('de-at', { - months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { + months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.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' + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime + lastWeek: '[letzten] dddd [um] LT [Uhr]', + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime, + mm: '%d Minuten', + h: processRelativeTime, + hh: '%d Stunden', + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 function processRelativeTime$1(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } moment.defineLocale('de-ch', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.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' - }, - calendar : { - sameDay: '[heute um] LT [Uhr]', + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.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', + }, + calendar: { + sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime$1, - mm : '%d Minuten', - h : processRelativeTime$1, - hh : '%d Stunden', - d : processRelativeTime$1, - dd : processRelativeTime$1, - M : processRelativeTime$1, - MM : processRelativeTime$1, - y : processRelativeTime$1, - yy : processRelativeTime$1 + lastWeek: '[letzten] dddd [um] LT [Uhr]', + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime$1, + mm: '%d Minuten', + h: processRelativeTime$1, + hh: '%d Stunden', + d: processRelativeTime$1, + dd: processRelativeTime$1, + M: processRelativeTime$1, + MM: processRelativeTime$1, + y: processRelativeTime$1, + yy: processRelativeTime$1, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 function processRelativeTime$2(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } moment.defineLocale('de', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.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' + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime$2, - mm : '%d Minuten', - h : processRelativeTime$2, - hh : '%d Stunden', - d : processRelativeTime$2, - dd : processRelativeTime$2, - M : processRelativeTime$2, - MM : processRelativeTime$2, - y : processRelativeTime$2, - yy : processRelativeTime$2 + lastWeek: '[letzten] dddd [um] LT [Uhr]', + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime$2, + mm: '%d Minuten', + h: processRelativeTime$2, + hh: '%d Stunden', + d: processRelativeTime$2, + dd: processRelativeTime$2, + M: processRelativeTime$2, + MM: processRelativeTime$2, + y: processRelativeTime$2, + yy: processRelativeTime$2, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 months$3 = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު' - ], weekdays = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު' - ]; + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު', + ], + weekdays = [ + 'އާދިއްތަ', + 'ހޯމަ', + 'އަންގާރަ', + 'ބުދަ', + 'ބުރާސްފަތި', + 'ހުކުރު', + 'ހޮނިހިރު', + ]; moment.defineLocale('dv', { - months : months$3, - monthsShort : months$3, - weekdays : weekdays, - weekdaysShort : weekdays, - weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), - longDateFormat : { - - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/M/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' + months: months$3, + monthsShort: months$3, + weekdays: weekdays, + weekdaysShort: weekdays, + weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/M/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', }, meridiemParse: /މކ|މފ/, - isPM : function (input) { + isPM: function (input) { return 'މފ' === input; }, - meridiem : function (hour, minute, isLower) { + 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' + 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, ','); @@ -2041,59 +2326,72 @@ postformat: function (string) { return string.replace(/,/g, '،'); }, - week : { - dow : 7, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + week: { + dow: 7, // Sunday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + return ( + (typeof Function !== 'undefined' && input instanceof Function) || + Object.prototype.toString.call(input) === '[object Function]' + ); } //! moment.js locale configuration moment.defineLocale('el', { - monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), - monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), - months : function (momentToFormat, format) { + monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split( + '_' + ), + monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split( + '_' + ), + months: function (momentToFormat, format) { if (!momentToFormat) { return this._monthsNominativeEl; - } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + } else if ( + typeof format === 'string' && + /D/.test(format.substring(0, format.indexOf('MMMM'))) + ) { + // if there is a day number before 'MMMM' return this._monthsGenitiveEl[momentToFormat.month()]; } else { return this._monthsNominativeEl[momentToFormat.month()]; } }, - monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), - weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem : function (hours, minutes, isLower) { + monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split( + '_' + ), + weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'μμ' : 'ΜΜ'; } else { return isLower ? 'πμ' : 'ΠΜ'; } }, - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'μ'); - }, - meridiemParse : /[ΠΜ]\.?Μ?\.?/i, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function () { + isPM: function (input) { + return (input + '').toLowerCase()[0] === 'μ'; + }, + meridiemParse: /[ΠΜ]\.?Μ?\.?/i, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendarEl: { + sameDay: '[Σήμερα {}] LT', + nextDay: '[Αύριο {}] LT', + nextWeek: 'dddd [{}] LT', + lastDay: '[Χθες {}] LT', + lastWeek: function () { switch (this.day()) { case 6: return '[το προηγούμενο] dddd [{}] LT'; @@ -2101,486 +2399,641 @@ return '[την προηγούμενη] dddd [{}] LT'; } }, - sameElse : 'L' + sameElse: 'L', }, - calendar : function (key, mom) { + calendar: function (key, mom) { var output = this._calendarEl[key], hours = mom && mom.hours(); if (isFunction(output)) { output = output.apply(mom); } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); - }, - relativeTime : { - future : 'σε %s', - past : '%s πριν', - s : 'λίγα δευτερόλεπτα', - ss : '%d δευτερόλεπτα', - m : 'ένα λεπτό', - mm : '%d λεπτά', - h : 'μία ώρα', - hh : '%d ώρες', - d : 'μία μέρα', - dd : '%d μέρες', - M : 'ένας μήνας', - MM : '%d μήνες', - y : 'ένας χρόνος', - yy : '%d χρόνια' + return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις'); + }, + relativeTime: { + future: 'σε %s', + past: '%s πριν', + s: 'λίγα δευτερόλεπτα', + ss: '%d δευτερόλεπτα', + m: 'ένα λεπτό', + mm: '%d λεπτά', + h: 'μία ώρα', + hh: '%d ώρες', + d: 'μία μέρα', + dd: '%d μέρες', + M: 'ένας μήνας', + MM: '%d μήνες', + y: 'ένας χρόνος', + yy: '%d χρόνια', }, dayOfMonthOrdinalParse: /\d{1,2}η/, ordinal: '%dη', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4st is the first week of the year. + }, }); //! moment.js locale configuration - moment.defineLocale('en-SG', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + moment.defineLocale('en-au', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 - moment.defineLocale('en-au', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + moment.defineLocale('en-ca', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'YYYY-MM-DD', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY h:mm A', + LLLL: 'dddd, MMMM D, YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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 - moment.defineLocale('en-ca', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'YYYY-MM-DD', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + moment.defineLocale('en-gb', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; - } + }, + 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 - moment.defineLocale('en-gb', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + moment.defineLocale('en-ie', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 - moment.defineLocale('en-ie', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + moment.defineLocale('en-il', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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 - moment.defineLocale('en-il', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + moment.defineLocale('en-in', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; - } + }, + 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 moment.defineLocale('en-nz', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 + + moment.defineLocale('en-sg', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + 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 moment.defineLocale('eo', { - months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), - weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), - weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), - weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D[-a de] MMMM, YYYY', - LLL : 'D[-a de] MMMM, YYYY HH:mm', - LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm' + months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split( + '_' + ), + monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'), + weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), + weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), + weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: '[la] D[-an de] MMMM, YYYY', + LLL: '[la] D[-an de] MMMM, YYYY HH:mm', + LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm', + llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm', }, meridiemParse: /[ap]\.t\.m/i, isPM: function (input) { return input.charAt(0).toLowerCase() === 'p'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'p.t.m.' : 'P.T.M.'; } else { return isLower ? 'a.t.m.' : 'A.T.M.'; } }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'post %s', - past : 'antaŭ %s', - s : 'sekundoj', - ss : '%d sekundoj', - m : 'minuto', - mm : '%d minutoj', - h : 'horo', - hh : '%d horoj', - d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo - dd : '%d tagoj', - M : 'monato', - MM : '%d monatoj', - y : 'jaro', - yy : '%d jaroj' + calendar: { + sameDay: '[Hodiaŭ je] LT', + nextDay: '[Morgaŭ je] LT', + nextWeek: 'dddd[n je] LT', + lastDay: '[Hieraŭ je] LT', + lastWeek: '[pasintan] dddd[n je] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'post %s', + past: 'antaŭ %s', + s: 'kelkaj sekundoj', + ss: '%d sekundoj', + m: 'unu minuto', + mm: '%d minutoj', + h: 'unu horo', + hh: '%d horoj', + d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo + dd: '%d tagoj', + M: 'unu monato', + MM: '%d monatoj', + y: 'unu jaro', + yy: '%d jaroj', }, dayOfMonthOrdinalParse: /\d{1,2}a/, - ordinal : '%da', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%da', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse$1 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex$1 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse$1 = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex$1 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; moment.defineLocale('es-do', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortDot; } else if (/-MMM-/.test(format)) { @@ -2596,71 +3049,91 @@ monthsParse: monthsParse$1, longMonthsParse: monthsParse$1, shortMonthsParse: monthsParse$1, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY h:mm A', - LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', + }, + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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. - } + sameElse: 'L', + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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 monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse$2 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex$2 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse$2 = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex$2 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; moment.defineLocale('es-us', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortDot$1; } else if (/-MMM-/.test(format)) { @@ -2676,71 +3149,91 @@ monthsParse: monthsParse$2, longMonthsParse: monthsParse$2, shortMonthsParse: monthsParse$2, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'MM/DD/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY h:mm A', - LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'MM/DD/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', + }, + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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. - } + sameElse: 'L', + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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 monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse$3 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex$3 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse$3 = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex$3 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; moment.defineLocale('es', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortDot$2; } else if (/-MMM-/.test(format)) { @@ -2749,82 +3242,87 @@ return monthsShortDot$2[m.month()]; } }, - monthsRegex : monthsRegex$3, - monthsShortRegex : monthsRegex$3, - monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse : monthsParse$3, - longMonthsParse : monthsParse$3, - shortMonthsParse : monthsParse$3, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + monthsRegex: monthsRegex$3, + monthsShortRegex: monthsRegex$3, + monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, + monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, + monthsParse: monthsParse$3, + longMonthsParse: monthsParse$3, + shortMonthsParse: monthsParse$3, + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', + }, + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); }, - sameElse : 'L' - }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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. - } + sameElse: 'L', + }, + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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. + }, + invalidDate: 'Fecha invalida', }); //! moment.js locale configuration function processRelativeTime$3(number, withoutSuffix, key, isFuture) { var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'ss': [number + 'sekundi', number + 'sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] + s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + ss: [number + 'sekundi', number + 'sekundit'], + m: ['ühe minuti', 'üks minut'], + mm: [number + ' minuti', number + ' minutit'], + h: ['ühe tunni', 'tund aega', 'üks tund'], + hh: [number + ' tunni', number + ' tundi'], + d: ['ühe päeva', 'üks päev'], + M: ['kuu aja', 'kuu aega', 'üks kuu'], + MM: [number + ' kuu', number + ' kuud'], + y: ['ühe aasta', 'aasta', 'üks aasta'], + yy: [number + ' aasta', number + ' aastat'], }; if (withoutSuffix) { return format[key][2] ? format[key][2] : format[key][1]; @@ -2833,205 +3331,240 @@ } moment.defineLocale('et', { - months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), - monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), - weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), - weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - 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, - dd : '%d päeva', - M : processRelativeTime$3, - MM : processRelativeTime$3, - y : processRelativeTime$3, - yy : processRelativeTime$3 + months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split( + '_' + ), + monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split( + '_' + ), + weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split( + '_' + ), + weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[Täna,] LT', + nextDay: '[Homme,] LT', + nextWeek: '[Järgmine] dddd LT', + lastDay: '[Eile,] LT', + lastWeek: '[Eelmine] dddd LT', + sameElse: 'L', + }, + 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, + dd: '%d päeva', + M: processRelativeTime$3, + MM: processRelativeTime$3, + y: processRelativeTime$3, + yy: processRelativeTime$3, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 moment.defineLocale('eu', { - months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), - monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), - monthsParseExact : true, - weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), - weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l : 'YYYY-M-D', - ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] HH:mm', - llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : '%s barru', - past : 'duela %s', - s : 'segundo batzuk', - ss : '%d segundo', - m : 'minutu bat', - mm : '%d minutu', - h : 'ordu bat', - hh : '%d ordu', - d : 'egun bat', - dd : '%d egun', - M : 'hilabete bat', - MM : '%d hilabete', - y : 'urte bat', - yy : '%d urte' + months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split( + '_' + ), + monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split( + '_' + ), + weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), + weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY[ko] MMMM[ren] D[a]', + LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l: 'YYYY-M-D', + ll: 'YYYY[ko] MMM D[a]', + lll: 'YYYY[ko] MMM D[a] HH:mm', + llll: 'ddd, YYYY[ko] MMM D[a] HH:mm', + }, + calendar: { + sameDay: '[gaur] LT[etan]', + nextDay: '[bihar] LT[etan]', + nextWeek: 'dddd LT[etan]', + lastDay: '[atzo] LT[etan]', + lastWeek: '[aurreko] dddd LT[etan]', + sameElse: 'L', + }, + relativeTime: { + future: '%s barru', + past: 'duela %s', + s: 'segundo batzuk', + ss: '%d segundo', + m: 'minutu bat', + mm: '%d minutu', + h: 'ordu bat', + hh: '%d ordu', + d: 'egun bat', + dd: '%d egun', + M: 'hilabete bat', + MM: '%d hilabete', + y: 'urte bat', + yy: '%d urte', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap$5 = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' - }, numberMap$4 = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' - }; + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰', + }, + numberMap$4 = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0', + }; moment.defineLocale('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.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' + months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + '_' + ), + monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + '_' + ), + weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( + '_' + ), + weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.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 /بعد از ظهر/.test(input); }, - meridiem : function (hour, minute, isLower) { + 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 سال' + 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$4[match]; - }).replace(/،/g, ','); + return string + .replace(/[۰-۹]/g, function (match) { + return numberMap$4[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$5[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap$5[match]; + }) + .replace(/,/g, '،'); }, dayOfMonthOrdinalParse: /\d{1,2}م/, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + ordinal: '%dم', + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); //! moment.js locale configuration - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), + var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split( + ' ' + ), numbersFuture = [ - 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9] + 'nolla', + 'yhden', + 'kahden', + 'kolmen', + 'neljän', + 'viiden', + 'kuuden', + numbersPast[7], + numbersPast[8], + numbersPast[9], ]; function translate$2(number, withoutSuffix, key, isFuture) { var result = ''; @@ -3070,151 +3603,223 @@ return result; } function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; + return number < 10 + ? isFuture + ? numbersFuture[number] + : numbersPast[number] + : number; } moment.defineLocale('fi', { - months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), - monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), - weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), - weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l : 'D.M.YYYY', - ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] HH.mm', - llll : 'ddd, Do MMM YYYY, [klo] HH.mm' - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s päästä', - past : '%s sitten', - s : translate$2, - ss : translate$2, - m : translate$2, - mm : translate$2, - h : translate$2, - hh : translate$2, - d : translate$2, - dd : translate$2, - M : translate$2, - MM : translate$2, - y : translate$2, - yy : translate$2 + months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split( + '_' + ), + monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split( + '_' + ), + weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split( + '_' + ), + weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), + weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM[ta] YYYY', + LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', + l: 'D.M.YYYY', + ll: 'Do MMM YYYY', + lll: 'Do MMM YYYY, [klo] HH.mm', + llll: 'ddd, Do MMM YYYY, [klo] HH.mm', + }, + calendar: { + sameDay: '[tänään] [klo] LT', + nextDay: '[huomenna] [klo] LT', + nextWeek: 'dddd [klo] LT', + lastDay: '[eilen] [klo] LT', + lastWeek: '[viime] dddd[na] [klo] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s päästä', + past: '%s sitten', + s: translate$2, + ss: translate$2, + m: translate$2, + mm: translate$2, + h: translate$2, + hh: translate$2, + d: translate$2, + dd: translate$2, + M: translate$2, + MM: translate$2, + y: translate$2, + yy: translate$2, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + 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 + + moment.defineLocale('fil', { + months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( + '_' + ), + monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( + '_' + ), + weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'MM/D/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY HH:mm', + LLLL: 'dddd, MMMM DD, YYYY HH:mm', + }, + calendar: { + sameDay: 'LT [ngayong araw]', + nextDay: '[Bukas ng] LT', + nextWeek: 'LT [sa susunod na] dddd', + lastDay: 'LT [kahapon]', + lastWeek: 'LT [noong nakaraang] dddd', + sameElse: 'L', + }, + relativeTime: { + future: 'sa loob ng %s', + past: '%s ang nakalipas', + s: 'ilang segundo', + ss: '%d segundo', + m: 'isang minuto', + mm: '%d minuto', + h: 'isang oras', + hh: '%d oras', + d: 'isang araw', + dd: '%d araw', + M: 'isang buwan', + MM: '%d buwan', + y: 'isang taon', + yy: '%d taon', + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal: function (number) { + return number; + }, + 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 + + moment.defineLocale('fo', { + months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split( + '_' + ), + weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), + 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: '[Í dag kl.] LT', + nextDay: '[Í morgin kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[Í gjár kl.] LT', + lastWeek: '[síðstu] dddd [kl] LT', + sameElse: 'L', }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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 - - moment.defineLocale('fo', { - months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), - weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), - 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 : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'um %s', - past : '%s síðani', - s : 'fá sekund', - ss : '%d sekundir', - m : 'ein minuttur', - mm : '%d minuttir', - h : 'ein tími', - hh : '%d tímar', - d : 'ein dagur', - dd : '%d dagar', - M : 'ein mánaður', - MM : '%d mánaðir', - y : 'eitt ár', - yy : '%d ár' + relativeTime: { + future: 'um %s', + past: '%s síðani', + s: 'fá sekund', + ss: '%d sekundir', + m: 'ein minuttur', + mm: '%d minuttir', + h: 'ein tími', + hh: '%d tímar', + d: 'ein dagur', + dd: '%d dagar', + M: 'ein mánaður', + MM: '%d mánaðir', + y: 'eitt ár', + yy: '%d ár', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 moment.defineLocale('fr-ca', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { // Words with masculine grammatical gender: mois, trimestre, jour default: @@ -3230,53 +3835,57 @@ case 'W': return number + (number === 1 ? 're' : 'e'); } - } + }, }); //! moment.js locale configuration moment.defineLocale('fr-ch', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.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' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.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', + }, + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { // Words with masculine grammatical gender: mois, trimestre, jour default: @@ -3293,56 +3902,60 @@ return number + (number === 1 ? 're' : 'e'); } }, - 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. - } + 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 moment.defineLocale('fr', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.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' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.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', + }, + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { // TODO: Return 'e' when day of month > 1. Move this case inside // block for masculine words below. @@ -3364,20 +3977,26 @@ return number + (number === 1 ? 're' : 'e'); } }, - 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. - } + 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 monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split( + '_' + ), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split( + '_' + ); moment.defineLocale('fy', { - months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), - monthsShort : function (m, format) { + months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortWithDots; } else if (/-MMM-/.test(format)) { @@ -3386,67 +4005,99 @@ return monthsShortWithDots[m.month()]; } }, - monthsParseExact : true, - weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), - weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.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' - }, - calendar : { + monthsParseExact: true, + weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split( + '_' + ), + weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.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', + }, + calendar: { sameDay: '[hjoed om] LT', nextDay: '[moarn om] LT', nextWeek: 'dddd [om] LT', lastDay: '[juster om] LT', lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'oer %s', - past : '%s lyn', - s : 'in pear sekonden', - ss : '%d sekonden', - m : 'ien minút', - mm : '%d minuten', - h : 'ien oere', - hh : '%d oeren', - d : 'ien dei', - dd : '%d dagen', - M : 'ien moanne', - MM : '%d moannen', - y : 'ien jier', - yy : '%d jierren' + sameElse: 'L', + }, + relativeTime: { + future: 'oer %s', + past: '%s lyn', + s: 'in pear sekonden', + ss: '%d sekonden', + m: 'ien minút', + mm: '%d minuten', + h: 'ien oere', + hh: '%d oeren', + d: 'ien dei', + dd: '%d dagen', + M: 'ien moanne', + MM: '%d moannen', + y: 'ien jier', + yy: '%d jierren', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + 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. }, - 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 months$4 = [ - 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig' - ]; - - var monthsShort$4 = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll']; - - var weekdays$1 = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn']; - - var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat']; - - var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa']; + 'Eanáir', + 'Feabhra', + 'Márta', + 'Aibreán', + 'Bealtaine', + 'Meitheamh', + 'Iúil', + 'Lúnasa', + 'Meán Fómhair', + 'Deireadh Fómhair', + 'Samhain', + 'Nollaig', + ], + monthsShort$4 = [ + 'Ean', + 'Feabh', + 'Márt', + 'Aib', + 'Beal', + 'Meith', + 'Iúil', + 'Lún', + 'M.F.', + 'D.F.', + 'Samh', + 'Noll', + ], + weekdays$1 = [ + 'Dé Domhnaigh', + 'Dé Luain', + 'Dé Máirt', + 'Dé Céadaoin', + 'Déardaoin', + 'Dé hAoine', + 'Dé Sathairn', + ], + weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], + weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa']; moment.defineLocale('ga', { months: months$4, @@ -3461,15 +4112,15 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' + LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Inniu ag] LT', nextDay: '[Amárach ag] LT', nextWeek: 'dddd [ag] LT', - lastDay: '[Inné aig] LT', + lastDay: '[Inné ag] LT', lastWeek: 'dddd [seo caite] [ag] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'i %s', @@ -3483,9 +4134,9 @@ d: 'lá', dd: '%d lá', M: 'mí', - MM: '%d mí', + MM: '%d míonna', y: 'bliain', - yy: '%d bliain' + yy: '%d bliain', }, dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, ordinal: function (number) { @@ -3494,202 +4145,367 @@ }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration var months$5 = [ - 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' - ]; - - var monthsShort$5 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh']; - - var weekdays$2 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne']; - - var weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis']; - - var weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; + 'Am Faoilleach', + 'An Gearran', + 'Am Màrt', + 'An Giblean', + 'An Cèitean', + 'An t-Ògmhios', + 'An t-Iuchar', + 'An Lùnastal', + 'An t-Sultain', + 'An Dàmhair', + 'An t-Samhain', + 'An Dùbhlachd', + ], + monthsShort$5 = [ + 'Faoi', + 'Gear', + 'Màrt', + 'Gibl', + 'Cèit', + 'Ògmh', + 'Iuch', + 'Lùn', + 'Sult', + 'Dàmh', + 'Samh', + 'Dùbh', + ], + weekdays$2 = [ + 'Didòmhnaich', + 'Diluain', + 'Dimàirt', + 'Diciadain', + 'Diardaoin', + 'Dihaoine', + 'Disathairne', + ], + weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], + weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; moment.defineLocale('gd', { - months : months$5, - monthsShort : monthsShort$5, - monthsParseExact : true, - weekdays : weekdays$2, - weekdaysShort : weekdaysShort$1, - weekdaysMin : weekdaysMin$1, - 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 : '[An-diugh aig] LT', - nextDay : '[A-màireach aig] LT', - nextWeek : 'dddd [aig] LT', - lastDay : '[An-dè aig] LT', - lastWeek : 'dddd [seo chaidh] [aig] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ann an %s', - past : 'bho chionn %s', - s : 'beagan diogan', - ss : '%d diogan', - m : 'mionaid', - mm : '%d mionaidean', - h : 'uair', - hh : '%d uairean', - d : 'latha', - dd : '%d latha', - M : 'mìos', - MM : '%d mìosan', - y : 'bliadhna', - yy : '%d bliadhna' - }, - dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/, - ordinal : function (number) { + months: months$5, + monthsShort: monthsShort$5, + monthsParseExact: true, + weekdays: weekdays$2, + weekdaysShort: weekdaysShort$1, + weekdaysMin: weekdaysMin$1, + 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: '[An-diugh aig] LT', + nextDay: '[A-màireach aig] LT', + nextWeek: 'dddd [aig] LT', + lastDay: '[An-dè aig] LT', + lastWeek: 'dddd [seo chaidh] [aig] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ann an %s', + past: 'bho chionn %s', + s: 'beagan diogan', + ss: '%d diogan', + m: 'mionaid', + mm: '%d mionaidean', + h: 'uair', + hh: '%d uairean', + d: 'latha', + dd: '%d latha', + M: 'mìos', + MM: '%d mìosan', + y: 'bliadhna', + yy: '%d bliadhna', + }, + dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, + ordinal: function (number) { var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; return number + output; }, - 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. - } + 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 moment.defineLocale('gl', { - months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'), - monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), + months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split( + '_' + ), + monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', + }, + calendar: { + sameDay: function () { + return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + nextDay: function () { + return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + nextWeek: function () { + return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'; }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + lastDay: function () { + return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT'; }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + lastWeek: function () { + return ( + '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : function (str) { + relativeTime: { + future: function (str) { if (str.indexOf('un') === 0) { return 'n' + str; } return 'en ' + str; }, - past : 'hai %s', - s : 'uns segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'unha hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un ano', - yy : '%d anos' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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. - } + past: 'hai %s', + s: 'uns segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'unha hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un ano', + yy: '%d anos', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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 function processRelativeTime$4(number, withoutSuffix, key, isFuture) { var format = { - 's': ['thodde secondanim', 'thodde second'], - 'ss': [number + ' secondanim', number + ' second'], - 'm': ['eka mintan', 'ek minute'], - 'mm': [number + ' mintanim', number + ' mintam'], - 'h': ['eka voran', 'ek vor'], - 'hh': [number + ' voranim', number + ' voram'], - 'd': ['eka disan', 'ek dis'], - 'dd': [number + ' disanim', number + ' dis'], - 'M': ['eka mhoinean', 'ek mhoino'], - 'MM': [number + ' mhoineanim', number + ' mhoine'], - 'y': ['eka vorsan', 'ek voros'], - 'yy': [number + ' vorsanim', number + ' vorsam'] + s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], + ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], + m: ['एका मिणटान', 'एक मिनूट'], + mm: [number + ' मिणटांनी', number + ' मिणटां'], + h: ['एका वरान', 'एक वर'], + hh: [number + ' वरांनी', number + ' वरां'], + d: ['एका दिसान', 'एक दीस'], + dd: [number + ' दिसांनी', number + ' दीस'], + M: ['एका म्हयन्यान', 'एक म्हयनो'], + MM: [number + ' म्हयन्यानी', number + ' म्हयने'], + y: ['एका वर्सान', 'एक वर्स'], + yy: [number + ' वर्सांनी', number + ' वर्सां'], }; - return withoutSuffix ? format[key][0] : format[key][1]; + return isFuture ? format[key][0] : format[key][1]; + } + + moment.defineLocale('gom-deva', { + months: { + standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( + '_' + ), + format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split( + '_' + ), + isFormat: /MMMM(\s)+D[oD]?/, + }, + monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'), + weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'), + weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'), + weekdaysParseExact: true, + 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, MMMM Do, YYYY, A h:mm [वाजतां]', + llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]', + }, + calendar: { + sameDay: '[आयज] LT', + nextDay: '[फाल्यां] LT', + nextWeek: '[फुडलो] dddd[,] LT', + lastDay: '[काल] LT', + lastWeek: '[फाटलो] dddd[,] LT', + sameElse: 'L', + }, + 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, + }, + dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, + ordinal: function (number, period) { + switch (period) { + // the ordinal 'वेर' only applies to day of the month + case 'D': + return number + 'वेर'; + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + case 'w': + case 'W': + return number; + } + }, + 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. + }, + meridiemParse: /राती|सकाळीं|दनपारां|सांजे/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राती') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळीं') { + return hour; + } else if (meridiem === 'दनपारां') { + return hour > 12 ? hour : hour + 12; + } else if (meridiem === 'सांजे') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'राती'; + } else if (hour < 12) { + return 'सकाळीं'; + } else if (hour < 16) { + return 'दनपारां'; + } else if (hour < 20) { + return 'सांजे'; + } else { + return 'राती'; + } + }, + }); + + //! moment.js locale configuration + + function processRelativeTime$5(number, withoutSuffix, key, isFuture) { + var format = { + s: ['thoddea sekondamni', 'thodde sekond'], + ss: [number + ' sekondamni', number + ' sekond'], + m: ['eka mintan', 'ek minut'], + mm: [number + ' mintamni', number + ' mintam'], + h: ['eka voran', 'ek vor'], + hh: [number + ' voramni', number + ' voram'], + d: ['eka disan', 'ek dis'], + dd: [number + ' disamni', number + ' dis'], + M: ['eka mhoinean', 'ek mhoino'], + MM: [number + ' mhoineamni', number + ' mhoine'], + y: ['eka vorsan', 'ek voros'], + yy: [number + ' vorsamni', number + ' vorsam'], + }; + return isFuture ? format[key][0] : format[key][1]; } moment.defineLocale('gom-latn', { - months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'), - monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'), - weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), - weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'A h:mm [vazta]', - LTS : 'A h:mm:ss [vazta]', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY A h:mm [vazta]', - LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]', - llll: 'ddd, D MMM YYYY, A h:mm [vazta]' - }, - calendar : { + months: { + standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split( + '_' + ), + format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split( + '_' + ), + isFormat: /MMMM(\s)+D[oD]?/, + }, + monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'), + weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), + weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'A h:mm [vazta]', + LTS: 'A h:mm:ss [vazta]', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY A h:mm [vazta]', + LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]', + llll: 'ddd, D MMM YYYY, A h:mm [vazta]', + }, + calendar: { sameDay: '[Aiz] LT', nextDay: '[Faleam] LT', - nextWeek: '[Ieta to] dddd[,] LT', + nextWeek: '[Fuddlo] dddd[,] LT', lastDay: '[Kal] LT', - lastWeek: '[Fatlo] dddd[,] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s', - past : '%s adim', - 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 - }, - dayOfMonthOrdinalParse : /\d{1,2}(er)/, - ordinal : function (number, period) { + lastWeek: '[Fattlo] dddd[,] LT', + sameElse: 'L', + }, + 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, + }, + dayOfMonthOrdinalParse: /\d{1,2}(er)/, + ordinal: function (number, period) { switch (period) { // the ordinal 'er' only applies to day of the month case 'D': @@ -3704,18 +4520,18 @@ return number; } }, - 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. + 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. }, - meridiemParse: /rati|sokalli|donparam|sanje/, - meridiemHour : function (hour, meridiem) { + meridiemParse: /rati|sokallim|donparam|sanje/, + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'rati') { return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'sokalli') { + } else if (meridiem === 'sokallim') { return hour; } else if (meridiem === 'donparam') { return hour > 12 ? hour : hour + 12; @@ -3723,11 +4539,11 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'rati'; } else if (hour < 12) { - return 'sokalli'; + return 'sokallim'; } else if (hour < 16) { return 'donparam'; } else if (hour < 20) { @@ -3735,7 +4551,7 @@ } else { return 'rati'; } - } + }, }); //! moment.js locale configuration @@ -3750,7 +4566,7 @@ '7': '૭', '8': '૮', '9': '૯', - '0': '૦' + '0': '૦', }, numberMap$5 = { '૧': '1', @@ -3762,14 +4578,20 @@ '૭': '7', '૮': '8', '૯': '9', - '૦': '0' + '૦': '0', }; moment.defineLocale('gu', { - months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'), - monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'), + months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split( + '_' + ), + monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split( + '_' + ), monthsParseExact: true, - weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'), + weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split( + '_' + ), weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), longDateFormat: { @@ -3778,7 +4600,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm વાગ્યે', - LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે' + LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે', }, calendar: { sameDay: '[આજ] LT', @@ -3786,7 +4608,7 @@ nextWeek: 'dddd, LT', lastDay: '[ગઇકાલે] LT', lastWeek: '[પાછલા] dddd, LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: '%s મા', @@ -3802,7 +4624,7 @@ M: 'એક મહિનો', MM: '%d મહિનો', y: 'એક વર્ષ', - yy: '%d વર્ષ' + yy: '%d વર્ષ', }, preparse: function (string) { return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { @@ -3846,81 +4668,85 @@ }, 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. - } + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('he', { - months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), - monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), - weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), - 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', - l : 'D/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - 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 : function (number) { + months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split( + '_' + ), + monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split( + '_' + ), + weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'), + 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', + l: 'D/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm', + }, + 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: function (number) { if (number === 2) { return 'שעתיים'; } return number + ' שעות'; }, - d : 'יום', - dd : function (number) { + d: 'יום', + dd: function (number) { if (number === 2) { return 'יומיים'; } return number + ' ימים'; }, - M : 'חודש', - MM : function (number) { + M: 'חודש', + MM: function (number) { if (number === 2) { return 'חודשיים'; } return number + ' חודשים'; }, - y : 'שנה', - yy : function (number) { + y: 'שנה', + yy: function (number) { if (number === 2) { return 'שנתיים'; } else if (number % 10 === 0 && number !== 10) { return number + ' שנה'; } return number + ' שנים'; - } + }, }, meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, - isPM : function (input) { + isPM: function (input) { return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 5) { return 'לפנות בוקר'; } else if (hour < 10) { @@ -3932,74 +4758,78 @@ } else { return 'בערב'; } - } + }, }); //! moment.js locale configuration var symbolMap$7 = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap$6 = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap$6 = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; moment.defineLocale('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( + '_' + ), + monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.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 : '[आज] 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 वर्ष' + weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.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: '[आज] 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) { @@ -4014,7 +4844,7 @@ // Hindi notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -4028,7 +4858,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'रात'; } else if (hour < 10) { @@ -4041,10 +4871,10 @@ return 'रात'; } }, - 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. - } + 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 @@ -4112,28 +4942,36 @@ } moment.defineLocale('hr', { - months : { - format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'), - standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_') - }, - monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + months: { + format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split( + '_' + ), + standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split( + '_' + ), + }, + monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM YYYY', + LLL: 'Do MMMM YYYY H:mm', + LLLL: 'dddd, Do MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedjelju] [u] LT'; @@ -4148,12 +4986,13 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[jučer u] LT', - lastWeek : function () { + lastDay: '[jučer u] LT', + lastWeek: function () { switch (this.day()) { case 0: + return '[prošlu] [nedjelju] [u] LT'; case 3: - return '[prošlu] dddd [u] LT'; + return '[prošlu] [srijedu] [u] LT'; case 6: return '[prošle] [subote] [u] LT'; case 1: @@ -4163,42 +5002,48 @@ return '[prošli] dddd [u] LT'; } }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - ss : translate$3, - m : translate$3, - mm : translate$3, - h : translate$3, - hh : translate$3, - d : 'dan', - dd : translate$3, - M : 'mjesec', - MM : translate$3, - y : 'godinu', - yy : translate$3 + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'par sekundi', + ss: translate$3, + m: translate$3, + mm: translate$3, + h: translate$3, + hh: translate$3, + d: 'dan', + dd: translate$3, + M: 'mjesec', + MM: translate$3, + y: 'godinu', + yy: translate$3, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split( + ' ' + ); function translate$4(number, withoutSuffix, key, isFuture) { var num = number; switch (key) { case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + return isFuture || withoutSuffix + ? 'néhány másodperc' + : 'néhány másodperce'; case 'ss': - return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce'; + return num + (isFuture || withoutSuffix) + ? ' másodperc' + : ' másodperce'; case 'm': return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); case 'mm': @@ -4223,90 +5068,105 @@ return ''; } function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + return ( + (isFuture ? '' : '[múlt] ') + + '[' + + weekEndings[this.day()] + + '] LT[-kor]' + ); } moment.defineLocale('hu', { - months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), - monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), - weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D. H:mm', - LLLL : 'YYYY. MMMM D., dddd H:mm' + months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split( + '_' + ), + weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY. MMMM D.', + LLL: 'YYYY. MMMM D. H:mm', + LLLL: 'YYYY. MMMM D., dddd H:mm', }, meridiemParse: /de|du/i, isPM: function (input) { return input.charAt(1).toLowerCase() === 'u'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower === true ? 'de' : 'DE'; } else { return isLower === true ? 'du' : 'DU'; } }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { + calendar: { + sameDay: '[ma] LT[-kor]', + nextDay: '[holnap] LT[-kor]', + nextWeek: function () { return week.call(this, true); }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { + lastDay: '[tegnap] LT[-kor]', + lastWeek: function () { return week.call(this, false); }, - sameElse : 'L' - }, - relativeTime : { - future : '%s múlva', - past : '%s', - s : translate$4, - ss : translate$4, - m : translate$4, - mm : translate$4, - h : translate$4, - hh : translate$4, - d : translate$4, - dd : translate$4, - M : translate$4, - MM : translate$4, - y : translate$4, - yy : translate$4 + sameElse: 'L', + }, + relativeTime: { + future: '%s múlva', + past: '%s', + s: translate$4, + ss: translate$4, + m: translate$4, + mm: translate$4, + h: translate$4, + hh: translate$4, + d: translate$4, + dd: translate$4, + M: translate$4, + MM: translate$4, + y: translate$4, + yy: translate$4, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 moment.defineLocale('hy-am', { - months : { - format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'), - standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_') - }, - monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'), - weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - 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 : { + months: { + format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split( + '_' + ), + standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split( + '_' + ), + }, + monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split( + '_' + ), + weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + 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: '[այսօր] LT', nextDay: '[վաղը] LT', lastDay: '[երեկ] LT', @@ -4316,29 +5176,29 @@ lastWeek: function () { return '[անցած] 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 տարի' + 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 տարի', }, meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, isPM: function (input) { return /^(ցերեկվա|երեկոյան)$/.test(input); }, - meridiem : function (hour) { + meridiem: function (hour) { if (hour < 4) { return 'գիշերվա'; } else if (hour < 12) { @@ -4364,30 +5224,32 @@ return number; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('id', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), + weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|siang|sore|malam/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -4399,7 +5261,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { @@ -4410,34 +5272,34 @@ return 'malam'; } }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lalu', - s : 'beberapa detik', - ss : '%d detik', - m : 'semenit', - mm : '%d menit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Besok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kemarin pukul] LT', + lastWeek: 'dddd [lalu pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lalu', + s: 'beberapa detik', + ss: '%d detik', + m: 'semenit', + mm: '%d menit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration @@ -4454,24 +5316,36 @@ var result = number + ' '; switch (key) { case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + return withoutSuffix || isFuture + ? 'nokkrar sekúndur' + : 'nokkrum sekúndum'; case 'ss': if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum'); + return ( + result + + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum') + ); } return result + 'sekúnda'; case 'm': return withoutSuffix ? 'mínúta' : 'mínútu'; case 'mm': if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + return ( + result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum') + ); } else if (withoutSuffix) { return result + 'mínúta'; } return result + 'mínútu'; case 'hh': if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + return ( + result + + (withoutSuffix || isFuture + ? 'klukkustundir' + : 'klukkustundum') + ); } return result + 'klukkustund'; case 'd': @@ -4515,68 +5389,76 @@ } moment.defineLocale('is', { - months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), - weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'eftir %s', - past : 'fyrir %s síðan', - s : translate$5, - ss : translate$5, - m : translate$5, - mm : translate$5, - h : 'klukkustund', - hh : translate$5, - d : translate$5, - dd : translate$5, - M : translate$5, - MM : translate$5, - y : translate$5, - yy : translate$5 + months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split( + '_' + ), + weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm', + }, + calendar: { + sameDay: '[í dag kl.] LT', + nextDay: '[á morgun kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[í gær kl.] LT', + lastWeek: '[síðasta] dddd [kl.] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'eftir %s', + past: 'fyrir %s síðan', + s: translate$5, + ss: translate$5, + m: translate$5, + mm: translate$5, + h: 'klukkustund', + hh: translate$5, + d: translate$5, + dd: translate$5, + M: translate$5, + MM: translate$5, + y: translate$5, + yy: translate$5, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 moment.defineLocale('it-ch', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), - weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), - 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 : { + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( + '_' + ), + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( + '_' + ), + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + 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: '[Oggi alle] LT', nextDay: '[Domani alle] LT', nextWeek: 'dddd [alle] LT', @@ -4589,145 +5471,254 @@ return '[lo scorso] dddd [alle] LT'; } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + relativeTime: { + future: function (s) { + return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; }, - past : '%s fa', - s : 'alcuni secondi', - ss : '%d secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, + past: '%s fa', + s: 'alcuni secondi', + ss: '%d secondi', + m: 'un minuto', + mm: '%d minuti', + h: "un'ora", + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 moment.defineLocale('it', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), - weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), - 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: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( + '_' + ), + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( + '_' + ), + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + 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: function () { + return ( + '[Oggi a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + nextDay: function () { + return ( + '[Domani a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + nextWeek: function () { + return ( + 'dddd [a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + lastDay: function () { + return ( + '[Ieri a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, lastWeek: function () { switch (this.day()) { case 0: - return '[la scorsa] dddd [alle] LT'; + return ( + '[La scorsa] dddd [a' + + (this.hours() > 1 + ? 'lle ' + : this.hours() === 0 + ? ' ' + : "ll'") + + ']LT' + ); default: - return '[lo scorso] dddd [alle] LT'; + return ( + '[Lo scorso] dddd [a' + + (this.hours() > 1 + ? 'lle ' + : this.hours() === 0 + ? ' ' + : "ll'") + + ']LT' + ); } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + relativeTime: { + future: function (s) { + return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; }, - past : '%s fa', - s : 'alcuni secondi', - ss : '%d secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, + past: '%s fa', + s: 'alcuni secondi', + ss: '%d secondi', + m: 'un minuto', + mm: '%d minuti', + h: "un'ora", + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 moment.defineLocale('ja', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort : '日_月_火_水_木_金_土'.split('_'), - weekdaysMin : '日_月_火_水_木_金_土'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日 dddd HH:mm', - l : 'YYYY/MM/DD', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日(ddd) HH:mm' + eras: [ + { + since: '2019-05-01', + offset: 1, + name: '令和', + narrow: '㋿', + abbr: 'R', + }, + { + since: '1989-01-08', + until: '2019-04-30', + offset: 1, + name: '平成', + narrow: '㍻', + abbr: 'H', + }, + { + since: '1926-12-25', + until: '1989-01-07', + offset: 1, + name: '昭和', + narrow: '㍼', + abbr: 'S', + }, + { + since: '1912-07-30', + until: '1926-12-24', + offset: 1, + name: '大正', + narrow: '㍽', + abbr: 'T', + }, + { + since: '1873-01-01', + until: '1912-07-29', + offset: 6, + name: '明治', + narrow: '㍾', + abbr: 'M', + }, + { + since: '0001-01-01', + until: '1873-12-31', + offset: 1, + name: '西暦', + narrow: 'AD', + abbr: 'AD', + }, + { + since: '0000-12-31', + until: -Infinity, + offset: 1, + name: '紀元前', + narrow: 'BC', + abbr: 'BC', + }, + ], + eraYearOrdinalRegex: /(元|\d+)年/, + eraYearOrdinalParse: function (input, match) { + return match[1] === '元' ? 1 : parseInt(match[1] || input, 10); + }, + months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort: '日_月_火_水_木_金_土'.split('_'), + weekdaysMin: '日_月_火_水_木_金_土'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日 dddd HH:mm', + l: 'YYYY/MM/DD', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日(ddd) HH:mm', }, meridiemParse: /午前|午後/i, - isPM : function (input) { + isPM: function (input) { return input === '午後'; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return '午前'; } else { return '午後'; } }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : function (now) { - if (now.week() < this.week()) { + calendar: { + sameDay: '[今日] LT', + nextDay: '[明日] LT', + nextWeek: function (now) { + if (now.week() !== this.week()) { return '[来週]dddd LT'; } else { return 'dddd LT'; } }, - lastDay : '[昨日] LT', - lastWeek : function (now) { - if (this.week() < now.week()) { + lastDay: '[昨日] LT', + lastWeek: function (now) { + if (this.week() !== now.week()) { return '[先週]dddd LT'; } else { return 'dddd LT'; } }, - sameElse : 'L' + sameElse: 'L', }, - dayOfMonthOrdinalParse : /\d{1,2}日/, - ordinal : function (number, period) { + dayOfMonthOrdinalParse: /\d{1,2}日/, + ordinal: function (number, period) { switch (period) { + case 'y': + return number === 1 ? '元年' : number + '年'; case 'd': case 'D': case 'DDD': @@ -4736,42 +5727,44 @@ return number; } }, - relativeTime : { - future : '%s後', - past : '%s前', - s : '数秒', - ss : '%d秒', - m : '1分', - mm : '%d分', - h : '1時間', - hh : '%d時間', - d : '1日', - dd : '%d日', - M : '1ヶ月', - MM : '%dヶ月', - y : '1年', - yy : '%d年' - } + relativeTime: { + future: '%s後', + past: '%s前', + s: '数秒', + ss: '%d秒', + m: '1分', + mm: '%d分', + h: '1時間', + hh: '%d時間', + d: '1日', + dd: '%d日', + M: '1ヶ月', + MM: '%dヶ月', + y: '1年', + yy: '%d年', + }, }); //! moment.js locale configuration moment.defineLocale('jv', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -4783,7 +5776,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'enjing'; } else if (hours < 15) { @@ -4794,111 +5787,123 @@ return 'ndalu'; } }, - calendar : { - sameDay : '[Dinten puniko pukul] LT', - nextDay : '[Mbenjang pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kala wingi pukul] LT', - lastWeek : 'dddd [kepengker pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'wonten ing %s', - past : '%s ingkang kepengker', - s : 'sawetawis detik', - ss : '%d detik', - m : 'setunggal menit', - mm : '%d menit', - h : 'setunggal jam', - hh : '%d jam', - d : 'sedinten', - dd : '%d dinten', - M : 'sewulan', - MM : '%d wulan', - y : 'setaun', - yy : '%d taun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + calendar: { + sameDay: '[Dinten puniko pukul] LT', + nextDay: '[Mbenjang pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kala wingi pukul] LT', + lastWeek: 'dddd [kepengker pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'wonten ing %s', + past: '%s ingkang kepengker', + s: 'sawetawis detik', + ss: '%d detik', + m: 'setunggal menit', + mm: '%d menit', + h: 'setunggal jam', + hh: '%d jam', + d: 'sedinten', + dd: '%d dinten', + M: 'sewulan', + MM: '%d wulan', + y: 'setaun', + yy: '%d taun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('ka', { - months : { - standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : { - standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'), - isFormat: /(წინა|შემდეგ)/ - }, - weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, 'ში') : - s + 'ში'; + months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split( + '_' + ), + monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays: { + standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split( + '_' + ), + format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split( + '_' + ), + isFormat: /(წინა|შემდეგ)/, + }, + weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + 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: '[დღეს] LT[-ზე]', + nextDay: '[ხვალ] LT[-ზე]', + lastDay: '[გუშინ] LT[-ზე]', + nextWeek: '[შემდეგ] dddd LT[-ზე]', + lastWeek: '[წინა] dddd LT-ზე', + sameElse: 'L', + }, + relativeTime: { + future: function (s) { + return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ( + $0, + $1, + $2 + ) { + return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში'; + }); }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + past: function (s) { + if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) { return s.replace(/(ი|ე)$/, 'ის წინ'); } - if ((/წელი/).test(s)) { + if (/წელი/.test(s)) { return s.replace(/წელი$/, 'წლის წინ'); } + return s; }, - s : 'რამდენიმე წამი', - ss : '%d წამი', - m : 'წუთი', - mm : '%d წუთი', - h : 'საათი', - hh : '%d საათი', - d : 'დღე', - dd : '%d დღე', - M : 'თვე', - MM : '%d თვე', - y : 'წელი', - yy : '%d წელი' + s: 'რამდენიმე წამი', + ss: '%d წამი', + m: 'წუთი', + mm: '%d წუთი', + h: 'საათი', + hh: '%d საათი', + d: 'დღე', + dd: '%d დღე', + M: 'თვე', + MM: '%d თვე', + y: 'წელი', + yy: '%d წელი', }, dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal : function (number) { + ordinal: function (number) { if (number === 0) { return number; } if (number === 1) { return number + '-ლი'; } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + if ( + number < 20 || + (number <= 100 && number % 20 === 0) || + number % 100 === 0 + ) { return 'მე-' + number; } return number + '-ე'; }, - week : { - dow : 1, - doy : 7 - } + week: { + dow: 1, + doy: 7, + }, }); //! moment.js locale configuration @@ -4923,84 +5928,89 @@ 70: '-ші', 80: '-ші', 90: '-шы', - 100: '-ші' + 100: '-ші', }; moment.defineLocale('kk', { - months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'), - monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), - weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'), - weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), - weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'), - 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 : '[Бүгін сағат] 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 жыл' + months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split( + '_' + ), + monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), + weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split( + '_' + ), + weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), + weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'), + 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: '[Бүгін сағат] 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 жыл', }, dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, - ordinal : function (number) { + ordinal: function (number) { var a = number % 10, b = number >= 100 ? 100 : null; return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap$8 = { - '1': '១', - '2': '២', - '3': '៣', - '4': '៤', - '5': '៥', - '6': '៦', - '7': '៧', - '8': '៨', - '9': '៩', - '0': '០' - }, numberMap$7 = { - '១': '1', - '២': '2', - '៣': '3', - '៤': '4', - '៥': '5', - '៦': '6', - '៧': '7', - '៨': '8', - '៩': '9', - '០': '0' - }; + '1': '១', + '2': '២', + '3': '៣', + '4': '៤', + '5': '៥', + '6': '៦', + '7': '៧', + '8': '៨', + '9': '៩', + '0': '០', + }, + numberMap$7 = { + '១': '1', + '២': '2', + '៣': '3', + '៤': '4', + '៥': '5', + '៦': '6', + '៧': '7', + '៨': '8', + '៩': '9', + '០': '0', + }; moment.defineLocale('km', { months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( @@ -5019,7 +6029,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' + LLLL: 'dddd, D MMMM YYYY HH:mm', }, meridiemParse: /ព្រឹក|ល្ងាច/, isPM: function (input) { @@ -5038,7 +6048,7 @@ nextWeek: 'dddd [ម៉ោង] LT', lastDay: '[ម្សិលមិញ ម៉ោង] LT', lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: '%sទៀត', @@ -5054,10 +6064,10 @@ M: 'មួយខែ', MM: '%d ខែ', y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ' + yy: '%d ឆ្នាំ', }, - dayOfMonthOrdinalParse : /ទី\d{1,2}/, - ordinal : 'ទី%d', + dayOfMonthOrdinalParse: /ទី\d{1,2}/, + ordinal: 'ទី%d', preparse: function (string) { return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { return numberMap$7[match]; @@ -5070,75 +6080,81 @@ }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap$9 = { - '1': '೧', - '2': '೨', - '3': '೩', - '4': '೪', - '5': '೫', - '6': '೬', - '7': '೭', - '8': '೮', - '9': '೯', - '0': '೦' - }, - numberMap$8 = { - '೧': '1', - '೨': '2', - '೩': '3', - '೪': '4', - '೫': '5', - '೬': '6', - '೭': '7', - '೮': '8', - '೯': '9', - '೦': '0' - }; + '1': '೧', + '2': '೨', + '3': '೩', + '4': '೪', + '5': '೫', + '6': '೬', + '7': '೭', + '8': '೮', + '9': '೯', + '0': '೦', + }, + numberMap$8 = { + '೧': '1', + '೨': '2', + '೩': '3', + '೪': '4', + '೫': '5', + '೬': '6', + '೭': '7', + '೮': '8', + '೯': '9', + '೦': '0', + }; moment.defineLocale('kn', { - months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'), - monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'), + months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split( + '_' + ), + monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split( + '_' + ), monthsParseExact: true, - weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'), - weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), - weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.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 : '[ಇಂದು] 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 ವರ್ಷ' + weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split( + '_' + ), + weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), + weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.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: '[ಇಂದು] 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) { @@ -5151,7 +6167,7 @@ }); }, meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -5165,7 +6181,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ರಾತ್ರಿ'; } else if (hour < 10) { @@ -5179,61 +6195,63 @@ } }, dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, - ordinal : function (number) { + ordinal: function (number) { return number + 'ನೇ'; }, - 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. - } + 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 moment.defineLocale('ko', { - months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort : '일_월_화_수_목_금_토'.split('_'), - weekdaysMin : '일_월_화_수_목_금_토'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 A h:mm', - LLLL : 'YYYY년 MMMM D일 dddd A h:mm', - l : 'YYYY.MM.DD.', - ll : 'YYYY년 MMMM D일', - lll : 'YYYY년 MMMM D일 A h:mm', - llll : 'YYYY년 MMMM D일 dddd A h:mm' - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s 후', - past : '%s 전', - s : '몇 초', - ss : '%d초', - m : '1분', - mm : '%d분', - h : '한 시간', - hh : '%d시간', - d : '하루', - dd : '%d일', - M : '한 달', - MM : '%d달', - y : '일 년', - yy : '%d년' - }, - dayOfMonthOrdinalParse : /\d{1,2}(일|월|주)/, - ordinal : function (number, period) { + months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split( + '_' + ), + weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort: '일_월_화_수_목_금_토'.split('_'), + weekdaysMin: '일_월_화_수_목_금_토'.split('_'), + longDateFormat: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY년 MMMM D일', + LLL: 'YYYY년 MMMM D일 A h:mm', + LLLL: 'YYYY년 MMMM D일 dddd A h:mm', + l: 'YYYY.MM.DD.', + ll: 'YYYY년 MMMM D일', + lll: 'YYYY년 MMMM D일 A h:mm', + llll: 'YYYY년 MMMM D일 dddd A h:mm', + }, + calendar: { + sameDay: '오늘 LT', + nextDay: '내일 LT', + nextWeek: 'dddd LT', + lastDay: '어제 LT', + lastWeek: '지난주 dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s 후', + past: '%s 전', + s: '몇 초', + ss: '%d초', + m: '1분', + mm: '%d분', + h: '한 시간', + hh: '%d시간', + d: '하루', + dd: '%d일', + M: '한 달', + MM: '%d달', + y: '일 년', + yy: '%d년', + }, + dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/, + ordinal: function (number, period) { switch (period) { case 'd': case 'D': @@ -5248,120 +6266,128 @@ return number; } }, - meridiemParse : /오전|오후/, - isPM : function (token) { + meridiemParse: /오전|오후/, + isPM: function (token) { return token === '오후'; }, - meridiem : function (hour, minute, isUpper) { + meridiem: function (hour, minute, isUpper) { return hour < 12 ? '오전' : '오후'; - } + }, }); //! moment.js locale configuration var symbolMap$a = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap$9 = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }, - months$6 = [ - 'کانونی دووەم', - 'شوبات', - 'ئازار', - 'نیسان', - 'ئایار', - 'حوزەیران', - 'تەمموز', - 'ئاب', - 'ئەیلوول', - 'تشرینی یەكەم', - 'تشرینی دووەم', - 'كانونی یەکەم' - ]; - + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap$9 = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }, + months$6 = [ + 'کانونی دووەم', + 'شوبات', + 'ئازار', + 'نیسان', + 'ئایار', + 'حوزەیران', + 'تەمموز', + 'ئاب', + 'ئەیلوول', + 'تشرینی یەكەم', + 'تشرینی دووەم', + 'كانونی یەکەم', + ]; moment.defineLocale('ku', { - months : months$6, - monthsShort : months$6, - 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' + months: months$6, + monthsShort: months$6, + 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 /ئێواره‌/.test(input); }, - meridiem : function (hour, minute, isLower) { + 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 ساڵ' + 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$9[match]; - }).replace(/،/g, ','); + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap$9[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$a[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap$a[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); //! moment.js locale configuration @@ -5386,68 +6412,74 @@ 70: '-чи', 80: '-чи', 90: '-чу', - 100: '-чү' + 100: '-чү', }; moment.defineLocale('ky', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'), - weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), - weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), - 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 : '[Бүгүн саат] 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 жыл' + months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( + '_' + ), + monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split( + '_' + ), + weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split( + '_' + ), + weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), + weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), + 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: '[Бүгүн саат] 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 жыл', }, dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, - ordinal : function (number) { + ordinal: function (number) { var a = number % 10, b = number >= 100 ? 100 : null; return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration - function processRelativeTime$5(number, withoutSuffix, key, isFuture) { + function processRelativeTime$6(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'M': ['ee Mount', 'engem Mount'], - 'y': ['ee Joer', 'engem Joer'] + m: ['eng Minutt', 'enger Minutt'], + h: ['eng Stonn', 'enger Stonn'], + d: ['een Dag', 'engem Dag'], + M: ['ee Mount', 'engem Mount'], + y: ['ee Joer', 'engem Joer'], }; return withoutSuffix ? format[key][0] : format[key][1]; } @@ -5488,7 +6520,8 @@ return false; } else if (number < 100) { // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; + var lastDigit = number % 10, + firstDigit = number / 10; if (lastDigit === 0) { return eifelerRegelAppliesToNumber(firstDigit); } @@ -5507,20 +6540,26 @@ } moment.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split( + '_' + ), weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm [Auer]', LTS: 'H:mm:ss [Auer]', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]', }, calendar: { sameDay: '[Haut um] LT', @@ -5537,104 +6576,108 @@ default: return '[Leschte] dddd [um] LT'; } - } + }, }, - relativeTime : { - future : processFutureTime, - past : processPastTime, - s : 'e puer Sekonnen', - ss : '%d Sekonnen', - m : processRelativeTime$5, - mm : '%d Minutten', - h : processRelativeTime$5, - hh : '%d Stonnen', - d : processRelativeTime$5, - dd : '%d Deeg', - M : processRelativeTime$5, - MM : '%d Méint', - y : processRelativeTime$5, - yy : '%d Joer' + relativeTime: { + future: processFutureTime, + past: processPastTime, + s: 'e puer Sekonnen', + ss: '%d Sekonnen', + m: processRelativeTime$6, + mm: '%d Minutten', + h: processRelativeTime$6, + hh: '%d Stonnen', + d: processRelativeTime$6, + dd: '%d Deeg', + M: processRelativeTime$6, + MM: '%d Méint', + y: processRelativeTime$6, + yy: '%d Joer', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('lo', { - 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' + 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) { + 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 : '1 ນາທີ', - mm : '%d ນາທີ', - h : '1 ຊົ່ວໂມງ', - hh : '%d ຊົ່ວໂມງ', - d : '1 ມື້', - dd : '%d ມື້', - M : '1 ເດືອນ', - MM : '%d ເດືອນ', - y : '1 ປີ', - yy : '%d ປີ' + calendar: { + sameDay: '[ມື້ນີ້ເວລາ] LT', + nextDay: '[ມື້ອື່ນເວລາ] LT', + nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT', + lastDay: '[ມື້ວານນີ້ເວລາ] LT', + lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ອີກ %s', + past: '%sຜ່ານມາ', + s: 'ບໍ່ເທົ່າໃດວິນາທີ', + ss: '%d ວິນາທີ', + m: '1 ນາທີ', + mm: '%d ນາທີ', + h: '1 ຊົ່ວໂມງ', + hh: '%d ຊົ່ວໂມງ', + d: '1 ມື້', + dd: '%d ມື້', + M: '1 ເດືອນ', + MM: '%d ເດືອນ', + y: '1 ປີ', + yy: '%d ປີ', }, dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, - ordinal : function (number) { + ordinal: function (number) { return 'ທີ່' + number; - } + }, }); //! moment.js locale configuration var units = { - 'ss' : 'sekundė_sekundžių_sekundes', - 'm' : 'minutė_minutės_minutę', - 'mm': 'minutės_minučių_minutes', - 'h' : 'valanda_valandos_valandą', - 'hh': 'valandos_valandų_valandas', - 'd' : 'diena_dienos_dieną', - 'dd': 'dienos_dienų_dienas', - 'M' : 'mėnuo_mėnesio_mėnesį', - 'MM': 'mėnesiai_mėnesių_mėnesius', - 'y' : 'metai_metų_metus', - 'yy': 'metai_metų_metus' + ss: 'sekundė_sekundžių_sekundes', + m: 'minutė_minutės_minutę', + mm: 'minutės_minučių_minutes', + h: 'valanda_valandos_valandą', + hh: 'valandos_valandų_valandas', + d: 'diena_dienos_dieną', + dd: 'dienos_dienų_dienas', + M: 'mėnuo_mėnesio_mėnesį', + MM: 'mėnesiai_mėnesių_mėnesius', + y: 'metai_metų_metus', + yy: 'metai_metų_metus', }; function translateSeconds(number, withoutSuffix, key, isFuture) { if (withoutSuffix) { @@ -5644,7 +6687,11 @@ } } function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + return withoutSuffix + ? forms(key)[0] + : isFuture + ? forms(key)[1] + : forms(key)[2]; } function special(number) { return number % 10 === 0 || (number > 10 && number < 20); @@ -5655,7 +6702,9 @@ function translate$6(number, withoutSuffix, key, isFuture) { var result = number + ' '; if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); + return ( + result + translateSingular(number, withoutSuffix, key[0], isFuture) + ); } else if (withoutSuffix) { return result + (special(number) ? forms(key)[1] : forms(key)[0]); } else { @@ -5667,80 +6716,88 @@ } } moment.defineLocale('lt', { - months : { - format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), - standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), - isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/ - }, - monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : { - format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'), - standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'), - isFormat: /dddd HH:mm/ - }, - weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l : 'YYYY-MM-DD', - ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' - }, - calendar : { - sameDay : '[Šiandien] LT', - nextDay : '[Rytoj] LT', - nextWeek : 'dddd LT', - lastDay : '[Vakar] LT', - lastWeek : '[Praėjusį] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'po %s', - past : 'prieš %s', - s : translateSeconds, - ss : translate$6, - m : translateSingular, - mm : translate$6, - h : translateSingular, - hh : translate$6, - d : translateSingular, - dd : translate$6, - M : translateSingular, - MM : translate$6, - y : translateSingular, - yy : translate$6 + months: { + format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split( + '_' + ), + standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split( + '_' + ), + isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/, + }, + monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays: { + format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split( + '_' + ), + standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split( + '_' + ), + isFormat: /dddd HH:mm/, + }, + weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY [m.] MMMM D [d.]', + LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l: 'YYYY-MM-DD', + ll: 'YYYY [m.] MMMM D [d.]', + lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]', + }, + calendar: { + sameDay: '[Šiandien] LT', + nextDay: '[Rytoj] LT', + nextWeek: 'dddd LT', + lastDay: '[Vakar] LT', + lastWeek: '[Praėjusį] dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: 'po %s', + past: 'prieš %s', + s: translateSeconds, + ss: translate$6, + m: translateSingular, + mm: translate$6, + h: translateSingular, + hh: translate$6, + d: translateSingular, + dd: translate$6, + M: translateSingular, + MM: translate$6, + y: translateSingular, + yy: translate$6, }, dayOfMonthOrdinalParse: /\d{1,2}-oji/, - ordinal : function (number) { + ordinal: function (number) { return number + '-oji'; }, - 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. - } + 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 units$1 = { - 'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'), - 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'h': 'stundas_stundām_stunda_stundas'.split('_'), - 'hh': 'stundas_stundām_stunda_stundas'.split('_'), - 'd': 'dienas_dienām_diena_dienas'.split('_'), - 'dd': 'dienas_dienām_diena_dienas'.split('_'), - 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'y': 'gada_gadiem_gads_gadi'.split('_'), - 'yy': 'gada_gadiem_gads_gadi'.split('_') + ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'), + m: 'minūtes_minūtēm_minūte_minūtes'.split('_'), + mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'), + h: 'stundas_stundām_stunda_stundas'.split('_'), + hh: 'stundas_stundām_stunda_stundas'.split('_'), + d: 'dienas_dienām_diena_dienas'.split('_'), + dd: 'dienas_dienām_diena_dienas'.split('_'), + M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + y: 'gada_gadiem_gads_gadi'.split('_'), + yy: 'gada_gadiem_gads_gadi'.split('_'), }; /** * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. @@ -5766,56 +6823,61 @@ } moment.defineLocale('lv', { - months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), - weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY.', - LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, HH:mm', - LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'pēc %s', - past : 'pirms %s', - s : relativeSeconds, - ss : relativeTimeWithPlural$1, - m : relativeTimeWithSingular, - mm : relativeTimeWithPlural$1, - h : relativeTimeWithSingular, - hh : relativeTimeWithPlural$1, - d : relativeTimeWithSingular, - dd : relativeTimeWithPlural$1, - M : relativeTimeWithSingular, - MM : relativeTimeWithPlural$1, - y : relativeTimeWithSingular, - yy : relativeTimeWithPlural$1 + months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split( + '_' + ), + weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY.', + LL: 'YYYY. [gada] D. MMMM', + LLL: 'YYYY. [gada] D. MMMM, HH:mm', + LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm', + }, + calendar: { + sameDay: '[Šodien pulksten] LT', + nextDay: '[Rīt pulksten] LT', + nextWeek: 'dddd [pulksten] LT', + lastDay: '[Vakar pulksten] LT', + lastWeek: '[Pagājušā] dddd [pulksten] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'pēc %s', + past: 'pirms %s', + s: relativeSeconds, + ss: relativeTimeWithPlural$1, + m: relativeTimeWithSingular, + mm: relativeTimeWithPlural$1, + h: relativeTimeWithSingular, + hh: relativeTimeWithPlural$1, + d: relativeTimeWithSingular, + dd: relativeTimeWithPlural$1, + M: relativeTimeWithSingular, + MM: relativeTimeWithPlural$1, + y: relativeTimeWithSingular, + yy: relativeTimeWithPlural$1, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 translator = { - words: { //Different grammatical cases + words: { + //Different grammatical cases ss: ['sekund', 'sekunda', 'sekundi'], m: ['jedan minut', 'jednog minuta'], mm: ['minut', 'minuta', 'minuta'], @@ -5823,36 +6885,50 @@ hh: ['sat', 'sata', 'sati'], dd: ['dan', 'dana', 'dana'], MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'] + yy: ['godina', 'godine', 'godina'], }, correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + return ( + number + + ' ' + + translator.correctGrammaticalCase(number, wordKey) + ); } - } + }, }; moment.defineLocale('me', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), - monthsParseExact : true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', + LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' + LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[danas u] LT', @@ -5873,8 +6949,8 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[juče u] LT', - lastWeek : function () { + lastDay: '[juče u] LT', + lastWeek: function () { var lastWeekDays = [ '[prošle] [nedjelje] [u] LT', '[prošlog] [ponedjeljka] [u] LT', @@ -5882,41 +6958,45 @@ '[prošle] [srijede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' + '[prošle] [subote] [u] LT', ]; return lastWeekDays[this.day()]; }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'nekoliko sekundi', - ss : translator.translate, - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mjesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'nekoliko sekundi', + ss: translator.translate, + m: translator.translate, + mm: translator.translate, + h: translator.translate, + hh: translator.translate, + d: 'dan', + dd: translator.translate, + M: 'mjesec', + MM: translator.translate, + y: 'godinu', + yy: translator.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('mi', { - months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'), - monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'), + months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split( + '_' + ), + monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split( + '_' + ), monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, @@ -5930,7 +7010,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY [i] HH:mm', - LLLL: 'dddd, D MMMM YYYY [i] HH:mm' + LLLL: 'dddd, D MMMM YYYY [i] HH:mm', }, calendar: { sameDay: '[i teie mahana, i] LT', @@ -5938,7 +7018,7 @@ nextWeek: 'dddd [i] LT', lastDay: '[inanahi i] LT', lastWeek: 'dddd [whakamutunga i] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'i roto i %s', @@ -5954,38 +7034,42 @@ M: 'he marama', MM: '%d marama', y: 'he tau', - yy: '%d tau' + yy: '%d tau', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 moment.defineLocale('mk', { - months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), - weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.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 : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : '[Во] dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { + months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split( + '_' + ), + monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split( + '_' + ), + weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.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: '[Денес во] LT', + nextDay: '[Утре во] LT', + nextWeek: '[Во] dddd [во] LT', + lastDay: '[Вчера во] LT', + lastWeek: function () { switch (this.day()) { case 0: case 3: @@ -5998,26 +7082,26 @@ return '[Изминатиот] 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 години' + 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 години', }, dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { + ordinal: function (number) { var lastDigit = number % 10, last2Digits = number % 100; if (number === 0) { @@ -6036,67 +7120,75 @@ return number + '-ти'; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), - monthsParseExact : true, - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.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 : '[ഇന്ന്] 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 വർഷം' + months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split( + '_' + ), + monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split( + '_' + ), + weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.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: '[ഇന്ന്] 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 വർഷം', }, meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if ((meridiem === 'രാത്രി' && hour >= 4) || - meridiem === 'ഉച്ച കഴിഞ്ഞ്' || - meridiem === 'വൈകുന്നേരം') { + if ( + (meridiem === 'രാത്രി' && hour >= 4) || + meridiem === 'ഉച്ച കഴിഞ്ഞ്' || + meridiem === 'വൈകുന്നേരം' + ) { return hour + 12; } else { return hour; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'രാത്രി'; } else if (hour < 12) { @@ -6108,7 +7200,7 @@ } else { return 'രാത്രി'; } - } + }, }); //! moment.js locale configuration @@ -6140,58 +7232,62 @@ } moment.defineLocale('mn', { - months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'), - monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'), - monthsParseExact : true, - weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), - weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), - weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY оны MMMMын D', - LLL : 'YYYY оны MMMMын D HH:mm', - LLLL : 'dddd, YYYY оны MMMMын D HH:mm' + months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split( + '_' + ), + monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), + weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), + weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY оны MMMMын D', + LLL: 'YYYY оны MMMMын D HH:mm', + LLLL: 'dddd, YYYY оны MMMMын D HH:mm', }, meridiemParse: /ҮӨ|ҮХ/i, - isPM : function (input) { + isPM: function (input) { return input === 'ҮХ'; }, - meridiem : function (hour, minute, isLower) { + 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 : translate$7, - ss : translate$7, - m : translate$7, - mm : translate$7, - h : translate$7, - hh : translate$7, - d : translate$7, - dd : translate$7, - M : translate$7, - MM : translate$7, - y : translate$7, - yy : translate$7 + calendar: { + sameDay: '[Өнөөдөр] LT', + nextDay: '[Маргааш] LT', + nextWeek: '[Ирэх] dddd LT', + lastDay: '[Өчигдөр] LT', + lastWeek: '[Өнгөрсөн] dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s дараа', + past: '%s өмнө', + s: translate$7, + ss: translate$7, + m: translate$7, + mm: translate$7, + h: translate$7, + hh: translate$7, + d: translate$7, + dd: translate$7, + M: translate$7, + MM: translate$7, + y: translate$7, + yy: translate$7, }, dayOfMonthOrdinalParse: /\d{1,2} өдөр/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { case 'd': case 'D': @@ -6200,98 +7296,148 @@ default: return number; } - } + }, }); //! moment.js locale configuration var symbolMap$b = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap$a = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap$a = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; - function relativeTimeMr(number, withoutSuffix, string, isFuture) - { + function relativeTimeMr(number, withoutSuffix, string, isFuture) { var output = ''; if (withoutSuffix) { switch (string) { - case 's': output = 'काही सेकंद'; break; - case 'ss': output = '%d सेकंद'; break; - case 'm': output = 'एक मिनिट'; break; - case 'mm': output = '%d मिनिटे'; break; - case 'h': output = 'एक तास'; break; - case 'hh': output = '%d तास'; break; - case 'd': output = 'एक दिवस'; break; - case 'dd': output = '%d दिवस'; break; - case 'M': output = 'एक महिना'; break; - case 'MM': output = '%d महिने'; break; - case 'y': output = 'एक वर्ष'; break; - case 'yy': output = '%d वर्षे'; break; + case 's': + output = 'काही सेकंद'; + break; + case 'ss': + output = '%d सेकंद'; + break; + case 'm': + output = 'एक मिनिट'; + break; + case 'mm': + output = '%d मिनिटे'; + break; + case 'h': + output = 'एक तास'; + break; + case 'hh': + output = '%d तास'; + break; + case 'd': + output = 'एक दिवस'; + break; + case 'dd': + output = '%d दिवस'; + break; + case 'M': + output = 'एक महिना'; + break; + case 'MM': + output = '%d महिने'; + break; + case 'y': + output = 'एक वर्ष'; + break; + case 'yy': + output = '%d वर्षे'; + break; } - } - else { + } else { switch (string) { - case 's': output = 'काही सेकंदां'; break; - case 'ss': output = '%d सेकंदां'; break; - case 'm': output = 'एका मिनिटा'; break; - case 'mm': output = '%d मिनिटां'; break; - case 'h': output = 'एका तासा'; break; - case 'hh': output = '%d तासां'; break; - case 'd': output = 'एका दिवसा'; break; - case 'dd': output = '%d दिवसां'; break; - case 'M': output = 'एका महिन्या'; break; - case 'MM': output = '%d महिन्यां'; break; - case 'y': output = 'एका वर्षा'; break; - case 'yy': output = '%d वर्षां'; break; + case 's': + output = 'काही सेकंदां'; + break; + case 'ss': + output = '%d सेकंदां'; + break; + case 'm': + output = 'एका मिनिटा'; + break; + case 'mm': + output = '%d मिनिटां'; + break; + case 'h': + output = 'एका तासा'; + break; + case 'hh': + output = '%d तासां'; + break; + case 'd': + output = 'एका दिवसा'; + break; + case 'dd': + output = '%d दिवसां'; + break; + case 'M': + output = 'एका महिन्या'; + break; + case 'MM': + output = '%d महिन्यां'; + break; + case 'y': + output = 'एका वर्षा'; + break; + case 'yy': + output = '%d वर्षां'; + break; } } return output.replace(/%d/i, number); } moment.defineLocale('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), - monthsParseExact : true, - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.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 : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', + months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( + '_' + ), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.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: '[आज] LT', + nextDay: '[उद्या] LT', + nextWeek: 'dddd, LT', + lastDay: '[काल] LT', lastWeek: '[मागील] dddd, LT', - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { + relativeTime: { future: '%sमध्ये', past: '%sपूर्वी', s: relativeTimeMr, @@ -6305,7 +7451,7 @@ M: relativeTimeMr, MM: relativeTimeMr, y: relativeTimeMr, - yy: relativeTimeMr + yy: relativeTimeMr, }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { @@ -6317,25 +7463,25 @@ return symbolMap$b[match]; }); }, - meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, - meridiemHour : function (hour, meridiem) { + meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if (meridiem === 'रात्री') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळी') { + if (meridiem === 'पहाटे' || meridiem === 'सकाळी') { return hour; - } else if (meridiem === 'दुपारी') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'सायंकाळी') { - return hour + 12; + } else if ( + meridiem === 'दुपारी' || + meridiem === 'सायंकाळी' || + meridiem === 'रात्री' + ) { + return hour >= 12 ? hour : hour + 12; } }, meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात्री'; - } else if (hour < 10) { + if (hour >= 0 && hour < 6) { + return 'पहाटे'; + } else if (hour < 12) { return 'सकाळी'; } else if (hour < 17) { return 'दुपारी'; @@ -6345,27 +7491,29 @@ return 'रात्री'; } }, - 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. - } + 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 moment.defineLocale('ms-my', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (hour, meridiem) { @@ -6380,7 +7528,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { @@ -6391,51 +7539,53 @@ return 'malam'; } }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - ss : '%d saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Esok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kelmarin pukul] LT', + lastWeek: 'dddd [lepas pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + ss: '%d saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('ms', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (hour, meridiem) { @@ -6450,7 +7600,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { @@ -6461,114 +7611,123 @@ return 'malam'; } }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - ss : '%d saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Esok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kelmarin pukul] LT', + lastWeek: 'dddd [lepas pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + ss: '%d saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('mt', { - months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'), - monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), - weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'), - weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), - weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), - 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 : '[Illum fil-]LT', - nextDay : '[Għada fil-]LT', - nextWeek : 'dddd [fil-]LT', - lastDay : '[Il-bieraħ fil-]LT', - lastWeek : 'dddd [li għadda] [fil-]LT', - sameElse : 'L' - }, - relativeTime : { - future : 'f’ %s', - past : '%s ilu', - s : 'ftit sekondi', - ss : '%d sekondi', - m : 'minuta', - mm : '%d minuti', - h : 'siegħa', - hh : '%d siegħat', - d : 'ġurnata', - dd : '%d ġranet', - M : 'xahar', - MM : '%d xhur', - y : 'sena', - yy : '%d sni' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, + months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split( + '_' + ), + monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), + weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split( + '_' + ), + weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), + weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), + 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: '[Illum fil-]LT', + nextDay: '[Għada fil-]LT', + nextWeek: 'dddd [fil-]LT', + lastDay: '[Il-bieraħ fil-]LT', + lastWeek: 'dddd [li għadda] [fil-]LT', + sameElse: 'L', + }, + relativeTime: { + future: 'f’ %s', + past: '%s ilu', + s: 'ftit sekondi', + ss: '%d sekondi', + m: 'minuta', + mm: '%d minuti', + h: 'siegħa', + hh: '%d siegħat', + d: 'ġurnata', + dd: '%d ġranet', + M: 'xahar', + MM: '%d xhur', + y: 'sena', + yy: '%d sni', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀' - }, numberMap$b = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0' - }; + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀', + }, + numberMap$b = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0', + }; moment.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split( + '_' + ), monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split( + '_' + ), weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), @@ -6578,7 +7737,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' + LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[ယနေ.] LT [မှာ]', @@ -6586,13 +7745,13 @@ nextWeek: 'dddd LT [မှာ]', lastDay: '[မနေ.က] LT [မှာ]', lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'လာမည့် %s မှာ', past: 'လွန်ခဲ့သော %s က', s: 'စက္ကန်.အနည်းငယ်', - ss : '%d စက္ကန့်', + ss: '%d စက္ကန့်', m: 'တစ်မိနစ်', mm: '%d မိနစ်', h: 'တစ်နာရီ', @@ -6602,7 +7761,7 @@ M: 'တစ်လ', MM: '%d လ', y: 'တစ်နှစ်', - yy: '%d နှစ်' + yy: '%d နှစ်', }, preparse: function (string) { return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { @@ -6616,102 +7775,112 @@ }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('nb', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), + weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', + }, + calendar: { sameDay: '[i dag kl.] LT', nextDay: '[i morgen kl.] LT', nextWeek: 'dddd [kl.] LT', lastDay: '[i går kl.] LT', lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'noen sekunder', - ss : '%d sekunder', - m : 'ett minutt', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dager', - M : 'en måned', - MM : '%d måneder', - y : 'ett år', - yy : '%d år' + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'noen sekunder', + ss: '%d sekunder', + m: 'ett minutt', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dager', + M: 'en måned', + MM: '%d måneder', + y: 'ett år', + yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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$d = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap$c = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap$c = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; moment.defineLocale('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), - monthsParseExact : true, - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'), - weekdaysParseExact : true, - 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 बजे' + months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split( + '_' + ), + monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split( + '_' + ), + weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'), + weekdaysParseExact: true, + 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 बजे', }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { @@ -6724,7 +7893,7 @@ }); }, meridiemParse: /राति|बिहान|दिउँसो|साँझ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -6738,7 +7907,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 3) { return 'राति'; } else if (hour < 12) { @@ -6751,47 +7920,65 @@ 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 बर्ष' - }, - 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. - } + 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 बर्ष', + }, + 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 monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var monthsParse$4 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; - var monthsRegex$4 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), + monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( + '_' + ), + monthsParse$4 = [ + /^jan/i, + /^feb/i, + /^maart|mrt.?$/i, + /^apr/i, + /^mei$/i, + /^jun[i.]?$/i, + /^jul[i.]?$/i, + /^aug/i, + /^sep/i, + /^okt/i, + /^nov/i, + /^dec/i, + ], + monthsRegex$4 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; moment.defineLocale('nl-be', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortWithDots$1; } else if (/-MMM-/.test(format)) { @@ -6806,67 +7993,90 @@ monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - monthsParse : monthsParse$4, - longMonthsParse : monthsParse$4, - shortMonthsParse : monthsParse$4, - - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'zo_ma_di_wo_do_vr_za'.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' - }, - calendar : { + monthsParse: monthsParse$4, + longMonthsParse: monthsParse$4, + shortMonthsParse: monthsParse$4, + + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( + '_' + ), + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.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', + }, + calendar: { sameDay: '[vandaag om] LT', nextDay: '[morgen om] LT', nextWeek: 'dddd [om] LT', lastDay: '[gisteren om] LT', lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - ss : '%d seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' + sameElse: 'L', + }, + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + ss: '%d seconden', + m: 'één minuut', + mm: '%d minuten', + h: 'één uur', + hh: '%d uur', + d: 'één dag', + dd: '%d dagen', + M: 'één maand', + MM: '%d maanden', + y: 'één jaar', + yy: '%d jaar', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + 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. }, - 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 monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var monthsParse$5 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; - var monthsRegex$5 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), + monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( + '_' + ), + monthsParse$5 = [ + /^jan/i, + /^feb/i, + /^maart|mrt.?$/i, + /^apr/i, + /^mei$/i, + /^jun[i.]?$/i, + /^jul[i.]?$/i, + /^aug/i, + /^sep/i, + /^okt/i, + /^nov/i, + /^dec/i, + ], + monthsRegex$5 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; moment.defineLocale('nl', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortWithDots$2; } else if (/-MMM-/.test(format)) { @@ -6881,169 +8091,266 @@ monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - monthsParse : monthsParse$5, - longMonthsParse : monthsParse$5, - shortMonthsParse : monthsParse$5, - - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'zo_ma_di_wo_do_vr_za'.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' - }, - calendar : { + monthsParse: monthsParse$5, + longMonthsParse: monthsParse$5, + shortMonthsParse: monthsParse$5, + + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( + '_' + ), + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.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', + }, + calendar: { sameDay: '[vandaag om] LT', nextDay: '[morgen om] LT', nextWeek: 'dddd [om] LT', lastDay: '[gisteren om] LT', lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - ss : '%d seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' + sameElse: 'L', + }, + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + ss: '%d seconden', + m: 'één minuut', + mm: '%d minuten', + h: 'één uur', + hh: '%d uur', + d: 'één dag', + dd: '%d dagen', + M: 'één maand', + MM: '%d maanden', + y: 'één jaar', + yy: '%d jaar', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + 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. }, - 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 moment.defineLocale('nn', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), - weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'), + weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', + }, + calendar: { sameDay: '[I dag klokka] LT', nextDay: '[I morgon klokka] LT', nextWeek: 'dddd [klokka] LT', lastDay: '[I går klokka] LT', lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s sidan', - s : 'nokre sekund', - ss : '%d sekund', - m : 'eit minutt', - mm : '%d minutt', - h : 'ein time', - hh : '%d timar', - d : 'ein dag', - dd : '%d dagar', - M : 'ein månad', - MM : '%d månader', - y : 'eit år', - yy : '%d år' + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: '%s sidan', + s: 'nokre sekund', + ss: '%d sekund', + m: 'eit minutt', + mm: '%d minutt', + h: 'ein time', + hh: '%d timar', + d: 'ein dag', + dd: '%d dagar', + M: 'ein månad', + MM: '%d månader', + y: 'eit år', + yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 + + moment.defineLocale('oc-lnc', { + months: { + standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split( + '_' + ), + format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split( + '_' + ), + isFormat: /D[oD]?(\s)+MMMM/, + }, + monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split( + '_' + ), + weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'), + weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + ll: 'D MMM YYYY', + LLL: 'D MMMM [de] YYYY [a] H:mm', + lll: 'D MMM YYYY, H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a] H:mm', + llll: 'ddd D MMM YYYY, H:mm', + }, + calendar: { + sameDay: '[uèi a] LT', + nextDay: '[deman a] LT', + nextWeek: 'dddd [a] LT', + lastDay: '[ièr a] LT', + lastWeek: 'dddd [passat a] LT', + sameElse: 'L', + }, + relativeTime: { + future: "d'aquí %s", + past: 'fa %s', + s: 'unas segondas', + ss: '%d segondas', + m: 'una minuta', + mm: '%d minutas', + h: 'una ora', + hh: '%d oras', + d: 'un jorn', + dd: '%d jorns', + M: 'un mes', + MM: '%d meses', + y: 'un an', + yy: '%d ans', + }, + dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal: function (number, period) { + var output = + number === 1 + ? 'r' + : number === 2 + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, + }, }); //! moment.js locale configuration var symbolMap$e = { - '1': '੧', - '2': '੨', - '3': '੩', - '4': '੪', - '5': '੫', - '6': '੬', - '7': '੭', - '8': '੮', - '9': '੯', - '0': '੦' - }, - numberMap$d = { - '੧': '1', - '੨': '2', - '੩': '3', - '੪': '4', - '੫': '5', - '੬': '6', - '੭': '7', - '੮': '8', - '੯': '9', - '੦': '0' - }; + '1': '੧', + '2': '੨', + '3': '੩', + '4': '੪', + '5': '੫', + '6': '੬', + '7': '੭', + '8': '੮', + '9': '੯', + '0': '੦', + }, + numberMap$d = { + '੧': '1', + '੨': '2', + '੩': '3', + '੪': '4', + '੫': '5', + '੬': '6', + '੭': '7', + '੮': '8', + '੯': '9', + '੦': '0', + }; moment.defineLocale('pa-in', { // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi. - months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'), - weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.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 : '[ਅਜ] 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 ਸਾਲ' + months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( + '_' + ), + monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( + '_' + ), + weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split( + '_' + ), + weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.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: '[ਅਜ] 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) { @@ -7058,7 +8365,7 @@ // Punjabi notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -7072,7 +8379,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ਰਾਤ'; } else if (hour < 10) { @@ -7085,18 +8392,22 @@ return 'ਰਾਤ'; } }, - 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. - } + 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 monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); + var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split( + '_' + ), + monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split( + '_' + ); function plural$3(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; } function translate$8(number, withoutSuffix, key) { var result = number + ' '; @@ -7108,7 +8419,7 @@ case 'mm': return result + (plural$3(number) ? 'minuty' : 'minut'); case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; + return withoutSuffix ? 'godzina' : 'godzinę'; case 'hh': return result + (plural$3(number) ? 'godziny' : 'godzin'); case 'MM': @@ -7119,33 +8430,41 @@ } moment.defineLocale('pl', { - months : function (momentToFormat, format) { + months: function (momentToFormat, format) { if (!momentToFormat) { return monthsNominative; } else if (format === '') { // Hack: if format empty we know this is used to generate // RegExp by moment. Give then back both valid forms of months // in RegExp ready format. - return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + return ( + '(' + + monthsSubjective[momentToFormat.month()] + + '|' + + monthsNominative[momentToFormat.month()] + + ')' + ); } else if (/D MMMM/.test(format)) { return monthsSubjective[momentToFormat.month()]; } else { return monthsNominative[momentToFormat.month()]; } }, - monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), - weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), - weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - 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' + monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split( + '_' + ), + weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), + weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + 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 : { + calendar: { sameDay: '[Dziś o] LT', nextDay: '[Jutro o] LT', nextWeek: function () { @@ -7179,144 +8498,152 @@ return '[W zeszły] dddd [o] LT'; } }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : '%s temu', - s : 'kilka sekund', - ss : translate$8, - m : translate$8, - mm : translate$8, - h : translate$8, - hh : translate$8, - d : '1 dzień', - dd : '%d dni', - M : 'miesiąc', - MM : translate$8, - y : 'rok', - yy : translate$8 + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: '%s temu', + s: 'kilka sekund', + ss: translate$8, + m: translate$8, + mm: translate$8, + h: translate$8, + hh: translate$8, + d: '1 dzień', + dd: '%d dni', + M: 'miesiąc', + MM: translate$8, + y: 'rok', + yy: translate$8, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + 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. }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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 moment.defineLocale('pt-br', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' - }, - calendar : { + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( + '_' + ), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split( + '_' + ), + weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), + weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', + }, + calendar: { sameDay: '[Hoje às] LT', nextDay: '[Amanhã às] LT', nextWeek: 'dddd [às] LT', lastDay: '[Ontem às] LT', lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday + return this.day() === 0 || this.day() === 6 + ? '[Último] dddd [às] LT' // Saturday + Sunday + : '[Última] dddd [às] LT'; // Monday - Friday }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'poucos segundos', - ss : '%d segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' + sameElse: 'L', + }, + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'poucos segundos', + ss: '%d segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos', }, dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº' + ordinal: '%dº', }); //! moment.js locale configuration moment.defineLocale('pt', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' - }, - calendar : { + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( + '_' + ), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split( + '_' + ), + weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm', + }, + calendar: { sameDay: '[Hoje às] LT', nextDay: '[Amanhã às] LT', nextWeek: 'dddd [às] LT', lastDay: '[Ontem às] LT', lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday + return this.day() === 0 || this.day() === 6 + ? '[Último] dddd [às] LT' // Saturday + Sunday + : '[Última] dddd [às] LT'; // Monday - Friday }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'segundos', - ss : '%d segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' + sameElse: 'L', + }, + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'segundos', + ss: '%d segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos', }, dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº', - 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. - } + ordinal: '%dº', + 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 function relativeTimeWithPlural$2(number, withoutSuffix, key) { var format = { - 'ss': 'secunde', - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' + ss: 'secunde', + mm: 'minute', + hh: 'ore', + dd: 'zile', + MM: 'luni', + yy: 'ani', }, separator = ' '; if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { @@ -7326,97 +8653,129 @@ } moment.defineLocale('ro', { - months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), - monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split( + '_' + ), + monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { + weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY H:mm', + LLLL: 'dddd, D MMMM YYYY H:mm', + }, + calendar: { sameDay: '[azi la] LT', nextDay: '[mâine la] LT', nextWeek: 'dddd [la] LT', lastDay: '[ieri la] LT', lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'peste %s', - past : '%s în urmă', - s : 'câteva secunde', - ss : relativeTimeWithPlural$2, - m : 'un minut', - mm : relativeTimeWithPlural$2, - h : 'o oră', - hh : relativeTimeWithPlural$2, - d : 'o zi', - dd : relativeTimeWithPlural$2, - M : 'o lună', - MM : relativeTimeWithPlural$2, - y : 'un an', - yy : relativeTimeWithPlural$2 - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + sameElse: 'L', + }, + relativeTime: { + future: 'peste %s', + past: '%s în urmă', + s: 'câteva secunde', + ss: relativeTimeWithPlural$2, + m: 'un minut', + mm: relativeTimeWithPlural$2, + h: 'o oră', + hh: relativeTimeWithPlural$2, + d: 'o zi', + dd: relativeTimeWithPlural$2, + M: 'o lună', + MM: relativeTimeWithPlural$2, + y: 'un an', + yy: relativeTimeWithPlural$2, + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration function plural$4(word, num) { var forms = word.split('_'); - 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]); + 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]; } function relativeTimeWithPlural$3(number, withoutSuffix, key) { var format = { - 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' + ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', + mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + hh: 'час_часа_часов', + dd: 'день_дня_дней', + MM: 'месяц_месяца_месяцев', + yy: 'год_года_лет', }; if (key === 'm') { return withoutSuffix ? 'минута' : 'минуту'; - } - else { + } else { return number + ' ' + plural$4(format[key], +number); } } - var monthsParse$6 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; + var monthsParse$6 = [ + /^янв/i, + /^фев/i, + /^мар/i, + /^апр/i, + /^ма[йя]/i, + /^июн/i, + /^июл/i, + /^авг/i, + /^сен/i, + /^окт/i, + /^ноя/i, + /^дек/i, + ]; // http://new.gramota.ru/spravka/rules/139-prop : § 103 // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 moment.defineLocale('ru', { - months : { - format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), - standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') - }, - monthsShort : { + months: { + format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split( + '_' + ), + standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( + '_' + ), + }, + monthsShort: { // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? - format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), - standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') - }, - weekdays : { - standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'), - isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ - }, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : monthsParse$6, - longMonthsParse : monthsParse$6, - shortMonthsParse : monthsParse$6, + format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( + '_' + ), + standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( + '_' + ), + }, + weekdays: { + standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split( + '_' + ), + format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split( + '_' + ), + isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/, + }, + weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse: monthsParse$6, + longMonthsParse: monthsParse$6, + shortMonthsParse: monthsParse$6, // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, @@ -7429,15 +8788,15 @@ // Выражение, которое соотвествует только сокращённым формам monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., H:mm', - LLLL : 'dddd, D MMMM YYYY г., H:mm' - }, - calendar : { + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY г.', + LLL: 'D MMMM YYYY г., H:mm', + LLLL: 'dddd, D MMMM YYYY г., H:mm', + }, + calendar: { sameDay: '[Сегодня, в] LT', nextDay: '[Завтра, в] LT', lastDay: '[Вчера, в] LT', @@ -7485,29 +8844,29 @@ } } }, - sameElse: 'L' - }, - relativeTime : { - future : 'через %s', - past : '%s назад', - s : 'несколько секунд', - ss : relativeTimeWithPlural$3, - m : relativeTimeWithPlural$3, - mm : relativeTimeWithPlural$3, - h : 'час', - hh : relativeTimeWithPlural$3, - d : 'день', - dd : relativeTimeWithPlural$3, - M : 'месяц', - MM : relativeTimeWithPlural$3, - y : 'год', - yy : relativeTimeWithPlural$3 + sameElse: 'L', + }, + relativeTime: { + future: 'через %s', + past: '%s назад', + s: 'несколько секунд', + ss: relativeTimeWithPlural$3, + m: relativeTimeWithPlural$3, + mm: relativeTimeWithPlural$3, + h: 'час', + hh: relativeTimeWithPlural$3, + d: 'день', + dd: relativeTimeWithPlural$3, + M: 'месяц', + MM: relativeTimeWithPlural$3, + y: 'год', + yy: relativeTimeWithPlural$3, }, meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { + isPM: function (input) { return /^(дня|вечера)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночи'; } else if (hour < 12) { @@ -7534,85 +8893,77 @@ return number; } }, - 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. - } + 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 months$7 = [ - 'جنوري', - 'فيبروري', - 'مارچ', - 'اپريل', - 'مئي', - 'جون', - 'جولاءِ', - 'آگسٽ', - 'سيپٽمبر', - 'آڪٽوبر', - 'نومبر', - 'ڊسمبر' - ]; - var days = [ - 'آچر', - 'سومر', - 'اڱارو', - 'اربع', - 'خميس', - 'جمع', - 'ڇنڇر' - ]; + 'جنوري', + 'فيبروري', + 'مارچ', + 'اپريل', + 'مئي', + 'جون', + 'جولاءِ', + 'آگسٽ', + 'سيپٽمبر', + 'آڪٽوبر', + 'نومبر', + 'ڊسمبر', + ], + days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر']; moment.defineLocale('sd', { - months : months$7, - monthsShort : months$7, - weekdays : days, - weekdaysShort : days, - weekdaysMin : days, - 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' + months: months$7, + monthsShort: months$7, + weekdays: days, + weekdaysShort: days, + weekdaysMin: days, + 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) { + isPM: function (input) { return 'شام' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'صبح'; } 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 سال' + 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, ','); @@ -7620,201 +8971,209 @@ postformat: function (string) { return string.replace(/,/g, '،'); }, - 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. - } + 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 moment.defineLocale('se', { - months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), - monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), - weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), - weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), - weekdaysMin : 's_v_m_g_d_b_L'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'MMMM D. [b.] YYYY', - LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm', - LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' - }, - calendar : { + months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split( + '_' + ), + monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split( + '_' + ), + weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split( + '_' + ), + weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), + weekdaysMin: 's_v_m_g_d_b_L'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'MMMM D. [b.] YYYY', + LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', + LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', + }, + calendar: { sameDay: '[otne ti] LT', nextDay: '[ihttin ti] LT', nextWeek: 'dddd [ti] LT', lastDay: '[ikte ti] LT', lastWeek: '[ovddit] dddd [ti] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : '%s geažes', - past : 'maŋit %s', - s : 'moadde sekunddat', + relativeTime: { + future: '%s geažes', + past: 'maŋit %s', + s: 'moadde sekunddat', ss: '%d sekunddat', - m : 'okta minuhta', - mm : '%d minuhtat', - h : 'okta diimmu', - hh : '%d diimmut', - d : 'okta beaivi', - dd : '%d beaivvit', - M : 'okta mánnu', - MM : '%d mánut', - y : 'okta jahki', - yy : '%d jagit' + m: 'okta minuhta', + mm: '%d minuhtat', + h: 'okta diimmu', + hh: '%d diimmut', + d: 'okta beaivi', + dd: '%d beaivvit', + M: 'okta mánnu', + MM: '%d mánut', + y: 'okta jahki', + yy: '%d jagit', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 /*jshint -W100*/ moment.defineLocale('si', { - months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), - monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), - weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), - weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), - weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'a h:mm', - LTS : 'a h:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY MMMM D', - LLL : 'YYYY MMMM D, a h:mm', - LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' - }, - 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' + months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split( + '_' + ), + monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split( + '_' + ), + weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split( + '_' + ), + weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'a h:mm', + LTS: 'a h:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY MMMM D', + LLL: 'YYYY MMMM D, a h:mm', + LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss', + }, + 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', }, dayOfMonthOrdinalParse: /\d{1,2} වැනි/, - ordinal : function (number) { + ordinal: function (number) { return number + ' වැනි'; }, - meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, - isPM : function (input) { + meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, + isPM: function (input) { return input === 'ප.ව.' || input === 'පස් වරු'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'ප.ව.' : 'පස් වරු'; } else { return isLower ? 'පෙ.ව.' : 'පෙර වරු'; } - } + }, }); //! moment.js locale configuration - var months$8 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), + var months$8 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split( + '_' + ), monthsShort$6 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); function plural$5(n) { - return (n > 1) && (n < 5); + return n > 1 && n < 5; } function translate$9(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 's': // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'sekundy' : 'sekúnd'); } else { return result + 'sekundami'; } - break; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'minúty' : 'minút'); } else { return result + 'minútami'; } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; case 'hh': // 9 hours / in 9 hours / 9 hours ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'hodiny' : 'hodín'); } else { return result + 'hodinami'; } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'd': // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'deň' : 'dňom'; case 'dd': // 9 days / in 9 days / 9 days ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'dni' : 'dní'); } else { return result + 'dňami'; } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'M': // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; case 'MM': // 9 months / in 9 months / 9 months ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'mesiace' : 'mesiacov'); } else { return result + 'mesiacmi'; } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'y': // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokom'; case 'yy': // 9 years / in 9 years / 9 years ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'roky' : 'rokov'); } else { return result + 'rokmi'; } - break; } } moment.defineLocale('sk', { - months : months$8, - monthsShort : monthsShort$6, - weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat : { + months: months$8, + monthsShort: monthsShort$6, + weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'), + longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', }, - calendar : { + calendar: { sameDay: '[dnes o] LT', nextDay: '[zajtra o] LT', nextWeek: function () { @@ -7851,39 +9210,41 @@ return '[minulú sobotu o] LT'; } }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pred %s', - s : translate$9, - ss : translate$9, - m : translate$9, - mm : translate$9, - h : translate$9, - hh : translate$9, - d : translate$9, - dd : translate$9, - M : translate$9, - MM : translate$9, - y : translate$9, - yy : translate$9 + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'pred %s', + s: translate$9, + ss: translate$9, + m: translate$9, + mm: translate$9, + h: translate$9, + hh: translate$9, + d: translate$9, + dd: translate$9, + M: translate$9, + MM: translate$9, + y: translate$9, + yy: translate$9, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 - function processRelativeTime$6(number, withoutSuffix, key, isFuture) { + function processRelativeTime$7(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { case 's': - return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + return withoutSuffix || isFuture + ? 'nekaj sekund' + : 'nekaj sekundami'; case 'ss': if (number === 1) { result += withoutSuffix ? 'sekundo' : 'sekundi'; @@ -7962,26 +9323,30 @@ } moment.defineLocale('sl', { - months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { + weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danes ob] LT', + nextDay: '[jutri ob] LT', + + nextWeek: function () { switch (this.day()) { case 0: return '[v] [nedeljo] [ob] LT'; @@ -7996,8 +9361,8 @@ return '[v] dddd [ob] LT'; } }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { + lastDay: '[včeraj ob] LT', + lastWeek: function () { switch (this.day()) { case 0: return '[prejšnjo] [nedeljo] [ob] LT'; @@ -8012,92 +9377,97 @@ return '[prejšnji] dddd [ob] LT'; } }, - sameElse : 'L' - }, - relativeTime : { - future : 'čez %s', - past : 'pred %s', - 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 + sameElse: 'L', + }, + 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, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('sq', { - months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), - monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), - weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), - weekdaysParseExact : true, + months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split( + '_' + ), + monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split( + '_' + ), + weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), + weekdaysParseExact: true, meridiemParse: /PD|MD/, isPM: function (input) { return input.charAt(0) === 'M'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { return hours < 12 ? 'PD' : 'MD'; }, - 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 : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'në %s', - past : '%s më parë', - s : 'disa sekonda', - ss : '%d sekonda', - m : 'një minutë', - mm : '%d minuta', - h : 'një orë', - hh : '%d orë', - d : 'një ditë', - dd : '%d ditë', - M : 'një muaj', - MM : '%d muaj', - y : 'një vit', - yy : '%d vite' + 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: '[Sot në] LT', + nextDay: '[Nesër në] LT', + nextWeek: 'dddd [në] LT', + lastDay: '[Dje në] LT', + lastWeek: 'dddd [e kaluar në] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'në %s', + past: '%s më parë', + s: 'disa sekonda', + ss: '%d sekonda', + m: 'një minutë', + mm: '%d minuta', + h: 'një orë', + hh: '%d orë', + d: 'një ditë', + dd: '%d ditë', + M: 'një muaj', + MM: '%d muaj', + y: 'një vit', + yy: '%d vite', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 translator$1 = { - words: { //Different grammatical cases + words: { + //Different grammatical cases ss: ['секунда', 'секунде', 'секунди'], m: ['један минут', 'једне минуте'], mm: ['минут', 'минуте', 'минута'], @@ -8105,36 +9475,48 @@ hh: ['сат', 'сата', 'сати'], dd: ['дан', 'дана', 'дана'], MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] + yy: ['година', 'године', 'година'], }, correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator$1.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { - return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey); + return ( + number + + ' ' + + translator$1.correctGrammaticalCase(number, wordKey) + ); } - } + }, }; moment.defineLocale('sr-cyrl', { - months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'), - monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), + months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( + '_' + ), + monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split( + '_' + ), monthsParseExact: true, weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', + LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' + LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[данас у] LT', @@ -8154,8 +9536,8 @@ return '[у] dddd [у] LT'; } }, - lastDay : '[јуче у] LT', - lastWeek : function () { + lastDay: '[јуче у] LT', + lastWeek: function () { var lastWeekDays = [ '[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', @@ -8163,40 +9545,41 @@ '[прошле] [среде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' + '[прошле] [суботе] [у] LT', ]; return lastWeekDays[this.day()]; }, - sameElse : 'L' - }, - relativeTime : { - future : 'за %s', - past : 'пре %s', - s : 'неколико секунди', - ss : translator$1.translate, - m : translator$1.translate, - mm : translator$1.translate, - h : translator$1.translate, - hh : translator$1.translate, - d : 'дан', - dd : translator$1.translate, - M : 'месец', - MM : translator$1.translate, - y : 'годину', - yy : translator$1.translate + sameElse: 'L', + }, + relativeTime: { + future: 'за %s', + past: 'пре %s', + s: 'неколико секунди', + ss: translator$1.translate, + m: translator$1.translate, + mm: translator$1.translate, + h: translator$1.translate, + hh: translator$1.translate, + d: 'дан', + dd: translator$1.translate, + M: 'месец', + MM: translator$1.translate, + y: 'годину', + yy: translator$1.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var translator$2 = { - words: { //Different grammatical cases + words: { + //Different grammatical cases ss: ['sekunda', 'sekunde', 'sekundi'], m: ['jedan minut', 'jedne minute'], mm: ['minut', 'minute', 'minuta'], @@ -8204,36 +9587,50 @@ hh: ['sat', 'sata', 'sati'], dd: ['dan', 'dana', 'dana'], MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] + yy: ['godina', 'godine', 'godina'], }, correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator$2.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { - return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey); + return ( + number + + ' ' + + translator$2.correctGrammaticalCase(number, wordKey) + ); } - } + }, }; moment.defineLocale('sr', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'), + weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split( + '_' + ), weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', + LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' + LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[danas u] LT', @@ -8253,8 +9650,8 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[juče u] LT', - lastWeek : function () { + lastDay: '[juče u] LT', + lastWeek: function () { var lastWeekDays = [ '[prošle] [nedelje] [u] LT', '[prošlog] [ponedeljka] [u] LT', @@ -8262,79 +9659,83 @@ '[prošle] [srede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' + '[prošle] [subote] [u] LT', ]; return lastWeekDays[this.day()]; }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pre %s', - s : 'nekoliko sekundi', - ss : translator$2.translate, - m : translator$2.translate, - mm : translator$2.translate, - h : translator$2.translate, - hh : translator$2.translate, - d : 'dan', - dd : translator$2.translate, - M : 'mesec', - MM : translator$2.translate, - y : 'godinu', - yy : translator$2.translate + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'pre %s', + s: 'nekoliko sekundi', + ss: translator$2.translate, + m: translator$2.translate, + mm: translator$2.translate, + h: translator$2.translate, + hh: translator$2.translate, + d: 'dan', + dd: translator$2.translate, + M: 'mesec', + MM: translator$2.translate, + y: 'godinu', + yy: translator$2.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('ss', { - months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'), - monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), - weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'), - weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), - weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Namuhla nga] LT', - nextDay : '[Kusasa nga] LT', - nextWeek : 'dddd [nga] LT', - lastDay : '[Itolo nga] LT', - lastWeek : 'dddd [leliphelile] [nga] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'nga %s', - past : 'wenteka nga %s', - s : 'emizuzwana lomcane', - ss : '%d mzuzwana', - m : 'umzuzu', - mm : '%d emizuzu', - h : 'lihora', - hh : '%d emahora', - d : 'lilanga', - dd : '%d emalanga', - M : 'inyanga', - MM : '%d tinyanga', - y : 'umnyaka', - yy : '%d iminyaka' + months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split( + '_' + ), + monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), + weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split( + '_' + ), + weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), + weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Namuhla nga] LT', + nextDay: '[Kusasa nga] LT', + nextWeek: 'dddd [nga] LT', + lastDay: '[Itolo nga] LT', + lastWeek: 'dddd [leliphelile] [nga] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'nga %s', + past: 'wenteka nga %s', + s: 'emizuzwana lomcane', + ss: '%d mzuzwana', + m: 'umzuzu', + mm: '%d emizuzu', + h: 'lihora', + hh: '%d emahora', + d: 'lilanga', + dd: '%d emalanga', + M: 'inyanga', + MM: '%d tinyanga', + y: 'umnyaka', + yy: '%d iminyaka', }, meridiemParse: /ekuseni|emini|entsambama|ebusuku/, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'ekuseni'; } else if (hours < 15) { @@ -8345,7 +9746,7 @@ return 'ebusuku'; } }, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -8361,183 +9762,204 @@ } }, dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : '%d', - 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. - } + ordinal: '%d', + 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 moment.defineLocale('sv', { - months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D MMMM YYYY [kl.] HH:mm', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd D MMM YYYY HH:mm' - }, - calendar : { + months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd D MMM YYYY HH:mm', + }, + calendar: { sameDay: '[Idag] LT', nextDay: '[Imorgon] LT', lastDay: '[Igår] LT', nextWeek: '[På] dddd LT', lastWeek: '[I] dddd[s] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'för %s sedan', - s : 'några sekunder', - ss : '%d sekunder', - m : 'en minut', - mm : '%d minuter', - h : 'en timme', - hh : '%d timmar', - d : 'en dag', - dd : '%d dagar', - M : 'en månad', - MM : '%d månader', - y : 'ett år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}(e|a)/, - ordinal : function (number) { + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: 'för %s sedan', + s: 'några sekunder', + ss: '%d sekunder', + m: 'en minut', + mm: '%d minuter', + h: 'en timme', + hh: '%d timmar', + d: 'en dag', + dd: '%d dagar', + M: 'en månad', + MM: '%d månader', + y: 'ett år', + yy: '%d år', + }, + dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; + output = + ~~((number % 100) / 10) === 1 + ? ':e' + : b === 1 + ? ':a' + : b === 2 + ? ':a' + : b === 3 + ? ':e' + : ':e'; return number + output; }, - 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. - } + 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 moment.defineLocale('sw', { - months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'), - weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), - weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.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' - }, - calendar : { - sameDay : '[leo saa] LT', - nextDay : '[kesho saa] LT', - nextWeek : '[wiki ijayo] dddd [saat] LT', - lastDay : '[jana] LT', - lastWeek : '[wiki iliyopita] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s baadaye', - past : 'tokea %s', - s : 'hivi punde', - ss : 'sekunde %d', - m : 'dakika moja', - mm : 'dakika %d', - h : 'saa limoja', - hh : 'masaa %d', - d : 'siku moja', - dd : 'masiku %d', - M : 'mwezi mmoja', - MM : 'miezi %d', - y : 'mwaka mmoja', - yy : 'miaka %d' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), + weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split( + '_' + ), + weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), + weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.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', + }, + calendar: { + sameDay: '[leo saa] LT', + nextDay: '[kesho saa] LT', + nextWeek: '[wiki ijayo] dddd [saat] LT', + lastDay: '[jana] LT', + lastWeek: '[wiki iliyopita] dddd [saat] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s baadaye', + past: 'tokea %s', + s: 'hivi punde', + ss: 'sekunde %d', + m: 'dakika moja', + mm: 'dakika %d', + h: 'saa limoja', + hh: 'masaa %d', + d: 'siku moja', + dd: 'masiku %d', + M: 'mwezi mmoja', + MM: 'miezi %d', + y: 'mwaka mmoja', + yy: 'miaka %d', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap$f = { - '1': '௧', - '2': '௨', - '3': '௩', - '4': '௪', - '5': '௫', - '6': '௬', - '7': '௭', - '8': '௮', - '9': '௯', - '0': '௦' - }, numberMap$e = { - '௧': '1', - '௨': '2', - '௩': '3', - '௪': '4', - '௫': '5', - '௬': '6', - '௭': '7', - '௮': '8', - '௯': '9', - '௦': '0' - }; + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦', + }, + numberMap$e = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0', + }; moment.defineLocale('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - 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 : '[இன்று] 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 ஆண்டுகள்' + months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( + '_' + ), + monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( + '_' + ), + weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split( + '_' + ), + weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split( + '_' + ), + weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + 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: '[இன்று] 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 ஆண்டுகள்', }, dayOfMonthOrdinalParse: /\d{1,2}வது/, - ordinal : function (number) { + ordinal: function (number) { return number + 'வது'; }, preparse: function (string) { @@ -8552,11 +9974,11 @@ }, // refer http://ta.wikipedia.org/s/1er1 meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 2) { return ' யாமம்'; } else if (hour < 6) { - return ' வைகறை'; // வைகறை + return ' வைகறை'; // வைகறை } else if (hour < 10) { return ' காலை'; // காலை } else if (hour < 14) { @@ -8569,7 +9991,7 @@ return ' யாமம்'; } }, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -8583,57 +10005,63 @@ return hour + 12; } }, - 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. - } + 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 moment.defineLocale('te', { - months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), - monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), - monthsParseExact : true, - weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'), - weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), - weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.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 : '[నేడు] 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 సంవత్సరాలు' - }, - dayOfMonthOrdinalParse : /\d{1,2}వ/, - ordinal : '%dవ', + months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split( + '_' + ), + monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split( + '_' + ), + weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), + weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.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: '[నేడు] 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 సంవత్సరాలు', + }, + dayOfMonthOrdinalParse: /\d{1,2}వ/, + ordinal: '%dవ', meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -8647,7 +10075,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'రాత్రి'; } else if (hour < 10) { @@ -8660,65 +10088,73 @@ return 'రాత్రి'; } }, - 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. - } + 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 moment.defineLocale('tet', { - months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), - weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), - weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), - 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 : { + months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split( + '_' + ), + monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), + weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), + weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), + 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: '[Ohin iha] LT', nextDay: '[Aban iha] LT', nextWeek: 'dddd [iha] LT', lastDay: '[Horiseik iha] LT', lastWeek: 'dddd [semana kotuk] [iha] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'iha %s', - past : '%s liuba', - s : 'minutu balun', - ss : 'minutu %d', - m : 'minutu ida', - mm : 'minutu %d', - h : 'oras ida', - hh : 'oras %d', - d : 'loron ida', - dd : 'loron %d', - M : 'fulan ida', - MM : 'fulan %d', - y : 'tinan ida', - yy : 'tinan %d' + sameElse: 'L', + }, + relativeTime: { + future: 'iha %s', + past: '%s liuba', + s: 'segundu balun', + ss: 'segundu %d', + m: 'minutu ida', + mm: 'minutu %d', + h: 'oras ida', + hh: 'oras %d', + d: 'loron ida', + dd: 'loron %d', + M: 'fulan ida', + MM: 'fulan %d', + y: 'tinan ida', + yy: 'tinan %d', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 @@ -8745,45 +10181,49 @@ 70: '-ум', 80: '-ум', 90: '-ум', - 100: '-ум' + 100: '-ум', }; moment.defineLocale('tg', { - months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'), - weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), - weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), - 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 : '[Имрӯз соати] LT', - nextDay : '[Пагоҳ соати] LT', - lastDay : '[Дирӯз соати] LT', - nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT', - lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'баъди %s', - past : '%s пеш', - s : 'якчанд сония', - m : 'як дақиқа', - mm : '%d дақиқа', - h : 'як соат', - hh : '%d соат', - d : 'як рӯз', - dd : '%d рӯз', - M : 'як моҳ', - MM : '%d моҳ', - y : 'як сол', - yy : '%d сол' + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( + '_' + ), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split( + '_' + ), + weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), + weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), + 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: '[Имрӯз соати] LT', + nextDay: '[Пагоҳ соати] LT', + lastDay: '[Дирӯз соати] LT', + nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT', + lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'баъди %s', + past: '%s пеш', + s: 'якчанд сония', + m: 'як дақиқа', + mm: '%d дақиқа', + h: 'як соат', + hh: '%d соат', + d: 'як рӯз', + dd: '%d рӯз', + M: 'як моҳ', + MM: '%d моҳ', + y: 'як сол', + yy: '%d сол', }, meridiemParse: /шаб|субҳ|рӯз|бегоҳ/, meridiemHour: function (hour, meridiem) { @@ -8819,115 +10259,123 @@ b = number >= 100 ? 100 : null; return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 1th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('th', { - months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), + months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split( + '_' + ), + monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา H:mm', - LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm' + weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY เวลา H:mm', + LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm', }, meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, isPM: function (input) { return input === 'หลังเที่ยง'; }, - meridiem : function (hour, minute, isLower) { + 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 : '1 นาที', - mm : '%d นาที', - h : '1 ชั่วโมง', - hh : '%d ชั่วโมง', - d : '1 วัน', - dd : '%d วัน', - M : '1 เดือน', - MM : '%d เดือน', - y : '1 ปี', - yy : '%d ปี' - } + calendar: { + sameDay: '[วันนี้ เวลา] LT', + nextDay: '[พรุ่งนี้ เวลา] LT', + nextWeek: 'dddd[หน้า เวลา] LT', + lastDay: '[เมื่อวานนี้ เวลา] LT', + lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'อีก %s', + past: '%sที่แล้ว', + s: 'ไม่กี่วินาที', + ss: '%d วินาที', + m: '1 นาที', + mm: '%d นาที', + h: '1 ชั่วโมง', + hh: '%d ชั่วโมง', + d: '1 วัน', + dd: '%d วัน', + M: '1 เดือน', + MM: '%d เดือน', + y: '1 ปี', + yy: '%d ปี', + }, }); //! moment.js locale configuration moment.defineLocale('tl-ph', { - months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), - monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), - weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'MM/D/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY HH:mm', - LLLL : 'dddd, MMMM DD, YYYY HH:mm' - }, - calendar : { + months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( + '_' + ), + monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( + '_' + ), + weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'MM/D/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY HH:mm', + LLLL: 'dddd, MMMM DD, YYYY HH:mm', + }, + calendar: { sameDay: 'LT [ngayong araw]', nextDay: '[Bukas ng] LT', nextWeek: 'LT [sa susunod na] dddd', lastDay: 'LT [kahapon]', lastWeek: 'LT [noong nakaraang] dddd', - sameElse: 'L' - }, - relativeTime : { - future : 'sa loob ng %s', - past : '%s ang nakalipas', - s : 'ilang segundo', - ss : '%d segundo', - m : 'isang minuto', - mm : '%d minuto', - h : 'isang oras', - hh : '%d oras', - d : 'isang araw', - dd : '%d araw', - M : 'isang buwan', - MM : '%d buwan', - y : 'isang taon', - yy : '%d taon' + sameElse: 'L', + }, + relativeTime: { + future: 'sa loob ng %s', + past: '%s ang nakalipas', + s: 'ilang segundo', + ss: '%d segundo', + m: 'isang minuto', + mm: '%d minuto', + h: 'isang oras', + hh: '%d oras', + d: 'isang araw', + dd: '%d araw', + M: 'isang buwan', + MM: '%d buwan', + y: 'isang taon', + yy: '%d taon', }, dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { + ordinal: function (number) { return number; }, - 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. - } + 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 @@ -8936,25 +10384,27 @@ function translateFuture(output) { var time = output; - time = (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 = + 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'; return time; } function translatePast(output) { var time = output; - time = (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 = + 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'; return time; } @@ -8978,126 +10428,142 @@ function numberAsNoun(number) { var hundred = Math.floor((number % 1000) / 100), - ten = Math.floor((number % 100) / 10), - one = number % 10, - word = ''; + ten = Math.floor((number % 100) / 10), + one = number % 10, + word = ''; if (hundred > 0) { word += numbersNouns[hundred] + 'vatlh'; } if (ten > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH'; + word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH'; } if (one > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[one]; + word += (word !== '' ? ' ' : '') + numbersNouns[one]; } - return (word === '') ? 'pagh' : word; + return word === '' ? 'pagh' : word; } moment.defineLocale('tlh', { - months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'), - monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'), - monthsParseExact : true, - weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - 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 : { + months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split( + '_' + ), + monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + 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: '[DaHjaj] LT', nextDay: '[wa’leS] LT', nextWeek: 'LLL', lastDay: '[wa’Hu’] LT', lastWeek: 'LLL', - sameElse: 'L' - }, - relativeTime : { - future : translateFuture, - past : translatePast, - s : 'puS lup', - ss : translate$a, - m : 'wa’ tup', - mm : translate$a, - h : 'wa’ rep', - hh : translate$a, - d : 'wa’ jaj', - dd : translate$a, - M : 'wa’ jar', - MM : translate$a, - y : 'wa’ DIS', - yy : translate$a + sameElse: 'L', + }, + relativeTime: { + future: translateFuture, + past: translatePast, + s: 'puS lup', + ss: translate$a, + m: 'wa’ tup', + mm: translate$a, + h: 'wa’ rep', + hh: translate$a, + d: 'wa’ jaj', + dd: translate$a, + M: 'wa’ jar', + MM: translate$a, + y: 'wa’ DIS', + yy: translate$a, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 suffixes$4 = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - 60: '\'ıncı', - 90: '\'ıncı' + 1: "'inci", + 5: "'inci", + 8: "'inci", + 70: "'inci", + 80: "'inci", + 2: "'nci", + 7: "'nci", + 20: "'nci", + 50: "'nci", + 3: "'üncü", + 4: "'üncü", + 100: "'üncü", + 6: "'ncı", + 9: "'uncu", + 10: "'uncu", + 30: "'uncu", + 60: "'ıncı", + 90: "'ıncı", }; moment.defineLocale('tr', { - months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), - monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), - weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - 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ün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[gelecek] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s önce', - s : 'birkaç saniye', - ss : '%d saniye', - m : 'bir dakika', - mm : '%d dakika', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir yıl', - yy : '%d yıl' + months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split( + '_' + ), + monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split( + '_' + ), + weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + 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ün saat] LT', + nextDay: '[yarın saat] LT', + nextWeek: '[gelecek] dddd [saat] LT', + lastDay: '[dün] LT', + lastWeek: '[geçen] dddd [saat] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s sonra', + past: '%s önce', + s: 'birkaç saniye', + ss: '%d saniye', + m: 'bir dakika', + mm: '%d dakika', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir yıl', + yy: '%d yıl', }, ordinal: function (number, period) { switch (period) { @@ -9107,19 +10573,20 @@ case 'DD': return number; default: - if (number === 0) { // special case for zero - return number + '\'ıncı'; + if (number === 0) { + // special case for zero + return number + "'ıncı"; } var a = number % 10, - b = number % 100 - a, + b = (number % 100) - a, c = number >= 100 ? 100 : null; return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]); } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration @@ -9127,170 +10594,184 @@ // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. // This is currently too difficult (maybe even impossible) to add. moment.defineLocale('tzl', { - months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), - monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM [dallas] YYYY', - LLL : 'D. MMMM [dallas] YYYY HH.mm', - LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm' + months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split( + '_' + ), + monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM [dallas] YYYY', + LLL: 'D. MMMM [dallas] YYYY HH.mm', + LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', }, meridiemParse: /d\'o|d\'a/i, - isPM : function (input) { - return 'd\'o' === input.toLowerCase(); + isPM: function (input) { + return "d'o" === input.toLowerCase(); }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours > 11) { - return isLower ? 'd\'o' : 'D\'O'; + return isLower ? "d'o" : "D'O"; } else { - return isLower ? 'd\'a' : 'D\'A'; - } - }, - calendar : { - sameDay : '[oxhi à] LT', - nextDay : '[demà à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[ieiri à] LT', - lastWeek : '[sür el] dddd [lasteu à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'osprei %s', - past : 'ja%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 + return isLower ? "d'a" : "D'A"; + } + }, + calendar: { + sameDay: '[oxhi à] LT', + nextDay: '[demà à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[ieiri à] LT', + lastWeek: '[sür el] dddd [lasteu à] LT', + sameElse: 'L', + }, + 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, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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. + }, }); - function processRelativeTime$7(number, withoutSuffix, key, isFuture) { + function processRelativeTime$8(number, withoutSuffix, key, isFuture) { var format = { - 's': ['viensas secunds', '\'iensas secunds'], - 'ss': [number + ' secunds', '' + number + ' secunds'], - 'm': ['\'n míut', '\'iens míut'], - 'mm': [number + ' míuts', '' + number + ' míuts'], - 'h': ['\'n þora', '\'iensa þora'], - 'hh': [number + ' þoras', '' + number + ' þoras'], - 'd': ['\'n ziua', '\'iensa ziua'], - 'dd': [number + ' ziuas', '' + number + ' ziuas'], - 'M': ['\'n mes', '\'iens mes'], - 'MM': [number + ' mesen', '' + number + ' mesen'], - 'y': ['\'n ar', '\'iens ar'], - 'yy': [number + ' ars', '' + number + ' ars'] + s: ['viensas secunds', "'iensas secunds"], + ss: [number + ' secunds', '' + number + ' secunds'], + m: ["'n míut", "'iens míut"], + mm: [number + ' míuts', '' + number + ' míuts'], + h: ["'n þora", "'iensa þora"], + hh: [number + ' þoras', '' + number + ' þoras'], + d: ["'n ziua", "'iensa ziua"], + dd: [number + ' ziuas', '' + number + ' ziuas'], + M: ["'n mes", "'iens mes"], + MM: [number + ' mesen', '' + number + ' mesen'], + y: ["'n ar", "'iens ar"], + yy: [number + ' ars', '' + number + ' ars'], }; - return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]); + return isFuture + ? format[key][0] + : withoutSuffix + ? format[key][0] + : format[key][1]; } //! moment.js locale configuration moment.defineLocale('tzm-latn', { - months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - 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 : { + months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( + '_' + ), + monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( + '_' + ), + weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + 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: '[asdkh g] LT', nextDay: '[aska g] LT', nextWeek: 'dddd [g] LT', lastDay: '[assant g] LT', lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'dadkh s yan %s', - past : 'yan %s', - s : 'imik', - ss : '%d imik', - m : 'minuḍ', - mm : '%d minuḍ', - h : 'saɛa', - hh : '%d tassaɛin', - d : 'ass', - dd : '%d ossan', - M : 'ayowr', - MM : '%d iyyirn', - y : 'asgas', - yy : '%d isgasn' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + sameElse: 'L', + }, + relativeTime: { + future: 'dadkh s yan %s', + past: 'yan %s', + s: 'imik', + ss: '%d imik', + m: 'minuḍ', + mm: '%d minuḍ', + h: 'saɛa', + hh: '%d tassaɛin', + d: 'ass', + dd: '%d ossan', + M: 'ayowr', + MM: '%d iyyirn', + y: 'asgas', + yy: '%d isgasn', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('tzm', { - months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat : { - LT : 'HH:mm', + months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + 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' + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', }, - calendar : { + 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 oⵙⵙⴰⵏ', - M : 'ⴰⵢoⵓⵔ', - MM : '%d ⵉⵢⵢⵉⵔⵏ', - y : 'ⴰⵙⴳⴰⵙ', - yy : '%d ⵉⵙⴳⴰⵙⵏ' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + sameElse: 'L', + }, + relativeTime: { + future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past: 'ⵢⴰⵏ %s', + s: 'ⵉⵎⵉⴽ', + ss: '%d ⵉⵎⵉⴽ', + m: 'ⵎⵉⵏⵓⴺ', + mm: '%d ⵎⵉⵏⵓⴺ', + h: 'ⵙⴰⵄⴰ', + hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d: 'ⴰⵙⵙ', + dd: '%d oⵙⵙⴰⵏ', + M: 'ⴰⵢoⵓⵔ', + MM: '%d ⵉⵢⵢⵉⵔⵏ', + y: 'ⴰⵙⴳⴰⵙ', + yy: '%d ⵉⵙⴳⴰⵙⵏ', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); //! moment.js language configuration @@ -9313,7 +10794,7 @@ L: 'YYYY-MM-DD', LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', - LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm' + LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', }, meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/, meridiemHour: function (hour, meridiem) { @@ -9354,7 +10835,7 @@ nextWeek: '[كېلەركى] dddd [سائەت] LT', lastDay: '[تۆنۈگۈن] LT', lastWeek: '[ئالدىنقى] dddd [سائەت] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: '%s كېيىن', @@ -9370,7 +10851,7 @@ M: 'بىر ئاي', MM: '%d ئاي', y: 'بىر يىل', - yy: '%d يىل' + yy: '%d يىل', }, dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/, @@ -9396,54 +10877,65 @@ week: { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 dow: 1, // Monday is the first day of the week. - doy: 7 // The week that contains Jan 1st is the first week of the year. - } + doy: 7, // The week that contains Jan 1st is the first week of the year. + }, }); //! moment.js locale configuration function plural$6(word, num) { var forms = word.split('_'); - 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]); + 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]; } function relativeTimeWithPlural$4(number, withoutSuffix, key) { var format = { - 'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', - 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', - 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' + ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', + mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', + dd: 'день_дні_днів', + MM: 'місяць_місяці_місяців', + yy: 'рік_роки_років', }; if (key === 'm') { return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { + } else if (key === 'h') { return withoutSuffix ? 'година' : 'годину'; - } - else { + } else { return number + ' ' + plural$6(format[key], +number); } } function weekdaysCaseReplace(m, format) { var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }; + nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split( + '_' + ), + accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split( + '_' + ), + genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split( + '_' + ), + }, + nounCase; if (m === true) { - return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1)); + return weekdays['nominative'] + .slice(1, 7) + .concat(weekdays['nominative'].slice(0, 1)); } if (!m) { return weekdays['nominative']; } - var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); + nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) + ? 'accusative' + : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) + ? 'genitive' + : 'nominative'; return weekdays[nounCase][m.day()]; } function processHoursFunction(str) { @@ -9453,23 +10945,29 @@ } moment.defineLocale('uk', { - months : { - 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), - 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') - }, - monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - 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 : { + months: { + format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split( + '_' + ), + standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split( + '_' + ), + }, + monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split( + '_' + ), + weekdays: weekdaysCaseReplace, + weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + 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: processHoursFunction('[Сьогодні '), nextDay: processHoursFunction('[Завтра '), lastDay: processHoursFunction('[Вчора '), @@ -9487,30 +10985,30 @@ return processHoursFunction('[Минулого] dddd [').call(this); } }, - sameElse: 'L' - }, - relativeTime : { - future : 'за %s', - past : '%s тому', - s : 'декілька секунд', - ss : relativeTimeWithPlural$4, - m : relativeTimeWithPlural$4, - mm : relativeTimeWithPlural$4, - h : 'годину', - hh : relativeTimeWithPlural$4, - d : 'день', - dd : relativeTimeWithPlural$4, - M : 'місяць', - MM : relativeTimeWithPlural$4, - y : 'рік', - yy : relativeTimeWithPlural$4 + sameElse: 'L', + }, + relativeTime: { + future: 'за %s', + past: '%s тому', + s: 'декілька секунд', + ss: relativeTimeWithPlural$4, + m: relativeTimeWithPlural$4, + mm: relativeTimeWithPlural$4, + h: 'годину', + hh: relativeTimeWithPlural$4, + d: 'день', + dd: relativeTimeWithPlural$4, + M: 'місяць', + MM: relativeTimeWithPlural$4, + y: 'рік', + yy: relativeTimeWithPlural$4, }, // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason meridiemParse: /ночі|ранку|дня|вечора/, isPM: function (input) { return /^(дня|вечора)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночі'; } else if (hour < 12) { @@ -9536,85 +11034,77 @@ return number; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var months$9 = [ - 'جنوری', - 'فروری', - 'مارچ', - 'اپریل', - 'مئی', - 'جون', - 'جولائی', - 'اگست', - 'ستمبر', - 'اکتوبر', - 'نومبر', - 'دسمبر' - ]; - var days$1 = [ - 'اتوار', - 'پیر', - 'منگل', - 'بدھ', - 'جمعرات', - 'جمعہ', - 'ہفتہ' - ]; + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر', + ], + days$1 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']; moment.defineLocale('ur', { - months : months$9, - monthsShort : months$9, - weekdays : days$1, - weekdaysShort : days$1, - weekdaysMin : days$1, - 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' + months: months$9, + monthsShort: months$9, + weekdays: days$1, + weekdaysShort: days$1, + weekdaysMin: days$1, + 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) { + isPM: function (input) { return 'شام' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'صبح'; } 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 سال' + 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, ','); @@ -9622,302 +11112,331 @@ postformat: function (string) { return string.replace(/,/g, '،'); }, - 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. - } + 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 moment.defineLocale('uz-latn', { - months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'), - monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), - weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'), - weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), - weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Bugun soat] LT [da]', - nextDay : '[Ertaga] LT [da]', - nextWeek : 'dddd [kuni soat] LT [da]', - lastDay : '[Kecha soat] LT [da]', - lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]', - sameElse : 'L' - }, - relativeTime : { - future : 'Yaqin %s ichida', - past : 'Bir necha %s oldin', - s : 'soniya', - ss : '%d soniya', - m : 'bir daqiqa', - mm : '%d daqiqa', - h : 'bir soat', - hh : '%d soat', - d : 'bir kun', - dd : '%d kun', - M : 'bir oy', - MM : '%d oy', - y : 'bir yil', - yy : '%d yil' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split( + '_' + ), + monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), + weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split( + '_' + ), + weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), + weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm', + }, + calendar: { + sameDay: '[Bugun soat] LT [da]', + nextDay: '[Ertaga] LT [da]', + nextWeek: 'dddd [kuni soat] LT [da]', + lastDay: '[Kecha soat] LT [da]', + lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", + sameElse: 'L', + }, + relativeTime: { + future: 'Yaqin %s ichida', + past: 'Bir necha %s oldin', + s: 'soniya', + ss: '%d soniya', + m: 'bir daqiqa', + mm: '%d daqiqa', + h: 'bir soat', + hh: '%d soat', + d: 'bir kun', + dd: '%d kun', + M: 'bir oy', + MM: '%d oy', + y: 'bir yil', + yy: '%d yil', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('uz', { - months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - 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 йил' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( + '_' + ), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm', + }, + 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 йил', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration moment.defineLocale('vi', { - months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), - monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), - monthsParseExact : true, - weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), - weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysParseExact : true, + months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split( + '_' + ), + monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split( + '_' + ), + weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysParseExact: true, meridiemParse: /sa|ch/i, - isPM : function (input) { + isPM: function (input) { return /^ch$/i.test(input); }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'sa' : 'SA'; } else { return isLower ? 'ch' : 'CH'; } }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY HH:mm', - LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', - l : 'DD/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [năm] YYYY', + LLL: 'D MMMM [năm] YYYY HH:mm', + LLLL: 'dddd, D MMMM [năm] YYYY HH:mm', + l: 'DD/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[Hôm nay lúc] LT', nextDay: '[Ngày mai lúc] LT', nextWeek: 'dddd [tuần tới lúc] LT', lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s tới', - past : '%s trước', - s : 'vài giây', - ss : '%d giây' , - m : 'một phút', - mm : '%d phút', - h : 'một giờ', - hh : '%d giờ', - d : 'một ngày', - dd : '%d ngày', - M : 'một tháng', - MM : '%d tháng', - y : 'một năm', - yy : '%d năm' + lastWeek: 'dddd [tuần trước lúc] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s tới', + past: '%s trước', + s: 'vài giây', + ss: '%d giây', + m: 'một phút', + mm: '%d phút', + h: 'một giờ', + hh: '%d giờ', + d: 'một ngày', + dd: '%d ngày', + M: 'một tháng', + MM: '%d tháng', + y: 'một năm', + yy: '%d năm', }, dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { + ordinal: function (number) { return number; }, - 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. - } + 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 moment.defineLocale('x-pseudo', { - months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), - monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), - monthsParseExact : true, - weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), - weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), - weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[T~ódá~ý át] LT', - nextDay : '[T~ómó~rró~w át] LT', - nextWeek : 'dddd [át] LT', - lastDay : '[Ý~ést~érdá~ý át] LT', - lastWeek : '[L~ást] dddd [át] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'í~ñ %s', - past : '%s á~gó', - s : 'á ~féw ~sécó~ñds', - ss : '%d s~écóñ~ds', - m : 'á ~míñ~úté', - mm : '%d m~íñú~tés', - h : 'á~ñ hó~úr', - hh : '%d h~óúrs', - d : 'á ~dáý', - dd : '%d d~áýs', - M : 'á ~móñ~th', - MM : '%d m~óñt~hs', - y : 'á ~ýéár', - yy : '%d ý~éárs' + months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split( + '_' + ), + monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split( + '_' + ), + weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), + weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[T~ódá~ý át] LT', + nextDay: '[T~ómó~rró~w át] LT', + nextWeek: 'dddd [át] LT', + lastDay: '[Ý~ést~érdá~ý át] LT', + lastWeek: '[L~ást] dddd [át] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'í~ñ %s', + past: '%s á~gó', + s: 'á ~féw ~sécó~ñds', + ss: '%d s~écóñ~ds', + m: 'á ~míñ~úté', + mm: '%d m~íñú~tés', + h: 'á~ñ hó~úr', + hh: '%d h~óúrs', + d: 'á ~dáý', + dd: '%d d~áýs', + M: 'á ~móñ~th', + MM: '%d m~óñt~hs', + y: 'á ~ýéár', + yy: '%d ý~éárs', }, dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 moment.defineLocale('yo', { - months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'), - monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), - weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), - weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), - weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Ònì ni] LT', - nextDay : '[Ọ̀la ni] LT', - nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT', - lastDay : '[Àna ni] LT', - lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ní %s', - past : '%s kọjá', - s : 'ìsẹjú aayá die', - ss :'aayá %d', - m : 'ìsẹjú kan', - mm : 'ìsẹjú %d', - h : 'wákati kan', - hh : 'wákati %d', - d : 'ọjọ́ kan', - dd : 'ọjọ́ %d', - M : 'osù kan', - MM : 'osù %d', - y : 'ọdún kan', - yy : 'ọdún %d' - }, - dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/, - ordinal : 'ọjọ́ %d', - 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. - } + months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split( + '_' + ), + monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), + weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), + weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), + weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Ònì ni] LT', + nextDay: '[Ọ̀la ni] LT', + nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT", + lastDay: '[Àna ni] LT', + lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ní %s', + past: '%s kọjá', + s: 'ìsẹjú aayá die', + ss: 'aayá %d', + m: 'ìsẹjú kan', + mm: 'ìsẹjú %d', + h: 'wákati kan', + hh: 'wákati %d', + d: 'ọjọ́ kan', + dd: 'ọjọ́ %d', + M: 'osù kan', + MM: 'osù %d', + y: 'ọdún kan', + yy: 'ọdún %d', + }, + dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/, + ordinal: 'ọjọ́ %d', + 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 moment.defineLocale('zh-cn', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日Ah点mm分', - LLLL : 'YYYY年M月D日ddddAh点mm分', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日Ah点mm分', + LLLL: 'YYYY年M月D日ddddAh点mm分', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { return hour; } else if (meridiem === '下午' || meridiem === '晚上') { return hour + 12; @@ -9926,7 +11445,7 @@ return hour >= 11 ? hour : hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; @@ -9942,16 +11461,16 @@ return '晚上'; } }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' + calendar: { + sameDay: '[今天]LT', + nextDay: '[明天]LT', + nextWeek: '[下]ddddLT', + lastDay: '[昨天]LT', + lastWeek: '[上]ddddLT', + sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { case 'd': case 'D': @@ -9966,51 +11485,150 @@ return number; } }, - relativeTime : { - future : '%s内', - past : '%s前', - s : '几秒', - ss : '%d 秒', - m : '1 分钟', - mm : '%d 分钟', - h : '1 小时', - hh : '%d 小时', - d : '1 天', - dd : '%d 天', - M : '1 个月', - MM : '%d 个月', - y : '1 年', - yy : '%d 年' - }, - week : { + relativeTime: { + future: '%s后', + past: '%s前', + s: '几秒', + ss: '%d 秒', + m: '1 分钟', + mm: '%d 分钟', + h: '1 小时', + hh: '%d 小时', + d: '1 天', + dd: '%d 天', + M: '1 个月', + MM: '%d 个月', + y: '1 年', + yy: '%d 年', + }, + week: { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - 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. - } + 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 moment.defineLocale('zh-hk', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日dddd HH:mm', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1200) { + return '上午'; + } else if (hm === 1200) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar: { + sameDay: '[今天]LT', + nextDay: '[明天]LT', + nextWeek: '[下]ddddLT', + lastDay: '[昨天]LT', + lastWeek: '[上]ddddLT', + sameElse: 'L', + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '週'; + default: + return number; + } + }, + relativeTime: { + future: '%s後', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, + }); + + //! moment.js locale configuration + + moment.defineLocale('zh-mo', { + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'D/M/YYYY', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -10022,7 +11640,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; @@ -10038,70 +11656,74 @@ return '晚上'; } }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' + calendar: { + sameDay: '[今天] LT', + nextDay: '[明天] LT', + nextWeek: '[下]dddd LT', + lastDay: '[昨天] LT', + lastWeek: '[上]dddd LT', + sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { - case 'd' : - case 'D' : - case 'DDD' : + case 'd': + case 'D': + case 'DDD': return number + '日'; - case 'M' : + case 'M': return number + '月'; - case 'w' : - case 'W' : + case 'w': + case 'W': return number + '週'; - default : + default: return number; } }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - ss : '%d 秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } + relativeTime: { + future: '%s內', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, }); //! moment.js locale configuration moment.defineLocale('zh-tw', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日dddd HH:mm', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -10113,7 +11735,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; @@ -10129,46 +11751,46 @@ return '晚上'; } }, - calendar : { - sameDay : '[今天] LT', - nextDay : '[明天] LT', - nextWeek : '[下]dddd LT', - lastDay : '[昨天] LT', - lastWeek : '[上]dddd LT', - sameElse : 'L' + calendar: { + sameDay: '[今天] LT', + nextDay: '[明天] LT', + nextWeek: '[下]dddd LT', + lastDay: '[昨天] LT', + lastWeek: '[上]dddd LT', + sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { - case 'd' : - case 'D' : - case 'DDD' : + case 'd': + case 'D': + case 'DDD': return number + '日'; - case 'M' : + case 'M': return number + '月'; - case 'w' : - case 'W' : + case 'w': + case 'W': return number + '週'; - default : + default: return number; } }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - ss : '%d 秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } + relativeTime: { + future: '%s後', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, }); moment.locale('en'); diff --git a/min/locales.min.js b/min/locales.min.js index c5c347598..68b35b715 100644 --- a/min/locales.min.js +++ b/min/locales.min.js @@ -1 +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}}),e.defineLocale("ar-dz",{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:"\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:"\u0623\u062d_\u0625\u062b_\u062b\u0644\u0627_\u0623\u0631_\u062e\u0645_\u062c\u0645_\u0633\u0628".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: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}});var a={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},r=function(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5},i={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"]},_=function(n){return function(e,a,_,s){var d=r(e),t=i[n][r(e)];return 2===d&&(t=t[a?0:1]),t.replace(/%d/i,e)}},s=["\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"];e.defineLocale("ar-ly",{months:s,monthsShort:s,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 a[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\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:6,doy:12}});var d={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},t={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};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 t[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return d[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}});var n={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},m={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},o=function(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5},u={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"]},l=function(n){return function(e,a,_,s){var d=o(e),t=u[n][o(e)];return 2===d&&(t=t[a?0:1]),t.replace(/%d/i,e)}},M=["\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"];e.defineLocale("ar",{months:M,monthsShort:M,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:l("s"),ss:l("s"),m:l("m"),mm:l("m"),h:l("h"),hh:l("h"),d:l("d"),dd:l("d"),M:l("M"),MM:l("M"),y:l("y"),yy:l("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return m[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return n[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var L={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 Y(e,a,_){var s,d;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+" "+(s=+e,d={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("_"),s%10==1&&s%100!=11?d[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?d[1]:d[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:"birne\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+(L[a]||L[e%100-a]||L[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:Y,mm:Y,h:Y,hh:Y,d:"\u0434\u0437\u0435\u043d\u044c",dd:Y,M:"\u043c\u0435\u0441\u044f\u0446",MM:Y,y:"\u0433\u043e\u0434",yy:Y},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\u0440_\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"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\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\u043d\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 h={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},y={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};e.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09c0_\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_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2_\u0986\u0997_\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_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\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 y[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return h[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}});var c={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},k={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function p(e,a,_){var s,d,t;return e+" "+(s={mm:"munutenn",MM:"miz",dd:"devezh"}[_],2!==e?s:void 0!==(t={m:"v",b:"v",d:"z"})[(d=s).charAt(0)]?t[d.charAt(0)]+d.substring(1):d)}function D(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?"minuta":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?"godina":2===e||3===e||4===e?"godine":"godina"}}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\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("_"),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\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("_"),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 k[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return c[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}}),e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:p,h:"un eur",hh:"%d eur",d:"un devezh",dd:p,M:"ur miz",MM:p,y:"ur bloaz",yy:function(e){switch(function e(a){return 9>> 0; + var t = Object(this), + len = t.length >>> 0, + i; - for (var i = 0; i < len; i++) { + for (i = 0; i < len; i++) { if (i in t && fun.call(this, t[i], i, t)) { return true; } @@ -133,23 +149,26 @@ function isValid(m) { if (m._isValid == null) { - var flags = getParsingFlags(m); - var parsedParts = some.call(flags.parsedDateParts, function (i) { - return i != null; - }); - var isNowValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); + 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)); if (m._strict) { - isNowValid = isNowValid && + isNowValid = + isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined; @@ -157,20 +176,18 @@ if (Object.isFrozen == null || !Object.isFrozen(m)) { m._isValid = isNowValid; - } - else { + } else { return isNowValid; } } return m._isValid; } - function createInvalid (flags) { + function createInvalid(flags) { var m = createUTC(NaN); if (flags != null) { extend(getParsingFlags(m), flags); - } - else { + } else { getParsingFlags(m).userInvalidated = true; } @@ -179,7 +196,8 @@ // Plugins that add properties should also add the key here (null value), // so we can properly clone ourselves. - var momentProperties = hooks.momentProperties = []; + var momentProperties = (hooks.momentProperties = []), + updateInProgress = false; function copyConfig(to, from) { var i, prop, val; @@ -228,8 +246,6 @@ return to; } - var updateInProgress = false; - // Moment prototype object function Moment(config) { copyConfig(this, config); @@ -246,48 +262,18 @@ } } - function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); - } - - 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; - } - - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; + function isMoment(obj) { + return ( + obj instanceof Moment || (obj != null && obj._isAMomentObject != null) + ); } function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && - (typeof console !== 'undefined') && console.warn) { + if ( + hooks.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && + console.warn + ) { console.warn('Deprecation warning: ' + msg); } } @@ -300,14 +286,18 @@ hooks.deprecationHandler(null, msg); } if (firstTime) { - var args = []; - var arg; - for (var i = 0; i < arguments.length; i++) { + var args = [], + arg, + i, + key; + for (i = 0; i < arguments.length; i++) { arg = ''; if (typeof arguments[i] === 'object') { arg += '\n[' + i + '] '; - for (var key in arguments[0]) { - arg += key + ': ' + arguments[0][key] + ', '; + for (key in arguments[0]) { + if (hasOwnProp(arguments[0], key)) { + arg += key + ': ' + arguments[0][key] + ', '; + } } arg = arg.slice(0, -2); // Remove trailing comma and space } else { @@ -315,7 +305,13 @@ } args.push(arg); } - warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + warn( + msg + + '\nArguments: ' + + Array.prototype.slice.call(args).join('') + + '\n' + + new Error().stack + ); firstTime = false; } return fn.apply(this, arguments); @@ -338,17 +334,22 @@ hooks.deprecationHandler = null; function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + return ( + (typeof Function !== 'undefined' && input instanceof Function) || + Object.prototype.toString.call(input) === '[object Function]' + ); } - function set (config) { + function set(config) { var prop, i; for (i in config) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this['_' + i] = prop; + if (hasOwnProp(config, i)) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } } } this._config = config; @@ -357,11 +358,14 @@ // TODO: Remove "ordinalParse" fallback in next major release. this._dayOfMonthOrdinalParseLenient = new RegExp( (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + - '|' + (/\d{1,2}/).source); + '|' + + /\d{1,2}/.source + ); } function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), prop; + var res = extend({}, parentConfig), + prop; for (prop in childConfig) { if (hasOwnProp(childConfig, prop)) { if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { @@ -376,9 +380,11 @@ } } for (prop in parentConfig) { - if (hasOwnProp(parentConfig, prop) && - !hasOwnProp(childConfig, prop) && - isObject(parentConfig[prop])) { + if ( + hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop]) + ) { // make sure changes to properties don't modify parent config res[prop] = extend({}, res[prop]); } @@ -398,7 +404,8 @@ keys = Object.keys; } else { keys = function (obj) { - var i, res = []; + var i, + res = []; for (i in obj) { if (hasOwnProp(obj, i)) { res.push(i); @@ -409,151 +416,40 @@ } var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', }; - function calendar (key, mom, now) { + function calendar(key, mom, now) { var output = this._calendar[key] || this._calendar['sameElse']; return isFunction(output) ? output.call(mom, now) : output; } - var defaultLongDateFormat = { - 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' - }; - - function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - - if (format || !formatUpper) { - return format; - } - - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - - return this._longDateFormat[key]; - } - - var defaultInvalidDate = 'Invalid date'; - - function invalidDate () { - return this._invalidDate; - } - - var defaultOrdinal = '%d'; - var defaultDayOfMonthOrdinalParse = /\d{1,2}/; - - function ordinal (number) { - return this._ordinal.replace('%d', number); - } - - var defaultRelativeTime = { - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }; - - function relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (isFunction(output)) ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - } - - function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - 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; - } - - function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - var priorities = {}; - - function addUnitPriority(unit, priority) { - priorities[unit] = priority; - } - - function getPrioritizedUnits(unitsObj) { - var units = []; - for (var u in unitsObj) { - units.push({unit: u, priority: priorities[u]}); - } - units.sort(function (a, b) { - return a.priority - b.priority; - }); - return units; - } - function zeroFill(number, targetLength, forceSign) { var absNumber = '' + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + return ( + (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + + absNumber + ); } - var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - - var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - - var formatFunctions = {}; - - var formatTokenFunctions = {}; + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + formatFunctions = {}, + formatTokenFunctions = {}; // token: 'M' // padded: ['MM', 2] // ordinal: 'Mo' // callback: function () { this.month() + 1 } - function addFormatToken (token, padded, ordinal, callback) { + function addFormatToken(token, padded, ordinal, callback) { var func = callback; if (typeof callback === 'string') { func = function () { @@ -570,7 +466,10 @@ } if (ordinal) { formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); + return this.localeData().ordinal( + func.apply(this, arguments), + token + ); }; } } @@ -583,7 +482,9 @@ } function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + var array = format.match(formattingTokens), + i, + length; for (i = 0, length = array.length; i < length; i++) { if (formatTokenFunctions[array[i]]) { @@ -594,9 +495,12 @@ } return function (mom) { - var output = '', i; + var output = '', + i; for (i = 0; i < length; i++) { - output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + output += isFunction(array[i]) + ? array[i].call(mom, format) + : array[i]; } return output; }; @@ -609,7 +513,8 @@ } format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + formatFunctions[format] = + formatFunctions[format] || makeFormatFunction(format); return formatFunctions[format](m); } @@ -623,7 +528,10 @@ localFormattingTokens.lastIndex = 0; while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + format = format.replace( + localFormattingTokens, + replaceLongDateFormatTokens + ); localFormattingTokens.lastIndex = 0; i -= 1; } @@ -631,164 +539,160 @@ return format; } - var match1 = /\d/; // 0 - 9 - var match2 = /\d\d/; // 00 - 99 - var match3 = /\d{3}/; // 000 - 999 - var match4 = /\d{4}/; // 0000 - 9999 - var match6 = /[+-]?\d{6}/; // -999999 - 999999 - var match1to2 = /\d\d?/; // 0 - 99 - var match3to4 = /\d\d\d\d?/; // 999 - 9999 - var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 - var match1to3 = /\d{1,3}/; // 0 - 999 - var match1to4 = /\d{1,4}/; // 0 - 9999 - var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + var defaultLongDateFormat = { + 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', + }; - var matchUnsigned = /\d+/; // 0 - inf - var matchSigned = /[+-]?\d+/; // -inf - inf + function longDateFormat(key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; - var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z - var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + if (format || !formatUpper) { + return format; + } - var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + this._longDateFormat[key] = formatUpper + .match(formattingTokens) + .map(function (tok) { + if ( + tok === 'MMMM' || + tok === 'MM' || + tok === 'DD' || + tok === 'dddd' + ) { + return tok.slice(1); + } + return tok; + }) + .join(''); - // any word (or two) characters or numbers including two/three word month in arabic. - // includes scottish gaelic two word and hyphenated months - var 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; + return this._longDateFormat[key]; + } - var regexes = {}; + var defaultInvalidDate = 'Invalid date'; - function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; + function invalidDate() { + return this._invalidDate; } - function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } + var defaultOrdinal = '%d', + defaultDayOfMonthOrdinalParse = /\d{1,2}/; - return regexes[token](config._strict, config._locale); + function ordinal(number) { + return this._ordinal.replace('%d', number); } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function unescapeFormat(s) { - return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - })); + var defaultRelativeTime = { + 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', + }; + + function relativeTime(number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return isFunction(output) + ? output(number, withoutSuffix, string, isFuture) + : output.replace(/%d/i, number); } - function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + function pastFuture(diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); } - var tokens = {}; + var aliases = {}; - function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } + function addUnitAlias(unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; } - function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); + function normalizeUnits(units) { + return typeof units === 'string' + ? aliases[units] || aliases[units.toLowerCase()] + : undefined; } - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } - } + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - var YEAR = 0; - var MONTH = 1; - var DATE = 2; - var HOUR = 3; - var MINUTE = 4; - var SECOND = 5; - var MILLISECOND = 6; - var WEEK = 7; - var WEEKDAY = 8; + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - // FORMATTING + return normalizedInput; + } - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? '' + y : '+' + y; - }); + var priorities = {}; - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + function getPrioritizedUnits(unitsObj) { + var units = [], + u; + for (u in unitsObj) { + if (hasOwnProp(unitsObj, u)) { + units.push({ unit: u, priority: priorities[u] }); + } + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; + } - // ALIASES + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - addUnitAlias('year', 'y'); + function absFloor(number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } - // PRIORITIES + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - addUnitPriority('year', 1); + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } - // PARSING + return value; + } - 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; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - // 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) { + function makeGetSet(unit, keepTime) { return function (value) { if (value != null) { set$1(this, unit, value); @@ -800,17 +704,27 @@ }; } - function get (mom, unit) { - return mom.isValid() ? - mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; + function get(mom, unit) { + return mom.isValid() + ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() + : NaN; } - function set$1 (mom, unit, value) { + function set$1(mom, unit, value) { if (mom.isValid() && !isNaN(value)) { - if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); - } - else { + 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); } } @@ -818,7 +732,7 @@ // MOMENTS - function stringGet (units) { + function stringGet(units) { units = normalizeUnits(units); if (isFunction(this[units])) { return this[units](); @@ -826,12 +740,12 @@ return this; } - - function stringSet (units, value) { + function stringSet(units, value) { if (typeof units === 'object') { units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units); - for (var i = 0; i < prioritized.length; i++) { + var prioritized = getPrioritizedUnits(units), + i; + for (i = 0; i < prioritized.length; i++) { this[prioritized[i].unit](units[prioritized[i].unit]); } } else { @@ -843,6 +757,107 @@ return this; } + var match1 = /\d/, // 0 - 9 + match2 = /\d\d/, // 00 - 99 + match3 = /\d{3}/, // 000 - 999 + match4 = /\d{4}/, // 0000 - 9999 + match6 = /[+-]?\d{6}/, // -999999 - 999999 + match1to2 = /\d\d?/, // 0 - 99 + match3to4 = /\d\d\d\d?/, // 999 - 9999 + match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999 + match1to3 = /\d{1,3}/, // 0 - 999 + match1to4 = /\d{1,4}/, // 0 - 9999 + match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 + matchUnsigned = /\d+/, // 0 - inf + matchSigned = /[+-]?\d+/, // -inf - inf + matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z + matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + // any word (or two) characters or numbers including two/three word month in arabic. + // 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, + regexes; + + regexes = {}; + + function addRegexToken(token, regex, strictRegex) { + regexes[token] = isFunction(regex) + ? regex + : function (isStrict, localeData) { + return isStrict && strictRegex ? strictRegex : regex; + }; + } + + function getParseRegexForToken(token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape( + s + .replace('\\', '') + .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function ( + matched, + p1, + p2, + p3, + p4 + ) { + return p1 || p2 || p3 || p4; + }) + ); + } + + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken(token, callback) { + var i, + func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken(token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, + WEEK = 7, + WEEKDAY = 8; + function mod(n, x) { return ((n % x) + x) % x; } @@ -870,7 +885,11 @@ } var modMonth = mod(month, 12); year += (month - modMonth) / 12; - return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); + return modMonth === 1 + ? isLeapYear(year) + ? 29 + : 28 + : 31 - ((modMonth % 7) % 2); } // FORMATTING @@ -897,9 +916,9 @@ // PARSING - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', function (isStrict, locale) { + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { return locale.monthsShortRegex(isStrict); }); addRegexToken('MMMM', function (isStrict, locale) { @@ -922,29 +941,49 @@ // LOCALES - var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; - var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); - function localeMonths (m, format) { + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split( + '_' + ), + MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, + defaultMonthsShortRegex = matchWord, + defaultMonthsRegex = matchWord; + + function localeMonths(m, format) { if (!m) { - return isArray(this._months) ? this._months : - this._months['standalone']; + return isArray(this._months) + ? this._months + : this._months['standalone']; } - return isArray(this._months) ? this._months[m.month()] : - this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; + return isArray(this._months) + ? this._months[m.month()] + : this._months[ + (this._months.isFormat || MONTHS_IN_FORMAT).test(format) + ? 'format' + : 'standalone' + ][m.month()]; } - var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); - function localeMonthsShort (m, format) { + function localeMonthsShort(m, format) { if (!m) { - return isArray(this._monthsShort) ? this._monthsShort : - this._monthsShort['standalone']; + return isArray(this._monthsShort) + ? this._monthsShort + : this._monthsShort['standalone']; } - return isArray(this._monthsShort) ? this._monthsShort[m.month()] : - this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + return isArray(this._monthsShort) + ? this._monthsShort[m.month()] + : this._monthsShort[ + MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone' + ][m.month()]; } function handleStrictParse(monthName, format, strict) { - var i, ii, mom, llc = monthName.toLocaleLowerCase(); + var i, + ii, + mom, + llc = monthName.toLocaleLowerCase(); if (!this._monthsParse) { // this is not used this._monthsParse = []; @@ -952,7 +991,10 @@ this._shortMonthsParse = []; for (i = 0; i < 12; ++i) { mom = createUTC([2000, i]); - this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._shortMonthsParse[i] = this.monthsShort( + mom, + '' + ).toLocaleLowerCase(); this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); } } @@ -984,7 +1026,7 @@ } } - function localeMonthsParse (monthName, format, strict) { + function localeMonthsParse(monthName, format, strict) { var i, mom, regex; if (this._monthsParseExact) { @@ -1004,17 +1046,32 @@ // make the regex if we don't have it already mom = createUTC([2000, i]); if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + this._longMonthsParse[i] = new RegExp( + '^' + this.months(mom, '').replace('.', '') + '$', + 'i' + ); + this._shortMonthsParse[i] = new RegExp( + '^' + this.monthsShort(mom, '').replace('.', '') + '$', + 'i' + ); } if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + regex = + '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + if ( + strict && + format === 'MMMM' && + this._longMonthsParse[i].test(monthName) + ) { return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + } else if ( + strict && + format === 'MMM' && + this._shortMonthsParse[i].test(monthName) + ) { return i; } else if (!strict && this._monthsParse[i].test(monthName)) { return i; @@ -1024,7 +1081,7 @@ // MOMENTS - function setMonth (mom, value) { + function setMonth(mom, value) { var dayOfMonth; if (!mom.isValid()) { @@ -1049,7 +1106,7 @@ return mom; } - function getSetMonth (value) { + function getSetMonth(value) { if (value != null) { setMonth(this, value); hooks.updateOffset(this, true); @@ -1059,12 +1116,11 @@ } } - function getDaysInMonth () { + function getDaysInMonth() { return daysInMonth(this.year(), this.month()); } - var defaultMonthsShortRegex = matchWord; - function monthsShortRegex (isStrict) { + function monthsShortRegex(isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { computeMonthsParse.call(this); @@ -1078,13 +1134,13 @@ if (!hasOwnProp(this, '_monthsShortRegex')) { this._monthsShortRegex = defaultMonthsShortRegex; } - return this._monthsShortStrictRegex && isStrict ? - this._monthsShortStrictRegex : this._monthsShortRegex; + return this._monthsShortStrictRegex && isStrict + ? this._monthsShortStrictRegex + : this._monthsShortRegex; } } - var defaultMonthsRegex = matchWord; - function monthsRegex (isStrict) { + function monthsRegex(isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { computeMonthsParse.call(this); @@ -1098,18 +1154,22 @@ if (!hasOwnProp(this, '_monthsRegex')) { this._monthsRegex = defaultMonthsRegex; } - return this._monthsStrictRegex && isStrict ? - this._monthsStrictRegex : this._monthsRegex; + return this._monthsStrictRegex && isStrict + ? this._monthsStrictRegex + : this._monthsRegex; } } - function computeMonthsParse () { + function computeMonthsParse() { function cmpLenRev(a, b) { return b.length - a.length; } - var shortPieces = [], longPieces = [], mixedPieces = [], - i, mom; + var shortPieces = [], + longPieces = [], + mixedPieces = [], + i, + mom; for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); @@ -1133,11 +1193,80 @@ this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._monthsStrictRegex = new RegExp( + '^(' + longPieces.join('|') + ')', + 'i' + ); + this._monthsShortStrictRegex = new RegExp( + '^(' + shortPieces.join('|') + ')', + 'i' + ); + } + + // 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) { + function createDate(y, m, d, h, M, s, ms) { // can't just apply() to create a date: // https://stackoverflow.com/q/181348 var date; @@ -1155,11 +1284,11 @@ return date; } - function createUTCDate (y) { - var date; + function createUTCDate(y) { + var date, args; // the Date.UTC function remaps years 0-99 to 1900-1999 if (y < 100 && y >= 0) { - var args = Array.prototype.slice.call(arguments); + args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset args[0] = y + 400; date = new Date(Date.UTC.apply(null, args)); @@ -1188,7 +1317,8 @@ var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, - resYear, resDayOfYear; + resYear, + resDayOfYear; if (dayOfYear <= 0) { resYear = year - 1; @@ -1203,14 +1333,15 @@ return { year: resYear, - dayOfYear: resDayOfYear + dayOfYear: resDayOfYear, }; } function weekOfYear(mom, dow, doy) { var weekOffset = firstWeekOffset(mom.year(), dow, doy), week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, - resWeek, resYear; + resWeek, + resYear; if (week < 1) { resYear = mom.year() - 1; @@ -1225,7 +1356,7 @@ return { week: resWeek, - year: resYear + year: resYear, }; } @@ -1252,12 +1383,17 @@ // PARSING - addRegexToken('w', match1to2); + addRegexToken('w', match1to2); addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); + addRegexToken('W', match1to2); addRegexToken('WW', match1to2, match2); - addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + addWeekParseToken(['w', 'ww', 'W', 'WW'], function ( + input, + week, + config, + token + ) { week[token.substr(0, 1)] = toInt(input); }); @@ -1265,31 +1401,31 @@ // LOCALES - function localeWeek (mom) { + function localeWeek(mom) { return weekOfYear(mom, this._week.dow, this._week.doy).week; } var defaultLocaleWeek = { - 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. + 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. }; - function localeFirstDayOfWeek () { + function localeFirstDayOfWeek() { return this._week.dow; } - function localeFirstDayOfYear () { + function localeFirstDayOfYear() { return this._week.doy; } // MOMENTS - function getSetWeek (input) { + function getSetWeek(input) { var week = this.localeData().week(this); return input == null ? week : this.add((input - week) * 7, 'd'); } - function getSetISOWeek (input) { + function getSetISOWeek(input) { var week = weekOfYear(this, 1, 4).week; return input == null ? week : this.add((input - week) * 7, 'd'); } @@ -1326,16 +1462,16 @@ // PARSING - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', function (isStrict, locale) { + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { return locale.weekdaysMinRegex(isStrict); }); - addRegexToken('ddd', function (isStrict, locale) { + addRegexToken('ddd', function (isStrict, locale) { return locale.weekdaysShortRegex(isStrict); }); - addRegexToken('dddd', function (isStrict, locale) { + addRegexToken('dddd', function (isStrict, locale) { return locale.weekdaysRegex(isStrict); }); @@ -1380,32 +1516,55 @@ } // LOCALES - function shiftWeekdays (ws, n) { + function shiftWeekdays(ws, n) { return ws.slice(n, 7).concat(ws.slice(0, n)); } - var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); - function localeWeekdays (m, format) { - var weekdays = isArray(this._weekdays) ? this._weekdays : - this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone']; - return (m === true) ? shiftWeekdays(weekdays, this._week.dow) - : (m) ? weekdays[m.day()] : weekdays; - } - - var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); - function localeWeekdaysShort (m) { - return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow) - : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; - } - - var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); - function localeWeekdaysMin (m) { - return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow) - : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + defaultWeekdaysRegex = matchWord, + defaultWeekdaysShortRegex = matchWord, + defaultWeekdaysMinRegex = matchWord; + + function localeWeekdays(m, format) { + var weekdays = isArray(this._weekdays) + ? this._weekdays + : this._weekdays[ + m && m !== true && this._weekdays.isFormat.test(format) + ? 'format' + : 'standalone' + ]; + return m === true + ? shiftWeekdays(weekdays, this._week.dow) + : m + ? weekdays[m.day()] + : weekdays; + } + + function localeWeekdaysShort(m) { + return m === true + ? shiftWeekdays(this._weekdaysShort, this._week.dow) + : m + ? 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; } function handleStrictParse$1(weekdayName, format, strict) { - var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + var i, + ii, + mom, + llc = weekdayName.toLocaleLowerCase(); if (!this._weekdaysParse) { this._weekdaysParse = []; this._shortWeekdaysParse = []; @@ -1413,8 +1572,14 @@ for (i = 0; i < 7; ++i) { mom = createUTC([2000, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._minWeekdaysParse[i] = this.weekdaysMin( + mom, + '' + ).toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort( + mom, + '' + ).toLocaleLowerCase(); this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); } } @@ -1468,7 +1633,7 @@ } } - function localeWeekdaysParse (weekdayName, format, strict) { + function localeWeekdaysParse(weekdayName, format, strict) { var i, mom, regex; if (this._weekdaysParseExact) { @@ -1487,20 +1652,47 @@ mom = createUTC([2000, 1]).day(i); if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i'); - this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i'); - this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i'); + this._fullWeekdaysParse[i] = new RegExp( + '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', + 'i' + ); + this._shortWeekdaysParse[i] = new RegExp( + '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', + 'i' + ); + this._minWeekdaysParse[i] = new RegExp( + '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', + 'i' + ); } if (!this._weekdaysParse[i]) { - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + regex = + '^' + + this.weekdays(mom, '') + + '|^' + + this.weekdaysShort(mom, '') + + '|^' + + this.weekdaysMin(mom, ''); this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex - if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + if ( + strict && + format === 'dddd' && + this._fullWeekdaysParse[i].test(weekdayName) + ) { return i; - } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + } else if ( + strict && + format === 'ddd' && + this._shortWeekdaysParse[i].test(weekdayName) + ) { return i; - } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + } else if ( + strict && + format === 'dd' && + this._minWeekdaysParse[i].test(weekdayName) + ) { return i; } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { return i; @@ -1510,7 +1702,7 @@ // MOMENTS - function getSetDayOfWeek (input) { + function getSetDayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } @@ -1523,7 +1715,7 @@ } } - function getSetLocaleDayOfWeek (input) { + function getSetLocaleDayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } @@ -1531,7 +1723,7 @@ return input == null ? weekday : this.add(input - weekday, 'd'); } - function getSetISODayOfWeek (input) { + function getSetISODayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } @@ -1548,8 +1740,7 @@ } } - var defaultWeekdaysRegex = matchWord; - function weekdaysRegex (isStrict) { + function weekdaysRegex(isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); @@ -1563,13 +1754,13 @@ if (!hasOwnProp(this, '_weekdaysRegex')) { this._weekdaysRegex = defaultWeekdaysRegex; } - return this._weekdaysStrictRegex && isStrict ? - this._weekdaysStrictRegex : this._weekdaysRegex; + return this._weekdaysStrictRegex && isStrict + ? this._weekdaysStrictRegex + : this._weekdaysRegex; } } - var defaultWeekdaysShortRegex = matchWord; - function weekdaysShortRegex (isStrict) { + function weekdaysShortRegex(isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); @@ -1583,13 +1774,13 @@ if (!hasOwnProp(this, '_weekdaysShortRegex')) { this._weekdaysShortRegex = defaultWeekdaysShortRegex; } - return this._weekdaysShortStrictRegex && isStrict ? - this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + return this._weekdaysShortStrictRegex && isStrict + ? this._weekdaysShortStrictRegex + : this._weekdaysShortRegex; } } - var defaultWeekdaysMinRegex = matchWord; - function weekdaysMinRegex (isStrict) { + function weekdaysMinRegex(isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); @@ -1603,25 +1794,32 @@ if (!hasOwnProp(this, '_weekdaysMinRegex')) { this._weekdaysMinRegex = defaultWeekdaysMinRegex; } - return this._weekdaysMinStrictRegex && isStrict ? - this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + return this._weekdaysMinStrictRegex && isStrict + ? this._weekdaysMinStrictRegex + : this._weekdaysMinRegex; } } - - function computeWeekdaysParse () { + function computeWeekdaysParse() { function cmpLenRev(a, b) { return b.length - a.length; } - var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], - i, mom, minp, shortp, longp; + var minPieces = [], + shortPieces = [], + longPieces = [], + mixedPieces = [], + i, + mom, + minp, + shortp, + longp; for (i = 0; i < 7; i++) { // make the regex if we don't have it already mom = createUTC([2000, 1]).day(i); - minp = this.weekdaysMin(mom, ''); - shortp = this.weekdaysShort(mom, ''); - longp = this.weekdays(mom, ''); + minp = regexEscape(this.weekdaysMin(mom, '')); + shortp = regexEscape(this.weekdaysShort(mom, '')); + longp = regexEscape(this.weekdays(mom, '')); minPieces.push(minp); shortPieces.push(shortp); longPieces.push(longp); @@ -1635,19 +1833,23 @@ shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); - for (i = 0; i < 7; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - mixedPieces[i] = regexEscape(mixedPieces[i]); - } this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._weekdaysShortRegex = this._weekdaysRegex; this._weekdaysMinRegex = this._weekdaysRegex; - this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); - this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + this._weekdaysStrictRegex = new RegExp( + '^(' + longPieces.join('|') + ')', + 'i' + ); + this._weekdaysShortStrictRegex = new RegExp( + '^(' + shortPieces.join('|') + ')', + 'i' + ); + this._weekdaysMinStrictRegex = new RegExp( + '^(' + minPieces.join('|') + ')', + 'i' + ); } // FORMATTING @@ -1669,8 +1871,12 @@ }); addFormatToken('hmmss', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); + return ( + '' + + hFormat.apply(this) + + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2) + ); }); addFormatToken('Hmm', 0, 0, function () { @@ -1678,13 +1884,21 @@ }); addFormatToken('Hmmss', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); + return ( + '' + + this.hours() + + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2) + ); }); - function meridiem (token, lowercase) { + function meridiem(token, lowercase) { addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + return this.localeData().meridiem( + this.hours(), + this.minutes(), + lowercase + ); }); } @@ -1700,15 +1914,15 @@ // PARSING - function matchMeridiem (isStrict, locale) { + function matchMeridiem(isStrict, locale) { return locale._meridiemParse; } - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('k', match1to2); addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); addRegexToken('kk', match1to2, match2); @@ -1738,8 +1952,8 @@ getParsingFlags(config).bigHour = true; }); addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; + var pos1 = input.length - 4, + pos2 = input.length - 2; array[HOUR] = toInt(input.substr(0, pos1)); array[MINUTE] = toInt(input.substr(pos1, 2)); array[SECOND] = toInt(input.substr(pos2)); @@ -1751,8 +1965,8 @@ array[MINUTE] = toInt(input.substr(pos)); }); addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; + var pos1 = input.length - 4, + pos2 = input.length - 2; array[HOUR] = toInt(input.substr(0, pos1)); array[MINUTE] = toInt(input.substr(pos1, 2)); array[SECOND] = toInt(input.substr(pos2)); @@ -1760,14 +1974,20 @@ // LOCALES - function localeIsPM (input) { + function localeIsPM(input) { // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); + return (input + '').toLowerCase().charAt(0) === 'p'; } - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; - function localeMeridiem (hours, minutes, isLower) { + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, + // Setting the hour should keep the time, because the user explicitly + // specified which hour they want. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + getSetHour = makeGetSet('Hours', true); + + function localeMeridiem(hours, minutes, isLower) { if (hours > 11) { return isLower ? 'pm' : 'PM'; } else { @@ -1775,15 +1995,6 @@ } } - - // MOMENTS - - // Setting the hour should keep the time, because the user explicitly - // specified which hour they want. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - var getSetHour = makeGetSet('Hours', true); - var baseConfig = { calendar: defaultCalendar, longDateFormat: defaultLongDateFormat, @@ -1801,13 +2012,24 @@ weekdaysMin: defaultLocaleWeekdaysMin, weekdaysShort: defaultLocaleWeekdaysShort, - meridiemParse: defaultLocaleMeridiemParse + meridiemParse: defaultLocaleMeridiemParse, }; // internal storage for locale config files - var locales = {}; - var localeFamilies = {}; - var globalLocale; + var locales = {}, + localeFamilies = {}, + globalLocale; + + function commonPrefix(arr1, arr2) { + var i, + minl = Math.min(arr1.length, arr2.length); + for (i = 0; i < minl; i += 1) { + if (arr1[i] !== arr2[i]) { + return i; + } + } + return minl; + } function normalizeLocale(key) { return key ? key.toLowerCase().replace('_', '-') : key; @@ -1817,7 +2039,11 @@ // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root function chooseLocale(names) { - var i = 0, j, next, locale, split; + var i = 0, + j, + next, + locale, + split; while (i < names.length) { split = normalizeLocale(names[i]).split('-'); @@ -1829,7 +2055,11 @@ if (locale) { return locale; } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + if ( + next && + next.length >= j && + commonPrefix(split, next) >= j - 1 + ) { //the next array item is better than a shallower substring of this one break; } @@ -1841,16 +2071,29 @@ } function loadLocale(name) { - var oldLocale = null; + var oldLocale = null, + aliasedRequire; // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && (typeof module !== 'undefined') && - module && module.exports) { + if ( + locales[name] === undefined && + typeof module !== 'undefined' && + module && + module.exports + ) { try { oldLocale = globalLocale._abbr; - var aliasedRequire = require; - aliasedRequire('./locale/' + name); + aliasedRequire = require; + aliasedRequire( + (typeof __dirname !== undefined ? __dirname : '.') + + '/locale/' + + name + ); getSetGlobalLocale(oldLocale); - } catch (e) {} + } catch (e) { + // mark as not found to avoid repeating expensive file require call causing high CPU + // when trying to find en-US, en_US, en-us for every format call + locales[name] = null; // null means not found + } } return locales[name]; } @@ -1858,24 +2101,24 @@ // This function will load locale and then set the global locale. If // no arguments are passed in, it will simply return the current global // locale key. - function getSetGlobalLocale (key, values) { + function getSetGlobalLocale(key, values) { var data; if (key) { if (isUndefined(values)) { data = getLocale(key); - } - else { + } else { data = defineLocale(key, values); } if (data) { // moment.duration._locale = moment._locale = data; globalLocale = data; - } - else { - if ((typeof console !== 'undefined') && console.warn) { + } else { + if (typeof console !== 'undefined' && console.warn) { //warn user if arguments are passed but the locale could not be set - console.warn('Locale ' + key + ' not found. Did you forget to load it?'); + console.warn( + 'Locale ' + key + ' not found. Did you forget to load it?' + ); } } } @@ -1883,16 +2126,19 @@ return globalLocale._abbr; } - function defineLocale (name, config) { + function defineLocale(name, config) { if (config !== null) { - var locale, parentConfig = baseConfig; + var locale, + parentConfig = baseConfig; config.abbr = name; if (locales[name] != null) { - deprecateSimple('defineLocaleOverride', - 'use moment.updateLocale(localeName, config) to change ' + + deprecateSimple( + '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.'); + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.' + ); parentConfig = locales[name]._config; } else if (config.parentLocale != null) { if (locales[config.parentLocale] != null) { @@ -1907,7 +2153,7 @@ } localeFamilies[config.parentLocale].push({ name: name, - config: config + config: config, }); return null; } @@ -1926,7 +2172,6 @@ // created, so we won't end up with the child locale set. getSetGlobalLocale(name); - return locales[name]; } else { // useful for testing @@ -1937,16 +2182,30 @@ function updateLocale(name, config) { if (config != null) { - var locale, tmpLocale, parentConfig = baseConfig; - // MERGE - tmpLocale = loadLocale(name); - if (tmpLocale != null) { - parentConfig = tmpLocale._config; + var locale, + tmpLocale, + parentConfig = baseConfig; + + if (locales[name] != null && locales[name].parentLocale != null) { + // Update existing child locale in-place to avoid memory-leaks + locales[name].set(mergeConfigs(locales[name]._config, config)); + } else { + // MERGE + tmpLocale = loadLocale(name); + if (tmpLocale != null) { + parentConfig = tmpLocale._config; + } + config = mergeConfigs(parentConfig, config); + if (tmpLocale == null) { + // updateLocale is called for creating a new locale + // Set abbr so it will have a name (getters return + // undefined otherwise). + config.abbr = name; + } + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; } - config = mergeConfigs(parentConfig, config); - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; // backwards compat for now: also set the locale getSetGlobalLocale(name); @@ -1955,6 +2214,9 @@ if (locales[name] != null) { if (locales[name].parentLocale != null) { locales[name] = locales[name].parentLocale; + if (name === getSetGlobalLocale()) { + getSetGlobalLocale(name); + } } else if (locales[name] != null) { delete locales[name]; } @@ -1964,7 +2226,7 @@ } // returns locale data - function getLocale (key) { + function getLocale(key) { var locale; if (key && key._locale && key._locale._abbr) { @@ -1991,21 +2253,35 @@ return keys(locales); } - function checkOverflow (m) { - var overflow; - var a = m._a; + function checkOverflow(m) { + var overflow, + a = m._a; if (a && getParsingFlags(m).overflow === -2) { overflow = - 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; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + 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; + + if ( + getParsingFlags(m)._overflowDayOfYear && + (overflow < YEAR || overflow > DATE) + ) { overflow = DATE; } if (getParsingFlags(m)._overflowWeeks && overflow === -1) { @@ -2021,209 +2297,74 @@ return m; } - // Pick the first defined of two or three arguments. - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } - - function currentDateArray(config) { - // hooks is actually the exported moment object - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; - } - return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; - } - - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function configFromArray (config) { - var i, date, input = [], currentDate, expectedWeekday, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/], + ['YYYYMM', /\d{6}/, false], + ['YYYY', /\d{4}/, false], + ], + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/], + ], + aspNetJsonRegex = /^\/?Date\((-?\d+)/i, + // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 + rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, + obsOffsets = { + UT: 0, + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60, + }; - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + // date from iso format + function configFromISO(config) { + var i, + l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, + dateFormat, + timeFormat, + tzFormat; - //if the day of the year is set, figure out what it is - if (config._dayOfYear != null) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + if (match) { + getParsingFlags(config).iso = true; - if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); - - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } - - // check for mismatching day of week - if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { - getParsingFlags(config).weekdayMismatch = true; - } - } - - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; - } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - var curWeek = weekOfYear(createLocal(), dow, doy); - - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); - - // Default to current week. - week = defaults(w.w, curWeek.week); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; - } - } else if (w.e != null) { - // local weekday -- counting starts from beginning of week - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; - } - } else { - // default to beginning of week - weekday = dow; - } - } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - } - - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - - var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; - - var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], - ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], - ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], - ['GGGG-[W]WW', /\d{4}-W\d\d/, false], - ['YYYY-DDD', /\d{4}-\d{3}/], - ['YYYY-MM', /\d{4}-\d\d/, false], - ['YYYYYYMMDD', /[+-]\d{10}/], - ['YYYYMMDD', /\d{8}/], - // YYYYMM is NOT allowed by the standard - ['GGGG[W]WWE', /\d{4}W\d{3}/], - ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/] - ]; - - // iso time formats and regexes - var isoTimes = [ - ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], - ['HH:mm:ss', /\d\d:\d\d:\d\d/], - ['HH:mm', /\d\d:\d\d/], - ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], - ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], - ['HHmmss', /\d\d\d\d\d\d/], - ['HHmm', /\d\d\d\d/], - ['HH', /\d\d/] - ]; - - var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; - - // date from iso format - function configFromISO(config) { - var i, l, - string = config._i, - match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), - allowTime, dateFormat, timeFormat, tzFormat; - - if (match) { - getParsingFlags(config).iso = true; - - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(match[1])) { - dateFormat = isoDates[i][0]; - allowTime = isoDates[i][2] !== false; - break; - } + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } } if (dateFormat == null) { config._isValid = false; @@ -2261,16 +2402,20 @@ } } - // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 - var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; - - function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + function extractFromRFC2822Strings( + yearStr, + monthStr, + dayStr, + hourStr, + minuteStr, + secondStr + ) { var result = [ untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), - parseInt(minuteStr, 10) + parseInt(minuteStr, 10), ]; if (secondStr) { @@ -2292,14 +2437,22 @@ function preprocessRFC2822(s) { // Remove comments and folding whitespace and replace multiple-spaces with a single space - return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + return s + .replace(/\([^)]*\)|[\n\t]/g, ' ') + .replace(/(\s\s+)/g, ' ') + .replace(/^\s\s*/, '') + .replace(/\s\s*$/, ''); } function checkWeekday(weekdayStr, parsedInput, config) { if (weekdayStr) { - // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + // TODO: Replace the vanilla JS Date object with an independent day-of-week check. var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), - weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); + weekdayActual = new Date( + parsedInput[0], + parsedInput[1], + parsedInput[2] + ).getDay(); if (weekdayProvided !== weekdayActual) { getParsingFlags(config).weekdayMismatch = true; config._isValid = false; @@ -2309,19 +2462,6 @@ return true; } - var obsOffsets = { - UT: 0, - GMT: 0, - EDT: -4 * 60, - EST: -5 * 60, - CDT: -5 * 60, - CST: -6 * 60, - MDT: -6 * 60, - MST: -7 * 60, - PDT: -7 * 60, - PST: -8 * 60 - }; - function calculateOffset(obsOffset, militaryOffset, numOffset) { if (obsOffset) { return obsOffsets[obsOffset]; @@ -2329,17 +2469,26 @@ // the only allowed military tz is Z return 0; } else { - var hm = parseInt(numOffset, 10); - var m = hm % 100, h = (hm - m) / 100; + var hm = parseInt(numOffset, 10), + m = hm % 100, + h = (hm - m) / 100; return h * 60 + m; } } // date and time from ref 2822 format function configFromRFC2822(config) { - var match = rfc2822.exec(preprocessRFC2822(config._i)); + var match = rfc2822.exec(preprocessRFC2822(config._i)), + parsedArray; if (match) { - var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); + parsedArray = extractFromRFC2822Strings( + match[4], + match[3], + match[2], + match[5], + match[6], + match[7] + ); if (!checkWeekday(match[1], parsedArray, config)) { return; } @@ -2356,10 +2505,9 @@ } } - // date from iso format or fallback + // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict function configFromString(config) { var matched = aspNetJsonRegex.exec(config._i); - if (matched !== null) { config._d = new Date(+matched[1]); return; @@ -2379,20 +2527,202 @@ return; } - // Final attempt, use Input Fallback - hooks.createFromInputFallback(config); + if (config._strict) { + config._isValid = false; + } else { + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); + } } hooks.createFromInputFallback = deprecate( 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) { config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); } ); + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [ + nowValue.getUTCFullYear(), + nowValue.getUTCMonth(), + nowValue.getUTCDate(), + ]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray(config) { + var i, + date, + input = [], + currentDate, + expectedWeekday, + yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if ( + config._dayOfYear > daysInYear(yearToUse) || + config._dayOfYear === 0 + ) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = + config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if ( + config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0 + ) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply( + null, + input + ); + expectedWeekday = config._useUTC + ? config._d.getUTCDay() + : config._d.getDay(); + + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + + // check for mismatching day of week + if ( + config._w && + typeof config._w.d !== 'undefined' && + config._w.d !== expectedWeekday + ) { + getParsingFlags(config).weekdayMismatch = true; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults( + w.GG, + config._a[YEAR], + weekOfYear(createLocal(), 1, 4).year + ); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from beginning of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to beginning of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + } + // constant that refers to the ISO standard hooks.ISO_8601 = function () {}; @@ -2415,15 +2745,22 @@ // This array is used to make a Date, either with `new Date` or `Date.UTC` var string = '' + config._i, - i, parsedInput, tokens, token, skipped, + i, + parsedInput, + tokens, + token, + skipped, stringLength = string.length, - totalParsedInputLength = 0; + totalParsedInputLength = 0, + era; - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + tokens = + expandFormat(config._f, config._locale).match(formattingTokens) || []; for (i = 0; i < tokens.length; i++) { token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || + [])[0]; // console.log('token', token, 'parsedInput', parsedInput, // 'regex', getParseRegexForToken(token, config)); if (parsedInput) { @@ -2431,48 +2768,60 @@ if (skipped.length > 0) { getParsingFlags(config).unusedInput.push(skipped); } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + string = string.slice( + string.indexOf(parsedInput) + parsedInput.length + ); totalParsedInputLength += parsedInput.length; } // don't parse if it's not a known token if (formatTokenFunctions[token]) { if (parsedInput) { getParsingFlags(config).empty = false; - } - else { + } else { getParsingFlags(config).unusedTokens.push(token); } addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { + } else if (config._strict && !parsedInput) { getParsingFlags(config).unusedTokens.push(token); } } // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + getParsingFlags(config).charsLeftOver = + stringLength - totalParsedInputLength; if (string.length > 0) { getParsingFlags(config).unusedInput.push(string); } // clear _12h flag if hour is <= 12 - if (config._a[HOUR] <= 12 && + if ( + config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && - config._a[HOUR] > 0) { + config._a[HOUR] > 0 + ) { getParsingFlags(config).bigHour = undefined; } getParsingFlags(config).parsedDateParts = config._a.slice(0); getParsingFlags(config).meridiem = config._meridiem; // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + config._a[HOUR] = meridiemFixWrap( + config._locale, + config._a[HOUR], + config._meridiem + ); + + // handle era + era = getParsingFlags(config).era; + if (era !== null) { + config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); + } configFromArray(config); checkOverflow(config); } - - function meridiemFixWrap (locale, hour, meridiem) { + function meridiemFixWrap(locale, hour, meridiem) { var isPm; if (meridiem == null) { @@ -2501,10 +2850,11 @@ function configFromStringAndArray(config) { var tempConfig, bestMoment, - scoreToBeat, i, - currentScore; + currentScore, + validFormatFound, + bestFormatIsValid = false; if (config._f.length === 0) { getParsingFlags(config).invalidFormat = true; @@ -2514,6 +2864,7 @@ for (i = 0; i < config._f.length; i++) { currentScore = 0; + validFormatFound = false; tempConfig = copyConfig({}, config); if (config._useUTC != null) { tempConfig._useUTC = config._useUTC; @@ -2521,8 +2872,8 @@ tempConfig._f = config._f[i]; configFromStringAndFormat(tempConfig); - if (!isValid(tempConfig)) { - continue; + if (isValid(tempConfig)) { + validFormatFound = true; } // if there is any input that was not parsed add a penalty for that format @@ -2533,9 +2884,23 @@ getParsingFlags(tempConfig).score = currentScore; - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; + if (!bestFormatIsValid) { + if ( + scoreToBeat == null || + currentScore < scoreToBeat || + validFormatFound + ) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + if (validFormatFound) { + bestFormatIsValid = true; + } + } + } else { + if (currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } } } @@ -2547,15 +2912,19 @@ return; } - var i = normalizeObjectUnits(config._i); - config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { - return obj && parseInt(obj, 10); - }); + var i = normalizeObjectUnits(config._i), + dayOrDate = i.day === undefined ? i.date : i.day; + config._a = map( + [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], + function (obj) { + return obj && parseInt(obj, 10); + } + ); configFromArray(config); } - function createFromConfig (config) { + function createFromConfig(config) { var res = new Moment(checkOverflow(prepareConfig(config))); if (res._nextDay) { // Adding is smart enough around DST @@ -2566,14 +2935,14 @@ return res; } - function prepareConfig (config) { + function prepareConfig(config) { var input = config._i, format = config._f; config._locale = config._locale || getLocale(config._l); if (input === null || (format === undefined && input === '')) { - return createInvalid({nullInput: true}); + return createInvalid({ nullInput: true }); } if (typeof input === 'string') { @@ -2588,7 +2957,7 @@ configFromStringAndArray(config); } else if (format) { configFromStringAndFormat(config); - } else { + } else { configFromInput(config); } @@ -2622,16 +2991,23 @@ } } - function createLocalOrUTC (input, format, locale, strict, isUTC) { + function createLocalOrUTC(input, format, locale, strict, isUTC) { var c = {}; + if (format === true || format === false) { + strict = format; + format = undefined; + } + if (locale === true || locale === false) { strict = locale; locale = undefined; } - if ((isObject(input) && isObjectEmpty(input)) || - (isArray(input) && input.length === 0)) { + if ( + (isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0) + ) { input = undefined; } // object construction must be done this way. @@ -2646,33 +3022,32 @@ return createFromConfig(c); } - function createLocal (input, format, locale, strict) { + function createLocal(input, format, locale, strict) { return createLocalOrUTC(input, format, locale, strict, false); } var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } } - } - ); - - var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); + ), + prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } } - } - ); + ); // Pick a moment m from moments so that m[fn](other) is true for all // other. This relies on the function fn to be transitive. @@ -2697,33 +3072,51 @@ } // TODO: Use [].sort instead? - function min () { + function min() { var args = [].slice.call(arguments, 0); return pickBy('isBefore', args); } - function max () { + function max() { var args = [].slice.call(arguments, 0); return pickBy('isAfter', args); } var now = function () { - return Date.now ? Date.now() : +(new Date()); + return Date.now ? Date.now() : +new Date(); }; - var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + var ordering = [ + 'year', + 'quarter', + 'month', + 'week', + 'day', + 'hour', + 'minute', + 'second', + 'millisecond', + ]; function isDurationValid(m) { - for (var key in m) { - if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + var key, + unitHasDecimal = false, + i; + for (key in m) { + if ( + hasOwnProp(m, key) && + !( + indexOf.call(ordering, key) !== -1 && + (m[key] == null || !isNaN(m[key])) + ) + ) { return false; } } - var unitHasDecimal = false; - for (var i = 0; i < ordering.length; ++i) { + for (i = 0; i < ordering.length; ++i) { if (m[ordering[i]]) { if (unitHasDecimal) { return false; // only allow non-integers for smallest unit @@ -2745,7 +3138,7 @@ return createDuration(NaN); } - function Duration (duration) { + function Duration(duration) { var normalizedInput = normalizeObjectUnits(duration), years = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, @@ -2760,20 +3153,18 @@ this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove - this._milliseconds = +milliseconds + + this._milliseconds = + +milliseconds + seconds * 1e3 + // 1000 minutes * 6e4 + // 1000 * 60 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 // Because of dateAddRemove treats 24 hours as different from a // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; + this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing // which months you are are talking about, so we have to store // it separately. - this._months = +months + - quarters * 3 + - years * 12; + this._months = +months + quarters * 3 + years * 12; this._data = {}; @@ -2782,11 +3173,11 @@ this._bubble(); } - function isDuration (obj) { + function isDuration(obj) { return obj instanceof Duration; } - function absRound (number) { + function absRound(number) { if (number < 0) { return Math.round(-1 * number) * -1; } else { @@ -2794,17 +3185,39 @@ } } + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ( + (dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i])) + ) { + diffs++; + } + } + return diffs + lengthDiff; + } + // FORMATTING - function offset (token, separator) { + function offset(token, separator) { addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; + var offset = this.utcOffset(), + sign = '+'; if (offset < 0) { offset = -offset; sign = '-'; } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + return ( + sign + + zeroFill(~~(offset / 60), 2) + + separator + + zeroFill(~~offset % 60, 2) + ); }); } @@ -2813,7 +3226,7 @@ // PARSING - addRegexToken('Z', matchShortOffset); + addRegexToken('Z', matchShortOffset); addRegexToken('ZZ', matchShortOffset); addParseToken(['Z', 'ZZ'], function (input, array, config) { config._useUTC = true; @@ -2828,19 +3241,20 @@ var chunkOffset = /([\+\-]|\d\d)/gi; function offsetFromString(matcher, string) { - var matches = (string || '').match(matcher); + var matches = (string || '').match(matcher), + chunk, + parts, + minutes; if (matches === null) { return null; } - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); + chunk = matches[matches.length - 1] || []; + parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + minutes = +(parts[1] * 60) + toInt(parts[2]); - return minutes === 0 ? - 0 : - parts[0] === '+' ? minutes : -minutes; + return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes; } // Return a moment from input, that is local/utc/zone equivalent to model. @@ -2848,7 +3262,10 @@ var res, diff; if (model._isUTC) { res = model.clone(); - diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + diff = + (isMoment(input) || isDate(input) + ? input.valueOf() + : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api. res._d.setTime(res._d.valueOf() + diff); hooks.updateOffset(res, false); @@ -2858,10 +3275,10 @@ } } - function getDateOffset (m) { + function getDateOffset(m) { // On Firefox.24 Date#getTimezoneOffset returns a floating point. // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + return -Math.round(m._d.getTimezoneOffset()); } // HOOKS @@ -2882,7 +3299,7 @@ // a second time. In case it wants us to change the offset again // _changeInProgress == true case, then we have to adjust, because // there is no such time in the given timezone. - function getSetOffset (input, keepLocalTime, keepMinutes) { + function getSetOffset(input, keepLocalTime, keepMinutes) { var offset = this._offset || 0, localAdjust; if (!this.isValid()) { @@ -2907,7 +3324,12 @@ } if (offset !== input) { if (!keepLocalTime || this._changeInProgress) { - addSubtract(this, createDuration(input - offset, 'm'), 1, false); + addSubtract( + this, + createDuration(input - offset, 'm'), + 1, + false + ); } else if (!this._changeInProgress) { this._changeInProgress = true; hooks.updateOffset(this, true); @@ -2920,7 +3342,7 @@ } } - function getSetZone (input, keepLocalTime) { + function getSetZone(input, keepLocalTime) { if (input != null) { if (typeof input !== 'string') { input = -input; @@ -2934,11 +3356,11 @@ } } - function setOffsetToUTC (keepLocalTime) { + function setOffsetToUTC(keepLocalTime) { return this.utcOffset(0, keepLocalTime); } - function setOffsetToLocal (keepLocalTime) { + function setOffsetToLocal(keepLocalTime) { if (this._isUTC) { this.utcOffset(0, keepLocalTime); this._isUTC = false; @@ -2950,22 +3372,21 @@ return this; } - function setOffsetToParsedOffset () { + function setOffsetToParsedOffset() { if (this._tzm != null) { this.utcOffset(this._tzm, false, true); } else if (typeof this._i === 'string') { var tZone = offsetFromString(matchOffset, this._i); if (tZone != null) { this.utcOffset(tZone); - } - else { + } else { this.utcOffset(0, true); } } return this; } - function hasAlignedHourOffset (input) { + function hasAlignedHourOffset(input) { if (!this.isValid()) { return false; } @@ -2974,27 +3395,28 @@ return (this.utcOffset() - input) % 60 === 0; } - function isDaylightSavingTime () { + function isDaylightSavingTime() { return ( this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() ); } - function isDaylightSavingTimeShifted () { + function isDaylightSavingTimeShifted() { if (!isUndefined(this._isDSTShifted)) { return this._isDSTShifted; } - var c = {}; + var c = {}, + other; copyConfig(c, this); c = prepareConfig(c); if (c._a) { - var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; + other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = + this.isValid() && compareArrays(c._a, other.toArray()) > 0; } else { this._isDSTShifted = false; } @@ -3002,27 +3424,26 @@ return this._isDSTShifted; } - function isLocal () { + function isLocal() { return this.isValid() ? !this._isUTC : false; } - function isUtcOffset () { + function isUtcOffset() { return this.isValid() ? this._isUTC : false; } - function isUtc () { + function isUtc() { return this.isValid() ? this._isUTC && this._offset === 0 : false; } // ASP.NET json date format regex - var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; - - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - // and further modified to allow for strings containing both week and day - var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; + var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; - function createDuration (input, key) { + function createDuration(input, key) { var duration = input, // matching against regexp is expensive, do it on demand match = null, @@ -3032,42 +3453,49 @@ if (isDuration(input)) { duration = { - ms : input._milliseconds, - d : input._days, - M : input._months + ms: input._milliseconds, + d: input._days, + M: input._months, }; - } else if (isNumber(input)) { + } else if (isNumber(input) || !isNaN(+input)) { duration = {}; if (key) { - duration[key] = input; + duration[key] = +input; } else { - duration.milliseconds = input; + duration.milliseconds = +input; } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; + } else if ((match = aspNetRegex.exec(input))) { + sign = match[1] === '-' ? -1 : 1; duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match }; - } else if (!!(match = isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; + } else if ((match = isoRegex.exec(input))) { + sign = match[1] === '-' ? -1 : 1; duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - w : parseIso(match[4], sign), - d : parseIso(match[5], sign), - h : parseIso(match[6], sign), - m : parseIso(match[7], sign), - s : parseIso(match[8], sign) + y: parseIso(match[2], sign), + M: parseIso(match[3], sign), + w: parseIso(match[4], sign), + d: parseIso(match[5], sign), + h: parseIso(match[6], sign), + m: parseIso(match[7], sign), + s: parseIso(match[8], sign), }; - } else if (duration == null) {// checks for null or undefined + } else if (duration == null) { + // checks for null or undefined duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + } else if ( + typeof duration === 'object' && + ('from' in duration || 'to' in duration) + ) { + diffRes = momentsDifference( + createLocal(duration.from), + createLocal(duration.to) + ); duration = {}; duration.ms = diffRes.milliseconds; @@ -3080,13 +3508,17 @@ ret._locale = input._locale; } + if (isDuration(input) && hasOwnProp(input, '_isValid')) { + ret._isValid = input._isValid; + } + return ret; } createDuration.fn = Duration.prototype; createDuration.invalid = createInvalid$1; - function parseIso (inp, sign) { + function parseIso(inp, sign) { // We'd normally use ~~inp for this, but unfortunately it also // converts floats to ints. // inp may be undefined, so careful calling replace on it. @@ -3098,13 +3530,13 @@ function positiveMomentsDifference(base, other) { var res = {}; - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; + res.months = + other.month() - base.month() + (other.year() - base.year()) * 12; if (base.clone().add(res.months, 'M').isAfter(other)) { --res.months; } - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + res.milliseconds = +other - +base.clone().add(res.months, 'M'); return res; } @@ -3112,7 +3544,7 @@ function momentsDifference(base, other) { var res; if (!(base.isValid() && other.isValid())) { - return {milliseconds: 0, months: 0}; + return { milliseconds: 0, months: 0 }; } other = cloneWithOffset(other, base); @@ -3133,19 +3565,27 @@ var dur, tmp; //invert the arguments, but complain about it if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + - 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); - tmp = val; val = period; period = tmp; + deprecateSimple( + name, + 'moment().' + + name + + '(period, number) is deprecated. Please use moment().' + + name + + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.' + ); + tmp = val; + val = period; + period = tmp; } - val = typeof val === 'string' ? +val : val; dur = createDuration(val, period); addSubtract(this, dur, direction); return this; }; } - function addSubtract (mom, duration, isAdding, updateOffset) { + function addSubtract(mom, duration, isAdding, updateOffset) { var milliseconds = duration._milliseconds, days = absRound(duration._days), months = absRound(duration._months); @@ -3171,36 +3611,150 @@ } } - var add = createAdder(1, 'add'); - var subtract = createAdder(-1, 'subtract'); + var add = createAdder(1, 'add'), + subtract = createAdder(-1, 'subtract'); - function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - return diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; + function isString(input) { + return typeof input === 'string' || input instanceof String; } - function calendar$1 (time, formats) { + // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined + function isMomentInput(input) { + return ( + isMoment(input) || + isDate(input) || + isString(input) || + isNumber(input) || + isNumberOrStringArray(input) || + isMomentInputObject(input) || + input === null || + input === undefined + ); + } + + function isMomentInputObject(input) { + var objectTest = isObject(input) && !isObjectEmpty(input), + propertyTest = false, + properties = [ + 'years', + 'year', + 'y', + 'months', + 'month', + 'M', + 'days', + 'day', + 'd', + 'dates', + 'date', + 'D', + 'hours', + 'hour', + 'h', + 'minutes', + 'minute', + 'm', + 'seconds', + 'second', + 's', + 'milliseconds', + 'millisecond', + 'ms', + ], + i, + property; + + for (i = 0; i < properties.length; i += 1) { + property = properties[i]; + propertyTest = propertyTest || hasOwnProp(input, property); + } + + return objectTest && propertyTest; + } + + function isNumberOrStringArray(input) { + var arrayTest = isArray(input), + dataTypeTest = false; + if (arrayTest) { + dataTypeTest = + input.filter(function (item) { + return !isNumber(item) && isString(input); + }).length === 0; + } + return arrayTest && dataTypeTest; + } + + function isCalendarSpec(input) { + var objectTest = isObject(input) && !isObjectEmpty(input), + propertyTest = false, + properties = [ + 'sameDay', + 'nextDay', + 'lastDay', + 'nextWeek', + 'lastWeek', + 'sameElse', + ], + i, + property; + + for (i = 0; i < properties.length; i += 1) { + property = properties[i]; + propertyTest = propertyTest || hasOwnProp(input, property); + } + + return objectTest && propertyTest; + } + + function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 + ? 'sameElse' + : diff < -1 + ? 'lastWeek' + : diff < 0 + ? 'lastDay' + : diff < 1 + ? 'sameDay' + : diff < 2 + ? 'nextDay' + : diff < 7 + ? 'nextWeek' + : 'sameElse'; + } + + function calendar$1(time, formats) { + // Support for single parameter, formats only overload to the calendar function + if (arguments.length === 1) { + if (isMomentInput(arguments[0])) { + time = arguments[0]; + formats = undefined; + } else if (isCalendarSpec(arguments[0])) { + formats = arguments[0]; + time = undefined; + } + } // We want to compare the start of today, vs this. // Getting start-of-today depends on whether we're local/utc/offset or not. var now = time || createLocal(), sod = cloneWithOffset(now, this).startOf('day'), - format = hooks.calendarFormat(this, sod) || 'sameElse'; - - var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); - - return this.format(output || this.localeData().calendar(format, this, createLocal(now))); + format = hooks.calendarFormat(this, sod) || 'sameElse', + output = + formats && + (isFunction(formats[format]) + ? formats[format].call(this, now) + : formats[format]); + + return this.format( + output || this.localeData().calendar(format, this, createLocal(now)) + ); } - function clone () { + function clone() { return new Moment(this); } - function isAfter (input, units) { + function isAfter(input, units) { var localInput = isMoment(input) ? input : createLocal(input); if (!(this.isValid() && localInput.isValid())) { return false; @@ -3213,7 +3767,7 @@ } } - function isBefore (input, units) { + function isBefore(input, units) { var localInput = isMoment(input) ? input : createLocal(input); if (!(this.isValid() && localInput.isValid())) { return false; @@ -3226,18 +3780,24 @@ } } - function isBetween (from, to, units, inclusivity) { + function isBetween(from, to, units, inclusivity) { var localFrom = isMoment(from) ? from : createLocal(from), localTo = isMoment(to) ? to : createLocal(to); if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { return false; } inclusivity = inclusivity || '()'; - return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && - (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units)); + return ( + (inclusivity[0] === '(' + ? this.isAfter(localFrom, units) + : !this.isBefore(localFrom, units)) && + (inclusivity[1] === ')' + ? this.isBefore(localTo, units) + : !this.isAfter(localTo, units)) + ); } - function isSame (input, units) { + function isSame(input, units) { var localInput = isMoment(input) ? input : createLocal(input), inputMs; if (!(this.isValid() && localInput.isValid())) { @@ -3248,22 +3808,23 @@ return this.valueOf() === localInput.valueOf(); } else { inputMs = localInput.valueOf(); - return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + return ( + this.clone().startOf(units).valueOf() <= inputMs && + inputMs <= this.clone().endOf(units).valueOf() + ); } } - function isSameOrAfter (input, units) { + function isSameOrAfter(input, units) { return this.isSame(input, units) || this.isAfter(input, units); } - function isSameOrBefore (input, units) { + function isSameOrBefore(input, units) { return this.isSame(input, units) || this.isBefore(input, units); } - function diff (input, units, asFloat) { - var that, - zoneDelta, - output; + function diff(input, units, asFloat) { + var that, zoneDelta, output; if (!this.isValid()) { return NaN; @@ -3280,26 +3841,49 @@ units = normalizeUnits(units); switch (units) { - case 'year': output = monthDiff(this, that) / 12; break; - case 'month': output = monthDiff(this, that); break; - case 'quarter': output = monthDiff(this, that) / 3; break; - case 'second': output = (this - that) / 1e3; break; // 1000 - case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 - case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 - case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst - case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst - default: output = this - that; + case 'year': + output = monthDiff(this, that) / 12; + break; + case 'month': + output = monthDiff(this, that); + break; + case 'quarter': + output = monthDiff(this, that) / 3; + break; + case 'second': + output = (this - that) / 1e3; + break; // 1000 + case 'minute': + output = (this - that) / 6e4; + break; // 1000 * 60 + case 'hour': + output = (this - that) / 36e5; + break; // 1000 * 60 * 60 + case 'day': + output = (this - that - zoneDelta) / 864e5; + break; // 1000 * 60 * 60 * 24, negate dst + case 'week': + output = (this - that - zoneDelta) / 6048e5; + break; // 1000 * 60 * 60 * 24 * 7, negate dst + default: + output = this - that; } return asFloat ? output : absFloor(output); } - function monthDiff (a, b) { + function monthDiff(a, b) { + if (a.date() < b.date()) { + // end-of-month calculations work correct when the start month has more + // days than the end month. + return -monthDiff(b, a); + } // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), // b is in (anchor - 1 month, anchor + 1 month) anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + anchor2, + adjust; if (b - anchor < 0) { anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); @@ -3318,7 +3902,7 @@ hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; - function toString () { + function toString() { return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); } @@ -3326,20 +3910,30 @@ if (!this.isValid()) { return null; } - var utc = keepOffset !== true; - var m = utc ? this.clone().utc() : this; + var utc = keepOffset !== true, + m = utc ? this.clone().utc() : this; if (m.year() < 0 || m.year() > 9999) { - return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); + return formatMoment( + m, + utc + ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' + : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ' + ); } if (isFunction(Date.prototype.toISOString)) { // native implementation is ~50x faster, use it when we can if (utc) { return this.toDate().toISOString(); } else { - return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z')); + return new Date(this.valueOf() + this.utcOffset() * 60 * 1000) + .toISOString() + .replace('Z', formatMoment(m, 'Z')); } } - return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); + return formatMoment( + m, + utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ' + ); } /** @@ -3348,64 +3942,76 @@ * * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects */ - function inspect () { + function inspect() { if (!this.isValid()) { return 'moment.invalid(/* ' + this._i + ' */)'; } - var func = 'moment'; - var zone = ''; + var func = 'moment', + zone = '', + prefix, + year, + datetime, + suffix; if (!this.isLocal()) { func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; zone = 'Z'; } - var prefix = '[' + func + '("]'; - var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; - var datetime = '-MM-DD[T]HH:mm:ss.SSS'; - var suffix = zone + '[")]'; + prefix = '[' + func + '("]'; + year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY'; + datetime = '-MM-DD[T]HH:mm:ss.SSS'; + suffix = zone + '[")]'; return this.format(prefix + year + datetime + suffix); } - function format (inputString) { + function format(inputString) { if (!inputString) { - inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + inputString = this.isUtc() + ? hooks.defaultFormatUtc + : hooks.defaultFormat; } var output = formatMoment(this, inputString); return this.localeData().postformat(output); } - function from (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + function from(time, withoutSuffix) { + if ( + this.isValid() && + ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) + ) { + return createDuration({ to: this, from: time }) + .locale(this.locale()) + .humanize(!withoutSuffix); } else { return this.localeData().invalidDate(); } } - function fromNow (withoutSuffix) { + function fromNow(withoutSuffix) { return this.from(createLocal(), withoutSuffix); } - function to (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + function to(time, withoutSuffix) { + if ( + this.isValid() && + ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) + ) { + return createDuration({ from: this, to: time }) + .locale(this.locale()) + .humanize(!withoutSuffix); } else { return this.localeData().invalidDate(); } } - function toNow (withoutSuffix) { + function toNow(withoutSuffix) { return this.to(createLocal(), withoutSuffix); } // If passed a locale key, it will set the locale for this // instance. Otherwise, it will return the locale configuration // variables for this instance. - function locale (key) { + function locale(key) { var newLocaleData; if (key === undefined) { @@ -3430,18 +4036,18 @@ } ); - function localeData () { + function localeData() { return this._locale; } - var MS_PER_SECOND = 1000; - var MS_PER_MINUTE = 60 * MS_PER_SECOND; - var MS_PER_HOUR = 60 * MS_PER_MINUTE; - var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; + var MS_PER_SECOND = 1000, + MS_PER_MINUTE = 60 * MS_PER_SECOND, + MS_PER_HOUR = 60 * MS_PER_MINUTE, + MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970): function mod$1(dividend, divisor) { - return (dividend % divisor + divisor) % divisor; + return ((dividend % divisor) + divisor) % divisor; } function localStartOfDate(y, m, d) { @@ -3464,30 +4070,42 @@ } } - function startOf (units) { - var time; + function startOf(units) { + var time, startOfDate; units = normalizeUnits(units); if (units === undefined || units === 'millisecond' || !this.isValid()) { return this; } - var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; + startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; switch (units) { case 'year': time = startOfDate(this.year(), 0, 1); break; case 'quarter': - time = startOfDate(this.year(), this.month() - this.month() % 3, 1); + time = startOfDate( + this.year(), + this.month() - (this.month() % 3), + 1 + ); break; case 'month': time = startOfDate(this.year(), this.month(), 1); break; case 'week': - time = startOfDate(this.year(), this.month(), this.date() - this.weekday()); + time = startOfDate( + this.year(), + this.month(), + this.date() - this.weekday() + ); break; case 'isoWeek': - time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); + time = startOfDate( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + ); break; case 'day': case 'date': @@ -3495,7 +4113,10 @@ break; case 'hour': time = this._d.valueOf(); - time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR); + time -= mod$1( + time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), + MS_PER_HOUR + ); break; case 'minute': time = this._d.valueOf(); @@ -3512,30 +4133,45 @@ return this; } - function endOf (units) { - var time; + function endOf(units) { + var time, startOfDate; units = normalizeUnits(units); if (units === undefined || units === 'millisecond' || !this.isValid()) { return this; } - var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; + startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; switch (units) { case 'year': time = startOfDate(this.year() + 1, 0, 1) - 1; break; case 'quarter': - time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; + time = + startOfDate( + this.year(), + this.month() - (this.month() % 3) + 3, + 1 + ) - 1; break; case 'month': time = startOfDate(this.year(), this.month() + 1, 1) - 1; break; case 'week': - time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; + time = + startOfDate( + this.year(), + this.month(), + this.date() - this.weekday() + 7 + ) - 1; break; case 'isoWeek': - time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; + time = + startOfDate( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + 7 + ) - 1; break; case 'day': case 'date': @@ -3543,7 +4179,13 @@ break; case 'hour': time = this._d.valueOf(); - time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1; + time += + MS_PER_HOUR - + mod$1( + time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), + MS_PER_HOUR + ) - + 1; break; case 'minute': time = this._d.valueOf(); @@ -3560,24 +4202,32 @@ return this; } - function valueOf () { - return this._d.valueOf() - ((this._offset || 0) * 60000); + function valueOf() { + return this._d.valueOf() - (this._offset || 0) * 60000; } - function unix () { + function unix() { return Math.floor(this.valueOf() / 1000); } - function toDate () { + function toDate() { return new Date(this.valueOf()); } - function toArray () { + function toArray() { var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + return [ + m.year(), + m.month(), + m.date(), + m.hour(), + m.minute(), + m.second(), + m.millisecond(), + ]; } - function toObject () { + function toObject() { var m = this; return { years: m.year(), @@ -3586,35 +4236,316 @@ hours: m.hours(), minutes: m.minutes(), seconds: m.seconds(), - milliseconds: m.milliseconds() + milliseconds: m.milliseconds(), }; } - function toJSON () { + function toJSON() { // new Date(NaN).toJSON() === null return this.isValid() ? this.toISOString() : null; } - function isValid$2 () { + function isValid$2() { return isValid(this); } - function parsingFlags () { + function parsingFlags() { return extend({}, getParsingFlags(this)); } - function invalidAt () { + function invalidAt() { return getParsingFlags(this).overflow; } - function creationData() { - return { - input: this._i, - format: this._f, - locale: this._locale, - isUTC: this._isUTC, - strict: this._strict - }; + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict, + }; + } + + addFormatToken('N', 0, 0, 'eraAbbr'); + addFormatToken('NN', 0, 0, 'eraAbbr'); + addFormatToken('NNN', 0, 0, 'eraAbbr'); + addFormatToken('NNNN', 0, 0, 'eraName'); + addFormatToken('NNNNN', 0, 0, 'eraNarrow'); + + addFormatToken('y', ['y', 1], 'yo', 'eraYear'); + addFormatToken('y', ['yy', 2], 0, 'eraYear'); + addFormatToken('y', ['yyy', 3], 0, 'eraYear'); + addFormatToken('y', ['yyyy', 4], 0, 'eraYear'); + + addRegexToken('N', matchEraAbbr); + addRegexToken('NN', matchEraAbbr); + addRegexToken('NNN', matchEraAbbr); + addRegexToken('NNNN', matchEraName); + addRegexToken('NNNNN', matchEraNarrow); + + addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function ( + input, + array, + config, + token + ) { + var era = config._locale.erasParse(input, token, config._strict); + if (era) { + getParsingFlags(config).era = era; + } else { + getParsingFlags(config).invalidEra = input; + } + }); + + addRegexToken('y', matchUnsigned); + addRegexToken('yy', matchUnsigned); + addRegexToken('yyy', matchUnsigned); + addRegexToken('yyyy', matchUnsigned); + addRegexToken('yo', matchEraYearOrdinal); + + addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR); + addParseToken(['yo'], function (input, array, config, token) { + var match; + if (config._locale._eraYearOrdinalRegex) { + match = input.match(config._locale._eraYearOrdinalRegex); + } + + if (config._locale.eraYearOrdinalParse) { + array[YEAR] = config._locale.eraYearOrdinalParse(input, match); + } else { + array[YEAR] = parseInt(input, 10); + } + }); + + function localeEras(m, format) { + var i, + l, + date, + eras = this._eras || getLocale('en')._eras; + for (i = 0, l = eras.length; i < l; ++i) { + switch (typeof eras[i].since) { + case 'string': + // truncate time + date = hooks(eras[i].since).startOf('day'); + eras[i].since = date.valueOf(); + break; + } + + switch (typeof eras[i].until) { + case 'undefined': + eras[i].until = +Infinity; + break; + case 'string': + // truncate time + date = hooks(eras[i].until).startOf('day').valueOf(); + eras[i].until = date.valueOf(); + break; + } + } + return eras; + } + + function localeErasParse(eraName, format, strict) { + var i, + l, + eras = this.eras(), + name, + abbr, + narrow; + eraName = eraName.toUpperCase(); + + for (i = 0, l = eras.length; i < l; ++i) { + name = eras[i].name.toUpperCase(); + abbr = eras[i].abbr.toUpperCase(); + narrow = eras[i].narrow.toUpperCase(); + + if (strict) { + switch (format) { + case 'N': + case 'NN': + case 'NNN': + if (abbr === eraName) { + return eras[i]; + } + break; + + case 'NNNN': + if (name === eraName) { + return eras[i]; + } + break; + + case 'NNNNN': + if (narrow === eraName) { + return eras[i]; + } + break; + } + } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { + return eras[i]; + } + } + } + + function localeErasConvertYear(era, year) { + var dir = era.since <= era.until ? +1 : -1; + if (year === undefined) { + return hooks(era.since).year(); + } else { + return hooks(era.since).year() + (year - era.offset) * dir; + } + } + + function getEraName() { + var i, + l, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + // truncate time + val = this.startOf('day').valueOf(); + + if (eras[i].since <= val && val <= eras[i].until) { + return eras[i].name; + } + if (eras[i].until <= val && val <= eras[i].since) { + return eras[i].name; + } + } + + return ''; + } + + function getEraNarrow() { + var i, + l, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + // truncate time + val = this.startOf('day').valueOf(); + + if (eras[i].since <= val && val <= eras[i].until) { + return eras[i].narrow; + } + if (eras[i].until <= val && val <= eras[i].since) { + return eras[i].narrow; + } + } + + return ''; + } + + function getEraAbbr() { + var i, + l, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + // truncate time + val = this.startOf('day').valueOf(); + + if (eras[i].since <= val && val <= eras[i].until) { + return eras[i].abbr; + } + if (eras[i].until <= val && val <= eras[i].since) { + return eras[i].abbr; + } + } + + return ''; + } + + function getEraYear() { + var i, + l, + dir, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + dir = eras[i].since <= eras[i].until ? +1 : -1; + + // truncate time + val = this.startOf('day').valueOf(); + + if ( + (eras[i].since <= val && val <= eras[i].until) || + (eras[i].until <= val && val <= eras[i].since) + ) { + return ( + (this.year() - hooks(eras[i].since).year()) * dir + + eras[i].offset + ); + } + } + + return this.year(); + } + + function erasNameRegex(isStrict) { + if (!hasOwnProp(this, '_erasNameRegex')) { + computeErasParse.call(this); + } + return isStrict ? this._erasNameRegex : this._erasRegex; + } + + function erasAbbrRegex(isStrict) { + if (!hasOwnProp(this, '_erasAbbrRegex')) { + computeErasParse.call(this); + } + return isStrict ? this._erasAbbrRegex : this._erasRegex; + } + + function erasNarrowRegex(isStrict) { + if (!hasOwnProp(this, '_erasNarrowRegex')) { + computeErasParse.call(this); + } + return isStrict ? this._erasNarrowRegex : this._erasRegex; + } + + function matchEraAbbr(isStrict, locale) { + return locale.erasAbbrRegex(isStrict); + } + + function matchEraName(isStrict, locale) { + return locale.erasNameRegex(isStrict); + } + + function matchEraNarrow(isStrict, locale) { + return locale.erasNarrowRegex(isStrict); + } + + function matchEraYearOrdinal(isStrict, locale) { + return locale._eraYearOrdinalRegex || matchUnsigned; + } + + function computeErasParse() { + var abbrPieces = [], + namePieces = [], + narrowPieces = [], + mixedPieces = [], + i, + l, + 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)); + + mixedPieces.push(regexEscape(eras[i].name)); + mixedPieces.push(regexEscape(eras[i].abbr)); + mixedPieces.push(regexEscape(eras[i].narrow)); + } + + this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i'); + this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i'); + this._erasNarrowRegex = new RegExp( + '^(' + narrowPieces.join('|') + ')', + 'i' + ); } // FORMATTING @@ -3627,13 +4558,13 @@ return this.isoWeekYear() % 100; }); - function addWeekYearFormatToken (token, getter) { + function addWeekYearFormatToken(token, getter) { addFormatToken(0, [token, token.length], 0, getter); } - addWeekYearFormatToken('gggg', 'weekYear'); - addWeekYearFormatToken('ggggg', 'weekYear'); - addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES @@ -3646,19 +4577,23 @@ addUnitPriority('weekYear', 1); addUnitPriority('isoWeekYear', 1); - // PARSING - addRegexToken('G', matchSigned); - addRegexToken('g', matchSigned); - addRegexToken('GG', match1to2, match2); - addRegexToken('gg', match1to2, match2); - addRegexToken('GGGG', match1to4, match4); - addRegexToken('gggg', match1to4, match4); - addRegexToken('GGGGG', match1to6, match6); - addRegexToken('ggggg', match1to6, match6); - - addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function ( + input, + week, + config, + token + ) { week[token.substr(0, 2)] = toInt(input); }); @@ -3668,29 +4603,46 @@ // MOMENTS - function getSetWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, - this.week(), - this.weekday(), - this.localeData()._week.dow, - this.localeData()._week.doy); + function getSetWeekYear(input) { + return getSetWeekYearHelper.call( + this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy + ); } - function getSetISOWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, this.isoWeek(), this.isoWeekday(), 1, 4); + function getSetISOWeekYear(input) { + return getSetWeekYearHelper.call( + this, + input, + this.isoWeek(), + this.isoWeekday(), + 1, + 4 + ); } - function getISOWeeksInYear () { + function getISOWeeksInYear() { return weeksInYear(this.year(), 1, 4); } - function getWeeksInYear () { + function getISOWeeksInISOWeekYear() { + return weeksInYear(this.isoWeekYear(), 1, 4); + } + + function getWeeksInYear() { var weekInfo = this.localeData()._week; return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); } + function getWeeksInWeekYear() { + var weekInfo = this.localeData()._week; + return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); + } + function getSetWeekYearHelper(input, week, weekday, dow, doy) { var weeksTarget; if (input == null) { @@ -3735,8 +4687,10 @@ // MOMENTS - function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + function getSetQuarter(input) { + return input == null + ? Math.ceil((this.month() + 1) / 3) + : this.month((input - 1) * 3 + (this.month() % 3)); } // FORMATTING @@ -3752,13 +4706,13 @@ // PARSING - addRegexToken('D', match1to2); + addRegexToken('D', match1to2); addRegexToken('DD', match1to2, match2); addRegexToken('Do', function (isStrict, locale) { // TODO: Remove "ordinalParse" fallback in next major release. - return isStrict ? - (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : - locale._dayOfMonthOrdinalParseLenient; + return isStrict + ? locale._dayOfMonthOrdinalParse || locale._ordinalParse + : locale._dayOfMonthOrdinalParseLenient; }); addParseToken(['D', 'DD'], DATE); @@ -3783,7 +4737,7 @@ // PARSING - addRegexToken('DDD', match1to3); + addRegexToken('DDD', match1to3); addRegexToken('DDDD', match3); addParseToken(['DDD', 'DDDD'], function (input, array, config) { config._dayOfYear = toInt(input); @@ -3793,9 +4747,12 @@ // MOMENTS - function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + function getSetDayOfYear(input) { + var dayOfYear = + Math.round( + (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5 + ) + 1; + return input == null ? dayOfYear : this.add(input - dayOfYear, 'd'); } // FORMATTING @@ -3812,7 +4769,7 @@ // PARSING - addRegexToken('m', match1to2); + addRegexToken('m', match1to2); addRegexToken('mm', match1to2, match2); addParseToken(['m', 'mm'], MINUTE); @@ -3834,7 +4791,7 @@ // PARSING - addRegexToken('s', match1to2); + addRegexToken('s', match1to2); addRegexToken('ss', match1to2, match2); addParseToken(['s', 'ss'], SECOND); @@ -3872,7 +4829,6 @@ return this.millisecond() * 1000000; }); - // ALIASES addUnitAlias('millisecond', 'ms'); @@ -3883,11 +4839,11 @@ // PARSING - addRegexToken('S', match1to3, match1); - addRegexToken('SS', match1to3, match2); - addRegexToken('SSS', match1to3, match3); + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); - var token; + var token, getSetMillisecond; for (token = 'SSSS'; token.length <= 9; token += 'S') { addRegexToken(token, matchUnsigned); } @@ -3899,155 +4855,186 @@ for (token = 'S'; token.length <= 9; token += 'S') { addParseToken(token, parseMs); } - // MOMENTS - var getSetMillisecond = makeGetSet('Milliseconds', false); + getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING - addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('z', 0, 0, 'zoneAbbr'); addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS - function getZoneAbbr () { + function getZoneAbbr() { return this._isUTC ? 'UTC' : ''; } - function getZoneName () { + function getZoneName() { return this._isUTC ? 'Coordinated Universal Time' : ''; } var proto = Moment.prototype; - proto.add = add; - proto.calendar = calendar$1; - proto.clone = clone; - proto.diff = diff; - proto.endOf = endOf; - proto.format = format; - proto.from = from; - proto.fromNow = fromNow; - proto.to = to; - proto.toNow = toNow; - proto.get = stringGet; - proto.invalidAt = invalidAt; - proto.isAfter = isAfter; - proto.isBefore = isBefore; - proto.isBetween = isBetween; - proto.isSame = isSame; - proto.isSameOrAfter = isSameOrAfter; - proto.isSameOrBefore = isSameOrBefore; - proto.isValid = isValid$2; - proto.lang = lang; - proto.locale = locale; - proto.localeData = localeData; - proto.max = prototypeMax; - proto.min = prototypeMin; - proto.parsingFlags = parsingFlags; - proto.set = stringSet; - proto.startOf = startOf; - proto.subtract = subtract; - proto.toArray = toArray; - proto.toObject = toObject; - proto.toDate = toDate; - proto.toISOString = toISOString; - proto.inspect = inspect; - proto.toJSON = toJSON; - proto.toString = toString; - proto.unix = unix; - proto.valueOf = valueOf; - proto.creationData = creationData; - proto.year = getSetYear; + proto.add = add; + proto.calendar = calendar$1; + proto.clone = clone; + proto.diff = diff; + proto.endOf = endOf; + proto.format = format; + proto.from = from; + proto.fromNow = fromNow; + proto.to = to; + proto.toNow = toNow; + proto.get = stringGet; + proto.invalidAt = invalidAt; + proto.isAfter = isAfter; + proto.isBefore = isBefore; + proto.isBetween = isBetween; + proto.isSame = isSame; + proto.isSameOrAfter = isSameOrAfter; + proto.isSameOrBefore = isSameOrBefore; + proto.isValid = isValid$2; + proto.lang = lang; + proto.locale = locale; + proto.localeData = localeData; + proto.max = prototypeMax; + proto.min = prototypeMin; + proto.parsingFlags = parsingFlags; + proto.set = stringSet; + proto.startOf = startOf; + proto.subtract = subtract; + proto.toArray = toArray; + proto.toObject = toObject; + proto.toDate = toDate; + proto.toISOString = toISOString; + proto.inspect = inspect; + if (typeof Symbol !== undefined && Symbol.for != null) { + proto[Symbol.for('nodejs.util.inspect.custom')] = function () { + return 'Moment<' + this.format() + '>'; + }; + } + proto.toJSON = toJSON; + proto.toString = toString; + proto.unix = unix; + proto.valueOf = valueOf; + proto.creationData = creationData; + proto.eraName = getEraName; + proto.eraNarrow = getEraNarrow; + proto.eraAbbr = getEraAbbr; + proto.eraYear = getEraYear; + proto.year = getSetYear; proto.isLeapYear = getIsLeapYear; - proto.weekYear = getSetWeekYear; + proto.weekYear = getSetWeekYear; proto.isoWeekYear = getSetISOWeekYear; proto.quarter = proto.quarters = getSetQuarter; - proto.month = getSetMonth; + proto.month = getSetMonth; proto.daysInMonth = getDaysInMonth; - proto.week = proto.weeks = getSetWeek; - proto.isoWeek = proto.isoWeeks = getSetISOWeek; - proto.weeksInYear = getWeeksInYear; + proto.week = proto.weeks = getSetWeek; + proto.isoWeek = proto.isoWeeks = getSetISOWeek; + proto.weeksInYear = getWeeksInYear; + proto.weeksInWeekYear = getWeeksInWeekYear; proto.isoWeeksInYear = getISOWeeksInYear; - proto.date = getSetDayOfMonth; - proto.day = proto.days = getSetDayOfWeek; - proto.weekday = getSetLocaleDayOfWeek; + proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; + proto.date = getSetDayOfMonth; + proto.day = proto.days = getSetDayOfWeek; + proto.weekday = getSetLocaleDayOfWeek; proto.isoWeekday = getSetISODayOfWeek; - proto.dayOfYear = getSetDayOfYear; + proto.dayOfYear = getSetDayOfYear; proto.hour = proto.hours = getSetHour; proto.minute = proto.minutes = getSetMinute; proto.second = proto.seconds = getSetSecond; proto.millisecond = proto.milliseconds = getSetMillisecond; - proto.utcOffset = getSetOffset; - proto.utc = setOffsetToUTC; - proto.local = setOffsetToLocal; - proto.parseZone = setOffsetToParsedOffset; + proto.utcOffset = getSetOffset; + proto.utc = setOffsetToUTC; + proto.local = setOffsetToLocal; + proto.parseZone = setOffsetToParsedOffset; proto.hasAlignedHourOffset = hasAlignedHourOffset; - proto.isDST = isDaylightSavingTime; - proto.isLocal = isLocal; - proto.isUtcOffset = isUtcOffset; - proto.isUtc = isUtc; - proto.isUTC = isUtc; + proto.isDST = isDaylightSavingTime; + proto.isLocal = isLocal; + proto.isUtcOffset = isUtcOffset; + proto.isUtc = isUtc; + proto.isUTC = isUtc; proto.zoneAbbr = getZoneAbbr; proto.zoneName = getZoneName; - proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); - proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); - proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); - proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); - proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + proto.dates = deprecate( + 'dates accessor is deprecated. Use date instead.', + getSetDayOfMonth + ); + proto.months = deprecate( + 'months accessor is deprecated. Use month instead', + getSetMonth + ); + proto.years = deprecate( + 'years accessor is deprecated. Use year instead', + getSetYear + ); + proto.zone = deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', + getSetZone + ); + proto.isDSTShifted = deprecate( + 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', + isDaylightSavingTimeShifted + ); - function createUnix (input) { + function createUnix(input) { return createLocal(input * 1000); } - function createInZone () { + function createInZone() { return createLocal.apply(null, arguments).parseZone(); } - function preParsePostFormat (string) { + function preParsePostFormat(string) { return string; } var proto$1 = Locale.prototype; - proto$1.calendar = calendar; - proto$1.longDateFormat = longDateFormat; - proto$1.invalidDate = invalidDate; - proto$1.ordinal = ordinal; - proto$1.preparse = preParsePostFormat; - proto$1.postformat = preParsePostFormat; - proto$1.relativeTime = relativeTime; - proto$1.pastFuture = pastFuture; - proto$1.set = set; - - proto$1.months = localeMonths; - proto$1.monthsShort = localeMonthsShort; - proto$1.monthsParse = localeMonthsParse; - proto$1.monthsRegex = monthsRegex; - proto$1.monthsShortRegex = monthsShortRegex; + proto$1.calendar = calendar; + proto$1.longDateFormat = longDateFormat; + proto$1.invalidDate = invalidDate; + proto$1.ordinal = ordinal; + proto$1.preparse = preParsePostFormat; + proto$1.postformat = preParsePostFormat; + proto$1.relativeTime = relativeTime; + proto$1.pastFuture = pastFuture; + proto$1.set = set; + proto$1.eras = localeEras; + proto$1.erasParse = localeErasParse; + proto$1.erasConvertYear = localeErasConvertYear; + proto$1.erasAbbrRegex = erasAbbrRegex; + proto$1.erasNameRegex = erasNameRegex; + proto$1.erasNarrowRegex = erasNarrowRegex; + + proto$1.months = localeMonths; + proto$1.monthsShort = localeMonthsShort; + proto$1.monthsParse = localeMonthsParse; + proto$1.monthsRegex = monthsRegex; + proto$1.monthsShortRegex = monthsShortRegex; proto$1.week = localeWeek; proto$1.firstDayOfYear = localeFirstDayOfYear; proto$1.firstDayOfWeek = localeFirstDayOfWeek; - proto$1.weekdays = localeWeekdays; - proto$1.weekdaysMin = localeWeekdaysMin; - proto$1.weekdaysShort = localeWeekdaysShort; - proto$1.weekdaysParse = localeWeekdaysParse; + proto$1.weekdays = localeWeekdays; + proto$1.weekdaysMin = localeWeekdaysMin; + proto$1.weekdaysShort = localeWeekdaysShort; + proto$1.weekdaysParse = localeWeekdaysParse; - proto$1.weekdaysRegex = weekdaysRegex; - proto$1.weekdaysShortRegex = weekdaysShortRegex; - proto$1.weekdaysMinRegex = weekdaysMinRegex; + proto$1.weekdaysRegex = weekdaysRegex; + proto$1.weekdaysShortRegex = weekdaysShortRegex; + proto$1.weekdaysMinRegex = weekdaysMinRegex; proto$1.isPM = localeIsPM; proto$1.meridiem = localeMeridiem; - function get$1 (format, index, field, setter) { - var locale = getLocale(); - var utc = createUTC().set(setter, index); + function get$1(format, index, field, setter) { + var locale = getLocale(), + utc = createUTC().set(setter, index); return locale[field](utc, format); } - function listMonthsImpl (format, index, field) { + function listMonthsImpl(format, index, field) { if (isNumber(format)) { index = format; format = undefined; @@ -4059,8 +5046,8 @@ return get$1(format, index, field, 'month'); } - var i; - var out = []; + var i, + out = []; for (i = 0; i < 12; i++) { out[i] = get$1(format, i, field, 'month'); } @@ -4075,7 +5062,7 @@ // (true, 5) // (true, fmt, 5) // (true, fmt) - function listWeekdaysImpl (localeSorted, format, index, field) { + function listWeekdaysImpl(localeSorted, format, index, field) { if (typeof localeSorted === 'boolean') { if (isNumber(format)) { index = format; @@ -4097,97 +5084,127 @@ } var locale = getLocale(), - shift = localeSorted ? locale._week.dow : 0; + shift = localeSorted ? locale._week.dow : 0, + i, + out = []; if (index != null) { return get$1(format, (index + shift) % 7, field, 'day'); } - var i; - var out = []; for (i = 0; i < 7; i++) { out[i] = get$1(format, (i + shift) % 7, field, 'day'); } return out; } - function listMonths (format, index) { + function listMonths(format, index) { return listMonthsImpl(format, index, 'months'); } - function listMonthsShort (format, index) { + function listMonthsShort(format, index) { return listMonthsImpl(format, index, 'monthsShort'); } - function listWeekdays (localeSorted, format, index) { + function listWeekdays(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); } - function listWeekdaysShort (localeSorted, format, index) { + function listWeekdaysShort(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); } - function listWeekdaysMin (localeSorted, format, index) { + function listWeekdaysMin(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); } getSetGlobalLocale('en', { + eras: [ + { + since: '0001-01-01', + until: +Infinity, + offset: 1, + name: 'Anno Domini', + narrow: 'AD', + abbr: 'AD', + }, + { + since: '0000-12-31', + until: -Infinity, + offset: 1, + name: 'Before Christ', + narrow: 'BC', + abbr: 'BC', + }, + ], dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + toInt((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; - } + }, }); // Side effect imports - hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); - hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + hooks.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + getSetGlobalLocale + ); + hooks.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + getLocale + ); var mathAbs = Math.abs; - function abs () { - var data = this._data; + function abs() { + var data = this._data; this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); return this; } - function addSubtract$1 (duration, input, value, direction) { + function addSubtract$1(duration, input, value, direction) { var other = createDuration(input, value); duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; + duration._days += direction * other._days; + duration._months += direction * other._months; return duration._bubble(); } // supports only 2.0-style add(1, 's') or add(duration) - function add$1 (input, value) { + function add$1(input, value) { return addSubtract$1(this, input, value, 1); } // supports only 2.0-style subtract(1, 's') or subtract(duration) - function subtract$1 (input, value) { + function subtract$1(input, value) { return addSubtract$1(this, input, value, -1); } - function absCeil (number) { + function absCeil(number) { if (number < 0) { return Math.floor(number); } else { @@ -4195,17 +5212,25 @@ } } - function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; + function bubble() { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, + minutes, + hours, + years, + monthsFromDays; // if we have a mix of positive and negative values, bubble down first // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { + if ( + !( + (milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0) + ) + ) { milliseconds += absCeil(monthsToDays(months) + days) * 864e5; days = 0; months = 0; @@ -4215,14 +5240,14 @@ // examples of what that means. data.milliseconds = milliseconds % 1000; - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; - hours = absFloor(minutes / 60); - data.hours = hours % 24; + hours = absFloor(minutes / 60); + data.hours = hours % 24; days += absFloor(hours / 24); @@ -4235,31 +5260,31 @@ years = absFloor(months / 12); months %= 12; - data.days = days; + data.days = days; data.months = months; - data.years = years; + data.years = years; return this; } - function daysToMonths (days) { + function daysToMonths(days) { // 400 years have 146097 days (taking into account leap year rules) // 400 years have 12 months === 4800 - return days * 4800 / 146097; + return (days * 4800) / 146097; } - function monthsToDays (months) { + function monthsToDays(months) { // the reverse of daysToMonths - return months * 146097 / 4800; + return (months * 146097) / 4800; } - function as (units) { + function as(units) { if (!this.isValid()) { return NaN; } - var days; - var months; - var milliseconds = this._milliseconds; + var days, + months, + milliseconds = this._milliseconds; units = normalizeUnits(units); @@ -4267,28 +5292,38 @@ days = this._days + milliseconds / 864e5; months = this._months + daysToMonths(days); switch (units) { - case 'month': return months; - case 'quarter': return months / 3; - case 'year': return months / 12; + case 'month': + return months; + case 'quarter': + return months / 3; + case 'year': + return months / 12; } } else { // handle milliseconds separately because of floating point math errors (issue #1867) days = this._days + Math.round(monthsToDays(this._months)); switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; + case 'week': + return days / 7 + milliseconds / 6048e5; + case 'day': + return days + milliseconds / 864e5; + case 'hour': + return days * 24 + milliseconds / 36e5; + case 'minute': + return days * 1440 + milliseconds / 6e4; + case 'second': + return days * 86400 + milliseconds / 1000; // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); + case 'millisecond': + return Math.floor(days * 864e5) + milliseconds; + default: + throw new Error('Unknown unit ' + units); } } } // TODO: Use this.as('ms')? - function valueOf$1 () { + function valueOf$1() { if (!this.isValid()) { return NaN; } @@ -4300,27 +5335,27 @@ ); } - function makeAs (alias) { + function makeAs(alias) { return function () { return this.as(alias); }; } - var asMilliseconds = makeAs('ms'); - var asSeconds = makeAs('s'); - var asMinutes = makeAs('m'); - var asHours = makeAs('h'); - var asDays = makeAs('d'); - var asWeeks = makeAs('w'); - var asMonths = makeAs('M'); - var asQuarters = makeAs('Q'); - var asYears = makeAs('y'); + var asMilliseconds = makeAs('ms'), + asSeconds = makeAs('s'), + asMinutes = makeAs('m'), + asHours = makeAs('h'), + asDays = makeAs('d'), + asWeeks = makeAs('w'), + asMonths = makeAs('M'), + asQuarters = makeAs('Q'), + asYears = makeAs('y'); - function clone$1 () { + function clone$1() { return createDuration(this); } - function get$2 (units) { + function get$2(units) { units = normalizeUnits(units); return this.isValid() ? this[units + 's']() : NaN; } @@ -4331,53 +5366,63 @@ }; } - var milliseconds = makeGetter('milliseconds'); - var seconds = makeGetter('seconds'); - var minutes = makeGetter('minutes'); - var hours = makeGetter('hours'); - var days = makeGetter('days'); - var months = makeGetter('months'); - var years = makeGetter('years'); + var milliseconds = makeGetter('milliseconds'), + seconds = makeGetter('seconds'), + minutes = makeGetter('minutes'), + hours = makeGetter('hours'), + days = makeGetter('days'), + months = makeGetter('months'), + years = makeGetter('years'); - function weeks () { + function weeks() { return absFloor(this.days() / 7); } - var round = Math.round; - var thresholds = { - ss: 44, // a few seconds to seconds - s : 45, // seconds to minute - m : 45, // minutes to hour - h : 22, // hours to day - d : 26, // days to month - M : 11 // months to year - }; + var round = Math.round, + thresholds = { + ss: 44, // a few seconds to seconds + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month/week + w: null, // weeks to month + M: 11, // months to year + }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } - function relativeTime$1 (posNegDuration, withoutSuffix, locale) { - var duration = createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds <= thresholds.ss && ['s', seconds] || - seconds < thresholds.s && ['ss', seconds] || - minutes <= 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours <= 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days <= 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months <= 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years <= 1 && ['y'] || ['yy', years]; + function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) { + var duration = createDuration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + weeks = round(duration.as('w')), + years = round(duration.as('y')), + a = + (seconds <= thresholds.ss && ['s', seconds]) || + (seconds < thresholds.s && ['ss', seconds]) || + (minutes <= 1 && ['m']) || + (minutes < thresholds.m && ['mm', minutes]) || + (hours <= 1 && ['h']) || + (hours < thresholds.h && ['hh', hours]) || + (days <= 1 && ['d']) || + (days < thresholds.d && ['dd', days]); + + if (thresholds.w != null) { + a = + a || + (weeks <= 1 && ['w']) || + (weeks < thresholds.w && ['ww', weeks]); + } + a = a || + (months <= 1 && ['M']) || + (months < thresholds.M && ['MM', months]) || + (years <= 1 && ['y']) || ['yy', years]; a[2] = withoutSuffix; a[3] = +posNegDuration > 0; @@ -4386,11 +5431,11 @@ } // This function allows you to set the rounding function for relative time strings - function getSetRelativeTimeRounding (roundingFunction) { + function getSetRelativeTimeRounding(roundingFunction) { if (roundingFunction === undefined) { return round; } - if (typeof(roundingFunction) === 'function') { + if (typeof roundingFunction === 'function') { round = roundingFunction; return true; } @@ -4398,7 +5443,7 @@ } // This function allows you to set a threshold for relative time strings - function getSetRelativeTimeThreshold (threshold, limit) { + function getSetRelativeTimeThreshold(threshold, limit) { if (thresholds[threshold] === undefined) { return false; } @@ -4412,13 +5457,32 @@ return true; } - function humanize (withSuffix) { + function humanize(argWithSuffix, argThresholds) { if (!this.isValid()) { return this.localeData().invalidDate(); } - var locale = this.localeData(); - var output = relativeTime$1(this, !withSuffix, locale); + var withSuffix = false, + th = thresholds, + locale, + output; + + if (typeof argWithSuffix === 'object') { + argThresholds = argWithSuffix; + argWithSuffix = false; + } + if (typeof argWithSuffix === 'boolean') { + withSuffix = argWithSuffix; + } + if (typeof argThresholds === 'object') { + th = Object.assign({}, thresholds, argThresholds); + if (argThresholds.s != null && argThresholds.ss == null) { + th.ss = argThresholds.s - 1; + } + } + + locale = this.localeData(); + output = relativeTime$1(this, !withSuffix, th, locale); if (withSuffix) { output = locale.pastFuture(+this, output); @@ -4430,7 +5494,7 @@ var abs$1 = Math.abs; function sign(x) { - return ((x > 0) - (x < 0)) || +x; + return (x > 0) - (x < 0) || +x; } function toISOString$1() { @@ -4445,92 +5509,97 @@ return this.localeData().invalidDate(); } - var seconds = abs$1(this._milliseconds) / 1000; - var days = abs$1(this._days); - var months = abs$1(this._months); - var minutes, hours, years; + var seconds = abs$1(this._milliseconds) / 1000, + days = abs$1(this._days), + months = abs$1(this._months), + minutes, + hours, + years, + s, + total = this.asSeconds(), + totalSign, + ymSign, + daysSign, + hmsSign; + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); seconds %= 60; minutes %= 60; // 12 months -> 1 year - years = absFloor(months / 12); + years = absFloor(months / 12); months %= 12; - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } + s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; - var totalSign = total < 0 ? '-' : ''; - var ymSign = sign(this._months) !== sign(total) ? '-' : ''; - var daysSign = sign(this._days) !== sign(total) ? '-' : ''; - var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; + totalSign = total < 0 ? '-' : ''; + ymSign = sign(this._months) !== sign(total) ? '-' : ''; + daysSign = sign(this._days) !== sign(total) ? '-' : ''; + hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; - return totalSign + 'P' + - (Y ? ymSign + Y + 'Y' : '') + - (M ? ymSign + M + 'M' : '') + - (D ? daysSign + D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? hmsSign + h + 'H' : '') + - (m ? hmsSign + m + 'M' : '') + - (s ? hmsSign + s + 'S' : ''); + return ( + totalSign + + 'P' + + (years ? ymSign + years + 'Y' : '') + + (months ? ymSign + months + 'M' : '') + + (days ? daysSign + days + 'D' : '') + + (hours || minutes || seconds ? 'T' : '') + + (hours ? hmsSign + hours + 'H' : '') + + (minutes ? hmsSign + minutes + 'M' : '') + + (seconds ? hmsSign + s + 'S' : '') + ); } var proto$2 = Duration.prototype; - proto$2.isValid = isValid$1; - proto$2.abs = abs; - proto$2.add = add$1; - proto$2.subtract = subtract$1; - proto$2.as = as; + proto$2.isValid = isValid$1; + proto$2.abs = abs; + proto$2.add = add$1; + proto$2.subtract = subtract$1; + proto$2.as = as; proto$2.asMilliseconds = asMilliseconds; - proto$2.asSeconds = asSeconds; - proto$2.asMinutes = asMinutes; - proto$2.asHours = asHours; - proto$2.asDays = asDays; - proto$2.asWeeks = asWeeks; - proto$2.asMonths = asMonths; - proto$2.asQuarters = asQuarters; - proto$2.asYears = asYears; - proto$2.valueOf = valueOf$1; - proto$2._bubble = bubble; - proto$2.clone = clone$1; - proto$2.get = get$2; - proto$2.milliseconds = milliseconds; - proto$2.seconds = seconds; - proto$2.minutes = minutes; - proto$2.hours = hours; - proto$2.days = days; - proto$2.weeks = weeks; - proto$2.months = months; - proto$2.years = years; - proto$2.humanize = humanize; - proto$2.toISOString = toISOString$1; - proto$2.toString = toISOString$1; - proto$2.toJSON = toISOString$1; - proto$2.locale = locale; - proto$2.localeData = localeData; - - proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); + proto$2.asSeconds = asSeconds; + proto$2.asMinutes = asMinutes; + proto$2.asHours = asHours; + proto$2.asDays = asDays; + proto$2.asWeeks = asWeeks; + proto$2.asMonths = asMonths; + proto$2.asQuarters = asQuarters; + proto$2.asYears = asYears; + proto$2.valueOf = valueOf$1; + proto$2._bubble = bubble; + proto$2.clone = clone$1; + proto$2.get = get$2; + proto$2.milliseconds = milliseconds; + proto$2.seconds = seconds; + proto$2.minutes = minutes; + proto$2.hours = hours; + proto$2.days = days; + proto$2.weeks = weeks; + proto$2.months = months; + proto$2.years = years; + proto$2.humanize = humanize; + proto$2.toISOString = toISOString$1; + proto$2.toString = toISOString$1; + proto$2.toJSON = toISOString$1; + proto$2.locale = locale; + proto$2.localeData = localeData; + + proto$2.toIsoString = deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', + toISOString$1 + ); proto$2.lang = lang; - // Side effect imports - // FORMATTING addFormatToken('X', 0, 0, 'unix'); @@ -4541,481 +5610,569 @@ addRegexToken('x', matchSigned); addRegexToken('X', matchTimestamp); addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); + config._d = new Date(parseFloat(input) * 1000); }); addParseToken('x', function (input, array, config) { config._d = new Date(toInt(input)); }); - // Side effect imports - //! moment.js - hooks.version = '2.24.0'; + hooks.version = '2.25.0'; setHookCallback(createLocal); - hooks.fn = proto; - hooks.min = min; - hooks.max = max; - hooks.now = now; - hooks.utc = createUTC; - hooks.unix = createUnix; - hooks.months = listMonths; - hooks.isDate = isDate; - hooks.locale = getSetGlobalLocale; - hooks.invalid = createInvalid; - hooks.duration = createDuration; - hooks.isMoment = isMoment; - hooks.weekdays = listWeekdays; - hooks.parseZone = createInZone; - hooks.localeData = getLocale; - hooks.isDuration = isDuration; - hooks.monthsShort = listMonthsShort; - hooks.weekdaysMin = listWeekdaysMin; - hooks.defineLocale = defineLocale; - hooks.updateLocale = updateLocale; - hooks.locales = listLocales; - hooks.weekdaysShort = listWeekdaysShort; - hooks.normalizeUnits = normalizeUnits; - hooks.relativeTimeRounding = getSetRelativeTimeRounding; + hooks.fn = proto; + hooks.min = min; + hooks.max = max; + hooks.now = now; + hooks.utc = createUTC; + hooks.unix = createUnix; + hooks.months = listMonths; + hooks.isDate = isDate; + hooks.locale = getSetGlobalLocale; + hooks.invalid = createInvalid; + hooks.duration = createDuration; + hooks.isMoment = isMoment; + hooks.weekdays = listWeekdays; + hooks.parseZone = createInZone; + hooks.localeData = getLocale; + hooks.isDuration = isDuration; + hooks.monthsShort = listMonthsShort; + hooks.weekdaysMin = listWeekdaysMin; + hooks.defineLocale = defineLocale; + hooks.updateLocale = updateLocale; + hooks.locales = listLocales; + hooks.weekdaysShort = listWeekdaysShort; + hooks.normalizeUnits = normalizeUnits; + hooks.relativeTimeRounding = getSetRelativeTimeRounding; hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; - hooks.calendarFormat = getCalendarFormat; - hooks.prototype = proto; + hooks.calendarFormat = getCalendarFormat; + hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats hooks.HTML5_FMT = { - DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // - DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // - DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // - DATE: 'YYYY-MM-DD', // - TIME: 'HH:mm', // - TIME_SECONDS: 'HH:mm:ss', // - TIME_MS: 'HH:mm:ss.SSS', // - WEEK: 'GGGG-[W]WW', // - MONTH: 'YYYY-MM' // + DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // + DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // + DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // + DATE: 'YYYY-MM-DD', // + TIME: 'HH:mm', // + TIME_SECONDS: 'HH:mm:ss', // + TIME_MS: 'HH:mm:ss.SSS', // + WEEK: 'GGGG-[W]WW', // + MONTH: 'YYYY-MM', // }; //! moment.js locale configuration hooks.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('_'), + 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 (input) { + isPM: function (input) { return /^nm$/i.test(input); }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'vm' : 'VM'; } else { return isLower ? '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ôre 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' + 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ôre 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 (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week: { + dow: 1, // Maandag is die eerste dag van die week. + doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar. }, - week : { - dow : 1, // Maandag is die eerste dag van die week. - doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. - } }); //! moment.js locale configuration hooks.defineLocale('ar-dz', { - 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' - }, - calendar : { + 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', + }, + calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + 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 سنوات', }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - ss : '%d ثانية', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' + week: { + dow: 0, // Sunday is the first day of the week. + doy: 4, // The week that contains Jan 4th is the first week of the year. }, - week : { - dow : 0, // Sunday 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 hooks.defineLocale('ar-kw', { - 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' - }, - calendar : { + 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', + }, + calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + 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 سنوات', }, - relativeTime : { - future : 'في %s', - past : 'منذ %s', - s : 'ثوان', - ss : '%d ثانية', - m : 'دقيقة', - mm : '%d دقائق', - h : 'ساعة', - hh : '%d ساعات', - d : 'يوم', - dd : '%d أيام', - M : 'شهر', - MM : '%d أشهر', - y : 'سنة', - yy : '%d سنوات' + week: { + dow: 0, // Sunday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); //! moment.js locale configuration var symbolMap = { - '1': '1', - '2': '2', - '3': '3', - '4': '4', - '5': '5', - '6': '6', - '7': '7', - '8': '8', - '9': '9', - '0': '0' - }, 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; - }, plurals = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm(number), - str = plurals[u][pluralForm(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, months$1 = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر' - ]; + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '0': '0', + }, + 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; + }, + plurals = { + s: [ + 'أقل من ثانية', + 'ثانية واحدة', + ['ثانيتان', 'ثانيتين'], + '%d ثوان', + '%d ثانية', + '%d ثانية', + ], + m: [ + 'أقل من دقيقة', + 'دقيقة واحدة', + ['دقيقتان', 'دقيقتين'], + '%d دقائق', + '%d دقيقة', + '%d دقيقة', + ], + h: [ + 'أقل من ساعة', + 'ساعة واحدة', + ['ساعتان', 'ساعتين'], + '%d ساعات', + '%d ساعة', + '%d ساعة', + ], + d: [ + 'أقل من يوم', + 'يوم واحد', + ['يومان', 'يومين'], + '%d أيام', + '%d يومًا', + '%d يوم', + ], + M: [ + 'أقل من شهر', + 'شهر واحد', + ['شهران', 'شهرين'], + '%d أشهر', + '%d شهرا', + '%d شهر', + ], + y: [ + 'أقل من عام', + 'عام واحد', + ['عامان', 'عامين'], + '%d أعوام', + '%d عامًا', + '%d عام', + ], + }, + pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, + months$1 = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; hooks.defineLocale('ar-ly', { - months : months$1, - monthsShort : months$1, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - 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' + months: months$1, + monthsShort: months$1, + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + 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: /ص|م/, - isPM : function (input) { + isPM: function (input) { return 'م' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, - calendar : { + calendar: { sameDay: '[اليوم عند الساعة] LT', nextDay: '[غدًا عند الساعة] LT', nextWeek: 'dddd [عند الساعة] LT', lastDay: '[أمس عند الساعة] LT', lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize('s'), - ss : pluralize('s'), - m : pluralize('m'), - mm : pluralize('m'), - h : pluralize('h'), - hh : pluralize('h'), - d : pluralize('d'), - dd : pluralize('d'), - M : pluralize('M'), - MM : pluralize('M'), - y : pluralize('y'), - yy : pluralize('y') + sameElse: 'L', + }, + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: pluralize('s'), + ss: pluralize('s'), + m: pluralize('m'), + mm: pluralize('m'), + h: pluralize('h'), + hh: pluralize('h'), + d: pluralize('d'), + dd: pluralize('d'), + M: pluralize('M'), + MM: pluralize('M'), + y: pluralize('y'), + yy: pluralize('y'), }, preparse: function (string) { return string.replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); //! moment.js locale configuration hooks.defineLocale('ar-ma', { - 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' - }, - calendar : { + 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', + }, + calendar: { sameDay: '[اليوم على الساعة] LT', nextDay: '[غدا على الساعة] LT', nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + 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 سنوات' + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + ss: '%d ثانية', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); //! moment.js locale configuration var symbolMap$1 = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }; + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }; hooks.defineLocale('ar-sa', { - 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' + 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) { + isPM: function (input) { return 'م' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, - calendar : { + 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 سنوات' + 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]; - }).replace(/،/g, ','); + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$1[match]; - }).replace(/,/g, '،'); + 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. }, - 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 hooks.defineLocale('ar-tn', { - months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), - monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( + '_' + ), weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, + 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' + LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[اليوم على الساعة] LT', @@ -5023,13 +6180,13 @@ nextWeek: 'dddd [على الساعة] LT', lastDay: '[أمس على الساعة] LT', lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'في %s', past: 'منذ %s', s: 'ثوان', - ss : '%d ثانية', + ss: '%d ثانية', m: 'دقيقة', mm: '%d دقائق', h: 'ساعة', @@ -5039,135 +6196,196 @@ M: 'شهر', MM: '%d أشهر', y: 'سنة', - yy: '%d سنوات' + yy: '%d سنوات', }, 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. - } + doy: 4, // The week that contains Jan 4th 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' - }, pluralForm$1 = function (n) { - return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; - }, plurals$1 = { - s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], - m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], - h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], - d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], - M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], - y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] - }, pluralize$1 = function (u) { - return function (number, withoutSuffix, string, isFuture) { - var f = pluralForm$1(number), - str = plurals$1[u][pluralForm$1(number)]; - if (f === 2) { - str = str[withoutSuffix ? 0 : 1]; - } - return str.replace(/%d/i, number); - }; - }, months$2 = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر' - ]; + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap$1 = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }, + pluralForm$1 = function (n) { + return n === 0 + ? 0 + : n === 1 + ? 1 + : n === 2 + ? 2 + : n % 100 >= 3 && n % 100 <= 10 + ? 3 + : n % 100 >= 11 + ? 4 + : 5; + }, + plurals$1 = { + s: [ + 'أقل من ثانية', + 'ثانية واحدة', + ['ثانيتان', 'ثانيتين'], + '%d ثوان', + '%d ثانية', + '%d ثانية', + ], + m: [ + 'أقل من دقيقة', + 'دقيقة واحدة', + ['دقيقتان', 'دقيقتين'], + '%d دقائق', + '%d دقيقة', + '%d دقيقة', + ], + h: [ + 'أقل من ساعة', + 'ساعة واحدة', + ['ساعتان', 'ساعتين'], + '%d ساعات', + '%d ساعة', + '%d ساعة', + ], + d: [ + 'أقل من يوم', + 'يوم واحد', + ['يومان', 'يومين'], + '%d أيام', + '%d يومًا', + '%d يوم', + ], + M: [ + 'أقل من شهر', + 'شهر واحد', + ['شهران', 'شهرين'], + '%d أشهر', + '%d شهرا', + '%d شهر', + ], + y: [ + 'أقل من عام', + 'عام واحد', + ['عامان', 'عامين'], + '%d أعوام', + '%d عامًا', + '%d عام', + ], + }, + pluralize$1 = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm$1(number), + str = plurals$1[u][pluralForm$1(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; + }, + months$2 = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; hooks.defineLocale('ar', { - months : months$2, - monthsShort : months$2, - weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), - weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), - weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), - weekdaysParseExact : true, - 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' + months: months$2, + monthsShort: months$2, + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact: true, + 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: /ص|م/, - isPM : function (input) { + isPM: function (input) { return 'م' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'ص'; } else { return 'م'; } }, - calendar : { + calendar: { sameDay: '[اليوم عند الساعة] LT', nextDay: '[غدًا عند الساعة] LT', nextWeek: 'dddd [عند الساعة] LT', lastDay: '[أمس عند الساعة] LT', lastWeek: 'dddd [عند الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'بعد %s', - past : 'منذ %s', - s : pluralize$1('s'), - ss : pluralize$1('s'), - m : pluralize$1('m'), - mm : pluralize$1('m'), - h : pluralize$1('h'), - hh : pluralize$1('h'), - d : pluralize$1('d'), - dd : pluralize$1('d'), - M : pluralize$1('M'), - MM : pluralize$1('M'), - y : pluralize$1('y'), - yy : pluralize$1('y') + sameElse: 'L', + }, + relativeTime: { + future: 'بعد %s', + past: 'منذ %s', + s: pluralize$1('s'), + ss: pluralize$1('s'), + m: pluralize$1('m'), + mm: pluralize$1('m'), + h: pluralize$1('h'), + hh: pluralize$1('h'), + d: pluralize$1('d'), + dd: pluralize$1('d'), + M: pluralize$1('M'), + MM: pluralize$1('M'), + y: pluralize$1('y'), + yy: pluralize$1('y'), }, preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { - return numberMap$1[match]; - }).replace(/،/g, ','); + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap$1[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$2[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap$2[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); //! moment.js locale configuration @@ -5190,53 +6408,57 @@ 10: '-uncu', 30: '-uncu', 60: '-ıncı', - 90: '-ıncı' + 90: '-ıncı', }; hooks.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əsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), - weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), - weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.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' - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s əvvəl', - s : 'birneçə saniyə', - ss : '%d saniyə', - m : 'bir dəqiqə', - mm : '%d dəqiqə', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir il', - yy : '%d il' + 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əsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split( + '_' + ), + weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.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', + }, + calendar: { + sameDay: '[bugün saat] LT', + nextDay: '[sabah saat] LT', + nextWeek: '[gələn həftə] dddd [saat] LT', + lastDay: '[dünən] LT', + lastWeek: '[keçən həftə] dddd [saat] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s sonra', + past: '%s əvvəl', + s: 'birneçə saniyə', + ss: '%d saniyə', + m: 'bir dəqiqə', + mm: '%d dəqiqə', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir il', + yy: '%d il', }, meridiemParse: /gecə|səhər|gündüz|axşam/, - isPM : function (input) { + isPM: function (input) { return /^(gündüz|axşam)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'gecə'; } else if (hour < 12) { @@ -5248,69 +6470,82 @@ } }, dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, - ordinal : function (number) { - if (number === 0) { // special case for zero + ordinal: function (number) { + if (number === 0) { + // special case for zero return number + '-ıncı'; } var a = number % 10, - b = number % 100 - a, + b = (number % 100) - a, c = number >= 100 ? 100 : null; return number + (suffixes[a] || suffixes[b] || suffixes[c]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration function plural(word, num) { var forms = word.split('_'); - 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]); + 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]; } function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { - 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', - 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', - 'dd': 'дзень_дні_дзён', - 'MM': 'месяц_месяцы_месяцаў', - 'yy': 'год_гады_гадоў' + ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', + mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + dd: 'дзень_дні_дзён', + MM: 'месяц_месяцы_месяцаў', + yy: 'год_гады_гадоў', }; if (key === 'm') { return withoutSuffix ? 'хвіліна' : 'хвіліну'; - } - else if (key === 'h') { + } else if (key === 'h') { return withoutSuffix ? 'гадзіна' : 'гадзіну'; - } - else { + } else { return number + ' ' + plural(format[key], +number); } } hooks.defineLocale('be', { - months : { - format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), - standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_') - }, - monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : { - format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), - standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/ - }, - weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), - 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 : { + months: { + format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( + '_' + ), + standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( + '_' + ), + }, + monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split( + '_' + ), + weekdays: { + format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split( + '_' + ), + standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split( + '_' + ), + isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/, + }, + weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + 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: '[Сёння ў] LT', nextDay: '[Заўтра ў] LT', lastDay: '[Учора ў] LT', @@ -5330,28 +6565,28 @@ return '[У мінулы] dddd [ў] LT'; } }, - sameElse: 'L' - }, - relativeTime : { - future : 'праз %s', - past : '%s таму', - s : 'некалькі секунд', - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : relativeTimeWithPlural, - hh : relativeTimeWithPlural, - d : 'дзень', - dd : relativeTimeWithPlural, - M : 'месяц', - MM : relativeTimeWithPlural, - y : 'год', - yy : relativeTimeWithPlural + sameElse: 'L', + }, + relativeTime: { + future: 'праз %s', + past: '%s таму', + s: 'некалькі секунд', + m: relativeTimeWithPlural, + mm: relativeTimeWithPlural, + h: relativeTimeWithPlural, + hh: relativeTimeWithPlural, + d: 'дзень', + dd: relativeTimeWithPlural, + M: 'месяц', + MM: relativeTimeWithPlural, + y: 'год', + yy: relativeTimeWithPlural, }, meridiemParse: /ночы|раніцы|дня|вечара/, - isPM : function (input) { + isPM: function (input) { return /^(дня|вечара)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночы'; } else if (hour < 12) { @@ -5370,73 +6605,81 @@ case 'DDD': case 'w': case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + return (number % 10 === 2 || number % 10 === 3) && + number % 100 !== 12 && + number % 100 !== 13 + ? number + '-і' + : number + '-ы'; case 'D': return number + '-га'; default: return number; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('bg', { - months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), - weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.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 : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { + months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split( + '_' + ), + monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split( + '_' + ), + weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.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: '[Днес в] LT', + nextDay: '[Утре в] LT', + nextWeek: 'dddd [в] LT', + lastDay: '[Вчера в] LT', + lastWeek: function () { switch (this.day()) { case 0: case 3: case 6: - return '[В изминалата] dddd [в] LT'; + return '[Миналата] dddd [в] LT'; case 1: case 2: case 4: case 5: - return '[В изминалия] dddd [в] LT'; + return '[Миналия] 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 години' + 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 години', }, dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { + ordinal: function (number) { var lastDigit = number % 10, last2Digits = number % 100; if (number === 0) { @@ -5455,122 +6698,130 @@ return number + '-ти'; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('bm', { - months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'), - monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), - weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), - weekdaysShort : 'Kar_Ntɛ_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ɛrɛ] HH:mm', - LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm' - }, - calendar : { - sameDay : '[Bi lɛrɛ] LT', - nextDay : '[Sini lɛrɛ] LT', - nextWeek : 'dddd [don lɛrɛ] LT', - lastDay : '[Kunu lɛrɛ] LT', - lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s kɔnɔ', - past : 'a bɛ %s bɔ', - s : 'sanga dama dama', - ss : 'sekondi %d', - m : 'miniti kelen', - mm : 'miniti %d', - h : 'lɛrɛ kelen', - hh : 'lɛrɛ %d', - d : 'tile kelen', - dd : 'tile %d', - M : 'kalo kelen', - MM : 'kalo %d', - y : 'san kelen', - yy : 'san %d' - }, - 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. - } + months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split( + '_' + ), + monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), + weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), + weekdaysShort: 'Kar_Ntɛ_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ɛrɛ] HH:mm', + LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', + }, + calendar: { + sameDay: '[Bi lɛrɛ] LT', + nextDay: '[Sini lɛrɛ] LT', + nextWeek: 'dddd [don lɛrɛ] LT', + lastDay: '[Kunu lɛrɛ] LT', + lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s kɔnɔ', + past: 'a bɛ %s bɔ', + s: 'sanga dama dama', + ss: 'sekondi %d', + m: 'miniti kelen', + mm: 'miniti %d', + h: 'lɛrɛ kelen', + hh: 'lɛrɛ %d', + d: 'tile kelen', + dd: 'tile %d', + M: 'kalo kelen', + MM: 'kalo %d', + y: 'san kelen', + yy: 'san %d', + }, + 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$3 = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০' - }, - numberMap$2 = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0' - }; + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০', + }, + numberMap$2 = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0', + }; hooks.defineLocale('bn', { - months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), - weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.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 : '[আজ] 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 বছর' + months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( + '_' + ), + monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( + '_' + ), + weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( + '_' + ), + weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), + weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.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: '[আজ] 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) { @@ -5583,19 +6834,21 @@ }); }, meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if ((meridiem === 'রাত' && hour >= 4) || - (meridiem === 'দুপুর' && hour < 5) || - meridiem === 'বিকাল') { + if ( + (meridiem === 'রাত' && hour >= 4) || + (meridiem === 'দুপুর' && hour < 5) || + meridiem === 'বিকাল' + ) { return hour + 12; } else { return hour; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'রাত'; } else if (hour < 10) { @@ -5608,76 +6861,86 @@ return 'রাত'; } }, - 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. - } + 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$4 = { - '1': '༡', - '2': '༢', - '3': '༣', - '4': '༤', - '5': '༥', - '6': '༦', - '7': '༧', - '8': '༨', - '9': '༩', - '0': '༠' - }, - numberMap$3 = { - '༡': '1', - '༢': '2', - '༣': '3', - '༤': '4', - '༥': '5', - '༦': '6', - '༧': '7', - '༨': '8', - '༩': '9', - '༠': '0' - }; + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠', + }, + numberMap$3 = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0', + }; hooks.defineLocale('bo', { - months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), - weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), - weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), - weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.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 : '[དི་རིང] LT', - nextDay : '[སང་ཉིན] LT', - nextWeek : '[བདུན་ཕྲག་རྗེས་མ], 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 ལོ' + months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split( + '_' + ), + monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split( + '_' + ), + monthsShortRegex: /^(ཟླ་\d{1,2})/, + monthsParseExact: true, + weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split( + '_' + ), + weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split( + '_' + ), + weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.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: '[དི་རིང] LT', + nextDay: '[སང་ཉིན] LT', + nextWeek: '[བདུན་ཕྲག་རྗེས་མ], 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) { @@ -5690,19 +6953,21 @@ }); }, meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if ((meridiem === 'མཚན་མོ' && hour >= 4) || - (meridiem === 'ཉིན་གུང' && hour < 5) || - meridiem === 'དགོང་དག') { + if ( + (meridiem === 'མཚན་མོ' && hour >= 4) || + (meridiem === 'ཉིན་གུང' && hour < 5) || + meridiem === 'དགོང་དག' + ) { return hour + 12; } else { return hour; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'མཚན་མོ'; } else if (hour < 10) { @@ -5715,19 +6980,19 @@ return 'མཚན་མོ'; } }, - 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. - } + 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 function relativeTimeWithMutation(number, withoutSuffix, key) { var format = { - 'mm': 'munutenn', - 'MM': 'miz', - 'dd': 'devezh' + mm: 'munutenn', + MM: 'miz', + dd: 'devezh', }; return number + ' ' + mutation(format[key], number); } @@ -5757,9 +7022,9 @@ } function softMutation(text) { var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' + m: 'v', + b: 'v', + d: 'z', }; if (mutationTable[text.charAt(0)] === undefined) { return text; @@ -5768,53 +7033,55 @@ } hooks.defineLocale('br', { - months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), - monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), - weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), - weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), - weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h[e]mm A', - LTS : 'h[e]mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY h[e]mm A', - LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'a-benn %s', - past : '%s \'zo', - s : 'un nebeud segondennoù', - ss : '%d eilenn', - m : 'ur vunutenn', - mm : relativeTimeWithMutation, - h : 'un eur', - hh : '%d eur', - d : 'un devezh', - dd : relativeTimeWithMutation, - M : 'ur miz', - MM : relativeTimeWithMutation, - y : 'ur bloaz', - yy : specialMutationForYears + months: "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split( + '_' + ), + monthsShort: "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split('_'), + weekdays: "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split('_'), + weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + weekdaysParseExact: true, + 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'hoazh da] LT", + nextWeek: 'dddd [da] LT', + lastDay: "[Dec'h da] LT", + lastWeek: 'dddd [paset da] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'a-benn %s', + past: "%s 'zo", + s: 'un nebeud segondennoù', + ss: '%d eilenn', + m: 'ur vunutenn', + mm: relativeTimeWithMutation, + h: 'un eur', + hh: '%d eur', + d: 'un devezh', + dd: relativeTimeWithMutation, + M: 'ur miz', + MM: relativeTimeWithMutation, + y: 'ur bloaz', + yy: specialMutationForYears, }, dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; + ordinal: function (number) { + var output = number === 1 ? 'añ' : 'vet'; return number + output; }, - 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. - } + 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 @@ -5882,25 +7149,31 @@ } hooks.defineLocale('bs', { - months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedjelju] [u] LT'; @@ -5915,8 +7188,8 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[jučer u] LT', - lastWeek : function () { + lastDay: '[jučer u] LT', + lastWeek: function () { switch (this.day()) { case 0: case 3: @@ -5930,206 +7203,232 @@ return '[prošli] dddd [u] LT'; } }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - ss : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'dan', - dd : translate, - M : 'mjesec', - MM : translate, - y : 'godinu', - yy : translate + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'par sekundi', + ss: translate, + m: translate, + mm: translate, + h: translate, + hh: translate, + d: 'dan', + dd: translate, + M: 'mjesec', + MM: translate, + y: 'godinu', + yy: translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('ca', { - months : { - standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), - format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'), - isFormat: /D[oD]?(\s)+MMMM/ - }, - monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), - weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), - weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [de] YYYY', - ll : 'D MMM YYYY', - LLL : 'D MMMM [de] YYYY [a les] H:mm', - lll : 'D MMM YYYY, H:mm', - LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm', - llll : 'ddd D MMM YYYY, H:mm' - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + months: { + standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split( + '_' + ), + format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split( + '_' + ), + isFormat: /D[oD]?(\s)+MMMM/, + }, + monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split( + '_' + ), + weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + ll: 'D MMM YYYY', + LLL: 'D MMMM [de] YYYY [a les] H:mm', + lll: 'D MMM YYYY, H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', + llll: 'ddd D MMM YYYY, H:mm', + }, + calendar: { + sameDay: function () { + return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + nextDay: function () { + return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + nextWeek: function () { + return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + lastDay: function () { + return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [passat a ' + + (this.hours() !== 1 ? 'les' : 'la') + + '] LT' + ); }, - sameElse : 'L' - }, - relativeTime : { - future : 'd\'aquí %s', - past : 'fa %s', - s : 'uns segons', - ss : '%d segons', - m : 'un minut', - mm : '%d minuts', - h : 'una hora', - hh : '%d hores', - d : 'un dia', - dd : '%d dies', - M : 'un mes', - MM : '%d mesos', - y : 'un any', - yy : '%d anys' + sameElse: 'L', + }, + relativeTime: { + future: "d'aquí %s", + past: 'fa %s', + s: 'uns segons', + ss: '%d segons', + m: 'un minut', + mm: '%d minuts', + h: 'una hora', + hh: '%d hores', + d: 'un dia', + dd: '%d dies', + M: 'un mes', + MM: '%d mesos', + y: 'un any', + yy: '%d anys', }, dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, - ordinal : function (number, period) { - var output = (number === 1) ? 'r' : - (number === 2) ? 'n' : - (number === 3) ? 'r' : - (number === 4) ? 't' : 'è'; + ordinal: function (number, period) { + var output = + number === 1 + ? 'r' + : number === 2 + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; if (period === 'w' || period === 'W') { output = 'a'; } return number + output; }, - 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. - } + 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 months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), - monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); - - var monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i]; - // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. - // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - var monthsRegex$1 = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; + var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( + '_' + ), + monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), + monthsParse = [ + /^led/i, + /^úno/i, + /^bře/i, + /^dub/i, + /^kvě/i, + /^(čvn|červen$|června)/i, + /^(čvc|červenec|července)/i, + /^srp/i, + /^zář/i, + /^říj/i, + /^lis/i, + /^pro/i, + ], + // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. + // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. + monthsRegex$1 = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; function plural$1(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); + return n > 1 && n < 5 && ~~(n / 10) !== 1; } function translate$1(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 's': // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'sekundy' : 'sekund'); } else { return result + 'sekundami'; } - break; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'minuty' : 'minut'); } else { return result + 'minutami'; } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; case 'hh': // 9 hours / in 9 hours / 9 hours ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'hodiny' : 'hodin'); } else { return result + 'hodinami'; } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'd': // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'den' : 'dnem'; case 'dd': // 9 days / in 9 days / 9 days ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'dny' : 'dní'); } else { return result + 'dny'; } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'M': // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'měsíc' : 'měsícem'; case 'MM': // 9 months / in 9 months / 9 months ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'měsíce' : 'měsíců'); } else { return result + 'měsíci'; } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'y': // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokem'; case 'yy': // 9 years / in 9 years / 9 years ago if (withoutSuffix || isFuture) { return result + (plural$1(number) ? 'roky' : 'let'); } else { return result + 'lety'; } - break; } } hooks.defineLocale('cs', { - months : months$3, - monthsShort : monthsShort, - monthsRegex : monthsRegex$1, - monthsShortRegex : monthsRegex$1, + months: months$3, + monthsShort: monthsShort, + monthsRegex: monthsRegex$1, + monthsShortRegex: monthsRegex$1, // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. - monthsStrictRegex : /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, - monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, - monthsParse : monthsParse, - longMonthsParse : monthsParse, - shortMonthsParse : monthsParse, - weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), - weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), - weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), - longDateFormat : { + monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, + monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, + monthsParse: monthsParse, + longMonthsParse: monthsParse, + shortMonthsParse: monthsParse, + weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'), + longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm', - l : 'D. M. YYYY' - }, - calendar : { + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', + l: 'D. M. YYYY', + }, + calendar: { sameDay: '[dnes v] LT', nextDay: '[zítra v] LT', nextWeek: function () { @@ -6166,100 +7465,114 @@ return '[minulou sobotu v] LT'; } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'za %s', - past : 'před %s', - s : translate$1, - ss : translate$1, - m : translate$1, - mm : translate$1, - h : translate$1, - hh : translate$1, - d : translate$1, - dd : translate$1, - M : translate$1, - MM : translate$1, - y : translate$1, - yy : translate$1 + relativeTime: { + future: 'za %s', + past: 'před %s', + s: translate$1, + ss: translate$1, + m: translate$1, + mm: translate$1, + h: translate$1, + hh: translate$1, + d: translate$1, + dd: translate$1, + M: translate$1, + MM: translate$1, + y: translate$1, + yy: translate$1, + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + 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. }, - dayOfMonthOrdinalParse : /\d{1,2}\./, - ordinal : '%d.', - 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 hooks.defineLocale('cv', { - months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD-MM-YYYY', - LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' - }, - calendar : { + months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split( + '_' + ), + monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split( + '_' + ), + weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD-MM-YYYY', + LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + }, + calendar: { sameDay: '[Паян] LT [сехетре]', nextDay: '[Ыран] LT [сехетре]', lastDay: '[Ӗнер] LT [сехетре]', nextWeek: '[Ҫитес] dddd LT [сехетре]', lastWeek: '[Иртнӗ] dddd LT [сехетре]', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; + relativeTime: { + future: function (output) { + var affix = /сехет$/i.exec(output) + ? 'рен' + : /ҫул$/i.exec(output) + ? 'тан' + : 'ран'; return output + affix; }, - past : '%s каялла', - s : 'пӗр-ик ҫеккунт', - ss : '%d ҫеккунт', - m : 'пӗр минут', - mm : '%d минут', - h : 'пӗр сехет', - hh : '%d сехет', - d : 'пӗр кун', - dd : '%d кун', - M : 'пӗр уйӑх', - MM : '%d уйӑх', - y : 'пӗр ҫул', - yy : '%d ҫул' + past: '%s каялла', + s: 'пӗр-ик ҫеккунт', + ss: '%d ҫеккунт', + m: 'пӗр минут', + mm: '%d минут', + h: 'пӗр сехет', + hh: '%d сехет', + d: 'пӗр кун', + dd: '%d кун', + M: 'пӗр уйӑх', + MM: '%d уйӑх', + y: 'пӗр ҫул', + yy: '%d ҫул', }, dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, - ordinal : '%d-мӗш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d-мӗш', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('cy', { - months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), - monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), - weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split( + '_' + ), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split( + '_' + ), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split( + '_' + ), weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, // time formats are the same as en-gb longDateFormat: { LT: 'HH:mm', - LTS : 'HH:mm:ss', + 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' + LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Heddiw am] LT', @@ -6267,7 +7580,7 @@ nextWeek: 'dddd [am] LT', lastDay: '[Ddoe am] LT', lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'mewn %s', @@ -6283,7 +7596,7 @@ M: 'mis', MM: '%d mis', y: 'blwyddyn', - yy: '%d flynedd' + yy: '%d flynedd', }, dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh @@ -6291,8 +7604,27 @@ var b = number, output = '', lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + '', + 'af', + 'il', + 'ydd', + 'ydd', + 'ed', + 'ed', + 'ed', + 'fed', + 'fed', + 'fed', // 1af to 10fed + 'eg', + 'fed', + 'eg', + 'eg', + 'fed', + 'eg', + 'eg', + 'fed', + 'eg', + 'fed', // 11eg to 20fed ]; if (b > 20) { if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { @@ -6305,326 +7637,346 @@ } return number + output; }, - 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. - } + 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 hooks.defineLocale('da', { - months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - 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.] D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { - sameDay : '[i dag kl.] LT', - nextDay : '[i morgen kl.] LT', - nextWeek : 'på dddd [kl.] LT', - lastDay : '[i går kl.] LT', - lastWeek : '[i] dddd[s kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'få sekunder', - ss : '%d sekunder', - m : 'et minut', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dage', - M : 'en måned', - MM : '%d måneder', - y : 'et år', - yy : '%d år' + months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'), + weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), + 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.] D. MMMM YYYY [kl.] HH:mm', + }, + calendar: { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'på dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[i] dddd[s kl.] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'få sekunder', + ss: '%d sekunder', + m: 'et minut', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dage', + M: 'en måned', + MM: '%d måneder', + y: 'et år', + yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } hooks.defineLocale('de-at', { - months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { + months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.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' + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime, - mm : '%d Minuten', - h : processRelativeTime, - hh : '%d Stunden', - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime + lastWeek: '[letzten] dddd [um] LT [Uhr]', + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime, + mm: '%d Minuten', + h: processRelativeTime, + hh: '%d Stunden', + d: processRelativeTime, + dd: processRelativeTime, + M: processRelativeTime, + MM: processRelativeTime, + y: processRelativeTime, + yy: processRelativeTime, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 function processRelativeTime$1(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } hooks.defineLocale('de-ch', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.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' + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime$1, - mm : '%d Minuten', - h : processRelativeTime$1, - hh : '%d Stunden', - d : processRelativeTime$1, - dd : processRelativeTime$1, - M : processRelativeTime$1, - MM : processRelativeTime$1, - y : processRelativeTime$1, - yy : processRelativeTime$1 + lastWeek: '[letzten] dddd [um] LT [Uhr]', + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime$1, + mm: '%d Minuten', + h: processRelativeTime$1, + hh: '%d Stunden', + d: processRelativeTime$1, + dd: processRelativeTime$1, + M: processRelativeTime$1, + MM: processRelativeTime$1, + y: processRelativeTime$1, + yy: processRelativeTime$1, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 function processRelativeTime$2(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] + m: ['eine Minute', 'einer Minute'], + h: ['eine Stunde', 'einer Stunde'], + d: ['ein Tag', 'einem Tag'], + dd: [number + ' Tage', number + ' Tagen'], + M: ['ein Monat', 'einem Monat'], + MM: [number + ' Monate', number + ' Monaten'], + y: ['ein Jahr', 'einem Jahr'], + yy: [number + ' Jahre', number + ' Jahren'], }; return withoutSuffix ? format[key][0] : format[key][1]; } hooks.defineLocale('de', { - months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), - weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), - weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { + months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( + '_' + ), + weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.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' + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY HH:mm', + LLLL: 'dddd, D. MMMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[heute um] LT [Uhr]', sameElse: 'L', nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', lastDay: '[gestern um] LT [Uhr]', - lastWeek: '[letzten] dddd [um] LT [Uhr]' - }, - relativeTime : { - future : 'in %s', - past : 'vor %s', - s : 'ein paar Sekunden', - ss : '%d Sekunden', - m : processRelativeTime$2, - mm : '%d Minuten', - h : processRelativeTime$2, - hh : '%d Stunden', - d : processRelativeTime$2, - dd : processRelativeTime$2, - M : processRelativeTime$2, - MM : processRelativeTime$2, - y : processRelativeTime$2, - yy : processRelativeTime$2 + lastWeek: '[letzten] dddd [um] LT [Uhr]', + }, + relativeTime: { + future: 'in %s', + past: 'vor %s', + s: 'ein paar Sekunden', + ss: '%d Sekunden', + m: processRelativeTime$2, + mm: '%d Minuten', + h: processRelativeTime$2, + hh: '%d Stunden', + d: processRelativeTime$2, + dd: processRelativeTime$2, + M: processRelativeTime$2, + MM: processRelativeTime$2, + y: processRelativeTime$2, + yy: processRelativeTime$2, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 months$4 = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު' - ], weekdays = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު' - ]; + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު', + ], + weekdays = [ + 'އާދިއްތަ', + 'ހޯމަ', + 'އަންގާރަ', + 'ބުދަ', + 'ބުރާސްފަތި', + 'ހުކުރު', + 'ހޮނިހިރު', + ]; hooks.defineLocale('dv', { - months : months$4, - monthsShort : months$4, - weekdays : weekdays, - weekdaysShort : weekdays, - weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), - longDateFormat : { - - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'D/M/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' + months: months$4, + monthsShort: months$4, + weekdays: weekdays, + weekdaysShort: weekdays, + weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'D/M/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', }, meridiemParse: /މކ|މފ/, - isPM : function (input) { + isPM: function (input) { return 'މފ' === input; }, - meridiem : function (hour, minute, isLower) { + 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' + 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, ','); @@ -6632,55 +7984,65 @@ postformat: function (string) { return string.replace(/,/g, '،'); }, - week : { - dow : 7, // Sunday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + week: { + dow: 7, // Sunday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('el', { - monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), - monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), - months : function (momentToFormat, format) { + monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split( + '_' + ), + monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split( + '_' + ), + months: function (momentToFormat, format) { if (!momentToFormat) { return this._monthsNominativeEl; - } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + } else if ( + typeof format === 'string' && + /D/.test(format.substring(0, format.indexOf('MMMM'))) + ) { + // if there is a day number before 'MMMM' return this._monthsGenitiveEl[momentToFormat.month()]; } else { return this._monthsNominativeEl[momentToFormat.month()]; } }, - monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), - weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), - weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), - weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), - meridiem : function (hours, minutes, isLower) { + monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split( + '_' + ), + weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'μμ' : 'ΜΜ'; } else { return isLower ? 'πμ' : 'ΠΜ'; } }, - isPM : function (input) { - return ((input + '').toLowerCase()[0] === 'μ'); - }, - meridiemParse : /[ΠΜ]\.?Μ?\.?/i, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function () { + isPM: function (input) { + return (input + '').toLowerCase()[0] === 'μ'; + }, + meridiemParse: /[ΠΜ]\.?Μ?\.?/i, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendarEl: { + sameDay: '[Σήμερα {}] LT', + nextDay: '[Αύριο {}] LT', + nextWeek: 'dddd [{}] LT', + lastDay: '[Χθες {}] LT', + lastWeek: function () { switch (this.day()) { case 6: return '[το προηγούμενο] dddd [{}] LT'; @@ -6688,486 +8050,641 @@ return '[την προηγούμενη] dddd [{}] LT'; } }, - sameElse : 'L' + sameElse: 'L', }, - calendar : function (key, mom) { + calendar: function (key, mom) { var output = this._calendarEl[key], hours = mom && mom.hours(); if (isFunction(output)) { output = output.apply(mom); } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); - }, - relativeTime : { - future : 'σε %s', - past : '%s πριν', - s : 'λίγα δευτερόλεπτα', - ss : '%d δευτερόλεπτα', - m : 'ένα λεπτό', - mm : '%d λεπτά', - h : 'μία ώρα', - hh : '%d ώρες', - d : 'μία μέρα', - dd : '%d μέρες', - M : 'ένας μήνας', - MM : '%d μήνες', - y : 'ένας χρόνος', - yy : '%d χρόνια' + return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις'); + }, + relativeTime: { + future: 'σε %s', + past: '%s πριν', + s: 'λίγα δευτερόλεπτα', + ss: '%d δευτερόλεπτα', + m: 'ένα λεπτό', + mm: '%d λεπτά', + h: 'μία ώρα', + hh: '%d ώρες', + d: 'μία μέρα', + dd: '%d μέρες', + M: 'ένας μήνας', + MM: '%d μήνες', + y: 'ένας χρόνος', + yy: '%d χρόνια', }, dayOfMonthOrdinalParse: /\d{1,2}η/, ordinal: '%dη', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } - }); - - //! moment.js locale configuration - - hooks.defineLocale('en-SG', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { - var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, // The week that contains Jan 4st is the first week of the year. }, - 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 hooks.defineLocale('en-au', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 hooks.defineLocale('en-ca', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'YYYY-MM-DD', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY h:mm A', - LLLL : 'dddd, MMMM D, YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'YYYY-MM-DD', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY h:mm A', + LLLL: 'dddd, MMMM D, YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; - } + }, }); //! moment.js locale configuration hooks.defineLocale('en-gb', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 hooks.defineLocale('en-ie', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + 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 + + hooks.defineLocale('en-il', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal: function (number) { + var b = number % 10, + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; + return number + output; + }, + }); + + //! moment.js locale configuration + + hooks.defineLocale('en-in', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 - hooks.defineLocale('en-il', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - 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 : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + hooks.defineLocale('en-nz', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; - } + }, + 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 - hooks.defineLocale('en-nz', { - months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' + hooks.defineLocale('en-sg', { + months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + 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: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', + }, + 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', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 hooks.defineLocale('eo', { - months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), - weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), - weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), - weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D[-a de] MMMM, YYYY', - LLL : 'D[-a de] MMMM, YYYY HH:mm', - LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm' + months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split( + '_' + ), + monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'), + weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), + weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), + weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: '[la] D[-an de] MMMM, YYYY', + LLL: '[la] D[-an de] MMMM, YYYY HH:mm', + LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm', + llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm', }, meridiemParse: /[ap]\.t\.m/i, isPM: function (input) { return input.charAt(0).toLowerCase() === 'p'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'p.t.m.' : 'P.T.M.'; } else { return isLower ? 'a.t.m.' : 'A.T.M.'; } }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'post %s', - past : 'antaŭ %s', - s : 'sekundoj', - ss : '%d sekundoj', - m : 'minuto', - mm : '%d minutoj', - h : 'horo', - hh : '%d horoj', - d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo - dd : '%d tagoj', - M : 'monato', - MM : '%d monatoj', - y : 'jaro', - yy : '%d jaroj' + calendar: { + sameDay: '[Hodiaŭ je] LT', + nextDay: '[Morgaŭ je] LT', + nextWeek: 'dddd[n je] LT', + lastDay: '[Hieraŭ je] LT', + lastWeek: '[pasintan] dddd[n je] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'post %s', + past: 'antaŭ %s', + s: 'kelkaj sekundoj', + ss: '%d sekundoj', + m: 'unu minuto', + mm: '%d minutoj', + h: 'unu horo', + hh: '%d horoj', + d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo + dd: '%d tagoj', + M: 'unu monato', + MM: '%d monatoj', + y: 'unu jaro', + yy: '%d jaroj', }, dayOfMonthOrdinalParse: /\d{1,2}a/, - ordinal : '%da', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%da', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration - var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse$1 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex$2 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse$1 = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex$2 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; hooks.defineLocale('es-do', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortDot; } else if (/-MMM-/.test(format)) { @@ -7183,71 +8700,91 @@ monthsParse: monthsParse$1, longMonthsParse: monthsParse$1, shortMonthsParse: monthsParse$1, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY h:mm A', - LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', + }, + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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. }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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 monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse$2 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex$3 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse$2 = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex$3 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; hooks.defineLocale('es-us', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortDot$1; } else if (/-MMM-/.test(format)) { @@ -7263,71 +8800,91 @@ monthsParse: monthsParse$2, longMonthsParse: monthsParse$2, shortMonthsParse: monthsParse$2, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'MM/DD/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY h:mm A', - LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'MM/DD/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY h:mm A', + LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', + }, + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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. }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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 monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), - monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - - var monthsParse$3 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i]; - var monthsRegex$4 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; + var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( + '_' + ), + monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), + monthsParse$3 = [ + /^ene/i, + /^feb/i, + /^mar/i, + /^abr/i, + /^may/i, + /^jun/i, + /^jul/i, + /^ago/i, + /^sep/i, + /^oct/i, + /^nov/i, + /^dic/i, + ], + monthsRegex$4 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; hooks.defineLocale('es', { - months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), - monthsShort : function (m, format) { + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortDot$2; } else if (/-MMM-/.test(format)) { @@ -7336,82 +8893,87 @@ return monthsShortDot$2[m.month()]; } }, - monthsRegex : monthsRegex$4, - monthsShortRegex : monthsRegex$4, - monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, - monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, - monthsParse : monthsParse$3, - longMonthsParse : monthsParse$3, - shortMonthsParse : monthsParse$3, - weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + monthsRegex: monthsRegex$4, + monthsShortRegex: monthsRegex$4, + monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, + monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, + monthsParse: monthsParse$3, + longMonthsParse: monthsParse$3, + shortMonthsParse: monthsParse$3, + weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', + }, + calendar: { + sameDay: function () { + return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextDay: function () { + return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + nextWeek: function () { + return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastDay: function () { + return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + lastWeek: function () { + return ( + '[el] dddd [pasado a la' + + (this.hours() !== 1 ? 's' : '') + + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : 'en %s', - past : 'hace %s', - s : 'unos segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'una hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un año', - yy : '%d años' + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años', }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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. - } + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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. + }, + invalidDate: 'Fecha invalida', }); //! moment.js locale configuration function processRelativeTime$3(number, withoutSuffix, key, isFuture) { var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'ss': [number + 'sekundi', number + 'sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] + s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + ss: [number + 'sekundi', number + 'sekundit'], + m: ['ühe minuti', 'üks minut'], + mm: [number + ' minuti', number + ' minutit'], + h: ['ühe tunni', 'tund aega', 'üks tund'], + hh: [number + ' tunni', number + ' tundi'], + d: ['ühe päeva', 'üks päev'], + M: ['kuu aja', 'kuu aega', 'üks kuu'], + MM: [number + ' kuu', number + ' kuud'], + y: ['ühe aasta', 'aasta', 'üks aasta'], + yy: [number + ' aasta', number + ' aastat'], }; if (withoutSuffix) { return format[key][2] ? format[key][2] : format[key][1]; @@ -7420,205 +8982,240 @@ } hooks.defineLocale('et', { - months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), - monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), - weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), - weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), - weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - 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, - dd : '%d päeva', - M : processRelativeTime$3, - MM : processRelativeTime$3, - y : processRelativeTime$3, - yy : processRelativeTime$3 + months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split( + '_' + ), + monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split( + '_' + ), + weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split( + '_' + ), + weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[Täna,] LT', + nextDay: '[Homme,] LT', + nextWeek: '[Järgmine] dddd LT', + lastDay: '[Eile,] LT', + lastWeek: '[Eelmine] dddd LT', + sameElse: 'L', + }, + 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, + dd: '%d päeva', + M: processRelativeTime$3, + MM: processRelativeTime$3, + y: processRelativeTime$3, + yy: processRelativeTime$3, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 hooks.defineLocale('eu', { - months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), - monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), - monthsParseExact : true, - weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), - weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), - weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - l : 'YYYY-M-D', - ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] HH:mm', - llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : '%s barru', - past : 'duela %s', - s : 'segundo batzuk', - ss : '%d segundo', - m : 'minutu bat', - mm : '%d minutu', - h : 'ordu bat', - hh : '%d ordu', - d : 'egun bat', - dd : '%d egun', - M : 'hilabete bat', - MM : '%d hilabete', - y : 'urte bat', - yy : '%d urte' + months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split( + '_' + ), + monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split( + '_' + ), + weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), + weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY[ko] MMMM[ren] D[a]', + LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l: 'YYYY-M-D', + ll: 'YYYY[ko] MMM D[a]', + lll: 'YYYY[ko] MMM D[a] HH:mm', + llll: 'ddd, YYYY[ko] MMM D[a] HH:mm', + }, + calendar: { + sameDay: '[gaur] LT[etan]', + nextDay: '[bihar] LT[etan]', + nextWeek: 'dddd LT[etan]', + lastDay: '[atzo] LT[etan]', + lastWeek: '[aurreko] dddd LT[etan]', + sameElse: 'L', + }, + relativeTime: { + future: '%s barru', + past: 'duela %s', + s: 'segundo batzuk', + ss: '%d segundo', + m: 'minutu bat', + mm: '%d minutu', + h: 'ordu bat', + hh: '%d ordu', + d: 'egun bat', + dd: '%d egun', + M: 'hilabete bat', + MM: '%d hilabete', + y: 'urte bat', + yy: '%d urte', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap$5 = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' - }, numberMap$4 = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' - }; + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰', + }, + numberMap$4 = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0', + }; hooks.defineLocale('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.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' + months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + '_' + ), + monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + '_' + ), + weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( + '_' + ), + weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.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 /بعد از ظهر/.test(input); }, - meridiem : function (hour, minute, isLower) { + 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 سال' + 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$4[match]; - }).replace(/،/g, ','); + return string + .replace(/[۰-۹]/g, function (match) { + return numberMap$4[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$5[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap$5[match]; + }) + .replace(/,/g, '،'); }, dayOfMonthOrdinalParse: /\d{1,2}م/, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + ordinal: '%dم', + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); //! moment.js locale configuration - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), + var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split( + ' ' + ), numbersFuture = [ - 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9] + 'nolla', + 'yhden', + 'kahden', + 'kolmen', + 'neljän', + 'viiden', + 'kuuden', + numbersPast[7], + numbersPast[8], + numbersPast[9], ]; function translate$2(number, withoutSuffix, key, isFuture) { var result = ''; @@ -7657,151 +9254,223 @@ return result; } function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; + return number < 10 + ? isFuture + ? numbersFuture[number] + : numbersPast[number] + : number; } hooks.defineLocale('fi', { - months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), - monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), - weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), - weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), - weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', - l : 'D.M.YYYY', - ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] HH.mm', - llll : 'ddd, Do MMM YYYY, [klo] HH.mm' - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s päästä', - past : '%s sitten', - s : translate$2, - ss : translate$2, - m : translate$2, - mm : translate$2, - h : translate$2, - hh : translate$2, - d : translate$2, - dd : translate$2, - M : translate$2, - MM : translate$2, - y : translate$2, - yy : translate$2 + months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split( + '_' + ), + monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split( + '_' + ), + weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split( + '_' + ), + weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), + weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM[ta] YYYY', + LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', + l: 'D.M.YYYY', + ll: 'Do MMM YYYY', + lll: 'Do MMM YYYY, [klo] HH.mm', + llll: 'ddd, Do MMM YYYY, [klo] HH.mm', + }, + calendar: { + sameDay: '[tänään] [klo] LT', + nextDay: '[huomenna] [klo] LT', + nextWeek: 'dddd [klo] LT', + lastDay: '[eilen] [klo] LT', + lastWeek: '[viime] dddd[na] [klo] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s päästä', + past: '%s sitten', + s: translate$2, + ss: translate$2, + m: translate$2, + mm: translate$2, + h: translate$2, + hh: translate$2, + d: translate$2, + dd: translate$2, + M: translate$2, + MM: translate$2, + y: translate$2, + yy: translate$2, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 + + hooks.defineLocale('fil', { + months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( + '_' + ), + monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( + '_' + ), + weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'MM/D/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY HH:mm', + LLLL: 'dddd, MMMM DD, YYYY HH:mm', + }, + calendar: { + sameDay: 'LT [ngayong araw]', + nextDay: '[Bukas ng] LT', + nextWeek: 'LT [sa susunod na] dddd', + lastDay: 'LT [kahapon]', + lastWeek: 'LT [noong nakaraang] dddd', + sameElse: 'L', + }, + relativeTime: { + future: 'sa loob ng %s', + past: '%s ang nakalipas', + s: 'ilang segundo', + ss: '%d segundo', + m: 'isang minuto', + mm: '%d minuto', + h: 'isang oras', + hh: '%d oras', + d: 'isang araw', + dd: '%d araw', + M: 'isang buwan', + MM: '%d buwan', + y: 'isang taon', + yy: '%d taon', + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal: function (number) { + return number; + }, + 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 hooks.defineLocale('fo', { - months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), - weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), - weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), - 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 : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'um %s', - past : '%s síðani', - s : 'fá sekund', - ss : '%d sekundir', - m : 'ein minuttur', - mm : '%d minuttir', - h : 'ein tími', - hh : '%d tímar', - d : 'ein dagur', - dd : '%d dagar', - M : 'ein mánaður', - MM : '%d mánaðir', - y : 'eitt ár', - yy : '%d ár' + months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split( + '_' + ), + weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), + 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: '[Í dag kl.] LT', + nextDay: '[Í morgin kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[Í gjár kl.] LT', + lastWeek: '[síðstu] dddd [kl] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'um %s', + past: '%s síðani', + s: 'fá sekund', + ss: '%d sekundir', + m: 'ein minuttur', + mm: '%d minuttir', + h: 'ein tími', + hh: '%d tímar', + d: 'ein dagur', + dd: '%d dagar', + M: 'ein mánaður', + MM: '%d mánaðir', + y: 'eitt ár', + yy: '%d ár', + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + 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. }, - dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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 hooks.defineLocale('fr-ca', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { // Words with masculine grammatical gender: mois, trimestre, jour default: @@ -7817,53 +9486,57 @@ case 'W': return number + (number === 1 ? 're' : 'e'); } - } + }, }); //! moment.js locale configuration hooks.defineLocale('fr-ch', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.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' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.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', + }, + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { // Words with masculine grammatical gender: mois, trimestre, jour default: @@ -7880,56 +9553,60 @@ return number + (number === 1 ? 're' : 'e'); } }, - 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. - } + 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 hooks.defineLocale('fr', { - months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), - monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), - monthsParseExact : true, - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'di_lu_ma_me_je_ve_sa'.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' - }, - calendar : { - sameDay : '[Aujourd’hui à] LT', - nextDay : '[Demain à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[Hier à] LT', - lastWeek : 'dddd [dernier à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'dans %s', - past : 'il y a %s', - s : 'quelques secondes', - ss : '%d secondes', - m : 'une minute', - mm : '%d minutes', - h : 'une heure', - hh : '%d heures', - d : 'un jour', - dd : '%d jours', - M : 'un mois', - MM : '%d mois', - y : 'un an', - yy : '%d ans' + months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( + '_' + ), + monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'di_lu_ma_me_je_ve_sa'.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', + }, + calendar: { + sameDay: '[Aujourd’hui à] LT', + nextDay: '[Demain à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[Hier à] LT', + lastWeek: 'dddd [dernier à] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dans %s', + past: 'il y a %s', + s: 'quelques secondes', + ss: '%d secondes', + m: 'une minute', + mm: '%d minutes', + h: 'une heure', + hh: '%d heures', + d: 'un jour', + dd: '%d jours', + M: 'un mois', + MM: '%d mois', + y: 'un an', + yy: '%d ans', }, dayOfMonthOrdinalParse: /\d{1,2}(er|)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { // TODO: Return 'e' when day of month > 1. Move this case inside // block for masculine words below. @@ -7951,20 +9628,26 @@ return number + (number === 1 ? 're' : 'e'); } }, - 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. - } + 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 monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), - monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split( + '_' + ), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split( + '_' + ); hooks.defineLocale('fy', { - months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), - monthsShort : function (m, format) { + months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortWithDots; } else if (/-MMM-/.test(format)) { @@ -7973,67 +9656,99 @@ return monthsShortWithDots[m.month()]; } }, - monthsParseExact : true, - weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), - weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), - weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.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' - }, - calendar : { + monthsParseExact: true, + weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split( + '_' + ), + weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.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', + }, + calendar: { sameDay: '[hjoed om] LT', nextDay: '[moarn om] LT', nextWeek: 'dddd [om] LT', lastDay: '[juster om] LT', lastWeek: '[ôfrûne] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'oer %s', - past : '%s lyn', - s : 'in pear sekonden', - ss : '%d sekonden', - m : 'ien minút', - mm : '%d minuten', - h : 'ien oere', - hh : '%d oeren', - d : 'ien dei', - dd : '%d dagen', - M : 'ien moanne', - MM : '%d moannen', - y : 'ien jier', - yy : '%d jierren' + sameElse: 'L', + }, + relativeTime: { + future: 'oer %s', + past: '%s lyn', + s: 'in pear sekonden', + ss: '%d sekonden', + m: 'ien minút', + mm: '%d minuten', + h: 'ien oere', + hh: '%d oeren', + d: 'ien dei', + dd: '%d dagen', + M: 'ien moanne', + MM: '%d moannen', + y: 'ien jier', + yy: '%d jierren', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + 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. }, - 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 months$5 = [ - 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig' - ]; - - var monthsShort$4 = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll']; - - var weekdays$1 = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn']; - - var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat']; - - var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa']; + 'Eanáir', + 'Feabhra', + 'Márta', + 'Aibreán', + 'Bealtaine', + 'Meitheamh', + 'Iúil', + 'Lúnasa', + 'Meán Fómhair', + 'Deireadh Fómhair', + 'Samhain', + 'Nollaig', + ], + monthsShort$4 = [ + 'Ean', + 'Feabh', + 'Márt', + 'Aib', + 'Beal', + 'Meith', + 'Iúil', + 'Lún', + 'M.F.', + 'D.F.', + 'Samh', + 'Noll', + ], + weekdays$1 = [ + 'Dé Domhnaigh', + 'Dé Luain', + 'Dé Máirt', + 'Dé Céadaoin', + 'Déardaoin', + 'Dé hAoine', + 'Dé Sathairn', + ], + weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], + weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa']; hooks.defineLocale('ga', { months: months$5, @@ -8048,15 +9763,15 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' + LLLL: 'dddd, D MMMM YYYY HH:mm', }, calendar: { sameDay: '[Inniu ag] LT', nextDay: '[Amárach ag] LT', nextWeek: 'dddd [ag] LT', - lastDay: '[Inné aig] LT', + lastDay: '[Inné ag] LT', lastWeek: 'dddd [seo caite] [ag] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'i %s', @@ -8070,9 +9785,9 @@ d: 'lá', dd: '%d lá', M: 'mí', - MM: '%d mí', + MM: '%d míonna', y: 'bliain', - yy: '%d bliain' + yy: '%d bliain', }, dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, ordinal: function (number) { @@ -8081,202 +9796,367 @@ }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration var months$6 = [ - 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' - ]; - - var monthsShort$5 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh']; - - var weekdays$2 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne']; - - var weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis']; - - var weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; + 'Am Faoilleach', + 'An Gearran', + 'Am Màrt', + 'An Giblean', + 'An Cèitean', + 'An t-Ògmhios', + 'An t-Iuchar', + 'An Lùnastal', + 'An t-Sultain', + 'An Dàmhair', + 'An t-Samhain', + 'An Dùbhlachd', + ], + monthsShort$5 = [ + 'Faoi', + 'Gear', + 'Màrt', + 'Gibl', + 'Cèit', + 'Ògmh', + 'Iuch', + 'Lùn', + 'Sult', + 'Dàmh', + 'Samh', + 'Dùbh', + ], + weekdays$2 = [ + 'Didòmhnaich', + 'Diluain', + 'Dimàirt', + 'Diciadain', + 'Diardaoin', + 'Dihaoine', + 'Disathairne', + ], + weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], + weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; hooks.defineLocale('gd', { - months : months$6, - monthsShort : monthsShort$5, - monthsParseExact : true, - weekdays : weekdays$2, - weekdaysShort : weekdaysShort$1, - weekdaysMin : weekdaysMin$1, - 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 : '[An-diugh aig] LT', - nextDay : '[A-màireach aig] LT', - nextWeek : 'dddd [aig] LT', - lastDay : '[An-dè aig] LT', - lastWeek : 'dddd [seo chaidh] [aig] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ann an %s', - past : 'bho chionn %s', - s : 'beagan diogan', - ss : '%d diogan', - m : 'mionaid', - mm : '%d mionaidean', - h : 'uair', - hh : '%d uairean', - d : 'latha', - dd : '%d latha', - M : 'mìos', - MM : '%d mìosan', - y : 'bliadhna', - yy : '%d bliadhna' - }, - dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/, - ordinal : function (number) { + months: months$6, + monthsShort: monthsShort$5, + monthsParseExact: true, + weekdays: weekdays$2, + weekdaysShort: weekdaysShort$1, + weekdaysMin: weekdaysMin$1, + 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: '[An-diugh aig] LT', + nextDay: '[A-màireach aig] LT', + nextWeek: 'dddd [aig] LT', + lastDay: '[An-dè aig] LT', + lastWeek: 'dddd [seo chaidh] [aig] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ann an %s', + past: 'bho chionn %s', + s: 'beagan diogan', + ss: '%d diogan', + m: 'mionaid', + mm: '%d mionaidean', + h: 'uair', + hh: '%d uairean', + d: 'latha', + dd: '%d latha', + M: 'mìos', + MM: '%d mìosan', + y: 'bliadhna', + yy: '%d bliadhna', + }, + dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, + ordinal: function (number) { var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; return number + output; }, - 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. - } + 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 hooks.defineLocale('gl', { - months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'), - monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), + months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split( + '_' + ), + monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), - weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), - weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY H:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), + weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), + weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY H:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', + }, + calendar: { + sameDay: function () { + return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + nextDay: function () { + return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + nextWeek: function () { + return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'; }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + lastDay: function () { + return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT'; }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + lastWeek: function () { + return ( + '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT' + ); }, - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { - future : function (str) { + relativeTime: { + future: function (str) { if (str.indexOf('un') === 0) { return 'n' + str; } return 'en ' + str; }, - past : 'hai %s', - s : 'uns segundos', - ss : '%d segundos', - m : 'un minuto', - mm : '%d minutos', - h : 'unha hora', - hh : '%d horas', - d : 'un día', - dd : '%d días', - M : 'un mes', - MM : '%d meses', - y : 'un ano', - yy : '%d anos' + past: 'hai %s', + s: 'uns segundos', + ss: '%d segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'unha hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un ano', + yy: '%d anos', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + 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. }, - dayOfMonthOrdinalParse : /\d{1,2}º/, - ordinal : '%dº', - 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 function processRelativeTime$4(number, withoutSuffix, key, isFuture) { var format = { - 's': ['thodde secondanim', 'thodde second'], - 'ss': [number + ' secondanim', number + ' second'], - 'm': ['eka mintan', 'ek minute'], - 'mm': [number + ' mintanim', number + ' mintam'], - 'h': ['eka voran', 'ek vor'], - 'hh': [number + ' voranim', number + ' voram'], - 'd': ['eka disan', 'ek dis'], - 'dd': [number + ' disanim', number + ' dis'], - 'M': ['eka mhoinean', 'ek mhoino'], - 'MM': [number + ' mhoineanim', number + ' mhoine'], - 'y': ['eka vorsan', 'ek voros'], - 'yy': [number + ' vorsanim', number + ' vorsam'] + s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], + ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], + m: ['एका मिणटान', 'एक मिनूट'], + mm: [number + ' मिणटांनी', number + ' मिणटां'], + h: ['एका वरान', 'एक वर'], + hh: [number + ' वरांनी', number + ' वरां'], + d: ['एका दिसान', 'एक दीस'], + dd: [number + ' दिसांनी', number + ' दीस'], + M: ['एका म्हयन्यान', 'एक म्हयनो'], + MM: [number + ' म्हयन्यानी', number + ' म्हयने'], + y: ['एका वर्सान', 'एक वर्स'], + yy: [number + ' वर्सांनी', number + ' वर्सां'], }; - return withoutSuffix ? format[key][0] : format[key][1]; + return isFuture ? format[key][0] : format[key][1]; + } + + hooks.defineLocale('gom-deva', { + months: { + standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( + '_' + ), + format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split( + '_' + ), + isFormat: /MMMM(\s)+D[oD]?/, + }, + monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'), + weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'), + weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'), + weekdaysParseExact: true, + 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, MMMM Do, YYYY, A h:mm [वाजतां]', + llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]', + }, + calendar: { + sameDay: '[आयज] LT', + nextDay: '[फाल्यां] LT', + nextWeek: '[फुडलो] dddd[,] LT', + lastDay: '[काल] LT', + lastWeek: '[फाटलो] dddd[,] LT', + sameElse: 'L', + }, + 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, + }, + dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, + ordinal: function (number, period) { + switch (period) { + // the ordinal 'वेर' only applies to day of the month + case 'D': + return number + 'वेर'; + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + case 'w': + case 'W': + return number; + } + }, + 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. + }, + meridiemParse: /राती|सकाळीं|दनपारां|सांजे/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राती') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळीं') { + return hour; + } else if (meridiem === 'दनपारां') { + return hour > 12 ? hour : hour + 12; + } else if (meridiem === 'सांजे') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'राती'; + } else if (hour < 12) { + return 'सकाळीं'; + } else if (hour < 16) { + return 'दनपारां'; + } else if (hour < 20) { + return 'सांजे'; + } else { + return 'राती'; + } + }, + }); + + //! moment.js locale configuration + + function processRelativeTime$5(number, withoutSuffix, key, isFuture) { + var format = { + s: ['thoddea sekondamni', 'thodde sekond'], + ss: [number + ' sekondamni', number + ' sekond'], + m: ['eka mintan', 'ek minut'], + mm: [number + ' mintamni', number + ' mintam'], + h: ['eka voran', 'ek vor'], + hh: [number + ' voramni', number + ' voram'], + d: ['eka disan', 'ek dis'], + dd: [number + ' disamni', number + ' dis'], + M: ['eka mhoinean', 'ek mhoino'], + MM: [number + ' mhoineamni', number + ' mhoine'], + y: ['eka vorsan', 'ek voros'], + yy: [number + ' vorsamni', number + ' vorsam'], + }; + return isFuture ? format[key][0] : format[key][1]; } hooks.defineLocale('gom-latn', { - months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'), - monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'), - weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), - weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'A h:mm [vazta]', - LTS : 'A h:mm:ss [vazta]', - L : 'DD-MM-YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY A h:mm [vazta]', - LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]', - llll: 'ddd, D MMM YYYY, A h:mm [vazta]' - }, - calendar : { + months: { + standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split( + '_' + ), + format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split( + '_' + ), + isFormat: /MMMM(\s)+D[oD]?/, + }, + monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'), + weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), + weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'A h:mm [vazta]', + LTS: 'A h:mm:ss [vazta]', + L: 'DD-MM-YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY A h:mm [vazta]', + LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]', + llll: 'ddd, D MMM YYYY, A h:mm [vazta]', + }, + calendar: { sameDay: '[Aiz] LT', nextDay: '[Faleam] LT', - nextWeek: '[Ieta to] dddd[,] LT', + nextWeek: '[Fuddlo] dddd[,] LT', lastDay: '[Kal] LT', - lastWeek: '[Fatlo] dddd[,] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s', - past : '%s adim', - 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 - }, - dayOfMonthOrdinalParse : /\d{1,2}(er)/, - ordinal : function (number, period) { + lastWeek: '[Fattlo] dddd[,] LT', + sameElse: 'L', + }, + 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, + }, + dayOfMonthOrdinalParse: /\d{1,2}(er)/, + ordinal: function (number, period) { switch (period) { // the ordinal 'er' only applies to day of the month case 'D': @@ -8291,18 +10171,18 @@ return number; } }, - 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. + 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. }, - meridiemParse: /rati|sokalli|donparam|sanje/, - meridiemHour : function (hour, meridiem) { + meridiemParse: /rati|sokallim|donparam|sanje/, + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } if (meridiem === 'rati') { return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'sokalli') { + } else if (meridiem === 'sokallim') { return hour; } else if (meridiem === 'donparam') { return hour > 12 ? hour : hour + 12; @@ -8310,11 +10190,11 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'rati'; } else if (hour < 12) { - return 'sokalli'; + return 'sokallim'; } else if (hour < 16) { return 'donparam'; } else if (hour < 20) { @@ -8322,7 +10202,7 @@ } else { return 'rati'; } - } + }, }); //! moment.js locale configuration @@ -8337,7 +10217,7 @@ '7': '૭', '8': '૮', '9': '૯', - '0': '૦' + '0': '૦', }, numberMap$5 = { '૧': '1', @@ -8349,14 +10229,20 @@ '૭': '7', '૮': '8', '૯': '9', - '૦': '0' + '૦': '0', }; hooks.defineLocale('gu', { - months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'), - monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'), + months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split( + '_' + ), + monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split( + '_' + ), monthsParseExact: true, - weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'), + weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split( + '_' + ), weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), longDateFormat: { @@ -8365,7 +10251,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY, A h:mm વાગ્યે', - LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે' + LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે', }, calendar: { sameDay: '[આજ] LT', @@ -8373,7 +10259,7 @@ nextWeek: 'dddd, LT', lastDay: '[ગઇકાલે] LT', lastWeek: '[પાછલા] dddd, LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: '%s મા', @@ -8389,7 +10275,7 @@ M: 'એક મહિનો', MM: '%d મહિનો', y: 'એક વર્ષ', - yy: '%d વર્ષ' + yy: '%d વર્ષ', }, preparse: function (string) { return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { @@ -8433,81 +10319,85 @@ }, 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. - } + doy: 6, // The week that contains Jan 6th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('he', { - months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), - monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), - weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), - weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), - weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), - 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', - l : 'D/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' - }, - 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 : function (number) { + months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split( + '_' + ), + monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split( + '_' + ), + weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'), + 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', + l: 'D/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm', + }, + 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: function (number) { if (number === 2) { return 'שעתיים'; } return number + ' שעות'; }, - d : 'יום', - dd : function (number) { + d: 'יום', + dd: function (number) { if (number === 2) { return 'יומיים'; } return number + ' ימים'; }, - M : 'חודש', - MM : function (number) { + M: 'חודש', + MM: function (number) { if (number === 2) { return 'חודשיים'; } return number + ' חודשים'; }, - y : 'שנה', - yy : function (number) { + y: 'שנה', + yy: function (number) { if (number === 2) { return 'שנתיים'; } else if (number % 10 === 0 && number !== 10) { return number + ' שנה'; } return number + ' שנים'; - } + }, }, meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, - isPM : function (input) { + isPM: function (input) { return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 5) { return 'לפנות בוקר'; } else if (hour < 10) { @@ -8519,74 +10409,78 @@ } else { return 'בערב'; } - } + }, }); //! moment.js locale configuration var symbolMap$7 = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap$6 = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap$6 = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; hooks.defineLocale('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( + '_' + ), + monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.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 : '[आज] 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 वर्ष' + weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.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: '[आज] 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) { @@ -8601,7 +10495,7 @@ // Hindi notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. meridiemParse: /रात|सुबह|दोपहर|शाम/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -8615,7 +10509,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'रात'; } else if (hour < 10) { @@ -8628,10 +10522,10 @@ return 'रात'; } }, - 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. - } + 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 @@ -8699,28 +10593,36 @@ } hooks.defineLocale('hr', { - months : { - format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'), - standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_') - }, - monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + months: { + format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split( + '_' + ), + standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split( + '_' + ), + }, + monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), - weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), - weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - nextWeek : function () { + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'Do MMMM YYYY', + LLL: 'Do MMMM YYYY H:mm', + LLLL: 'dddd, Do MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { switch (this.day()) { case 0: return '[u] [nedjelju] [u] LT'; @@ -8735,12 +10637,13 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[jučer u] LT', - lastWeek : function () { + lastDay: '[jučer u] LT', + lastWeek: function () { switch (this.day()) { case 0: + return '[prošlu] [nedjelju] [u] LT'; case 3: - return '[prošlu] dddd [u] LT'; + return '[prošlu] [srijedu] [u] LT'; case 6: return '[prošle] [subote] [u] LT'; case 1: @@ -8750,42 +10653,48 @@ return '[prošli] dddd [u] LT'; } }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'par sekundi', - ss : translate$3, - m : translate$3, - mm : translate$3, - h : translate$3, - hh : translate$3, - d : 'dan', - dd : translate$3, - M : 'mjesec', - MM : translate$3, - y : 'godinu', - yy : translate$3 + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'par sekundi', + ss: translate$3, + m: translate$3, + mm: translate$3, + h: translate$3, + hh: translate$3, + d: 'dan', + dd: translate$3, + M: 'mjesec', + MM: translate$3, + y: 'godinu', + yy: translate$3, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split( + ' ' + ); function translate$4(number, withoutSuffix, key, isFuture) { var num = number; switch (key) { case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + return isFuture || withoutSuffix + ? 'néhány másodperc' + : 'néhány másodperce'; case 'ss': - return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce'; + return num + (isFuture || withoutSuffix) + ? ' másodperc' + : ' másodperce'; case 'm': return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); case 'mm': @@ -8810,90 +10719,105 @@ return ''; } function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + return ( + (isFuture ? '' : '[múlt] ') + + '[' + + weekEndings[this.day()] + + '] LT[-kor]' + ); } hooks.defineLocale('hu', { - months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), - monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), - weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), - weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), - weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D. H:mm', - LLLL : 'YYYY. MMMM D., dddd H:mm' + months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split( + '_' + ), + weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY. MMMM D.', + LLL: 'YYYY. MMMM D. H:mm', + LLLL: 'YYYY. MMMM D., dddd H:mm', }, meridiemParse: /de|du/i, isPM: function (input) { return input.charAt(1).toLowerCase() === 'u'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower === true ? 'de' : 'DE'; } else { return isLower === true ? 'du' : 'DU'; } }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { + calendar: { + sameDay: '[ma] LT[-kor]', + nextDay: '[holnap] LT[-kor]', + nextWeek: function () { return week.call(this, true); }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { + lastDay: '[tegnap] LT[-kor]', + lastWeek: function () { return week.call(this, false); }, - sameElse : 'L' - }, - relativeTime : { - future : '%s múlva', - past : '%s', - s : translate$4, - ss : translate$4, - m : translate$4, - mm : translate$4, - h : translate$4, - hh : translate$4, - d : translate$4, - dd : translate$4, - M : translate$4, - MM : translate$4, - y : translate$4, - yy : translate$4 + sameElse: 'L', + }, + relativeTime: { + future: '%s múlva', + past: '%s', + s: translate$4, + ss: translate$4, + m: translate$4, + mm: translate$4, + h: translate$4, + hh: translate$4, + d: translate$4, + dd: translate$4, + M: translate$4, + MM: translate$4, + y: translate$4, + yy: translate$4, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 hooks.defineLocale('hy-am', { - months : { - format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'), - standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_') - }, - monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'), - weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), - 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 : { + months: { + format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split( + '_' + ), + standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split( + '_' + ), + }, + monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split( + '_' + ), + weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + 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: '[այսօր] LT', nextDay: '[վաղը] LT', lastDay: '[երեկ] LT', @@ -8903,29 +10827,29 @@ lastWeek: function () { return '[անցած] 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 տարի' + 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 տարի', }, meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, isPM: function (input) { return /^(ցերեկվա|երեկոյան)$/.test(input); }, - meridiem : function (hour) { + meridiem: function (hour) { if (hour < 4) { return 'գիշերվա'; } else if (hour < 12) { @@ -8951,30 +10875,32 @@ return number; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('id', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), + weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|siang|sore|malam/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -8986,7 +10912,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { @@ -8997,34 +10923,34 @@ return 'malam'; } }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Besok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kemarin pukul] LT', + lastWeek: 'dddd [lalu pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lalu', + s: 'beberapa detik', + ss: '%d detik', + m: 'semenit', + mm: '%d menit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lalu', - s : 'beberapa detik', - ss : '%d detik', - m : 'semenit', - mm : '%d menit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); //! moment.js locale configuration @@ -9041,24 +10967,36 @@ var result = number + ' '; switch (key) { case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + return withoutSuffix || isFuture + ? 'nokkrar sekúndur' + : 'nokkrum sekúndum'; case 'ss': if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum'); + return ( + result + + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum') + ); } return result + 'sekúnda'; case 'm': return withoutSuffix ? 'mínúta' : 'mínútu'; case 'mm': if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + return ( + result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum') + ); } else if (withoutSuffix) { return result + 'mínúta'; } return result + 'mínútu'; case 'hh': if (plural$2(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + return ( + result + + (withoutSuffix || isFuture + ? 'klukkustundir' + : 'klukkustundum') + ); } return result + 'klukkustund'; case 'd': @@ -9102,68 +11040,76 @@ } hooks.defineLocale('is', { - months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), - weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), - weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), - weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'eftir %s', - past : 'fyrir %s síðan', - s : translate$5, - ss : translate$5, - m : translate$5, - mm : translate$5, - h : 'klukkustund', - hh : translate$5, - d : translate$5, - dd : translate$5, - M : translate$5, - MM : translate$5, - y : translate$5, - yy : translate$5 + months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split( + '_' + ), + weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm', + }, + calendar: { + sameDay: '[í dag kl.] LT', + nextDay: '[á morgun kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[í gær kl.] LT', + lastWeek: '[síðasta] dddd [kl.] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'eftir %s', + past: 'fyrir %s síðan', + s: translate$5, + ss: translate$5, + m: translate$5, + mm: translate$5, + h: 'klukkustund', + hh: translate$5, + d: translate$5, + dd: translate$5, + M: translate$5, + MM: translate$5, + y: translate$5, + yy: translate$5, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 hooks.defineLocale('it-ch', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), - weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), - 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 : { + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( + '_' + ), + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( + '_' + ), + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + 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: '[Oggi alle] LT', nextDay: '[Domani alle] LT', nextWeek: 'dddd [alle] LT', @@ -9176,145 +11122,254 @@ return '[lo scorso] dddd [alle] LT'; } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + relativeTime: { + future: function (s) { + return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; }, - past : '%s fa', - s : 'alcuni secondi', - ss : '%d secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, + past: '%s fa', + s: 'alcuni secondi', + ss: '%d secondi', + m: 'un minuto', + mm: '%d minuti', + h: "un'ora", + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 hooks.defineLocale('it', { - months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), - monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), - weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), - weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), - weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), - 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: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', + months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( + '_' + ), + monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( + '_' + ), + weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), + 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: function () { + return ( + '[Oggi a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + nextDay: function () { + return ( + '[Domani a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + nextWeek: function () { + return ( + 'dddd [a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, + lastDay: function () { + return ( + '[Ieri a' + + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + + ']LT' + ); + }, lastWeek: function () { switch (this.day()) { case 0: - return '[la scorsa] dddd [alle] LT'; + return ( + '[La scorsa] dddd [a' + + (this.hours() > 1 + ? 'lle ' + : this.hours() === 0 + ? ' ' + : "ll'") + + ']LT' + ); default: - return '[lo scorso] dddd [alle] LT'; + return ( + '[Lo scorso] dddd [a' + + (this.hours() > 1 + ? 'lle ' + : this.hours() === 0 + ? ' ' + : "ll'") + + ']LT' + ); } }, - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + relativeTime: { + future: function (s) { + return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; }, - past : '%s fa', - s : 'alcuni secondi', - ss : '%d secondi', - m : 'un minuto', - mm : '%d minuti', - h : 'un\'ora', - hh : '%d ore', - d : 'un giorno', - dd : '%d giorni', - M : 'un mese', - MM : '%d mesi', - y : 'un anno', - yy : '%d anni' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, + past: '%s fa', + s: 'alcuni secondi', + ss: '%d secondi', + m: 'un minuto', + mm: '%d minuti', + h: "un'ora", + hh: '%d ore', + d: 'un giorno', + dd: '%d giorni', + M: 'un mese', + MM: '%d mesi', + y: 'un anno', + yy: '%d anni', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 hooks.defineLocale('ja', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), - weekdaysShort : '日_月_火_水_木_金_土'.split('_'), - weekdaysMin : '日_月_火_水_木_金_土'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日 dddd HH:mm', - l : 'YYYY/MM/DD', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日(ddd) HH:mm' + eras: [ + { + since: '2019-05-01', + offset: 1, + name: '令和', + narrow: '㋿', + abbr: 'R', + }, + { + since: '1989-01-08', + until: '2019-04-30', + offset: 1, + name: '平成', + narrow: '㍻', + abbr: 'H', + }, + { + since: '1926-12-25', + until: '1989-01-07', + offset: 1, + name: '昭和', + narrow: '㍼', + abbr: 'S', + }, + { + since: '1912-07-30', + until: '1926-12-24', + offset: 1, + name: '大正', + narrow: '㍽', + abbr: 'T', + }, + { + since: '1873-01-01', + until: '1912-07-29', + offset: 6, + name: '明治', + narrow: '㍾', + abbr: 'M', + }, + { + since: '0001-01-01', + until: '1873-12-31', + offset: 1, + name: '西暦', + narrow: 'AD', + abbr: 'AD', + }, + { + since: '0000-12-31', + until: -Infinity, + offset: 1, + name: '紀元前', + narrow: 'BC', + abbr: 'BC', + }, + ], + eraYearOrdinalRegex: /(元|\d+)年/, + eraYearOrdinalParse: function (input, match) { + return match[1] === '元' ? 1 : parseInt(match[1] || input, 10); + }, + months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort: '日_月_火_水_木_金_土'.split('_'), + weekdaysMin: '日_月_火_水_木_金_土'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日 dddd HH:mm', + l: 'YYYY/MM/DD', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日(ddd) HH:mm', }, meridiemParse: /午前|午後/i, - isPM : function (input) { + isPM: function (input) { return input === '午後'; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return '午前'; } else { return '午後'; } }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : function (now) { - if (now.week() < this.week()) { + calendar: { + sameDay: '[今日] LT', + nextDay: '[明日] LT', + nextWeek: function (now) { + if (now.week() !== this.week()) { return '[来週]dddd LT'; } else { return 'dddd LT'; } }, - lastDay : '[昨日] LT', - lastWeek : function (now) { - if (this.week() < now.week()) { + lastDay: '[昨日] LT', + lastWeek: function (now) { + if (this.week() !== now.week()) { return '[先週]dddd LT'; } else { return 'dddd LT'; } }, - sameElse : 'L' + sameElse: 'L', }, - dayOfMonthOrdinalParse : /\d{1,2}日/, - ordinal : function (number, period) { + dayOfMonthOrdinalParse: /\d{1,2}日/, + ordinal: function (number, period) { switch (period) { + case 'y': + return number === 1 ? '元年' : number + '年'; case 'd': case 'D': case 'DDD': @@ -9323,42 +11378,44 @@ return number; } }, - relativeTime : { - future : '%s後', - past : '%s前', - s : '数秒', - ss : '%d秒', - m : '1分', - mm : '%d分', - h : '1時間', - hh : '%d時間', - d : '1日', - dd : '%d日', - M : '1ヶ月', - MM : '%dヶ月', - y : '1年', - yy : '%d年' - } + relativeTime: { + future: '%s後', + past: '%s前', + s: '数秒', + ss: '%d秒', + m: '1分', + mm: '%d分', + h: '1時間', + hh: '%d時間', + d: '1日', + dd: '%d日', + M: '1ヶ月', + MM: '%dヶ月', + y: '1年', + yy: '%d年', + }, }); //! moment.js locale configuration hooks.defineLocale('jv', { - months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), - weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), - weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), - weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /enjing|siyang|sonten|ndalu/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -9370,7 +11427,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'enjing'; } else if (hours < 15) { @@ -9381,111 +11438,123 @@ return 'ndalu'; } }, - calendar : { - sameDay : '[Dinten puniko pukul] LT', - nextDay : '[Mbenjang pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kala wingi pukul] LT', - lastWeek : 'dddd [kepengker pukul] LT', - sameElse : 'L' + calendar: { + sameDay: '[Dinten puniko pukul] LT', + nextDay: '[Mbenjang pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kala wingi pukul] LT', + lastWeek: 'dddd [kepengker pukul] LT', + sameElse: 'L', }, - relativeTime : { - future : 'wonten ing %s', - past : '%s ingkang kepengker', - s : 'sawetawis detik', - ss : '%d detik', - m : 'setunggal menit', - mm : '%d menit', - h : 'setunggal jam', - hh : '%d jam', - d : 'sedinten', - dd : '%d dinten', - M : 'sewulan', - MM : '%d wulan', - y : 'setaun', - yy : '%d taun' + relativeTime: { + future: 'wonten ing %s', + past: '%s ingkang kepengker', + s: 'sawetawis detik', + ss: '%d detik', + m: 'setunggal menit', + mm: '%d menit', + h: 'setunggal jam', + hh: '%d jam', + d: 'sedinten', + dd: '%d dinten', + M: 'sewulan', + MM: '%d wulan', + y: 'setaun', + yy: '%d taun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); //! moment.js locale configuration hooks.defineLocale('ka', { - months : { - standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : { - standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'), - isFormat: /(წინა|შემდეგ)/ - }, - weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), - weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, 'ში') : - s + 'ში'; + months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split( + '_' + ), + monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays: { + standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split( + '_' + ), + format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split( + '_' + ), + isFormat: /(წინა|შემდეგ)/, + }, + weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + 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: '[დღეს] LT[-ზე]', + nextDay: '[ხვალ] LT[-ზე]', + lastDay: '[გუშინ] LT[-ზე]', + nextWeek: '[შემდეგ] dddd LT[-ზე]', + lastWeek: '[წინა] dddd LT-ზე', + sameElse: 'L', + }, + relativeTime: { + future: function (s) { + return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ( + $0, + $1, + $2 + ) { + return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში'; + }); }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + past: function (s) { + if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) { return s.replace(/(ი|ე)$/, 'ის წინ'); } - if ((/წელი/).test(s)) { + if (/წელი/.test(s)) { return s.replace(/წელი$/, 'წლის წინ'); } + return s; }, - s : 'რამდენიმე წამი', - ss : '%d წამი', - m : 'წუთი', - mm : '%d წუთი', - h : 'საათი', - hh : '%d საათი', - d : 'დღე', - dd : '%d დღე', - M : 'თვე', - MM : '%d თვე', - y : 'წელი', - yy : '%d წელი' + s: 'რამდენიმე წამი', + ss: '%d წამი', + m: 'წუთი', + mm: '%d წუთი', + h: 'საათი', + hh: '%d საათი', + d: 'დღე', + dd: '%d დღე', + M: 'თვე', + MM: '%d თვე', + y: 'წელი', + yy: '%d წელი', }, dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, - ordinal : function (number) { + ordinal: function (number) { if (number === 0) { return number; } if (number === 1) { return number + '-ლი'; } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + if ( + number < 20 || + (number <= 100 && number % 20 === 0) || + number % 100 === 0 + ) { return 'მე-' + number; } return number + '-ე'; }, - week : { - dow : 1, - doy : 7 - } + week: { + dow: 1, + doy: 7, + }, }); //! moment.js locale configuration @@ -9510,84 +11579,89 @@ 70: '-ші', 80: '-ші', 90: '-шы', - 100: '-ші' + 100: '-ші', }; hooks.defineLocale('kk', { - months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'), - monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), - weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'), - weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), - weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'), - 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 : '[Бүгін сағат] 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 жыл' + months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split( + '_' + ), + monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), + weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split( + '_' + ), + weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), + weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'), + 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: '[Бүгін сағат] 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 жыл', }, dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, - ordinal : function (number) { + ordinal: function (number) { var a = number % 10, b = number >= 100 ? 100 : null; return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap$8 = { - '1': '១', - '2': '២', - '3': '៣', - '4': '៤', - '5': '៥', - '6': '៦', - '7': '៧', - '8': '៨', - '9': '៩', - '0': '០' - }, numberMap$7 = { - '១': '1', - '២': '2', - '៣': '3', - '៤': '4', - '៥': '5', - '៦': '6', - '៧': '7', - '៨': '8', - '៩': '9', - '០': '0' - }; + '1': '១', + '2': '២', + '3': '៣', + '4': '៤', + '5': '៥', + '6': '៦', + '7': '៧', + '8': '៨', + '9': '៩', + '0': '០', + }, + numberMap$7 = { + '១': '1', + '២': '2', + '៣': '3', + '៤': '4', + '៥': '5', + '៦': '6', + '៧': '7', + '៨': '8', + '៩': '9', + '០': '0', + }; hooks.defineLocale('km', { months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( @@ -9606,7 +11680,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd, D MMMM YYYY HH:mm' + LLLL: 'dddd, D MMMM YYYY HH:mm', }, meridiemParse: /ព្រឹក|ល្ងាច/, isPM: function (input) { @@ -9625,7 +11699,7 @@ nextWeek: 'dddd [ម៉ោង] LT', lastDay: '[ម្សិលមិញ ម៉ោង] LT', lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: '%sទៀត', @@ -9641,10 +11715,10 @@ M: 'មួយខែ', MM: '%d ខែ', y: 'មួយឆ្នាំ', - yy: '%d ឆ្នាំ' + yy: '%d ឆ្នាំ', }, - dayOfMonthOrdinalParse : /ទី\d{1,2}/, - ordinal : 'ទី%d', + dayOfMonthOrdinalParse: /ទី\d{1,2}/, + ordinal: 'ទី%d', preparse: function (string) { return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { return numberMap$7[match]; @@ -9657,75 +11731,81 @@ }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap$9 = { - '1': '೧', - '2': '೨', - '3': '೩', - '4': '೪', - '5': '೫', - '6': '೬', - '7': '೭', - '8': '೮', - '9': '೯', - '0': '೦' - }, - numberMap$8 = { - '೧': '1', - '೨': '2', - '೩': '3', - '೪': '4', - '೫': '5', - '೬': '6', - '೭': '7', - '೮': '8', - '೯': '9', - '೦': '0' - }; + '1': '೧', + '2': '೨', + '3': '೩', + '4': '೪', + '5': '೫', + '6': '೬', + '7': '೭', + '8': '೮', + '9': '೯', + '0': '೦', + }, + numberMap$8 = { + '೧': '1', + '೨': '2', + '೩': '3', + '೪': '4', + '೫': '5', + '೬': '6', + '೭': '7', + '೮': '8', + '೯': '9', + '೦': '0', + }; hooks.defineLocale('kn', { - months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'), - monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'), + months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split( + '_' + ), + monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split( + '_' + ), monthsParseExact: true, - weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'), - weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), - weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.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 : '[ಇಂದು] 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 ವರ್ಷ' + weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split( + '_' + ), + weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), + weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.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: '[ಇಂದು] 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) { @@ -9738,7 +11818,7 @@ }); }, meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -9752,7 +11832,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ರಾತ್ರಿ'; } else if (hour < 10) { @@ -9766,61 +11846,63 @@ } }, dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, - ordinal : function (number) { + ordinal: function (number) { return number + 'ನೇ'; }, - 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. - } + 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 hooks.defineLocale('ko', { - months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), - weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), - weekdaysShort : '일_월_화_수_목_금_토'.split('_'), - weekdaysMin : '일_월_화_수_목_금_토'.split('_'), - longDateFormat : { - LT : 'A h:mm', - LTS : 'A h:mm:ss', - L : 'YYYY.MM.DD.', - LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 A h:mm', - LLLL : 'YYYY년 MMMM D일 dddd A h:mm', - l : 'YYYY.MM.DD.', - ll : 'YYYY년 MMMM D일', - lll : 'YYYY년 MMMM D일 A h:mm', - llll : 'YYYY년 MMMM D일 dddd A h:mm' - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s 후', - past : '%s 전', - s : '몇 초', - ss : '%d초', - m : '1분', - mm : '%d분', - h : '한 시간', - hh : '%d시간', - d : '하루', - dd : '%d일', - M : '한 달', - MM : '%d달', - y : '일 년', - yy : '%d년' - }, - dayOfMonthOrdinalParse : /\d{1,2}(일|월|주)/, - ordinal : function (number, period) { + months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split( + '_' + ), + weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort: '일_월_화_수_목_금_토'.split('_'), + weekdaysMin: '일_월_화_수_목_금_토'.split('_'), + longDateFormat: { + LT: 'A h:mm', + LTS: 'A h:mm:ss', + L: 'YYYY.MM.DD.', + LL: 'YYYY년 MMMM D일', + LLL: 'YYYY년 MMMM D일 A h:mm', + LLLL: 'YYYY년 MMMM D일 dddd A h:mm', + l: 'YYYY.MM.DD.', + ll: 'YYYY년 MMMM D일', + lll: 'YYYY년 MMMM D일 A h:mm', + llll: 'YYYY년 MMMM D일 dddd A h:mm', + }, + calendar: { + sameDay: '오늘 LT', + nextDay: '내일 LT', + nextWeek: 'dddd LT', + lastDay: '어제 LT', + lastWeek: '지난주 dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s 후', + past: '%s 전', + s: '몇 초', + ss: '%d초', + m: '1분', + mm: '%d분', + h: '한 시간', + hh: '%d시간', + d: '하루', + dd: '%d일', + M: '한 달', + MM: '%d달', + y: '일 년', + yy: '%d년', + }, + dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/, + ordinal: function (number, period) { switch (period) { case 'd': case 'D': @@ -9835,120 +11917,128 @@ return number; } }, - meridiemParse : /오전|오후/, - isPM : function (token) { + meridiemParse: /오전|오후/, + isPM: function (token) { return token === '오후'; }, - meridiem : function (hour, minute, isUpper) { + meridiem: function (hour, minute, isUpper) { return hour < 12 ? '오전' : '오후'; - } + }, }); //! moment.js locale configuration var symbolMap$a = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap$9 = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }, - months$7 = [ - 'کانونی دووەم', - 'شوبات', - 'ئازار', - 'نیسان', - 'ئایار', - 'حوزەیران', - 'تەمموز', - 'ئاب', - 'ئەیلوول', - 'تشرینی یەكەم', - 'تشرینی دووەم', - 'كانونی یەکەم' - ]; - + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠', + }, + numberMap$9 = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0', + }, + months$7 = [ + 'کانونی دووەم', + 'شوبات', + 'ئازار', + 'نیسان', + 'ئایار', + 'حوزەیران', + 'تەمموز', + 'ئاب', + 'ئەیلوول', + 'تشرینی یەكەم', + 'تشرینی دووەم', + 'كانونی یەکەم', + ]; hooks.defineLocale('ku', { - months : months$7, - monthsShort : months$7, - 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' + months: months$7, + monthsShort: months$7, + 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 /ئێواره‌/.test(input); }, - meridiem : function (hour, minute, isLower) { + 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 ساڵ' + 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$9[match]; - }).replace(/،/g, ','); + return string + .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap$9[match]; + }) + .replace(/،/g, ','); }, postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap$a[match]; - }).replace(/,/g, '،'); + return string + .replace(/\d/g, function (match) { + return symbolMap$a[match]; + }) + .replace(/,/g, '،'); + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); //! moment.js locale configuration @@ -9973,68 +12063,74 @@ 70: '-чи', 80: '-чи', 90: '-чу', - 100: '-чү' + 100: '-чү', }; hooks.defineLocale('ky', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'), - weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), - weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), - 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 : '[Бүгүн саат] 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 жыл' + months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( + '_' + ), + monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split( + '_' + ), + weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split( + '_' + ), + weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), + weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), + 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: '[Бүгүн саат] 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 жыл', }, dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, - ordinal : function (number) { + ordinal: function (number) { var a = number % 10, b = number >= 100 ? 100 : null; return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration - function processRelativeTime$5(number, withoutSuffix, key, isFuture) { + function processRelativeTime$6(number, withoutSuffix, key, isFuture) { var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'M': ['ee Mount', 'engem Mount'], - 'y': ['ee Joer', 'engem Joer'] + m: ['eng Minutt', 'enger Minutt'], + h: ['eng Stonn', 'enger Stonn'], + d: ['een Dag', 'engem Dag'], + M: ['ee Mount', 'engem Mount'], + y: ['ee Joer', 'engem Joer'], }; return withoutSuffix ? format[key][0] : format[key][1]; } @@ -10075,7 +12171,8 @@ return false; } else if (number < 100) { // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; + var lastDigit = number % 10, + firstDigit = number / 10; if (lastDigit === 0) { return eifelerRegelAppliesToNumber(firstDigit); } @@ -10094,20 +12191,26 @@ } hooks.defineLocale('lb', { - months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), - monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), - monthsParseExact : true, - weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split( + '_' + ), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split( + '_' + ), weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm [Auer]', LTS: 'H:mm:ss [Auer]', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm [Auer]', - LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]', }, calendar: { sameDay: '[Haut um] LT', @@ -10124,104 +12227,108 @@ default: return '[Leschte] dddd [um] LT'; } - } + }, }, - relativeTime : { - future : processFutureTime, - past : processPastTime, - s : 'e puer Sekonnen', - ss : '%d Sekonnen', - m : processRelativeTime$5, - mm : '%d Minutten', - h : processRelativeTime$5, - hh : '%d Stonnen', - d : processRelativeTime$5, - dd : '%d Deeg', - M : processRelativeTime$5, - MM : '%d Méint', - y : processRelativeTime$5, - yy : '%d Joer' + relativeTime: { + future: processFutureTime, + past: processPastTime, + s: 'e puer Sekonnen', + ss: '%d Sekonnen', + m: processRelativeTime$6, + mm: '%d Minutten', + h: processRelativeTime$6, + hh: '%d Stonnen', + d: processRelativeTime$6, + dd: '%d Deeg', + M: processRelativeTime$6, + MM: '%d Méint', + y: processRelativeTime$6, + yy: '%d Joer', }, dayOfMonthOrdinalParse: /\d{1,2}\./, ordinal: '%d.', 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('lo', { - 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' + 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) { + 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 : '1 ນາທີ', - mm : '%d ນາທີ', - h : '1 ຊົ່ວໂມງ', - hh : '%d ຊົ່ວໂມງ', - d : '1 ມື້', - dd : '%d ມື້', - M : '1 ເດືອນ', - MM : '%d ເດືອນ', - y : '1 ປີ', - yy : '%d ປີ' + calendar: { + sameDay: '[ມື້ນີ້ເວລາ] LT', + nextDay: '[ມື້ອື່ນເວລາ] LT', + nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT', + lastDay: '[ມື້ວານນີ້ເວລາ] LT', + lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ອີກ %s', + past: '%sຜ່ານມາ', + s: 'ບໍ່ເທົ່າໃດວິນາທີ', + ss: '%d ວິນາທີ', + m: '1 ນາທີ', + mm: '%d ນາທີ', + h: '1 ຊົ່ວໂມງ', + hh: '%d ຊົ່ວໂມງ', + d: '1 ມື້', + dd: '%d ມື້', + M: '1 ເດືອນ', + MM: '%d ເດືອນ', + y: '1 ປີ', + yy: '%d ປີ', }, dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, - ordinal : function (number) { + ordinal: function (number) { return 'ທີ່' + number; - } + }, }); //! moment.js locale configuration var units = { - 'ss' : 'sekundė_sekundžių_sekundes', - 'm' : 'minutė_minutės_minutę', - 'mm': 'minutės_minučių_minutes', - 'h' : 'valanda_valandos_valandą', - 'hh': 'valandos_valandų_valandas', - 'd' : 'diena_dienos_dieną', - 'dd': 'dienos_dienų_dienas', - 'M' : 'mėnuo_mėnesio_mėnesį', - 'MM': 'mėnesiai_mėnesių_mėnesius', - 'y' : 'metai_metų_metus', - 'yy': 'metai_metų_metus' + ss: 'sekundė_sekundžių_sekundes', + m: 'minutė_minutės_minutę', + mm: 'minutės_minučių_minutes', + h: 'valanda_valandos_valandą', + hh: 'valandos_valandų_valandas', + d: 'diena_dienos_dieną', + dd: 'dienos_dienų_dienas', + M: 'mėnuo_mėnesio_mėnesį', + MM: 'mėnesiai_mėnesių_mėnesius', + y: 'metai_metų_metus', + yy: 'metai_metų_metus', }; function translateSeconds(number, withoutSuffix, key, isFuture) { if (withoutSuffix) { @@ -10231,7 +12338,11 @@ } } function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + return withoutSuffix + ? forms(key)[0] + : isFuture + ? forms(key)[1] + : forms(key)[2]; } function special(number) { return number % 10 === 0 || (number > 10 && number < 20); @@ -10242,7 +12353,9 @@ function translate$6(number, withoutSuffix, key, isFuture) { var result = number + ' '; if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); + return ( + result + translateSingular(number, withoutSuffix, key[0], isFuture) + ); } else if (withoutSuffix) { return result + (special(number) ? forms(key)[1] : forms(key)[0]); } else { @@ -10254,80 +12367,88 @@ } } hooks.defineLocale('lt', { - months : { - format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), - standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), - isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/ - }, - monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : { - format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'), - standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'), - isFormat: /dddd HH:mm/ - }, - weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), - weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', - l : 'YYYY-MM-DD', - ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' - }, - calendar : { - sameDay : '[Šiandien] LT', - nextDay : '[Rytoj] LT', - nextWeek : 'dddd LT', - lastDay : '[Vakar] LT', - lastWeek : '[Praėjusį] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : 'po %s', - past : 'prieš %s', - s : translateSeconds, - ss : translate$6, - m : translateSingular, - mm : translate$6, - h : translateSingular, - hh : translate$6, - d : translateSingular, - dd : translate$6, - M : translateSingular, - MM : translate$6, - y : translateSingular, - yy : translate$6 + months: { + format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split( + '_' + ), + standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split( + '_' + ), + isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/, + }, + monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays: { + format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split( + '_' + ), + standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split( + '_' + ), + isFormat: /dddd HH:mm/, + }, + weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY [m.] MMMM D [d.]', + LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l: 'YYYY-MM-DD', + ll: 'YYYY [m.] MMMM D [d.]', + lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]', + }, + calendar: { + sameDay: '[Šiandien] LT', + nextDay: '[Rytoj] LT', + nextWeek: 'dddd LT', + lastDay: '[Vakar] LT', + lastWeek: '[Praėjusį] dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: 'po %s', + past: 'prieš %s', + s: translateSeconds, + ss: translate$6, + m: translateSingular, + mm: translate$6, + h: translateSingular, + hh: translate$6, + d: translateSingular, + dd: translate$6, + M: translateSingular, + MM: translate$6, + y: translateSingular, + yy: translate$6, }, dayOfMonthOrdinalParse: /\d{1,2}-oji/, - ordinal : function (number) { + ordinal: function (number) { return number + '-oji'; }, - 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. - } + 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 units$1 = { - 'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'), - 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), - 'h': 'stundas_stundām_stunda_stundas'.split('_'), - 'hh': 'stundas_stundām_stunda_stundas'.split('_'), - 'd': 'dienas_dienām_diena_dienas'.split('_'), - 'dd': 'dienas_dienām_diena_dienas'.split('_'), - 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), - 'y': 'gada_gadiem_gads_gadi'.split('_'), - 'yy': 'gada_gadiem_gads_gadi'.split('_') + ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'), + m: 'minūtes_minūtēm_minūte_minūtes'.split('_'), + mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'), + h: 'stundas_stundām_stunda_stundas'.split('_'), + hh: 'stundas_stundām_stunda_stundas'.split('_'), + d: 'dienas_dienām_diena_dienas'.split('_'), + dd: 'dienas_dienām_diena_dienas'.split('_'), + M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + y: 'gada_gadiem_gads_gadi'.split('_'), + yy: 'gada_gadiem_gads_gadi'.split('_'), }; /** * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. @@ -10353,56 +12474,61 @@ } hooks.defineLocale('lv', { - months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), - weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY.', - LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, HH:mm', - LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'pēc %s', - past : 'pirms %s', - s : relativeSeconds, - ss : relativeTimeWithPlural$1, - m : relativeTimeWithSingular, - mm : relativeTimeWithPlural$1, - h : relativeTimeWithSingular, - hh : relativeTimeWithPlural$1, - d : relativeTimeWithSingular, - dd : relativeTimeWithPlural$1, - M : relativeTimeWithSingular, - MM : relativeTimeWithPlural$1, - y : relativeTimeWithSingular, - yy : relativeTimeWithPlural$1 + months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split( + '_' + ), + weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY.', + LL: 'YYYY. [gada] D. MMMM', + LLL: 'YYYY. [gada] D. MMMM, HH:mm', + LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm', + }, + calendar: { + sameDay: '[Šodien pulksten] LT', + nextDay: '[Rīt pulksten] LT', + nextWeek: 'dddd [pulksten] LT', + lastDay: '[Vakar pulksten] LT', + lastWeek: '[Pagājušā] dddd [pulksten] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'pēc %s', + past: 'pirms %s', + s: relativeSeconds, + ss: relativeTimeWithPlural$1, + m: relativeTimeWithSingular, + mm: relativeTimeWithPlural$1, + h: relativeTimeWithSingular, + hh: relativeTimeWithPlural$1, + d: relativeTimeWithSingular, + dd: relativeTimeWithPlural$1, + M: relativeTimeWithSingular, + MM: relativeTimeWithPlural$1, + y: relativeTimeWithSingular, + yy: relativeTimeWithPlural$1, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 translator = { - words: { //Different grammatical cases + words: { + //Different grammatical cases ss: ['sekund', 'sekunda', 'sekundi'], m: ['jedan minut', 'jednog minuta'], mm: ['minut', 'minuta', 'minuta'], @@ -10410,36 +12536,50 @@ hh: ['sat', 'sata', 'sati'], dd: ['dan', 'dana', 'dana'], MM: ['mjesec', 'mjeseca', 'mjeseci'], - yy: ['godina', 'godine', 'godina'] + yy: ['godina', 'godine', 'godina'], }, correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + return ( + number + + ' ' + + translator.correctGrammaticalCase(number, wordKey) + ); } - } + }, }; hooks.defineLocale('me', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), - monthsParseExact : true, - weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( + '_' + ), weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', + LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' + LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[danas u] LT', @@ -10460,8 +12600,8 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[juče u] LT', - lastWeek : function () { + lastDay: '[juče u] LT', + lastWeek: function () { var lastWeekDays = [ '[prošle] [nedjelje] [u] LT', '[prošlog] [ponedjeljka] [u] LT', @@ -10469,41 +12609,45 @@ '[prošle] [srijede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' + '[prošle] [subote] [u] LT', ]; return lastWeekDays[this.day()]; }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'prije %s', - s : 'nekoliko sekundi', - ss : translator.translate, - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : 'dan', - dd : translator.translate, - M : 'mjesec', - MM : translator.translate, - y : 'godinu', - yy : translator.translate + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'prije %s', + s: 'nekoliko sekundi', + ss: translator.translate, + m: translator.translate, + mm: translator.translate, + h: translator.translate, + hh: translator.translate, + d: 'dan', + dd: translator.translate, + M: 'mjesec', + MM: translator.translate, + y: 'godinu', + yy: translator.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('mi', { - months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'), - monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'), + months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split( + '_' + ), + monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split( + '_' + ), monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, @@ -10517,7 +12661,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY [i] HH:mm', - LLLL: 'dddd, D MMMM YYYY [i] HH:mm' + LLLL: 'dddd, D MMMM YYYY [i] HH:mm', }, calendar: { sameDay: '[i teie mahana, i] LT', @@ -10525,7 +12669,7 @@ nextWeek: 'dddd [i] LT', lastDay: '[inanahi i] LT', lastWeek: 'dddd [whakamutunga i] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'i roto i %s', @@ -10541,38 +12685,42 @@ M: 'he marama', MM: '%d marama', y: 'he tau', - yy: '%d tau' + yy: '%d tau', }, dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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 hooks.defineLocale('mk', { - months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), - monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), - weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), - weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), - weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.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 : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : '[Во] dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { + months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split( + '_' + ), + monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split( + '_' + ), + weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.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: '[Денес во] LT', + nextDay: '[Утре во] LT', + nextWeek: '[Во] dddd [во] LT', + lastDay: '[Вчера во] LT', + lastWeek: function () { switch (this.day()) { case 0: case 3: @@ -10585,26 +12733,26 @@ return '[Изминатиот] 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 години' + 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 години', }, dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, - ordinal : function (number) { + ordinal: function (number) { var lastDigit = number % 10, last2Digits = number % 100; if (number === 0) { @@ -10623,67 +12771,75 @@ return number + '-ти'; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), - monthsParseExact : true, - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.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 : '[ഇന്ന്] 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 വർഷം' + months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split( + '_' + ), + monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split( + '_' + ), + weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.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: '[ഇന്ന്] 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 വർഷം', }, meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if ((meridiem === 'രാത്രി' && hour >= 4) || - meridiem === 'ഉച്ച കഴിഞ്ഞ്' || - meridiem === 'വൈകുന്നേരം') { + if ( + (meridiem === 'രാത്രി' && hour >= 4) || + meridiem === 'ഉച്ച കഴിഞ്ഞ്' || + meridiem === 'വൈകുന്നേരം' + ) { return hour + 12; } else { return hour; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'രാത്രി'; } else if (hour < 12) { @@ -10695,7 +12851,7 @@ } else { return 'രാത്രി'; } - } + }, }); //! moment.js locale configuration @@ -10727,58 +12883,62 @@ } hooks.defineLocale('mn', { - months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'), - monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'), - monthsParseExact : true, - weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), - weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), - weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'YYYY оны MMMMын D', - LLL : 'YYYY оны MMMMын D HH:mm', - LLLL : 'dddd, YYYY оны MMMMын D HH:mm' + months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split( + '_' + ), + monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), + weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), + weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'YYYY оны MMMMын D', + LLL: 'YYYY оны MMMMын D HH:mm', + LLLL: 'dddd, YYYY оны MMMMын D HH:mm', }, meridiemParse: /ҮӨ|ҮХ/i, - isPM : function (input) { + isPM: function (input) { return input === 'ҮХ'; }, - meridiem : function (hour, minute, isLower) { + 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 : translate$7, - ss : translate$7, - m : translate$7, - mm : translate$7, - h : translate$7, - hh : translate$7, - d : translate$7, - dd : translate$7, - M : translate$7, - MM : translate$7, - y : translate$7, - yy : translate$7 + calendar: { + sameDay: '[Өнөөдөр] LT', + nextDay: '[Маргааш] LT', + nextWeek: '[Ирэх] dddd LT', + lastDay: '[Өчигдөр] LT', + lastWeek: '[Өнгөрсөн] dddd LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s дараа', + past: '%s өмнө', + s: translate$7, + ss: translate$7, + m: translate$7, + mm: translate$7, + h: translate$7, + hh: translate$7, + d: translate$7, + dd: translate$7, + M: translate$7, + MM: translate$7, + y: translate$7, + yy: translate$7, }, dayOfMonthOrdinalParse: /\d{1,2} өдөр/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { case 'd': case 'D': @@ -10787,98 +12947,148 @@ default: return number; } - } + }, }); //! moment.js locale configuration var symbolMap$b = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap$a = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap$a = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; - function relativeTimeMr(number, withoutSuffix, string, isFuture) - { + function relativeTimeMr(number, withoutSuffix, string, isFuture) { var output = ''; if (withoutSuffix) { switch (string) { - case 's': output = 'काही सेकंद'; break; - case 'ss': output = '%d सेकंद'; break; - case 'm': output = 'एक मिनिट'; break; - case 'mm': output = '%d मिनिटे'; break; - case 'h': output = 'एक तास'; break; - case 'hh': output = '%d तास'; break; - case 'd': output = 'एक दिवस'; break; - case 'dd': output = '%d दिवस'; break; - case 'M': output = 'एक महिना'; break; - case 'MM': output = '%d महिने'; break; - case 'y': output = 'एक वर्ष'; break; - case 'yy': output = '%d वर्षे'; break; - } - } - else { + case 's': + output = 'काही सेकंद'; + break; + case 'ss': + output = '%d सेकंद'; + break; + case 'm': + output = 'एक मिनिट'; + break; + case 'mm': + output = '%d मिनिटे'; + break; + case 'h': + output = 'एक तास'; + break; + case 'hh': + output = '%d तास'; + break; + case 'd': + output = 'एक दिवस'; + break; + case 'dd': + output = '%d दिवस'; + break; + case 'M': + output = 'एक महिना'; + break; + case 'MM': + output = '%d महिने'; + break; + case 'y': + output = 'एक वर्ष'; + break; + case 'yy': + output = '%d वर्षे'; + break; + } + } else { switch (string) { - case 's': output = 'काही सेकंदां'; break; - case 'ss': output = '%d सेकंदां'; break; - case 'm': output = 'एका मिनिटा'; break; - case 'mm': output = '%d मिनिटां'; break; - case 'h': output = 'एका तासा'; break; - case 'hh': output = '%d तासां'; break; - case 'd': output = 'एका दिवसा'; break; - case 'dd': output = '%d दिवसां'; break; - case 'M': output = 'एका महिन्या'; break; - case 'MM': output = '%d महिन्यां'; break; - case 'y': output = 'एका वर्षा'; break; - case 'yy': output = '%d वर्षां'; break; + case 's': + output = 'काही सेकंदां'; + break; + case 'ss': + output = '%d सेकंदां'; + break; + case 'm': + output = 'एका मिनिटा'; + break; + case 'mm': + output = '%d मिनिटां'; + break; + case 'h': + output = 'एका तासा'; + break; + case 'hh': + output = '%d तासां'; + break; + case 'd': + output = 'एका दिवसा'; + break; + case 'dd': + output = '%d दिवसां'; + break; + case 'M': + output = 'एका महिन्या'; + break; + case 'MM': + output = '%d महिन्यां'; + break; + case 'y': + output = 'एका वर्षा'; + break; + case 'yy': + output = '%d वर्षां'; + break; } } return output.replace(/%d/i, number); } hooks.defineLocale('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), - monthsParseExact : true, - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.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 : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', + months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( + '_' + ), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.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: '[आज] LT', + nextDay: '[उद्या] LT', + nextWeek: 'dddd, LT', + lastDay: '[काल] LT', lastWeek: '[मागील] dddd, LT', - sameElse : 'L' + sameElse: 'L', }, - relativeTime : { + relativeTime: { future: '%sमध्ये', past: '%sपूर्वी', s: relativeTimeMr, @@ -10892,7 +13102,7 @@ M: relativeTimeMr, MM: relativeTimeMr, y: relativeTimeMr, - yy: relativeTimeMr + yy: relativeTimeMr, }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { @@ -10904,25 +13114,25 @@ return symbolMap$b[match]; }); }, - meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, - meridiemHour : function (hour, meridiem) { + meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if (meridiem === 'रात्री') { - return hour < 4 ? hour : hour + 12; - } else if (meridiem === 'सकाळी') { + if (meridiem === 'पहाटे' || meridiem === 'सकाळी') { return hour; - } else if (meridiem === 'दुपारी') { - return hour >= 10 ? hour : hour + 12; - } else if (meridiem === 'सायंकाळी') { - return hour + 12; + } else if ( + meridiem === 'दुपारी' || + meridiem === 'सायंकाळी' || + meridiem === 'रात्री' + ) { + return hour >= 12 ? hour : hour + 12; } }, meridiem: function (hour, minute, isLower) { - if (hour < 4) { - return 'रात्री'; - } else if (hour < 10) { + if (hour >= 0 && hour < 6) { + return 'पहाटे'; + } else if (hour < 12) { return 'सकाळी'; } else if (hour < 17) { return 'दुपारी'; @@ -10932,27 +13142,29 @@ return 'रात्री'; } }, - 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. - } + 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 hooks.defineLocale('ms-my', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (hour, meridiem) { @@ -10967,7 +13179,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { @@ -10978,51 +13190,53 @@ return 'malam'; } }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Esok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kelmarin pukul] LT', + lastWeek: 'dddd [lepas pukul] LT', + sameElse: 'L', }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - ss : '%d saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + ss: '%d saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); //! moment.js locale configuration hooks.defineLocale('ms', { - months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), - weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), - weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), - weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] HH.mm', - LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [pukul] HH.mm', + LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', }, meridiemParse: /pagi|tengahari|petang|malam/, meridiemHour: function (hour, meridiem) { @@ -11037,7 +13251,7 @@ return hour + 12; } }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'pagi'; } else if (hours < 15) { @@ -11048,114 +13262,123 @@ return 'malam'; } }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' + calendar: { + sameDay: '[Hari ini pukul] LT', + nextDay: '[Esok pukul] LT', + nextWeek: 'dddd [pukul] LT', + lastDay: '[Kelmarin pukul] LT', + lastWeek: 'dddd [lepas pukul] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'dalam %s', + past: '%s yang lepas', + s: 'beberapa saat', + ss: '%d saat', + m: 'seminit', + mm: '%d minit', + h: 'sejam', + hh: '%d jam', + d: 'sehari', + dd: '%d hari', + M: 'sebulan', + MM: '%d bulan', + y: 'setahun', + yy: '%d tahun', }, - relativeTime : { - future : 'dalam %s', - past : '%s yang lepas', - s : 'beberapa saat', - ss : '%d saat', - m : 'seminit', - mm : '%d minit', - h : 'sejam', - hh : '%d jam', - d : 'sehari', - dd : '%d hari', - M : 'sebulan', - MM : '%d bulan', - y : 'setahun', - yy : '%d tahun' + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); //! moment.js locale configuration hooks.defineLocale('mt', { - months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'), - monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), - weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'), - weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), - weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), - 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 : '[Illum fil-]LT', - nextDay : '[Għada fil-]LT', - nextWeek : 'dddd [fil-]LT', - lastDay : '[Il-bieraħ fil-]LT', - lastWeek : 'dddd [li għadda] [fil-]LT', - sameElse : 'L' - }, - relativeTime : { - future : 'f’ %s', - past : '%s ilu', - s : 'ftit sekondi', - ss : '%d sekondi', - m : 'minuta', - mm : '%d minuti', - h : 'siegħa', - hh : '%d siegħat', - d : 'ġurnata', - dd : '%d ġranet', - M : 'xahar', - MM : '%d xhur', - y : 'sena', - yy : '%d sni' - }, - dayOfMonthOrdinalParse : /\d{1,2}º/, + months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split( + '_' + ), + monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), + weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split( + '_' + ), + weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), + weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), + 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: '[Illum fil-]LT', + nextDay: '[Għada fil-]LT', + nextWeek: 'dddd [fil-]LT', + lastDay: '[Il-bieraħ fil-]LT', + lastWeek: 'dddd [li għadda] [fil-]LT', + sameElse: 'L', + }, + relativeTime: { + future: 'f’ %s', + past: '%s ilu', + s: 'ftit sekondi', + ss: '%d sekondi', + m: 'minuta', + mm: '%d minuti', + h: 'siegħa', + hh: '%d siegħat', + d: 'ġurnata', + dd: '%d ġranet', + M: 'xahar', + MM: '%d xhur', + y: 'sena', + yy: '%d sni', + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, ordinal: '%dº', - 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. - } + 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': '၃', - '4': '၄', - '5': '၅', - '6': '၆', - '7': '၇', - '8': '၈', - '9': '၉', - '0': '၀' - }, numberMap$b = { - '၁': '1', - '၂': '2', - '၃': '3', - '၄': '4', - '၅': '5', - '၆': '6', - '၇': '7', - '၈': '8', - '၉': '9', - '၀': '0' - }; + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀', + }, + numberMap$b = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0', + }; hooks.defineLocale('my', { - months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split( + '_' + ), monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), - weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split( + '_' + ), weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), @@ -11165,7 +13388,7 @@ L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', LLL: 'D MMMM YYYY HH:mm', - LLLL: 'dddd D MMMM YYYY HH:mm' + LLLL: 'dddd D MMMM YYYY HH:mm', }, calendar: { sameDay: '[ယနေ.] LT [မှာ]', @@ -11173,13 +13396,13 @@ nextWeek: 'dddd LT [မှာ]', lastDay: '[မနေ.က] LT [မှာ]', lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: 'လာမည့် %s မှာ', past: 'လွန်ခဲ့သော %s က', s: 'စက္ကန်.အနည်းငယ်', - ss : '%d စက္ကန့်', + ss: '%d စက္ကန့်', m: 'တစ်မိနစ်', mm: '%d မိနစ်', h: 'တစ်နာရီ', @@ -11189,7 +13412,7 @@ M: 'တစ်လ', MM: '%d လ', y: 'တစ်နှစ်', - yy: '%d နှစ်' + yy: '%d နှစ်', }, preparse: function (string) { return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { @@ -11203,102 +13426,112 @@ }, 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. - } + doy: 4, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('nb', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), - monthsParseExact : true, - weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'), - weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), + weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', + }, + calendar: { sameDay: '[i dag kl.] LT', nextDay: '[i morgen kl.] LT', nextWeek: 'dddd [kl.] LT', lastDay: '[i går kl.] LT', lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s siden', - s : 'noen sekunder', - ss : '%d sekunder', - m : 'ett minutt', - mm : '%d minutter', - h : 'en time', - hh : '%d timer', - d : 'en dag', - dd : '%d dager', - M : 'en måned', - MM : '%d måneder', - y : 'ett år', - yy : '%d år' + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: '%s siden', + s: 'noen sekunder', + ss: '%d sekunder', + m: 'ett minutt', + mm: '%d minutter', + h: 'en time', + hh: '%d timer', + d: 'en dag', + dd: '%d dager', + M: 'en måned', + MM: '%d måneder', + y: 'ett år', + yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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$d = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap$c = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०', + }, + numberMap$c = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0', + }; hooks.defineLocale('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), - monthsParseExact : true, - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'), - weekdaysParseExact : true, - 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 बजे' + months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split( + '_' + ), + monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split( + '_' + ), + weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'), + weekdaysParseExact: true, + 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 बजे', }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { @@ -11311,7 +13544,7 @@ }); }, meridiemParse: /राति|बिहान|दिउँसो|साँझ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -11325,7 +13558,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 3) { return 'राति'; } else if (hour < 12) { @@ -11338,47 +13571,65 @@ return 'राति'; } }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोलि] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' + 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 बर्ष', }, - relativeTime : { - future : '%sमा', - past : '%s अगाडि', - s : 'केही क्षण', - ss : '%d सेकेण्ड', - m : 'एक मिनेट', - mm : '%d मिनेट', - h : 'एक घण्टा', - hh : '%d घण्टा', - d : 'एक दिन', - dd : '%d दिन', - M : 'एक महिना', - MM : '%d महिना', - y : 'एक बर्ष', - yy : '%d बर्ष' + 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. }, - 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 monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var monthsParse$4 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; - var monthsRegex$5 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), + monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( + '_' + ), + monthsParse$4 = [ + /^jan/i, + /^feb/i, + /^maart|mrt.?$/i, + /^apr/i, + /^mei$/i, + /^jun[i.]?$/i, + /^jul[i.]?$/i, + /^aug/i, + /^sep/i, + /^okt/i, + /^nov/i, + /^dec/i, + ], + monthsRegex$5 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; hooks.defineLocale('nl-be', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortWithDots$1; } else if (/-MMM-/.test(format)) { @@ -11393,67 +13644,90 @@ monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - monthsParse : monthsParse$4, - longMonthsParse : monthsParse$4, - shortMonthsParse : monthsParse$4, - - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'zo_ma_di_wo_do_vr_za'.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' - }, - calendar : { + monthsParse: monthsParse$4, + longMonthsParse: monthsParse$4, + shortMonthsParse: monthsParse$4, + + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( + '_' + ), + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.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', + }, + calendar: { sameDay: '[vandaag om] LT', nextDay: '[morgen om] LT', nextWeek: 'dddd [om] LT', lastDay: '[gisteren om] LT', lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - ss : '%d seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' + sameElse: 'L', + }, + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + ss: '%d seconden', + m: 'één minuut', + mm: '%d minuten', + h: 'één uur', + hh: '%d uur', + d: 'één dag', + dd: '%d dagen', + M: 'één maand', + MM: '%d maanden', + y: 'één jaar', + yy: '%d jaar', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + 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. }, - 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 monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), - monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - - var monthsParse$5 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; - var monthsRegex$6 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( + '_' + ), + monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( + '_' + ), + monthsParse$5 = [ + /^jan/i, + /^feb/i, + /^maart|mrt.?$/i, + /^apr/i, + /^mei$/i, + /^jun[i.]?$/i, + /^jul[i.]?$/i, + /^aug/i, + /^sep/i, + /^okt/i, + /^nov/i, + /^dec/i, + ], + monthsRegex$6 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; hooks.defineLocale('nl', { - months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), - monthsShort : function (m, format) { + months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( + '_' + ), + monthsShort: function (m, format) { if (!m) { return monthsShortWithDots$2; } else if (/-MMM-/.test(format)) { @@ -11468,169 +13742,266 @@ monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, - monthsParse : monthsParse$5, - longMonthsParse : monthsParse$5, - shortMonthsParse : monthsParse$5, - - weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), - weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), - weekdaysMin : 'zo_ma_di_wo_do_vr_za'.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' - }, - calendar : { + monthsParse: monthsParse$5, + longMonthsParse: monthsParse$5, + shortMonthsParse: monthsParse$5, + + weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( + '_' + ), + weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin: 'zo_ma_di_wo_do_vr_za'.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', + }, + calendar: { sameDay: '[vandaag om] LT', nextDay: '[morgen om] LT', nextWeek: 'dddd [om] LT', lastDay: '[gisteren om] LT', lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'over %s', - past : '%s geleden', - s : 'een paar seconden', - ss : '%d seconden', - m : 'één minuut', - mm : '%d minuten', - h : 'één uur', - hh : '%d uur', - d : 'één dag', - dd : '%d dagen', - M : 'één maand', - MM : '%d maanden', - y : 'één jaar', - yy : '%d jaar' + sameElse: 'L', + }, + relativeTime: { + future: 'over %s', + past: '%s geleden', + s: 'een paar seconden', + ss: '%d seconden', + m: 'één minuut', + mm: '%d minuten', + h: 'één uur', + hh: '%d uur', + d: 'één dag', + dd: '%d dagen', + M: 'één maand', + MM: '%d maanden', + y: 'één jaar', + yy: '%d jaar', }, dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + ordinal: function (number) { + return ( + number + + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') + ); + }, + 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. }, - 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 hooks.defineLocale('nn', { - months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), - weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), - weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), - weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] H:mm', - LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' - }, - calendar : { + months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( + '_' + ), + monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'), + weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY [kl.] H:mm', + LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', + }, + calendar: { sameDay: '[I dag klokka] LT', nextDay: '[I morgon klokka] LT', nextWeek: 'dddd [klokka] LT', lastDay: '[I går klokka] LT', lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : '%s sidan', - s : 'nokre sekund', - ss : '%d sekund', - m : 'eit minutt', - mm : '%d minutt', - h : 'ein time', - hh : '%d timar', - d : 'ein dag', - dd : '%d dagar', - M : 'ein månad', - MM : '%d månader', - y : 'eit år', - yy : '%d år' + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: '%s sidan', + s: 'nokre sekund', + ss: '%d sekund', + m: 'eit minutt', + mm: '%d minutt', + h: 'ein time', + hh: '%d timar', + d: 'ein dag', + dd: '%d dagar', + M: 'ein månad', + MM: '%d månader', + y: 'eit år', + yy: '%d år', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 + + hooks.defineLocale('oc-lnc', { + months: { + standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split( + '_' + ), + format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split( + '_' + ), + isFormat: /D[oD]?(\s)+MMMM/, + }, + monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split( + '_' + ), + weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'), + weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [de] YYYY', + ll: 'D MMM YYYY', + LLL: 'D MMMM [de] YYYY [a] H:mm', + lll: 'D MMM YYYY, H:mm', + LLLL: 'dddd D MMMM [de] YYYY [a] H:mm', + llll: 'ddd D MMM YYYY, H:mm', + }, + calendar: { + sameDay: '[uèi a] LT', + nextDay: '[deman a] LT', + nextWeek: 'dddd [a] LT', + lastDay: '[ièr a] LT', + lastWeek: 'dddd [passat a] LT', + sameElse: 'L', + }, + relativeTime: { + future: "d'aquí %s", + past: 'fa %s', + s: 'unas segondas', + ss: '%d segondas', + m: 'una minuta', + mm: '%d minutas', + h: 'una ora', + hh: '%d oras', + d: 'un jorn', + dd: '%d jorns', + M: 'un mes', + MM: '%d meses', + y: 'un an', + yy: '%d ans', + }, + dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal: function (number, period) { + var output = + number === 1 + ? 'r' + : number === 2 + ? 'n' + : number === 3 + ? 'r' + : number === 4 + ? 't' + : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4, + }, }); //! moment.js locale configuration var symbolMap$e = { - '1': '੧', - '2': '੨', - '3': '੩', - '4': '੪', - '5': '੫', - '6': '੬', - '7': '੭', - '8': '੮', - '9': '੯', - '0': '੦' - }, - numberMap$d = { - '੧': '1', - '੨': '2', - '੩': '3', - '੪': '4', - '੫': '5', - '੬': '6', - '੭': '7', - '੮': '8', - '੯': '9', - '੦': '0' - }; + '1': '੧', + '2': '੨', + '3': '੩', + '4': '੪', + '5': '੫', + '6': '੬', + '7': '੭', + '8': '੮', + '9': '੯', + '0': '੦', + }, + numberMap$d = { + '੧': '1', + '੨': '2', + '੩': '3', + '੪': '4', + '੫': '5', + '੬': '6', + '੭': '7', + '੮': '8', + '੯': '9', + '੦': '0', + }; hooks.defineLocale('pa-in', { // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi. - months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), - weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'), - weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), - weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.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 : '[ਅਜ] 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 ਸਾਲ' + months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( + '_' + ), + monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( + '_' + ), + weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split( + '_' + ), + weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.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: '[ਅਜ] 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) { @@ -11645,7 +14016,7 @@ // Punjabi notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -11659,7 +14030,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ਰਾਤ'; } else if (hour < 10) { @@ -11672,18 +14043,22 @@ return 'ਰਾਤ'; } }, - 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. - } + 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 monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), - monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); + var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split( + '_' + ), + monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split( + '_' + ); function plural$3(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; } function translate$8(number, withoutSuffix, key) { var result = number + ' '; @@ -11695,7 +14070,7 @@ case 'mm': return result + (plural$3(number) ? 'minuty' : 'minut'); case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; + return withoutSuffix ? 'godzina' : 'godzinę'; case 'hh': return result + (plural$3(number) ? 'godziny' : 'godzin'); case 'MM': @@ -11706,33 +14081,41 @@ } hooks.defineLocale('pl', { - months : function (momentToFormat, format) { + months: function (momentToFormat, format) { if (!momentToFormat) { return monthsNominative; } else if (format === '') { // Hack: if format empty we know this is used to generate // RegExp by moment. Give then back both valid forms of months // in RegExp ready format. - return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + return ( + '(' + + monthsSubjective[momentToFormat.month()] + + '|' + + monthsNominative[momentToFormat.month()] + + ')' + ); } else if (/D MMMM/.test(format)) { return monthsSubjective[momentToFormat.month()]; } else { return monthsNominative[momentToFormat.month()]; } }, - monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), - weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), - weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), - weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), - 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' + monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split( + '_' + ), + weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), + weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + 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 : { + calendar: { sameDay: '[Dziś o] LT', nextDay: '[Jutro o] LT', nextWeek: function () { @@ -11766,144 +14149,152 @@ return '[W zeszły] dddd [o] LT'; } }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : '%s temu', - s : 'kilka sekund', - ss : translate$8, - m : translate$8, - mm : translate$8, - h : translate$8, - hh : translate$8, - d : '1 dzień', - dd : '%d dni', - M : 'miesiąc', - MM : translate$8, - y : 'rok', - yy : translate$8 + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: '%s temu', + s: 'kilka sekund', + ss: translate$8, + m: translate$8, + mm: translate$8, + h: translate$8, + hh: translate$8, + d: '1 dzień', + dd: '%d dni', + M: 'miesiąc', + MM: translate$8, + y: 'rok', + yy: translate$8, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 hooks.defineLocale('pt-br', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' - }, - calendar : { + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( + '_' + ), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split( + '_' + ), + weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), + weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', + }, + calendar: { sameDay: '[Hoje às] LT', nextDay: '[Amanhã às] LT', nextWeek: 'dddd [às] LT', lastDay: '[Ontem às] LT', lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday + return this.day() === 0 || this.day() === 6 + ? '[Último] dddd [às] LT' // Saturday + Sunday + : '[Última] dddd [às] LT'; // Monday - Friday }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'poucos segundos', - ss : '%d segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' + sameElse: 'L', + }, + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'poucos segundos', + ss: '%d segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos', }, dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº' + ordinal: '%dº', }); //! moment.js locale configuration hooks.defineLocale('pt', { - months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), - weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), - weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY HH:mm', - LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' - }, - calendar : { + months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( + '_' + ), + monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), + weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split( + '_' + ), + weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D [de] MMMM [de] YYYY', + LLL: 'D [de] MMMM [de] YYYY HH:mm', + LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm', + }, + calendar: { sameDay: '[Hoje às] LT', nextDay: '[Amanhã às] LT', nextWeek: 'dddd [às] LT', lastDay: '[Ontem às] LT', lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday + return this.day() === 0 || this.day() === 6 + ? '[Último] dddd [às] LT' // Saturday + Sunday + : '[Última] dddd [às] LT'; // Monday - Friday }, - sameElse: 'L' - }, - relativeTime : { - future : 'em %s', - past : 'há %s', - s : 'segundos', - ss : '%d segundos', - m : 'um minuto', - mm : '%d minutos', - h : 'uma hora', - hh : '%d horas', - d : 'um dia', - dd : '%d dias', - M : 'um mês', - MM : '%d meses', - y : 'um ano', - yy : '%d anos' + sameElse: 'L', + }, + relativeTime: { + future: 'em %s', + past: 'há %s', + s: 'segundos', + ss: '%d segundos', + m: 'um minuto', + mm: '%d minutos', + h: 'uma hora', + hh: '%d horas', + d: 'um dia', + dd: '%d dias', + M: 'um mês', + MM: '%d meses', + y: 'um ano', + yy: '%d anos', }, dayOfMonthOrdinalParse: /\d{1,2}º/, - ordinal : '%dº', - 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. - } + ordinal: '%dº', + 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 function relativeTimeWithPlural$2(number, withoutSuffix, key) { var format = { - 'ss': 'secunde', - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' + ss: 'secunde', + mm: 'minute', + hh: 'ore', + dd: 'zile', + MM: 'luni', + yy: 'ani', }, separator = ' '; if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { @@ -11913,97 +14304,129 @@ } hooks.defineLocale('ro', { - months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), - monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split( + '_' + ), + monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), - weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), - weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY H:mm', - LLLL : 'dddd, D MMMM YYYY H:mm' - }, - calendar : { + weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY H:mm', + LLLL: 'dddd, D MMMM YYYY H:mm', + }, + calendar: { sameDay: '[azi la] LT', nextDay: '[mâine la] LT', nextWeek: 'dddd [la] LT', lastDay: '[ieri la] LT', lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'peste %s', - past : '%s în urmă', - s : 'câteva secunde', - ss : relativeTimeWithPlural$2, - m : 'un minut', - mm : relativeTimeWithPlural$2, - h : 'o oră', - hh : relativeTimeWithPlural$2, - d : 'o zi', - dd : relativeTimeWithPlural$2, - M : 'o lună', - MM : relativeTimeWithPlural$2, - y : 'un an', - yy : relativeTimeWithPlural$2 + relativeTime: { + future: 'peste %s', + past: '%s în urmă', + s: 'câteva secunde', + ss: relativeTimeWithPlural$2, + m: 'un minut', + mm: relativeTimeWithPlural$2, + h: 'o oră', + hh: relativeTimeWithPlural$2, + d: 'o zi', + dd: relativeTimeWithPlural$2, + M: 'o lună', + MM: relativeTimeWithPlural$2, + y: 'un an', + yy: relativeTimeWithPlural$2, + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } }); //! moment.js locale configuration function plural$4(word, num) { var forms = word.split('_'); - 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]); + 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]; } function relativeTimeWithPlural$3(number, withoutSuffix, key) { var format = { - 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' + ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', + mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + hh: 'час_часа_часов', + dd: 'день_дня_дней', + MM: 'месяц_месяца_месяцев', + yy: 'год_года_лет', }; if (key === 'm') { return withoutSuffix ? 'минута' : 'минуту'; - } - else { + } else { return number + ' ' + plural$4(format[key], +number); } } - var monthsParse$6 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; + var monthsParse$6 = [ + /^янв/i, + /^фев/i, + /^мар/i, + /^апр/i, + /^ма[йя]/i, + /^июн/i, + /^июл/i, + /^авг/i, + /^сен/i, + /^окт/i, + /^ноя/i, + /^дек/i, + ]; // http://new.gramota.ru/spravka/rules/139-prop : § 103 // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 hooks.defineLocale('ru', { - months : { - format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), - standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') - }, - monthsShort : { + months: { + format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split( + '_' + ), + standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( + '_' + ), + }, + monthsShort: { // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? - format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), - standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') - }, - weekdays : { - standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'), - isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ - }, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : monthsParse$6, - longMonthsParse : monthsParse$6, - shortMonthsParse : monthsParse$6, + format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( + '_' + ), + standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( + '_' + ), + }, + weekdays: { + standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split( + '_' + ), + format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split( + '_' + ), + isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/, + }, + weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse: monthsParse$6, + longMonthsParse: monthsParse$6, + shortMonthsParse: monthsParse$6, // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, @@ -12016,15 +14439,15 @@ // Выражение, которое соотвествует только сокращённым формам monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., H:mm', - LLLL : 'dddd, D MMMM YYYY г., H:mm' - }, - calendar : { + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D MMMM YYYY г.', + LLL: 'D MMMM YYYY г., H:mm', + LLLL: 'dddd, D MMMM YYYY г., H:mm', + }, + calendar: { sameDay: '[Сегодня, в] LT', nextDay: '[Завтра, в] LT', lastDay: '[Вчера, в] LT', @@ -12072,29 +14495,29 @@ } } }, - sameElse: 'L' - }, - relativeTime : { - future : 'через %s', - past : '%s назад', - s : 'несколько секунд', - ss : relativeTimeWithPlural$3, - m : relativeTimeWithPlural$3, - mm : relativeTimeWithPlural$3, - h : 'час', - hh : relativeTimeWithPlural$3, - d : 'день', - dd : relativeTimeWithPlural$3, - M : 'месяц', - MM : relativeTimeWithPlural$3, - y : 'год', - yy : relativeTimeWithPlural$3 + sameElse: 'L', + }, + relativeTime: { + future: 'через %s', + past: '%s назад', + s: 'несколько секунд', + ss: relativeTimeWithPlural$3, + m: relativeTimeWithPlural$3, + mm: relativeTimeWithPlural$3, + h: 'час', + hh: relativeTimeWithPlural$3, + d: 'день', + dd: relativeTimeWithPlural$3, + M: 'месяц', + MM: relativeTimeWithPlural$3, + y: 'год', + yy: relativeTimeWithPlural$3, }, meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { + isPM: function (input) { return /^(дня|вечера)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночи'; } else if (hour < 12) { @@ -12121,85 +14544,77 @@ return number; } }, - 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. - } + 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 months$8 = [ - 'جنوري', - 'فيبروري', - 'مارچ', - 'اپريل', - 'مئي', - 'جون', - 'جولاءِ', - 'آگسٽ', - 'سيپٽمبر', - 'آڪٽوبر', - 'نومبر', - 'ڊسمبر' - ]; - var days$1 = [ - 'آچر', - 'سومر', - 'اڱارو', - 'اربع', - 'خميس', - 'جمع', - 'ڇنڇر' - ]; + 'جنوري', + 'فيبروري', + 'مارچ', + 'اپريل', + 'مئي', + 'جون', + 'جولاءِ', + 'آگسٽ', + 'سيپٽمبر', + 'آڪٽوبر', + 'نومبر', + 'ڊسمبر', + ], + days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر']; hooks.defineLocale('sd', { - months : months$8, - monthsShort : months$8, - weekdays : days$1, - weekdaysShort : days$1, - weekdaysMin : days$1, - 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' + months: months$8, + monthsShort: months$8, + weekdays: days$1, + weekdaysShort: days$1, + weekdaysMin: days$1, + 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) { + isPM: function (input) { return 'شام' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'صبح'; } 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 سال' + 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, ','); @@ -12207,201 +14622,209 @@ postformat: function (string) { return string.replace(/,/g, '،'); }, - 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. - } + 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 hooks.defineLocale('se', { - months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), - monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), - weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), - weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), - weekdaysMin : 's_v_m_g_d_b_L'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD.MM.YYYY', - LL : 'MMMM D. [b.] YYYY', - LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm', - LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' - }, - calendar : { + months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split( + '_' + ), + monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split( + '_' + ), + weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split( + '_' + ), + weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), + weekdaysMin: 's_v_m_g_d_b_L'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD.MM.YYYY', + LL: 'MMMM D. [b.] YYYY', + LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', + LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', + }, + calendar: { sameDay: '[otne ti] LT', nextDay: '[ihttin ti] LT', nextWeek: 'dddd [ti] LT', lastDay: '[ikte ti] LT', lastWeek: '[ovddit] dddd [ti] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : '%s geažes', - past : 'maŋit %s', - s : 'moadde sekunddat', + relativeTime: { + future: '%s geažes', + past: 'maŋit %s', + s: 'moadde sekunddat', ss: '%d sekunddat', - m : 'okta minuhta', - mm : '%d minuhtat', - h : 'okta diimmu', - hh : '%d diimmut', - d : 'okta beaivi', - dd : '%d beaivvit', - M : 'okta mánnu', - MM : '%d mánut', - y : 'okta jahki', - yy : '%d jagit' + m: 'okta minuhta', + mm: '%d minuhtat', + h: 'okta diimmu', + hh: '%d diimmut', + d: 'okta beaivi', + dd: '%d beaivvit', + M: 'okta mánnu', + MM: '%d mánut', + y: 'okta jahki', + yy: '%d jagit', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 /*jshint -W100*/ hooks.defineLocale('si', { - months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), - monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), - weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), - weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), - weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'a h:mm', - LTS : 'a h:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY MMMM D', - LLL : 'YYYY MMMM D, a h:mm', - LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' - }, - 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' + months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split( + '_' + ), + monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split( + '_' + ), + weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split( + '_' + ), + weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'a h:mm', + LTS: 'a h:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY MMMM D', + LLL: 'YYYY MMMM D, a h:mm', + LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss', + }, + 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', }, dayOfMonthOrdinalParse: /\d{1,2} වැනි/, - ordinal : function (number) { + ordinal: function (number) { return number + ' වැනි'; }, - meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, - isPM : function (input) { + meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, + isPM: function (input) { return input === 'ප.ව.' || input === 'පස් වරු'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'ප.ව.' : 'පස් වරු'; } else { return isLower ? 'පෙ.ව.' : 'පෙර වරු'; } - } + }, }); //! moment.js locale configuration - var months$9 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), + var months$9 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split( + '_' + ), monthsShort$6 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); function plural$5(n) { - return (n > 1) && (n < 5); + return n > 1 && n < 5; } function translate$9(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 's': // a few seconds / in a few seconds / a few seconds ago + return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'sekundy' : 'sekúnd'); } else { return result + 'sekundami'; } - break; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'minúty' : 'minút'); } else { return result + 'minútami'; } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; case 'hh': // 9 hours / in 9 hours / 9 hours ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'hodiny' : 'hodín'); } else { return result + 'hodinami'; } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'd': // a day / in a day / a day ago + return withoutSuffix || isFuture ? 'deň' : 'dňom'; case 'dd': // 9 days / in 9 days / 9 days ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'dni' : 'dní'); } else { return result + 'dňami'; } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'M': // a month / in a month / a month ago + return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; case 'MM': // 9 months / in 9 months / 9 months ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'mesiace' : 'mesiacov'); } else { return result + 'mesiacmi'; } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'y': // a year / in a year / a year ago + return withoutSuffix || isFuture ? 'rok' : 'rokom'; case 'yy': // 9 years / in 9 years / 9 years ago if (withoutSuffix || isFuture) { return result + (plural$5(number) ? 'roky' : 'rokov'); } else { return result + 'rokmi'; } - break; } } hooks.defineLocale('sk', { - months : months$9, - monthsShort : monthsShort$6, - weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), - weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), - weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), - longDateFormat : { + months: months$9, + monthsShort: monthsShort$6, + weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'), + longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd D. MMMM YYYY H:mm' + LTS: 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd D. MMMM YYYY H:mm', }, - calendar : { + calendar: { sameDay: '[dnes o] LT', nextDay: '[zajtra o] LT', nextWeek: function () { @@ -12438,39 +14861,41 @@ return '[minulú sobotu o] LT'; } }, - sameElse: 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pred %s', - s : translate$9, - ss : translate$9, - m : translate$9, - mm : translate$9, - h : translate$9, - hh : translate$9, - d : translate$9, - dd : translate$9, - M : translate$9, - MM : translate$9, - y : translate$9, - yy : translate$9 + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'pred %s', + s: translate$9, + ss: translate$9, + m: translate$9, + mm: translate$9, + h: translate$9, + hh: translate$9, + d: translate$9, + dd: translate$9, + M: translate$9, + MM: translate$9, + y: translate$9, + yy: translate$9, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 - function processRelativeTime$6(number, withoutSuffix, key, isFuture) { + function processRelativeTime$7(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { case 's': - return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + return withoutSuffix || isFuture + ? 'nekaj sekund' + : 'nekaj sekundami'; case 'ss': if (number === 1) { result += withoutSuffix ? 'sekundo' : 'sekundi'; @@ -12549,26 +14974,30 @@ } hooks.defineLocale('sl', { - months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), - monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), - weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), - weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY H:mm', - LLLL : 'dddd, D. MMMM YYYY H:mm' - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { + weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD. MM. YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm', + }, + calendar: { + sameDay: '[danes ob] LT', + nextDay: '[jutri ob] LT', + + nextWeek: function () { switch (this.day()) { case 0: return '[v] [nedeljo] [ob] LT'; @@ -12583,8 +15012,8 @@ return '[v] dddd [ob] LT'; } }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { + lastDay: '[včeraj ob] LT', + lastWeek: function () { switch (this.day()) { case 0: return '[prejšnjo] [nedeljo] [ob] LT'; @@ -12599,92 +15028,97 @@ return '[prejšnji] dddd [ob] LT'; } }, - sameElse : 'L' - }, - relativeTime : { - future : 'čez %s', - past : 'pred %s', - 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 + sameElse: 'L', + }, + 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, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('sq', { - months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), - monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), - weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), - weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), - weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), - weekdaysParseExact : true, + months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split( + '_' + ), + monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split( + '_' + ), + weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), + weekdaysParseExact: true, meridiemParse: /PD|MD/, isPM: function (input) { return input.charAt(0) === 'M'; }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { return hours < 12 ? 'PD' : 'MD'; }, - 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 : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'në %s', - past : '%s më parë', - s : 'disa sekonda', - ss : '%d sekonda', - m : 'një minutë', - mm : '%d minuta', - h : 'një orë', - hh : '%d orë', - d : 'një ditë', - dd : '%d ditë', - M : 'një muaj', - MM : '%d muaj', - y : 'një vit', - yy : '%d vite' + 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: '[Sot në] LT', + nextDay: '[Nesër në] LT', + nextWeek: 'dddd [në] LT', + lastDay: '[Dje në] LT', + lastWeek: 'dddd [e kaluar në] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'në %s', + past: '%s më parë', + s: 'disa sekonda', + ss: '%d sekonda', + m: 'një minutë', + mm: '%d minuta', + h: 'një orë', + hh: '%d orë', + d: 'një ditë', + dd: '%d ditë', + M: 'një muaj', + MM: '%d muaj', + y: 'një vit', + yy: '%d vite', }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 translator$1 = { - words: { //Different grammatical cases + words: { + //Different grammatical cases ss: ['секунда', 'секунде', 'секунди'], m: ['један минут', 'једне минуте'], mm: ['минут', 'минуте', 'минута'], @@ -12692,36 +15126,48 @@ hh: ['сат', 'сата', 'сати'], dd: ['дан', 'дана', 'дана'], MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] + yy: ['година', 'године', 'година'], }, correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator$1.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { - return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey); + return ( + number + + ' ' + + translator$1.correctGrammaticalCase(number, wordKey) + ); } - } + }, }; hooks.defineLocale('sr-cyrl', { - months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'), - monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), + months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( + '_' + ), + monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split( + '_' + ), monthsParseExact: true, weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', + LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' + LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[данас у] LT', @@ -12741,8 +15187,8 @@ return '[у] dddd [у] LT'; } }, - lastDay : '[јуче у] LT', - lastWeek : function () { + lastDay: '[јуче у] LT', + lastWeek: function () { var lastWeekDays = [ '[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', @@ -12750,40 +15196,41 @@ '[прошле] [среде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' + '[прошле] [суботе] [у] LT', ]; return lastWeekDays[this.day()]; }, - sameElse : 'L' - }, - relativeTime : { - future : 'за %s', - past : 'пре %s', - s : 'неколико секунди', - ss : translator$1.translate, - m : translator$1.translate, - mm : translator$1.translate, - h : translator$1.translate, - hh : translator$1.translate, - d : 'дан', - dd : translator$1.translate, - M : 'месец', - MM : translator$1.translate, - y : 'годину', - yy : translator$1.translate + sameElse: 'L', + }, + relativeTime: { + future: 'за %s', + past: 'пре %s', + s: 'неколико секунди', + ss: translator$1.translate, + m: translator$1.translate, + mm: translator$1.translate, + h: translator$1.translate, + hh: translator$1.translate, + d: 'дан', + dd: translator$1.translate, + M: 'месец', + MM: translator$1.translate, + y: 'годину', + yy: translator$1.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var translator$2 = { - words: { //Different grammatical cases + words: { + //Different grammatical cases ss: ['sekunda', 'sekunde', 'sekundi'], m: ['jedan minut', 'jedne minute'], mm: ['minut', 'minute', 'minuta'], @@ -12791,36 +15238,50 @@ hh: ['sat', 'sata', 'sati'], dd: ['dan', 'dana', 'dana'], MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] + yy: ['godina', 'godine', 'godina'], }, correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + return number === 1 + ? wordKey[0] + : number >= 2 && number <= 4 + ? wordKey[1] + : wordKey[2]; }, translate: function (number, withoutSuffix, key) { var wordKey = translator$2.words[key]; if (key.length === 1) { return withoutSuffix ? wordKey[0] : wordKey[1]; } else { - return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey); + return ( + number + + ' ' + + translator$2.correctGrammaticalCase(number, wordKey) + ); } - } + }, }; hooks.defineLocale('sr', { - months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), - monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( + '_' + ), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( + '_' + ), monthsParseExact: true, - weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'), + weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split( + '_' + ), weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), - weekdaysParseExact : true, + weekdaysParseExact: true, longDateFormat: { LT: 'H:mm', - LTS : 'H:mm:ss', + LTS: 'H:mm:ss', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', LLL: 'D. MMMM YYYY H:mm', - LLLL: 'dddd, D. MMMM YYYY H:mm' + LLLL: 'dddd, D. MMMM YYYY H:mm', }, calendar: { sameDay: '[danas u] LT', @@ -12840,8 +15301,8 @@ return '[u] dddd [u] LT'; } }, - lastDay : '[juče u] LT', - lastWeek : function () { + lastDay: '[juče u] LT', + lastWeek: function () { var lastWeekDays = [ '[prošle] [nedelje] [u] LT', '[prošlog] [ponedeljka] [u] LT', @@ -12849,79 +15310,83 @@ '[prošle] [srede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' + '[prošle] [subote] [u] LT', ]; return lastWeekDays[this.day()]; }, - sameElse : 'L' - }, - relativeTime : { - future : 'za %s', - past : 'pre %s', - s : 'nekoliko sekundi', - ss : translator$2.translate, - m : translator$2.translate, - mm : translator$2.translate, - h : translator$2.translate, - hh : translator$2.translate, - d : 'dan', - dd : translator$2.translate, - M : 'mesec', - MM : translator$2.translate, - y : 'godinu', - yy : translator$2.translate + sameElse: 'L', + }, + relativeTime: { + future: 'za %s', + past: 'pre %s', + s: 'nekoliko sekundi', + ss: translator$2.translate, + m: translator$2.translate, + mm: translator$2.translate, + h: translator$2.translate, + hh: translator$2.translate, + d: 'dan', + dd: translator$2.translate, + M: 'mesec', + MM: translator$2.translate, + y: 'godinu', + yy: translator$2.translate, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('ss', { - months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'), - monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), - weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'), - weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), - weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Namuhla nga] LT', - nextDay : '[Kusasa nga] LT', - nextWeek : 'dddd [nga] LT', - lastDay : '[Itolo nga] LT', - lastWeek : 'dddd [leliphelile] [nga] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'nga %s', - past : 'wenteka nga %s', - s : 'emizuzwana lomcane', - ss : '%d mzuzwana', - m : 'umzuzu', - mm : '%d emizuzu', - h : 'lihora', - hh : '%d emahora', - d : 'lilanga', - dd : '%d emalanga', - M : 'inyanga', - MM : '%d tinyanga', - y : 'umnyaka', - yy : '%d iminyaka' + months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split( + '_' + ), + monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), + weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split( + '_' + ), + weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), + weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Namuhla nga] LT', + nextDay: '[Kusasa nga] LT', + nextWeek: 'dddd [nga] LT', + lastDay: '[Itolo nga] LT', + lastWeek: 'dddd [leliphelile] [nga] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'nga %s', + past: 'wenteka nga %s', + s: 'emizuzwana lomcane', + ss: '%d mzuzwana', + m: 'umzuzu', + mm: '%d emizuzu', + h: 'lihora', + hh: '%d emahora', + d: 'lilanga', + dd: '%d emalanga', + M: 'inyanga', + MM: '%d tinyanga', + y: 'umnyaka', + yy: '%d iminyaka', }, meridiemParse: /ekuseni|emini|entsambama|ebusuku/, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 11) { return 'ekuseni'; } else if (hours < 15) { @@ -12932,7 +15397,7 @@ return 'ebusuku'; } }, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -12948,183 +15413,204 @@ } }, dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : '%d', - 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. - } + ordinal: '%d', + 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 hooks.defineLocale('sv', { - months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), - monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), - weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), - weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), - weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY-MM-DD', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [kl.] HH:mm', - LLLL : 'dddd D MMMM YYYY [kl.] HH:mm', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd D MMM YYYY HH:mm' - }, - calendar : { + months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split( + '_' + ), + monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY-MM-DD', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [kl.] HH:mm', + LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd D MMM YYYY HH:mm', + }, + calendar: { sameDay: '[Idag] LT', nextDay: '[Imorgon] LT', lastDay: '[Igår] LT', nextWeek: '[På] dddd LT', lastWeek: '[I] dddd[s] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'om %s', - past : 'för %s sedan', - s : 'några sekunder', - ss : '%d sekunder', - m : 'en minut', - mm : '%d minuter', - h : 'en timme', - hh : '%d timmar', - d : 'en dag', - dd : '%d dagar', - M : 'en månad', - MM : '%d månader', - y : 'ett år', - yy : '%d år' - }, - dayOfMonthOrdinalParse: /\d{1,2}(e|a)/, - ordinal : function (number) { + sameElse: 'L', + }, + relativeTime: { + future: 'om %s', + past: 'för %s sedan', + s: 'några sekunder', + ss: '%d sekunder', + m: 'en minut', + mm: '%d minuter', + h: 'en timme', + hh: '%d timmar', + d: 'en dag', + dd: '%d dagar', + M: 'en månad', + MM: '%d månader', + y: 'ett år', + yy: '%d år', + }, + dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; + output = + ~~((number % 100) / 10) === 1 + ? ':e' + : b === 1 + ? ':a' + : b === 2 + ? ':a' + : b === 3 + ? ':e' + : ':e'; return number + output; }, - 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. - } + 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 hooks.defineLocale('sw', { - months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'), - monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), - weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'), - weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), - weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.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' - }, - calendar : { - sameDay : '[leo saa] LT', - nextDay : '[kesho saa] LT', - nextWeek : '[wiki ijayo] dddd [saat] LT', - lastDay : '[jana] LT', - lastWeek : '[wiki iliyopita] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s baadaye', - past : 'tokea %s', - s : 'hivi punde', - ss : 'sekunde %d', - m : 'dakika moja', - mm : 'dakika %d', - h : 'saa limoja', - hh : 'masaa %d', - d : 'siku moja', - dd : 'masiku %d', - M : 'mwezi mmoja', - MM : 'miezi %d', - y : 'mwaka mmoja', - yy : 'miaka %d' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split( + '_' + ), + monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), + weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split( + '_' + ), + weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), + weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.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', + }, + calendar: { + sameDay: '[leo saa] LT', + nextDay: '[kesho saa] LT', + nextWeek: '[wiki ijayo] dddd [saat] LT', + lastDay: '[jana] LT', + lastWeek: '[wiki iliyopita] dddd [saat] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s baadaye', + past: 'tokea %s', + s: 'hivi punde', + ss: 'sekunde %d', + m: 'dakika moja', + mm: 'dakika %d', + h: 'saa limoja', + hh: 'masaa %d', + d: 'siku moja', + dd: 'masiku %d', + M: 'mwezi mmoja', + MM: 'miezi %d', + y: 'mwaka mmoja', + yy: 'miaka %d', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var symbolMap$f = { - '1': '௧', - '2': '௨', - '3': '௩', - '4': '௪', - '5': '௫', - '6': '௬', - '7': '௭', - '8': '௮', - '9': '௯', - '0': '௦' - }, numberMap$e = { - '௧': '1', - '௨': '2', - '௩': '3', - '௪': '4', - '௫': '5', - '௬': '6', - '௭': '7', - '௮': '8', - '௯': '9', - '௦': '0' - }; + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦', + }, + numberMap$e = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0', + }; hooks.defineLocale('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), - 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 : '[இன்று] 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 ஆண்டுகள்' + months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( + '_' + ), + monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( + '_' + ), + weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split( + '_' + ), + weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split( + '_' + ), + weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + 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: '[இன்று] 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 ஆண்டுகள்', }, dayOfMonthOrdinalParse: /\d{1,2}வது/, - ordinal : function (number) { + ordinal: function (number) { return number + 'வது'; }, preparse: function (string) { @@ -13139,11 +15625,11 @@ }, // refer http://ta.wikipedia.org/s/1er1 meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 2) { return ' யாமம்'; } else if (hour < 6) { - return ' வைகறை'; // வைகறை + return ' வைகறை'; // வைகறை } else if (hour < 10) { return ' காலை'; // காலை } else if (hour < 14) { @@ -13156,7 +15642,7 @@ return ' யாமம்'; } }, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -13170,57 +15656,63 @@ return hour + 12; } }, - 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. - } + 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 hooks.defineLocale('te', { - months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), - monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), - monthsParseExact : true, - weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'), - weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), - weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.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 : '[నేడు] 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 సంవత్సరాలు' - }, - dayOfMonthOrdinalParse : /\d{1,2}వ/, - ordinal : '%dవ', + months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split( + '_' + ), + monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split( + '_' + ), + weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), + weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.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: '[నేడు] 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 సంవత్సరాలు', + }, + dayOfMonthOrdinalParse: /\d{1,2}వ/, + ordinal: '%dవ', meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -13234,7 +15726,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'రాత్రి'; } else if (hour < 10) { @@ -13247,65 +15739,73 @@ return 'రాత్రి'; } }, - 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. - } + 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 hooks.defineLocale('tet', { - months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'), - monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), - weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), - weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), - weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), - 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 : { + months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split( + '_' + ), + monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), + weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), + weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), + 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: '[Ohin iha] LT', nextDay: '[Aban iha] LT', nextWeek: 'dddd [iha] LT', lastDay: '[Horiseik iha] LT', lastWeek: 'dddd [semana kotuk] [iha] LT', - sameElse: 'L' - }, - relativeTime : { - future : 'iha %s', - past : '%s liuba', - s : 'minutu balun', - ss : 'minutu %d', - m : 'minutu ida', - mm : 'minutu %d', - h : 'oras ida', - hh : 'oras %d', - d : 'loron ida', - dd : 'loron %d', - M : 'fulan ida', - MM : 'fulan %d', - y : 'tinan ida', - yy : 'tinan %d' + sameElse: 'L', + }, + relativeTime: { + future: 'iha %s', + past: '%s liuba', + s: 'segundu balun', + ss: 'segundu %d', + m: 'minutu ida', + mm: 'minutu %d', + h: 'oras ida', + hh: 'oras %d', + d: 'loron ida', + dd: 'loron %d', + M: 'fulan ida', + MM: 'fulan %d', + y: 'tinan ida', + yy: 'tinan %d', }, dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 @@ -13332,45 +15832,49 @@ 70: '-ум', 80: '-ум', 90: '-ум', - 100: '-ум' + 100: '-ум', }; hooks.defineLocale('tg', { - months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'), - weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), - weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), - 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 : '[Имрӯз соати] LT', - nextDay : '[Пагоҳ соати] LT', - lastDay : '[Дирӯз соати] LT', - nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT', - lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'баъди %s', - past : '%s пеш', - s : 'якчанд сония', - m : 'як дақиқа', - mm : '%d дақиқа', - h : 'як соат', - hh : '%d соат', - d : 'як рӯз', - dd : '%d рӯз', - M : 'як моҳ', - MM : '%d моҳ', - y : 'як сол', - yy : '%d сол' + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( + '_' + ), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split( + '_' + ), + weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), + weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), + 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: '[Имрӯз соати] LT', + nextDay: '[Пагоҳ соати] LT', + lastDay: '[Дирӯз соати] LT', + nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT', + lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'баъди %s', + past: '%s пеш', + s: 'якчанд сония', + m: 'як дақиқа', + mm: '%d дақиқа', + h: 'як соат', + hh: '%d соат', + d: 'як рӯз', + dd: '%d рӯз', + M: 'як моҳ', + MM: '%d моҳ', + y: 'як сол', + yy: '%d сол', }, meridiemParse: /шаб|субҳ|рӯз|бегоҳ/, meridiemHour: function (hour, meridiem) { @@ -13406,115 +15910,123 @@ b = number >= 100 ? 100 : null; return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]); }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 1th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('th', { - months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), + months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split( + '_' + ), + monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split( + '_' + ), monthsParseExact: true, - weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), - weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference - weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'H:mm', - LTS : 'H:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา H:mm', - LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm' + weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'H:mm', + LTS: 'H:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY เวลา H:mm', + LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm', }, meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, isPM: function (input) { return input === 'หลังเที่ยง'; }, - meridiem : function (hour, minute, isLower) { + 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' + calendar: { + sameDay: '[วันนี้ เวลา] LT', + nextDay: '[พรุ่งนี้ เวลา] LT', + nextWeek: 'dddd[หน้า เวลา] LT', + lastDay: '[เมื่อวานนี้ เวลา] LT', + lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'อีก %s', + past: '%sที่แล้ว', + s: 'ไม่กี่วินาที', + ss: '%d วินาที', + m: '1 นาที', + mm: '%d นาที', + h: '1 ชั่วโมง', + hh: '%d ชั่วโมง', + d: '1 วัน', + dd: '%d วัน', + M: '1 เดือน', + MM: '%d เดือน', + y: '1 ปี', + yy: '%d ปี', }, - relativeTime : { - future : 'อีก %s', - past : '%sที่แล้ว', - s : 'ไม่กี่วินาที', - ss : '%d วินาที', - m : '1 นาที', - mm : '%d นาที', - h : '1 ชั่วโมง', - hh : '%d ชั่วโมง', - d : '1 วัน', - dd : '%d วัน', - M : '1 เดือน', - MM : '%d เดือน', - y : '1 ปี', - yy : '%d ปี' - } }); //! moment.js locale configuration hooks.defineLocale('tl-ph', { - months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), - monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), - weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), - weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), - weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'MM/D/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY HH:mm', - LLLL : 'dddd, MMMM DD, YYYY HH:mm' - }, - calendar : { + months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( + '_' + ), + monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( + '_' + ), + weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'MM/D/YYYY', + LL: 'MMMM D, YYYY', + LLL: 'MMMM D, YYYY HH:mm', + LLLL: 'dddd, MMMM DD, YYYY HH:mm', + }, + calendar: { sameDay: 'LT [ngayong araw]', nextDay: '[Bukas ng] LT', nextWeek: 'LT [sa susunod na] dddd', lastDay: 'LT [kahapon]', lastWeek: 'LT [noong nakaraang] dddd', - sameElse: 'L' - }, - relativeTime : { - future : 'sa loob ng %s', - past : '%s ang nakalipas', - s : 'ilang segundo', - ss : '%d segundo', - m : 'isang minuto', - mm : '%d minuto', - h : 'isang oras', - hh : '%d oras', - d : 'isang araw', - dd : '%d araw', - M : 'isang buwan', - MM : '%d buwan', - y : 'isang taon', - yy : '%d taon' + sameElse: 'L', + }, + relativeTime: { + future: 'sa loob ng %s', + past: '%s ang nakalipas', + s: 'ilang segundo', + ss: '%d segundo', + m: 'isang minuto', + mm: '%d minuto', + h: 'isang oras', + hh: '%d oras', + d: 'isang araw', + dd: '%d araw', + M: 'isang buwan', + MM: '%d buwan', + y: 'isang taon', + yy: '%d taon', }, dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { + ordinal: function (number) { return number; }, - 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. - } + 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 @@ -13523,25 +16035,27 @@ function translateFuture(output) { var time = output; - time = (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 = + 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'; return time; } function translatePast(output) { var time = output; - time = (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 = + 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'; return time; } @@ -13565,126 +16079,142 @@ function numberAsNoun(number) { var hundred = Math.floor((number % 1000) / 100), - ten = Math.floor((number % 100) / 10), - one = number % 10, - word = ''; + ten = Math.floor((number % 100) / 10), + one = number % 10, + word = ''; if (hundred > 0) { word += numbersNouns[hundred] + 'vatlh'; } if (ten > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH'; + word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH'; } if (one > 0) { - word += ((word !== '') ? ' ' : '') + numbersNouns[one]; + word += (word !== '' ? ' ' : '') + numbersNouns[one]; } - return (word === '') ? 'pagh' : word; + return word === '' ? 'pagh' : word; } hooks.defineLocale('tlh', { - months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'), - monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'), - monthsParseExact : true, - weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), - 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 : { + months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split( + '_' + ), + monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( + '_' + ), + 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: '[DaHjaj] LT', nextDay: '[wa’leS] LT', nextWeek: 'LLL', lastDay: '[wa’Hu’] LT', lastWeek: 'LLL', - sameElse: 'L' - }, - relativeTime : { - future : translateFuture, - past : translatePast, - s : 'puS lup', - ss : translate$a, - m : 'wa’ tup', - mm : translate$a, - h : 'wa’ rep', - hh : translate$a, - d : 'wa’ jaj', - dd : translate$a, - M : 'wa’ jar', - MM : translate$a, - y : 'wa’ DIS', - yy : translate$a + sameElse: 'L', + }, + relativeTime: { + future: translateFuture, + past: translatePast, + s: 'puS lup', + ss: translate$a, + m: 'wa’ tup', + mm: translate$a, + h: 'wa’ rep', + hh: translate$a, + d: 'wa’ jaj', + dd: translate$a, + M: 'wa’ jar', + MM: translate$a, + y: 'wa’ DIS', + yy: translate$a, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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 suffixes$4 = { - 1: '\'inci', - 5: '\'inci', - 8: '\'inci', - 70: '\'inci', - 80: '\'inci', - 2: '\'nci', - 7: '\'nci', - 20: '\'nci', - 50: '\'nci', - 3: '\'üncü', - 4: '\'üncü', - 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', - 10: '\'uncu', - 30: '\'uncu', - 60: '\'ıncı', - 90: '\'ıncı' + 1: "'inci", + 5: "'inci", + 8: "'inci", + 70: "'inci", + 80: "'inci", + 2: "'nci", + 7: "'nci", + 20: "'nci", + 50: "'nci", + 3: "'üncü", + 4: "'üncü", + 100: "'üncü", + 6: "'ncı", + 9: "'uncu", + 10: "'uncu", + 30: "'uncu", + 60: "'ıncı", + 90: "'ıncı", }; hooks.defineLocale('tr', { - months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), - monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), - weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), - weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), - weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), - 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ün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[gelecek] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : '%s sonra', - past : '%s önce', - s : 'birkaç saniye', - ss : '%d saniye', - m : 'bir dakika', - mm : '%d dakika', - h : 'bir saat', - hh : '%d saat', - d : 'bir gün', - dd : '%d gün', - M : 'bir ay', - MM : '%d ay', - y : 'bir yıl', - yy : '%d yıl' + months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split( + '_' + ), + monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split( + '_' + ), + weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + 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ün saat] LT', + nextDay: '[yarın saat] LT', + nextWeek: '[gelecek] dddd [saat] LT', + lastDay: '[dün] LT', + lastWeek: '[geçen] dddd [saat] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s sonra', + past: '%s önce', + s: 'birkaç saniye', + ss: '%d saniye', + m: 'bir dakika', + mm: '%d dakika', + h: 'bir saat', + hh: '%d saat', + d: 'bir gün', + dd: '%d gün', + M: 'bir ay', + MM: '%d ay', + y: 'bir yıl', + yy: '%d yıl', }, ordinal: function (number, period) { switch (period) { @@ -13694,19 +16224,20 @@ case 'DD': return number; default: - if (number === 0) { // special case for zero - return number + '\'ıncı'; + if (number === 0) { + // special case for zero + return number + "'ıncı"; } var a = number % 10, - b = number % 100 - a, + b = (number % 100) - a, c = number >= 100 ? 100 : null; return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]); } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration @@ -13714,170 +16245,184 @@ // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. // This is currently too difficult (maybe even impossible) to add. hooks.defineLocale('tzl', { - months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), - monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), - weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), - weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), - weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), - longDateFormat : { - LT : 'HH.mm', - LTS : 'HH.mm.ss', - L : 'DD.MM.YYYY', - LL : 'D. MMMM [dallas] YYYY', - LLL : 'D. MMMM [dallas] YYYY HH.mm', - LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm' + months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split( + '_' + ), + monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat: { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM [dallas] YYYY', + LLL: 'D. MMMM [dallas] YYYY HH.mm', + LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', }, meridiemParse: /d\'o|d\'a/i, - isPM : function (input) { - return 'd\'o' === input.toLowerCase(); + isPM: function (input) { + return "d'o" === input.toLowerCase(); }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours > 11) { - return isLower ? 'd\'o' : 'D\'O'; + return isLower ? "d'o" : "D'O"; } else { - return isLower ? 'd\'a' : 'D\'A'; - } - }, - calendar : { - sameDay : '[oxhi à] LT', - nextDay : '[demà à] LT', - nextWeek : 'dddd [à] LT', - lastDay : '[ieiri à] LT', - lastWeek : '[sür el] dddd [lasteu à] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'osprei %s', - past : 'ja%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 + return isLower ? "d'a" : "D'A"; + } + }, + calendar: { + sameDay: '[oxhi à] LT', + nextDay: '[demà à] LT', + nextWeek: 'dddd [à] LT', + lastDay: '[ieiri à] LT', + lastWeek: '[sür el] dddd [lasteu à] LT', + sameElse: 'L', + }, + 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, }, dayOfMonthOrdinalParse: /\d{1,2}\./, - ordinal : '%d.', - 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. - } + ordinal: '%d.', + 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. + }, }); - function processRelativeTime$7(number, withoutSuffix, key, isFuture) { + function processRelativeTime$8(number, withoutSuffix, key, isFuture) { var format = { - 's': ['viensas secunds', '\'iensas secunds'], - 'ss': [number + ' secunds', '' + number + ' secunds'], - 'm': ['\'n míut', '\'iens míut'], - 'mm': [number + ' míuts', '' + number + ' míuts'], - 'h': ['\'n þora', '\'iensa þora'], - 'hh': [number + ' þoras', '' + number + ' þoras'], - 'd': ['\'n ziua', '\'iensa ziua'], - 'dd': [number + ' ziuas', '' + number + ' ziuas'], - 'M': ['\'n mes', '\'iens mes'], - 'MM': [number + ' mesen', '' + number + ' mesen'], - 'y': ['\'n ar', '\'iens ar'], - 'yy': [number + ' ars', '' + number + ' ars'] + s: ['viensas secunds', "'iensas secunds"], + ss: [number + ' secunds', '' + number + ' secunds'], + m: ["'n míut", "'iens míut"], + mm: [number + ' míuts', '' + number + ' míuts'], + h: ["'n þora", "'iensa þora"], + hh: [number + ' þoras', '' + number + ' þoras'], + d: ["'n ziua", "'iensa ziua"], + dd: [number + ' ziuas', '' + number + ' ziuas'], + M: ["'n mes", "'iens mes"], + MM: [number + ' mesen', '' + number + ' mesen'], + y: ["'n ar", "'iens ar"], + yy: [number + ' ars', '' + number + ' ars'], }; - return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]); + return isFuture + ? format[key][0] + : withoutSuffix + ? format[key][0] + : format[key][1]; } //! moment.js locale configuration hooks.defineLocale('tzm-latn', { - months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), - weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), - 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 : { + months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( + '_' + ), + monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( + '_' + ), + weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + 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: '[asdkh g] LT', nextDay: '[aska g] LT', nextWeek: 'dddd [g] LT', lastDay: '[assant g] LT', lastWeek: 'dddd [g] LT', - sameElse: 'L' + sameElse: 'L', }, - relativeTime : { - future : 'dadkh s yan %s', - past : 'yan %s', - s : 'imik', - ss : '%d imik', - m : 'minuḍ', - mm : '%d minuḍ', - h : 'saɛa', - hh : '%d tassaɛin', - d : 'ass', - dd : '%d ossan', - M : 'ayowr', - MM : '%d iyyirn', - y : 'asgas', - yy : '%d isgasn' + relativeTime: { + future: 'dadkh s yan %s', + past: 'yan %s', + s: 'imik', + ss: '%d imik', + m: 'minuḍ', + mm: '%d minuḍ', + h: 'saɛa', + hh: '%d tassaɛin', + d: 'ass', + dd: '%d ossan', + M: 'ayowr', + MM: '%d iyyirn', + y: 'asgas', + yy: '%d isgasn', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } }); //! moment.js locale configuration hooks.defineLocale('tzm', { - months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), - weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), - longDateFormat : { - LT : 'HH:mm', + months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + 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' + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm', }, - calendar : { + 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 oⵙⵙⴰⵏ', - M : 'ⴰⵢoⵓⵔ', - MM : '%d ⵉⵢⵢⵉⵔⵏ', - y : 'ⴰⵙⴳⴰⵙ', - yy : '%d ⵉⵙⴳⴰⵙⵏ' - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 12th is the first week of the year. - } + sameElse: 'L', + }, + relativeTime: { + future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past: 'ⵢⴰⵏ %s', + s: 'ⵉⵎⵉⴽ', + ss: '%d ⵉⵎⵉⴽ', + m: 'ⵎⵉⵏⵓⴺ', + mm: '%d ⵎⵉⵏⵓⴺ', + h: 'ⵙⴰⵄⴰ', + hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d: 'ⴰⵙⵙ', + dd: '%d oⵙⵙⴰⵏ', + M: 'ⴰⵢoⵓⵔ', + MM: '%d ⵉⵢⵢⵉⵔⵏ', + y: 'ⴰⵙⴳⴰⵙ', + yy: '%d ⵉⵙⴳⴰⵙⵏ', + }, + week: { + dow: 6, // Saturday is the first day of the week. + doy: 12, // The week that contains Jan 12th is the first week of the year. + }, }); //! moment.js language configuration @@ -13900,7 +16445,7 @@ L: 'YYYY-MM-DD', LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', - LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm' + LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', }, meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/, meridiemHour: function (hour, meridiem) { @@ -13941,7 +16486,7 @@ nextWeek: '[كېلەركى] dddd [سائەت] LT', lastDay: '[تۆنۈگۈن] LT', lastWeek: '[ئالدىنقى] dddd [سائەت] LT', - sameElse: 'L' + sameElse: 'L', }, relativeTime: { future: '%s كېيىن', @@ -13957,7 +16502,7 @@ M: 'بىر ئاي', MM: '%d ئاي', y: 'بىر يىل', - yy: '%d يىل' + yy: '%d يىل', }, dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/, @@ -13983,54 +16528,65 @@ week: { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 dow: 1, // Monday is the first day of the week. - doy: 7 // The week that contains Jan 1st is the first week of the year. - } + doy: 7, // The week that contains Jan 1st is the first week of the year. + }, }); //! moment.js locale configuration function plural$6(word, num) { var forms = word.split('_'); - 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]); + 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]; } function relativeTimeWithPlural$4(number, withoutSuffix, key) { var format = { - 'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', - 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', - 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' + ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', + mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', + dd: 'день_дні_днів', + MM: 'місяць_місяці_місяців', + yy: 'рік_роки_років', }; if (key === 'm') { return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { + } else if (key === 'h') { return withoutSuffix ? 'година' : 'годину'; - } - else { + } else { return number + ' ' + plural$6(format[key], +number); } } function weekdaysCaseReplace(m, format) { var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }; + nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split( + '_' + ), + accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split( + '_' + ), + genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split( + '_' + ), + }, + nounCase; if (m === true) { - return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1)); + return weekdays['nominative'] + .slice(1, 7) + .concat(weekdays['nominative'].slice(0, 1)); } if (!m) { return weekdays['nominative']; } - var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); + nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) + ? 'accusative' + : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) + ? 'genitive' + : 'nominative'; return weekdays[nounCase][m.day()]; } function processHoursFunction(str) { @@ -14040,23 +16596,29 @@ } hooks.defineLocale('uk', { - months : { - 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), - 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') - }, - monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), - weekdays : weekdaysCaseReplace, - weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), - 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 : { + months: { + format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split( + '_' + ), + standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split( + '_' + ), + }, + monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split( + '_' + ), + weekdays: weekdaysCaseReplace, + weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + 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: processHoursFunction('[Сьогодні '), nextDay: processHoursFunction('[Завтра '), lastDay: processHoursFunction('[Вчора '), @@ -14074,30 +16636,30 @@ return processHoursFunction('[Минулого] dddd [').call(this); } }, - sameElse: 'L' - }, - relativeTime : { - future : 'за %s', - past : '%s тому', - s : 'декілька секунд', - ss : relativeTimeWithPlural$4, - m : relativeTimeWithPlural$4, - mm : relativeTimeWithPlural$4, - h : 'годину', - hh : relativeTimeWithPlural$4, - d : 'день', - dd : relativeTimeWithPlural$4, - M : 'місяць', - MM : relativeTimeWithPlural$4, - y : 'рік', - yy : relativeTimeWithPlural$4 + sameElse: 'L', + }, + relativeTime: { + future: 'за %s', + past: '%s тому', + s: 'декілька секунд', + ss: relativeTimeWithPlural$4, + m: relativeTimeWithPlural$4, + mm: relativeTimeWithPlural$4, + h: 'годину', + hh: relativeTimeWithPlural$4, + d: 'день', + dd: relativeTimeWithPlural$4, + M: 'місяць', + MM: relativeTimeWithPlural$4, + y: 'рік', + yy: relativeTimeWithPlural$4, }, // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason meridiemParse: /ночі|ранку|дня|вечора/, isPM: function (input) { return /^(дня|вечора)$/.test(input); }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'ночі'; } else if (hour < 12) { @@ -14123,85 +16685,77 @@ return number; } }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration var months$a = [ - 'جنوری', - 'فروری', - 'مارچ', - 'اپریل', - 'مئی', - 'جون', - 'جولائی', - 'اگست', - 'ستمبر', - 'اکتوبر', - 'نومبر', - 'دسمبر' - ]; - var days$2 = [ - 'اتوار', - 'پیر', - 'منگل', - 'بدھ', - 'جمعرات', - 'جمعہ', - 'ہفتہ' - ]; + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر', + ], + days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']; hooks.defineLocale('ur', { - months : months$a, - monthsShort : months$a, - weekdays : days$2, - weekdaysShort : days$2, - weekdaysMin : days$2, - 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' + months: months$a, + monthsShort: months$a, + weekdays: days$2, + weekdaysShort: days$2, + weekdaysMin: days$2, + 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) { + isPM: function (input) { return 'شام' === input; }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { if (hour < 12) { return 'صبح'; } 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 سال' + 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, ','); @@ -14209,302 +16763,331 @@ postformat: function (string) { return string.replace(/,/g, '،'); }, - 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. - } + 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 hooks.defineLocale('uz-latn', { - months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'), - monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), - weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'), - weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), - weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - calendar : { - sameDay : '[Bugun soat] LT [da]', - nextDay : '[Ertaga] LT [da]', - nextWeek : 'dddd [kuni soat] LT [da]', - lastDay : '[Kecha soat] LT [da]', - lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]', - sameElse : 'L' - }, - relativeTime : { - future : 'Yaqin %s ichida', - past : 'Bir necha %s oldin', - s : 'soniya', - ss : '%d soniya', - m : 'bir daqiqa', - mm : '%d daqiqa', - h : 'bir soat', - hh : '%d soat', - d : 'bir kun', - dd : '%d kun', - M : 'bir oy', - MM : '%d oy', - y : 'bir yil', - yy : '%d yil' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 7th is the first week of the year. - } + months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split( + '_' + ), + monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), + weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split( + '_' + ), + weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), + weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm', + }, + calendar: { + sameDay: '[Bugun soat] LT [da]', + nextDay: '[Ertaga] LT [da]', + nextWeek: 'dddd [kuni soat] LT [da]', + lastDay: '[Kecha soat] LT [da]', + lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", + sameElse: 'L', + }, + relativeTime: { + future: 'Yaqin %s ichida', + past: 'Bir necha %s oldin', + s: 'soniya', + ss: '%d soniya', + m: 'bir daqiqa', + mm: '%d daqiqa', + h: 'bir soat', + hh: '%d soat', + d: 'bir kun', + dd: '%d kun', + M: 'bir oy', + MM: '%d oy', + y: 'bir yil', + yy: '%d yil', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 7th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('uz', { - months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), - monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), - weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), - weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), - weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'D MMMM YYYY, dddd HH:mm' - }, - 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 йил' - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } + months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( + '_' + ), + monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'D MMMM YYYY, dddd HH:mm', + }, + 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 йил', + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 7, // The week that contains Jan 4th is the first week of the year. + }, }); //! moment.js locale configuration hooks.defineLocale('vi', { - months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), - monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), - monthsParseExact : true, - weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), - weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), - weekdaysParseExact : true, + months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split( + '_' + ), + monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split( + '_' + ), + weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysParseExact: true, meridiemParse: /sa|ch/i, - isPM : function (input) { + isPM: function (input) { return /^ch$/i.test(input); }, - meridiem : function (hours, minutes, isLower) { + meridiem: function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'sa' : 'SA'; } else { return isLower ? 'ch' : 'CH'; } }, - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', - LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY HH:mm', - LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', - l : 'DD/M/YYYY', - ll : 'D MMM YYYY', - lll : 'D MMM YYYY HH:mm', - llll : 'ddd, D MMM YYYY HH:mm' + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM [năm] YYYY', + LLL: 'D MMMM [năm] YYYY HH:mm', + LLLL: 'dddd, D MMMM [năm] YYYY HH:mm', + l: 'DD/M/YYYY', + ll: 'D MMM YYYY', + lll: 'D MMM YYYY HH:mm', + llll: 'ddd, D MMM YYYY HH:mm', }, - calendar : { + calendar: { sameDay: '[Hôm nay lúc] LT', nextDay: '[Ngày mai lúc] LT', nextWeek: 'dddd [tuần tới lúc] LT', lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' - }, - relativeTime : { - future : '%s tới', - past : '%s trước', - s : 'vài giây', - ss : '%d giây' , - m : 'một phút', - mm : '%d phút', - h : 'một giờ', - hh : '%d giờ', - d : 'một ngày', - dd : '%d ngày', - M : 'một tháng', - MM : '%d tháng', - y : 'một năm', - yy : '%d năm' + lastWeek: 'dddd [tuần trước lúc] LT', + sameElse: 'L', + }, + relativeTime: { + future: '%s tới', + past: '%s trước', + s: 'vài giây', + ss: '%d giây', + m: 'một phút', + mm: '%d phút', + h: 'một giờ', + hh: '%d giờ', + d: 'một ngày', + dd: '%d ngày', + M: 'một tháng', + MM: '%d tháng', + y: 'một năm', + yy: '%d năm', }, dayOfMonthOrdinalParse: /\d{1,2}/, - ordinal : function (number) { + ordinal: function (number) { return number; }, - 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. - } + 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 hooks.defineLocale('x-pseudo', { - months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), - monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), - monthsParseExact : true, - weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), - weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), - weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), - weekdaysParseExact : true, - longDateFormat : { - LT : 'HH:mm', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY HH:mm', - LLLL : 'dddd, D MMMM YYYY HH:mm' - }, - calendar : { - sameDay : '[T~ódá~ý át] LT', - nextDay : '[T~ómó~rró~w át] LT', - nextWeek : 'dddd [át] LT', - lastDay : '[Ý~ést~érdá~ý át] LT', - lastWeek : '[L~ást] dddd [át] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'í~ñ %s', - past : '%s á~gó', - s : 'á ~féw ~sécó~ñds', - ss : '%d s~écóñ~ds', - m : 'á ~míñ~úté', - mm : '%d m~íñú~tés', - h : 'á~ñ hó~úr', - hh : '%d h~óúrs', - d : 'á ~dáý', - dd : '%d d~áýs', - M : 'á ~móñ~th', - MM : '%d m~óñt~hs', - y : 'á ~ýéár', - yy : '%d ý~éárs' + months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split( + '_' + ), + monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split( + '_' + ), + monthsParseExact: true, + weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split( + '_' + ), + weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), + weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), + weekdaysParseExact: true, + longDateFormat: { + LT: 'HH:mm', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm', + }, + calendar: { + sameDay: '[T~ódá~ý át] LT', + nextDay: '[T~ómó~rró~w át] LT', + nextWeek: 'dddd [át] LT', + lastDay: '[Ý~ést~érdá~ý át] LT', + lastWeek: '[L~ást] dddd [át] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'í~ñ %s', + past: '%s á~gó', + s: 'á ~féw ~sécó~ñds', + ss: '%d s~écóñ~ds', + m: 'á ~míñ~úté', + mm: '%d m~íñú~tés', + h: 'á~ñ hó~úr', + hh: '%d h~óúrs', + d: 'á ~dáý', + dd: '%d d~áýs', + M: 'á ~móñ~th', + MM: '%d m~óñt~hs', + y: 'á ~ýéár', + yy: '%d ý~éárs', }, dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (~~(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + ~~((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; }, - 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. - } + 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 hooks.defineLocale('yo', { - months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'), - monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), - weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), - weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), - weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), - longDateFormat : { - LT : 'h:mm A', - LTS : 'h:mm:ss A', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY h:mm A', - LLLL : 'dddd, D MMMM YYYY h:mm A' - }, - calendar : { - sameDay : '[Ònì ni] LT', - nextDay : '[Ọ̀la ni] LT', - nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT', - lastDay : '[Àna ni] LT', - lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'ní %s', - past : '%s kọjá', - s : 'ìsẹjú aayá die', - ss :'aayá %d', - m : 'ìsẹjú kan', - mm : 'ìsẹjú %d', - h : 'wákati kan', - hh : 'wákati %d', - d : 'ọjọ́ kan', - dd : 'ọjọ́ %d', - M : 'osù kan', - MM : 'osù %d', - y : 'ọdún kan', - yy : 'ọdún %d' - }, - dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/, - ordinal : 'ọjọ́ %d', - 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. - } + months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split( + '_' + ), + monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), + weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), + weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), + weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), + longDateFormat: { + LT: 'h:mm A', + LTS: 'h:mm:ss A', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY h:mm A', + LLLL: 'dddd, D MMMM YYYY h:mm A', + }, + calendar: { + sameDay: '[Ònì ni] LT', + nextDay: '[Ọ̀la ni] LT', + nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT", + lastDay: '[Àna ni] LT', + lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT', + sameElse: 'L', + }, + relativeTime: { + future: 'ní %s', + past: '%s kọjá', + s: 'ìsẹjú aayá die', + ss: 'aayá %d', + m: 'ìsẹjú kan', + mm: 'ìsẹjú %d', + h: 'wákati kan', + hh: 'wákati %d', + d: 'ọjọ́ kan', + dd: 'ọjọ́ %d', + M: 'osù kan', + MM: 'osù %d', + y: 'ọdún kan', + yy: 'ọdún %d', + }, + dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/, + ordinal: 'ọjọ́ %d', + 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 hooks.defineLocale('zh-cn', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日Ah点mm分', - LLLL : 'YYYY年M月D日ddddAh点mm分', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日Ah点mm分', + LLLL: 'YYYY年M月D日ddddAh点mm分', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } - if (meridiem === '凌晨' || meridiem === '早上' || - meridiem === '上午') { + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { return hour; } else if (meridiem === '下午' || meridiem === '晚上') { return hour + 12; @@ -14513,7 +17096,7 @@ return hour >= 11 ? hour : hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; @@ -14529,16 +17112,16 @@ return '晚上'; } }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' + calendar: { + sameDay: '[今天]LT', + nextDay: '[明天]LT', + nextWeek: '[下]ddddLT', + lastDay: '[昨天]LT', + lastWeek: '[上]ddddLT', + sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { case 'd': case 'D': @@ -14553,51 +17136,150 @@ return number; } }, - relativeTime : { - future : '%s内', - past : '%s前', - s : '几秒', - ss : '%d 秒', - m : '1 分钟', - mm : '%d 分钟', - h : '1 小时', - hh : '%d 小时', - d : '1 天', - dd : '%d 天', - M : '1 个月', - MM : '%d 个月', - y : '1 年', - yy : '%d 年' - }, - week : { + relativeTime: { + future: '%s后', + past: '%s前', + s: '几秒', + ss: '%d 秒', + m: '1 分钟', + mm: '%d 分钟', + h: '1 小时', + hh: '%d 小时', + d: '1 天', + dd: '%d 天', + M: '1 个月', + MM: '%d 个月', + y: '1 年', + yy: '%d 年', + }, + week: { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - 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. - } + 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 hooks.defineLocale('zh-hk', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日dddd HH:mm', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1200) { + return '上午'; + } else if (hm === 1200) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar: { + sameDay: '[今天]LT', + nextDay: '[明天]LT', + nextWeek: '[下]ddddLT', + lastDay: '[昨天]LT', + lastWeek: '[上]ddddLT', + sameElse: 'L', + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal: function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '週'; + default: + return number; + } + }, + relativeTime: { + future: '%s後', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, + }); + + //! moment.js locale configuration + + hooks.defineLocale('zh-mo', { + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'D/M/YYYY', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -14609,7 +17291,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; @@ -14625,70 +17307,74 @@ return '晚上'; } }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' + calendar: { + sameDay: '[今天] LT', + nextDay: '[明天] LT', + nextWeek: '[下]dddd LT', + lastDay: '[昨天] LT', + lastWeek: '[上]dddd LT', + sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { - case 'd' : - case 'D' : - case 'DDD' : + case 'd': + case 'D': + case 'DDD': return number + '日'; - case 'M' : + case 'M': return number + '月'; - case 'w' : - case 'W' : + case 'w': + case 'W': return number + '週'; - default : + default: return number; } }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - ss : '%d 秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } + relativeTime: { + future: '%s內', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, }); //! moment.js locale configuration hooks.defineLocale('zh-tw', { - months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), - monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), - weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), - weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), - weekdaysMin : '日_一_二_三_四_五_六'.split('_'), - longDateFormat : { - LT : 'HH:mm', - LTS : 'HH:mm:ss', - L : 'YYYY/MM/DD', - LL : 'YYYY年M月D日', - LLL : 'YYYY年M月D日 HH:mm', - LLLL : 'YYYY年M月D日dddd HH:mm', - l : 'YYYY/M/D', - ll : 'YYYY年M月D日', - lll : 'YYYY年M月D日 HH:mm', - llll : 'YYYY年M月D日dddd HH:mm' + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( + '_' + ), + weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin: '日_一_二_三_四_五_六'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'YYYY/MM/DD', + LL: 'YYYY年M月D日', + LLL: 'YYYY年M月D日 HH:mm', + LLLL: 'YYYY年M月D日dddd HH:mm', + l: 'YYYY/M/D', + ll: 'YYYY年M月D日', + lll: 'YYYY年M月D日 HH:mm', + llll: 'YYYY年M月D日dddd HH:mm', }, meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, - meridiemHour : function (hour, meridiem) { + meridiemHour: function (hour, meridiem) { if (hour === 12) { hour = 0; } @@ -14700,7 +17386,7 @@ return hour + 12; } }, - meridiem : function (hour, minute, isLower) { + meridiem: function (hour, minute, isLower) { var hm = hour * 100 + minute; if (hm < 600) { return '凌晨'; @@ -14716,46 +17402,46 @@ return '晚上'; } }, - calendar : { - sameDay : '[今天] LT', - nextDay : '[明天] LT', - nextWeek : '[下]dddd LT', - lastDay : '[昨天] LT', - lastWeek : '[上]dddd LT', - sameElse : 'L' + calendar: { + sameDay: '[今天] LT', + nextDay: '[明天] LT', + nextWeek: '[下]dddd LT', + lastDay: '[昨天] LT', + lastWeek: '[上]dddd LT', + sameElse: 'L', }, dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, - ordinal : function (number, period) { + ordinal: function (number, period) { switch (period) { - case 'd' : - case 'D' : - case 'DDD' : + case 'd': + case 'D': + case 'DDD': return number + '日'; - case 'M' : + case 'M': return number + '月'; - case 'w' : - case 'W' : + case 'w': + case 'W': return number + '週'; - default : + default: return number; } }, - relativeTime : { - future : '%s內', - past : '%s前', - s : '幾秒', - ss : '%d 秒', - m : '1 分鐘', - mm : '%d 分鐘', - h : '1 小時', - hh : '%d 小時', - d : '1 天', - dd : '%d 天', - M : '1 個月', - MM : '%d 個月', - y : '1 年', - yy : '%d 年' - } + relativeTime: { + future: '%s後', + past: '%s前', + s: '幾秒', + ss: '%d 秒', + m: '1 分鐘', + mm: '%d 分鐘', + h: '1 小時', + hh: '%d 小時', + d: '1 天', + dd: '%d 天', + M: '1 個月', + MM: '%d 個月', + y: '1 年', + yy: '%d 年', + }, }); hooks.locale('en'); diff --git a/min/moment-with-locales.min.js b/min/moment-with-locales.min.js index d81e02ca3..0b31d087a 100644 --- a/min/moment-with-locales.min.js +++ b/min/moment-with-locales.min.js @@ -1 +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,n;function l(){return e.apply(null,arguments)}function _(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function o(e){return void 0===e}function m(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function M(e,a){var t,s=[];for(t=0;t>>0,s=0;sTe(e)?(d=e+1,_-Te(e)):(d=e,_),{year:d,dayOfYear:r}}function Ce(e,a,t){var s,n,d=Ne(e.year(),a,t),r=Math.floor((e.dayOfYear()-d-1)/7)+1;return r<1?s=r+Ie(n=e.year()-1,a,t):r>Ie(e.year(),a,t)?(s=r-Ie(e.year(),a,t),n=e.year()+1):(n=e.year(),s=r),{week:s,year:n}}function Ie(e,a,t){var s=Ne(e,a,t),n=Ne(e+1,a,t);return(Te(e)-s+n)/7}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),O("week","w"),O("isoWeek","W"),E("week",5),E("isoWeek",5),ie("w",B),ie("ww",B,V),ie("W",B),ie("WW",B,V),Me(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=g(e)});function Ue(e,a){return e.slice(a,7).concat(e.slice(0,a))}C("d",0,"do","day"),C("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),C("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),C("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),O("day","d"),O("weekday","e"),O("isoWeekday","E"),E("day",11),E("weekday",11),E("isoWeekday",11),ie("d",B),ie("e",B),ie("E",B),ie("dd",function(e,a){return a.weekdaysMinRegex(e)}),ie("ddd",function(e,a){return a.weekdaysShortRegex(e)}),ie("dddd",function(e,a){return a.weekdaysRegex(e)}),Me(["dd","ddd","dddd"],function(e,a,t,s){var n=t._locale.weekdaysParse(e,s,t._strict);null!=n?a.d=n:Y(t).invalidWeekday=e}),Me(["d","e","E"],function(e,a,t,s){a[s]=g(e)});var Ge="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ve="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var Ke="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var Ze=re;var $e=re;var Be=re;function qe(){function e(e,a){return a.length-e.length}var a,t,s,n,d,r=[],_=[],i=[],o=[];for(a=0;a<7;a++)t=c([2e3,1]).day(a),s=this.weekdaysMin(t,""),n=this.weekdaysShort(t,""),d=this.weekdays(t,""),r.push(s),_.push(n),i.push(d),o.push(s),o.push(n),o.push(d);for(r.sort(e),_.sort(e),i.sort(e),o.sort(e),a=0;a<7;a++)_[a]=me(_[a]),i[a]=me(i[a]),o[a]=me(o[a]);this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,a){C(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function ea(e,a){return a._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,Qe),C("k",["kk",2],0,function(){return this.hours()||24}),C("hmm",0,0,function(){return""+Qe.apply(this)+F(this.minutes(),2)}),C("hmmss",0,0,function(){return""+Qe.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)}),C("Hmm",0,0,function(){return""+this.hours()+F(this.minutes(),2)}),C("Hmmss",0,0,function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),O("hour","h"),E("hour",13),ie("a",ea),ie("A",ea),ie("H",B),ie("h",B),ie("k",B),ie("HH",B,V),ie("hh",B,V),ie("kk",B,V),ie("hmm",q),ie("hmmss",Q),ie("Hmm",q),ie("Hmmss",Q),le(["H","HH"],Ye),le(["k","kk"],function(e,a,t){var s=g(e);a[Ye]=24===s?0:s}),le(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),le(["h","hh"],function(e,a,t){a[Ye]=g(e),Y(t).bigHour=!0}),le("hmm",function(e,a,t){var s=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s)),Y(t).bigHour=!0}),le("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s,2)),a[fe]=g(e.substr(n)),Y(t).bigHour=!0}),le("Hmm",function(e,a,t){var s=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s))}),le("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s,2)),a[fe]=g(e.substr(n))});var aa,ta=Se("Hours",!0),sa={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",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Oe,monthsShort:Pe,week:{dow:0,doy:6},weekdays:Ge,weekdaysMin:Ke,weekdaysShort:Ve,meridiemParse:/[ap]\.?m?\.?/i},na={},da={};function ra(e){return e?e.toLowerCase().replace("_","-"):e}function _a(e){var a=null;if(!na[e]&&"undefined"!=typeof module&&module&&module.exports)try{a=aa._abbr,require("./locale/"+e),ia(a)}catch(e){}return na[e]}function ia(e,a){var t;return e&&((t=o(a)?ma(e):oa(e,a))?aa=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),aa._abbr}function oa(e,a){if(null===a)return delete na[e],null;var t,s=sa;if(a.abbr=e,null!=na[e])S("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=na[e]._config;else if(null!=a.parentLocale)if(null!=na[a.parentLocale])s=na[a.parentLocale]._config;else{if(null==(t=_a(a.parentLocale)))return da[a.parentLocale]||(da[a.parentLocale]=[]),da[a.parentLocale].push({name:e,config:a}),null;s=t._config}return na[e]=new j(b(s,a)),da[e]&&da[e].forEach(function(e){oa(e.name,e.config)}),ia(e),na[e]}function ma(e){var a;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return aa;if(!_(e)){if(a=_a(e))return a;e=[e]}return function(e){for(var a,t,s,n,d=0;d=a&&r(n,t,!0)>=a-1)break;a--}d++}return aa}(e)}function ua(e){var a,t=e._a;return t&&-2===Y(e).overflow&&(a=t[Le]<0||11je(t[he],t[Le])?ce:t[Ye]<0||24Ie(t,d,r)?Y(e)._overflowWeeks=!0:null!=i?Y(e)._overflowWeekday=!0:(_=Re(t,s,n,d,r),e._a[he]=_.year,e._dayOfYear=_.dayOfYear)}(e),null!=e._dayOfYear&&(d=la(e._a[he],s[he]),(e._dayOfYear>Te(d)||0===e._dayOfYear)&&(Y(e)._overflowDayOfYear=!0),t=Je(d,0,e._dayOfYear),e._a[Le]=t.getUTCMonth(),e._a[ce]=t.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=r[a]=s[a];for(;a<7;a++)e._a[a]=r[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[Ye]&&0===e._a[ye]&&0===e._a[fe]&&0===e._a[ke]&&(e._nextDay=!0,e._a[Ye]=0),e._d=(e._useUTC?Je:function(e,a,t,s,n,d,r){var _;return e<100&&0<=e?(_=new Date(e+400,a,t,s,n,d,r),isFinite(_.getFullYear())&&_.setFullYear(e)):_=new Date(e,a,t,s,n,d,r),_}).apply(null,r),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Ye]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(Y(e).weekdayMismatch=!0)}}var ha=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,La=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ca=/Z|[+-]\d\d(?::?\d\d)?/,Ya=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],ya=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],fa=/^\/?Date\((\-?\d+)/i;function ka(e){var a,t,s,n,d,r,_=e._i,i=ha.exec(_)||La.exec(_);if(i){for(Y(e).iso=!0,a=0,t=Ya.length;at.valueOf():t.valueOf()this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Mt.isLocal=function(){return!!this.isValid()&&!this._isUTC},Mt.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Mt.isUtc=Ra,Mt.isUTC=Ra,Mt.zoneAbbr=function(){return this._isUTC?"UTC":""},Mt.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Mt.dates=t("dates accessor is deprecated. Use date instead.",_t),Mt.months=t("months accessor is deprecated. Use month instead",Ae),Mt.years=t("years accessor is deprecated. Use year instead",ve),Mt.zone=t("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,a),this):-this.utcOffset()}),Mt.isDSTShifted=t("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e={};if(k(e,this),(e=va(e))._a){var a=e._isUTC?c(e._a):Ha(e._a);this._isDSTShifted=this.isValid()&&0>>0;for(a=0;aFe(e)?(r=e+1,_-Fe(e)):(r=e,_),{year:r,dayOfYear:d}}function Ce(e,a,t){var s,n,r=Je(e.year(),a,t),d=Math.floor((e.dayOfYear()-r-1)/7)+1;return d<1?s=d+Ie(n=e.year()-1,a,t):d>Ie(e.year(),a,t)?(s=d-Ie(e.year(),a,t),n=e.year()+1):(n=e.year(),s=d),{week:s,year:n}}function Ie(e,a,t){var s=Je(e,a,t),n=Je(e+1,a,t);return(Fe(e)-s+n)/7}W("w",["ww",2],"wo","week"),W("W",["WW",2],"Wo","isoWeek"),z("week","w"),z("isoWeek","W"),C("week",5),C("isoWeek",5),le("w",ae),le("ww",ae,$),le("W",ae),le("WW",ae,$),Ye(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=G(e)});function Ue(e,a){return e.slice(a,7).concat(e.slice(0,a))}W("d",0,"do","day"),W("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),W("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),W("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),W("e",0,0,"weekday"),W("E",0,0,"isoWeekday"),z("day","d"),z("weekday","e"),z("isoWeekday","E"),C("day",11),C("weekday",11),C("isoWeekday",11),le("d",ae),le("e",ae),le("E",ae),le("dd",function(e,a){return a.weekdaysMinRegex(e)}),le("ddd",function(e,a){return a.weekdaysShortRegex(e)}),le("dddd",function(e,a){return a.weekdaysRegex(e)}),Ye(["dd","ddd","dddd"],function(e,a,t,s){var n=t._locale.weekdaysParse(e,s,t._strict);null!=n?a.d=n:L(t).invalidWeekday=e}),Ye(["d","e","E"],function(e,a,t,s){a[s]=G(e)});var Ge="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ve="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Be="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ke=ue,qe=ue,Ze=ue;function $e(){function e(e,a){return a.length-e.length}var a,t,s,n,r,d=[],_=[],i=[],o=[];for(a=0;a<7;a++)t=c([2e3,1]).day(a),s=he(this.weekdaysMin(t,"")),n=he(this.weekdaysShort(t,"")),r=he(this.weekdays(t,"")),d.push(s),_.push(n),i.push(r),o.push(s),o.push(n),o.push(r);d.sort(e),_.sort(e),i.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+d.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,a){W(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function ea(e,a){return a._meridiemParse}W("H",["HH",2],0,"hour"),W("h",["hh",2],0,Qe),W("k",["kk",2],0,function(){return this.hours()||24}),W("hmm",0,0,function(){return""+Qe.apply(this)+S(this.minutes(),2)}),W("hmmss",0,0,function(){return""+Qe.apply(this)+S(this.minutes(),2)+S(this.seconds(),2)}),W("Hmm",0,0,function(){return""+this.hours()+S(this.minutes(),2)}),W("Hmmss",0,0,function(){return""+this.hours()+S(this.minutes(),2)+S(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),z("hour","h"),C("hour",13),le("a",ea),le("A",ea),le("H",ae),le("h",ae),le("k",ae),le("HH",ae,$),le("hh",ae,$),le("kk",ae,$),le("hmm",te),le("hmmss",se),le("Hmm",te),le("Hmmss",se),Le(["H","HH"],De),Le(["k","kk"],function(e,a,t){var s=G(e);a[De]=24===s?0:s}),Le(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),Le(["h","hh"],function(e,a,t){a[De]=G(e),L(t).bigHour=!0}),Le("hmm",function(e,a,t){var s=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s)),L(t).bigHour=!0}),Le("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s,2)),a[ge]=G(e.substr(n)),L(t).bigHour=!0}),Le("Hmm",function(e,a,t){var s=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s))}),Le("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[De]=G(e.substr(0,s)),a[Te]=G(e.substr(s,2)),a[ge]=G(e.substr(n))});var aa=V("Hours",!0);var ta,sa={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:Se,monthsShort:je,week:{dow:0,doy:6},weekdays:Ge,weekdaysMin:Be,weekdaysShort:Ve,meridiemParse:/[ap]\.?m?\.?/i},na={},ra={};function da(e,a){var t,s=Math.min(e.length,a.length);for(t=0;t=a&&da(n,t)>=a-1)break;a--}r++}return ta}(e)}function la(e){var a,t=e._a;return t&&-2===L(e).overflow&&(a=t[pe]<0||11be(t[fe],t[pe])?ke:t[De]<0||24Ie(t,r,d)?L(e)._overflowWeeks=!0:null!=i?L(e)._overflowWeekday=!0:(_=Re(t,s,n,r,d),e._a[fe]=_.year,e._dayOfYear=_.dayOfYear)}(e),null!=e._dayOfYear&&(r=ga(e._a[fe],s[fe]),(e._dayOfYear>Fe(r)||0===e._dayOfYear)&&(L(e)._overflowDayOfYear=!0),t=Ne(r,0,e._dayOfYear),e._a[pe]=t.getUTCMonth(),e._a[ke]=t.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=d[a]=s[a];for(;a<7;a++)e._a[a]=d[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[De]&&0===e._a[Te]&&0===e._a[ge]&&0===e._a[we]&&(e._nextDay=!0,e._a[De]=0),e._d=(e._useUTC?Ne:function(e,a,t,s,n,r,d){var _;return e<100&&0<=e?(_=new Date(e+400,a,t,s,n,r,d),isFinite(_.getFullYear())&&_.setFullYear(e)):_=new Date(e,a,t,s,n,r,d),_}).apply(null,d),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[De]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(L(e).weekdayMismatch=!0)}}function va(e){if(e._f!==M.ISO_8601)if(e._f!==M.RFC_2822){e._a=[],L(e).empty=!0;var a,t,s,n,r,d,_,i,o,m=""+e._i,u=m.length,l=0;for(s=A(e._f,e._locale).match(j)||[],a=0;at.valueOf():t.valueOf()"}),yt.toJSON=function(){return this.isValid()?this.toISOString():null},yt.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},yt.unix=function(){return Math.floor(this.valueOf()/1e3)},yt.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},yt.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},yt.eraName=function(){var e,a,t,s=this.localeData().eras();for(e=0,a=s.length;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},yt.isLocal=function(){return!!this.isValid()&&!this._isUTC},yt.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},yt.isUtc=Ca,yt.isUTC=Ca,yt.zoneAbbr=function(){return this._isUTC?"UTC":""},yt.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},yt.dates=t("dates accessor is deprecated. Use date instead.",lt),yt.months=t("months accessor is deprecated. Use month instead",Ee),yt.years=t("years accessor is deprecated. Use year instead",ze),yt.zone=t("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,a),this):-this.utcOffset()}),yt.isDSTShifted=t("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!r(this._isDSTShifted))return this._isDSTShifted;var e,a={};return p(a,this),(a=Ha(a))._a?(e=(a._isUTC?c:Sa)(a._a),this._isDSTShifted=this.isValid()&&0>>0,s=0;sSe(e)?(r=e+1,o-Se(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(Se(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),C("week","w"),C("isoWeek","W"),F("week",5),F("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=D(e)});function je(e,t){return e.slice(t,7).concat(e.slice(0,t))}I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),C("day","d"),C("weekday","e"),C("isoWeekday","E"),F("day",11),F("weekday",11),F("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=D(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var $e="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var qe=ae;var Je=ae;var Be=ae;function Qe(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=he(o[t]),u[t]=he(u[t]),l[t]=he(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Xe(){return this.hours()%12||12}function Ke(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Xe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Xe.apply(this)+L(this.minutes(),2)+L(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+L(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+L(this.minutes(),2)+L(this.seconds(),2)}),Ke("a",!0),Ke("A",!1),C("hour","h"),F("hour",13),ue("a",et),ue("A",et),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=D(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=D(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=D(e.substr(0,s)),t[ve]=D(e.substr(s,2)),t[pe]=D(e.substr(i))});var tt,nt=Te("Hours",!0),st={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",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ce,monthsShort:He,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\.?m?\.?/i},it={},rt={};function at(e){return e?e.toLowerCase().replace("_","-"):e}function ot(e){var t=null;if(!it[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=tt._abbr,require("./locale/"+e),ut(t)}catch(e){}return it[e]}function ut(e,t){var n;return e&&((n=l(t)?ht(e):lt(e,t))?tt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),tt._abbr}function lt(e,t){if(null===t)return delete it[e],null;var n,s=st;if(t.abbr=e,null!=it[e])T("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=it[e]._config;else if(null!=t.parentLocale)if(null!=it[t.parentLocale])s=it[t.parentLocale]._config;else{if(null==(n=ot(t.parentLocale)))return rt[t.parentLocale]||(rt[t.parentLocale]=[]),rt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return it[e]=new P(x(s,t)),rt[e]&&rt[e].forEach(function(e){lt(e.name,e.config)}),ut(e),it[e]}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return tt;if(!o(e)){if(t=ot(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r=t&&a(i,n,!0)>=t-1)break;t--}r++}return tt}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11Pe(n[me],n[_e])?ye:n[ge]<0||24Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ct(e._a[me],s[me]),(e._dayOfYear>Se(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[ve]&&0===e._a[pe]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var mt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,yt=/Z|[+-]\d\d(?::?\d\d)?/,gt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],vt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function wt(e){var t,n,s,i,r,a,o=e._i,u=mt.exec(o)||_t.exec(o);if(u){for(g(e).iso=!0,t=0,n=gt.length;tn.valueOf():n.valueOf()this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},mn.isLocal=function(){return!!this.isValid()&&!this._isUTC},mn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},mn.isUtc=Et,mn.isUTC=Et,mn.zoneAbbr=function(){return this._isUTC?"UTC":""},mn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},mn.dates=n("dates accessor is deprecated. Use date instead.",un),mn.months=n("months accessor is deprecated. Use month instead",Ue),mn.years=n("years accessor is deprecated. Use year instead",Oe),mn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),mn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Ot(e))._a){var t=e._isUTC?y(e._a):bt(e._a);this._isDSTShifted=this.isValid()&&0>>0;for(t=0;tFe(e)?(r=e+1,o-Fe(e)):(r=e,o),{year:r,dayOfYear:a}}function Ae(e,t,n){var s,i,r=Ge(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+je(i=e.year()-1,t,n):a>je(e.year(),t,n)?(s=a-je(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function je(e,t,n){var s=Ge(e,t,n),i=Ge(e+1,t,n);return(Fe(e)-s+i)/7}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),A("week",5),A("isoWeek",5),ce("w",te),ce("ww",te,Q),ce("W",te),ce("WW",te,Q),ge(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=Z(e)});function Ie(e,t){return e.slice(t,7).concat(e.slice(0,t))}C("d",0,"do","day"),C("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),C("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),C("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),ce("d",te),ce("e",te),ce("E",te),ce("dd",function(e,t){return t.weekdaysMinRegex(e)}),ce("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ce("dddd",function(e,t){return t.weekdaysRegex(e)}),ge(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:y(n).invalidWeekday=e}),ge(["d","e","E"],function(e,t,n,s){t[s]=Z(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),$e="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),qe=de,Be=de,Je=de;function Qe(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=_([2e3,1]).day(t),s=me(this.weekdaysMin(n,"")),i=me(this.weekdaysShort(n,"")),r=me(this.weekdays(n,"")),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);a.sort(e),o.sort(e),u.sort(e),l.sort(e),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Xe(){return this.hours()%12||12}function Ke(e,t){C(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,Xe),C("k",["kk",2],0,function(){return this.hours()||24}),C("hmm",0,0,function(){return""+Xe.apply(this)+T(this.minutes(),2)}),C("hmmss",0,0,function(){return""+Xe.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),C("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),C("Hmmss",0,0,function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ke("a",!0),Ke("A",!1),L("hour","h"),A("hour",13),ce("a",et),ce("A",et),ce("H",te),ce("h",te),ce("k",te),ce("HH",te,Q),ce("hh",te,Q),ce("kk",te,Q),ce("hmm",ne),ce("hmmss",se),ce("Hmm",ne),ce("Hmmss",se),ye(["H","HH"],Me),ye(["k","kk"],function(e,t,n){var s=Z(e);t[Me]=24===s?0:s}),ye(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ye(["h","hh"],function(e,t,n){t[Me]=Z(e),y(n).bigHour=!0}),ye("hmm",function(e,t,n){var s=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s)),y(n).bigHour=!0}),ye("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s,2)),t[Se]=Z(e.substr(i)),y(n).bigHour=!0}),ye("Hmm",function(e,t,n){var s=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s))}),ye("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s,2)),t[Se]=Z(e.substr(i))});var tt=z("Hours",!0);var nt,st={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:Te,monthsShort:Ne,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\.?m?\.?/i},it={},rt={};function at(e,t){var n,s=Math.min(e.length,t.length);for(n=0;n=t&&at(i,n)>=t-1)break;t--}r++}return nt}(e)}function ct(e){var t,n=e._a;return n&&-2===y(e).overflow&&(t=n[ve]<0||11xe(n[pe],n[ve])?ke:n[Me]<0||24je(n,r,a)?y(e)._overflowWeeks=!0:null!=u?y(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[pe]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=St(e._a[pe],s[pe]),(e._dayOfYear>Fe(r)||0===e._dayOfYear)&&(y(e)._overflowDayOfYear=!0),n=Ve(r,0,e._dayOfYear),e._a[ve]=n.getUTCMonth(),e._a[ke]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Me]&&0===e._a[De]&&0===e._a[Se]&&0===e._a[Ye]&&(e._nextDay=!0,e._a[Me]=0),e._d=(e._useUTC?Ve:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Me]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(y(e).weekdayMismatch=!0)}}function Ot(e){if(e._f!==f.ISO_8601)if(e._f!==f.RFC_2822){e._a=[],y(e).empty=!0;var t,n,s,i,r,a,o,u,l,h=""+e._i,d=h.length,c=0;for(s=H(e._f,e._locale).match(N)||[],t=0;tn.valueOf():n.valueOf()"}),pn.toJSON=function(){return this.isValid()?this.toISOString():null},pn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},pn.unix=function(){return Math.floor(this.valueOf()/1e3)},pn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},pn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},pn.eraName=function(){var e,t,n,s=this.localeData().eras();for(e=0,t=s.length;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},pn.isLocal=function(){return!!this.isValid()&&!this._isUTC},pn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},pn.isUtc=At,pn.isUTC=At,pn.zoneAbbr=function(){return this._isUTC?"UTC":""},pn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},pn.dates=n("dates accessor is deprecated. Use date instead.",fn),pn.months=n("months accessor is deprecated. Use month instead",Ue),pn.years=n("years accessor is deprecated. Use year instead",Le),pn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),pn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!r(this._isDSTShifted))return this._isDSTShifted;var e,t={};return v(t,this),(t=bt(t))._a?(e=(t._isUTC?_:Tt)(t._a),this._isDSTShifted=this.isValid()&&0 ' + DDDo[i][1]); + assert.equal( + DDDoDt.add(DDDo[i][0], 'days').format('DDDo'), + DDDo[i][1], + DDDo[i][0] + ' ---> ' + DDDo[i][1] + ); } }); @@ -4495,124 +7567,331 @@ }); 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ), + i; 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 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), 'birneçə 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: 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'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'birneçə 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: 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), 'birneçə saniyə sonra', 'prefix'); + assert.equal(moment(30000).from(0), 'birneçə saniyə sonra', 'prefix'); assert.equal(moment(0).from(30000), 'birneçə saniyə əvvəl', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'birneçə saniyə əvvəl', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'birneçə saniyə əvvəl', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'birneçə saniyə sonra', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 gün sonra', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'birneçə saniyə sonra', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 gün sonra', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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' + ); }); 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('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[gələn həftə] dddd [saat] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[gələn həftə] dddd [saat] 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('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[keçən həftə] dddd [saat] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[keçən həftə] dddd [saat] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1-inci', 'Jan 1 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'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2-nci', 'Jan 8 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'); + assert.equal( + moment([2011, 11, 26]).format('w ww wo'), + '1 01 1-inci', + 'Dec 26 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' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '2 02 2-nci', + 'Jan 2 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' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '3 03 3-üncü', + 'Jan 9 2012 should be week 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -4627,27 +7906,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -4657,8 +7941,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -4671,7 +7957,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -4680,16 +7969,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -4697,7 +7992,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -4705,12 +8002,21 @@ 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'); + 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' + ); } }); @@ -4718,12 +8024,27 @@ 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'); + 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' + ); } }); @@ -4732,7 +8053,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -4742,24 +8066,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -4778,19 +8106,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -4805,7 +8153,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -4815,7 +8169,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -4828,7 +8189,11 @@ 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'); + 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'); @@ -4843,65 +8208,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('be'); test('parse', function (assert) { - var tests = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split('_'), i; + var tests = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -4912,35 +8316,45 @@ 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, Do MMMM YYYY, HH:mm:ss', 'нядзеля, 14-га лютага 2010, 15:25:50'], - ['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'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['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'], - ['l', '14.2.2010'], - ['ll', '14 лют 2010 г.'], - ['lll', '14 лют 2010 г., 15:25'], - ['llll', 'нд, 14 лют 2010 г., 15:25'] + [ + 'dddd, Do MMMM YYYY, HH:mm:ss', + 'нядзеля, 14-га лютага 2010, 15:25:50', + ], + ['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'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['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'], + ['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; @@ -4953,11 +8367,27 @@ 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, 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'); + 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) { @@ -4998,76 +8428,248 @@ }); test('format month', function (assert) { - var expected = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split('_'), i; + var expected = 'студзень студ_люты лют_сакавік сак_красавік крас_травень трав_чэрвень чэрв_ліпень ліп_жнівень жнів_верасень вер_кастрычнік каст_лістапад ліст_снежань снеж'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format month case', function (assert) { var months = { - 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), - 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') - }, i; + 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]); + 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; + 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]); + 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('_'), i; + var expected = 'нядзеля нд нд_панядзелак пн пн_аўторак ат ат_серада ср ср_чацвер чц чц_пятніца пт пт_субота сб сб'.split( + '_' + ), + i; 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 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), 'некалькі секунд', '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: 31}), true), '31 хвіліна', '31 minutes = 31 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), '2 гадзіны', '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), '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 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 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 месяцы', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + 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: 31 }), true), + '31 хвіліна', + '31 minutes = 31 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), + '2 гадзіны', + '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), + '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 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 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 месяцы', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { @@ -5076,21 +8678,57 @@ }); 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({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({ s: 30 }).fromNow(), + 'праз некалькі секунд', + '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' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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' + ); }); test('calendar next week', function (assert) { @@ -5100,12 +8738,24 @@ } for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat()), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format(makeFormat()), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat()), + 'Today + ' + i + ' days end of day' + ); } }); @@ -5127,44 +8777,89 @@ } for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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(makeFormat(m)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - }); + 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' + ); + }); 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'); + assert.equal( + moment('2018-04-13').calendar(moment('2018-04-16')), + 'У мінулую пятніцу ў 00:00', + 'calendar should handle day of week' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -5179,27 +8874,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -5209,8 +8909,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -5223,7 +8925,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -5232,16 +8937,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -5249,7 +8960,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -5257,12 +8970,21 @@ 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'); + 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' + ); } }); @@ -5270,12 +8992,27 @@ 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'); + 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' + ); } }); @@ -5284,7 +9021,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -5294,24 +9034,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -5330,19 +9074,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -5357,7 +9121,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -5367,7 +9137,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -5380,7 +9157,11 @@ 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'); + 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'); @@ -5395,64 +9176,101 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('bg'); test('parse', function (assert) { - var tests = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; + var tests = 'януари яну_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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(' '); @@ -5464,35 +9282,45 @@ 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', 'неделя, февруари 14-ти 2010, 15:25:50'], - ['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'], - ['[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'] + [ + 'dddd, MMMM Do YYYY, H:mm:ss', + 'неделя, февруари 14-ти 2010, 15:25:50', + ], + ['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'], + ['[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; @@ -5539,85 +9367,255 @@ }); test('format month', function (assert) { - var expected = 'януари янр_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; + var expected = 'януари яну_февруари фев_март мар_април апр_май май_юни юни_юли юли_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря ср_четвъртък чет чт_петък пет пт_събота съб сб'.split('_'), i; + var expected = 'неделя нед нд_понеделник пон пн_вторник вто вт_сряда сря ср_четвъртък чет чт_петък пет пт_събота съб сб'.split( + '_' + ), + i; 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 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), 'няколко секунди', '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), '2 часа', '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), '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 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), '2 месеца', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + 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), + '2 часа', + '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), + '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 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), + '2 месеца', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'след няколко секунди', '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(), 'преди няколко секунди', 'now from now should display as in the past'); + 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 дни', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'след няколко секунди', + 'in a few seconds' + ); + 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', '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'); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [в] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -5629,50 +9627,91 @@ case 0: case 3: case 6: - return '[В изминалата] dddd [в] LT'; + return '[Миналата] dddd [в] LT'; case 1: case 2: case 4: case 5: - return '[В изминалия] dddd [в] LT'; + return '[Миналия] dddd [в] LT'; } } for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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(makeFormat(m)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); + 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')) : @@ -5687,27 +9726,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -5717,8 +9761,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -5731,7 +9777,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -5740,16 +9789,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -5757,7 +9812,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -5765,12 +9822,21 @@ 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'); + 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' + ); } }); @@ -5778,12 +9844,27 @@ 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'); + 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' + ); } }); @@ -5792,7 +9873,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -5802,24 +9886,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -5838,19 +9926,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -5865,7 +9973,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -5875,7 +9989,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -5888,7 +10009,11 @@ 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'); + 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'); @@ -5903,66 +10028,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('bm'); 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('_'); + 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( + '_' + ); function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -5975,35 +10137,45 @@ 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', 'Kari, Fewuruyekalo 14 2010, 3:25:50 pm'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Kari, Fewuruyekalo 14 2010, 3:25:50 pm', + ], + ['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; @@ -6015,86 +10187,250 @@ 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('_'); + 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( + '_' + ); 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'); + 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( + '_' + ); 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 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), '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'); + 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), 'sanga dama dama kɔnɔ', 'prefix'); + 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(), 'tile 5 kɔnɔ', 'in 5 days'); + 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'); }); test('same 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'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Bi lɛrɛ 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Bi lɛrɛ 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '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(), 'Kunu lɛrɛ 12:00', 'Yesterday at the same time'); + assert.equal( + moment(a).calendar(), + '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: 1 }).calendar(), + 'Bi lɛrɛ 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + '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(), + 'Kunu lɛrɛ 12:00', + 'Yesterday at the same time' + ); }); 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 [don lɛrɛ] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [don lɛrɛ] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [don lɛrɛ] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [don lɛrɛ] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -6102,40 +10438,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [tɛmɛnen lɛrɛ] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 [tɛmɛnen lɛrɛ] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [tɛmɛnen lɛrɛ] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [tɛmɛnen lɛrɛ] LT'), + 'Today - ' + i + ' days end of day' + ); } }); test('same 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -6150,27 +10527,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -6180,8 +10562,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -6194,7 +10578,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -6203,16 +10590,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -6220,7 +10613,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -6228,12 +10623,21 @@ 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'); + 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' + ); } }); @@ -6241,12 +10645,27 @@ 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'); + 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' + ); } }); @@ -6255,7 +10674,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -6265,24 +10687,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -6301,19 +10727,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -6328,7 +10774,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -6338,7 +10790,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -6351,7 +10810,11 @@ 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'); + 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'); @@ -6366,65 +10829,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('bn'); test('parse', function (assert) { - var tests = 'জানুয়ারী জানু_ফেব্রুয়ারি ফেব_মার্চ মার্চ_এপ্রিল এপ্র_মে মে_জুন জুন_জুলাই জুল_আগস্ট আগ_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split('_'), i; + var tests = 'জানুয়ারি জানু_ফেব্রুয়ারি ফেব্রু_মার্চ মার্চ_এপ্রিল এপ্রিল_মে মে_জুন জুন_জুলাই জুলাই_আগস্ট আগস্ট_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -6435,34 +10937,44 @@ 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, 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', 'রবি, ১৪ ফেব ২০১০, দুপুর ৩:২৫ সময়'] + [ + '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', 'রবি, ১৪ ফেব্রু ২০১০, দুপুর ৩:২৫ সময়'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -6509,84 +11021,250 @@ }); test('format month', function (assert) { - var expected = 'জানুয়ারী জানু_ফেব্রুয়ারি ফেব_মার্চ মার্চ_এপ্রিল এপ্র_মে মে_জুন জুন_জুলাই জুল_আগস্ট আগ_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split('_'), i; + var expected = 'জানুয়ারি জানু_ফেব্রুয়ারি ফেব্রু_মার্চ মার্চ_এপ্রিল এপ্রিল_মে মে_জুন জুন_জুলাই জুলাই_আগস্ট আগস্ট_সেপ্টেম্বর সেপ্ট_অক্টোবর অক্টো_নভেম্বর নভে_ডিসেম্বর ডিসে'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'রবিবার রবি রবি_সোমবার সোম সোম_মঙ্গলবার মঙ্গল মঙ্গ_বুধবার বুধ বুধ_বৃহস্পতিবার বৃহস্পতি বৃহঃ_শুক্রবার শুক্র শুক্র_শনিবার শনি শনি'.split('_'), i; + var expected = 'রবিবার রবি রবি_সোমবার সোম সোম_মঙ্গলবার মঙ্গল মঙ্গল_বুধবার বুধ বুধ_বৃহস্পতিবার বৃহস্পতি বৃহ_শুক্রবার শুক্র শুক্র_শনিবার শনি শনি'.split( + '_' + ), + i; 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 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), 'কয়েক সেকেন্ড', '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: 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'); + 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: 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(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().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) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd[,] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -6594,56 +11272,121 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[গত] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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, 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, 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, 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, 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 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'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -6658,27 +11401,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -6688,8 +11436,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -6702,7 +11452,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -6711,16 +11464,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -6728,7 +11487,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -6736,12 +11497,21 @@ 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'); + 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' + ); } }); @@ -6749,12 +11519,27 @@ 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'); + 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' + ); } }); @@ -6763,7 +11548,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -6773,24 +11561,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -6809,19 +11601,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -6836,7 +11648,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -6846,7 +11664,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -6859,7 +11684,11 @@ 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'); + 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'); @@ -6874,65 +11703,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('bo'); test('parse', function (assert) { - var tests = 'ཟླ་བ་དང་པོ ཟླ་བ་དང་པོ._ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), i; + var tests = 'ཟླ་བ་དང་པོ ཟླ་༡_ཟླ་བ་གཉིས་པ ཟླ་༢_ཟླ་བ་གསུམ་པ ཟླ་༣_ཟླ་བ་བཞི་པ ཟླ་༤_ཟླ་བ་ལྔ་པ ཟླ་༥_ཟླ་བ་དྲུག་པ ཟླ་༦_ཟླ་བ་བདུན་པ ཟླ་༧_ཟླ་བ་བརྒྱད་པ ཟླ་༨_ཟླ་བ་དགུ་པ ཟླ་༩_ཟླ་བ་བཅུ་པ ཟླ་༡༠_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་༡༡_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་༡༢'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -6943,34 +11811,47 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); 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][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][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 ལ་', 'གཟའ་ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥:༥༠ ལ་'], - ['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', 'ཉི་མ་, ༡༤ ཟླ་བ་གཉིས་པ ༢༠༡༠, ཉིན་གུང ༣:༢༥'] + [ + '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', 'ཉི་མ་, ༡༤ ཟླ་༢ ༢༠༡༠, ཉིན་གུང ༣:༢༥'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -7017,85 +11898,251 @@ }); test('format month', function (assert) { - var expected = 'ཟླ་བ་དང་པོ ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), i; + var expected = 'ཟླ་བ་དང་པོ ཟླ་༡_ཟླ་བ་གཉིས་པ ཟླ་༢_ཟླ་བ་གསུམ་པ ཟླ་༣_ཟླ་བ་བཞི་པ ཟླ་༤_ཟླ་བ་ལྔ་པ ཟླ་༥_ཟླ་བ་དྲུག་པ ཟླ་༦_ཟླ་བ་བདུན་པ ཟླ་༧_ཟླ་བ་བརྒྱད་པ ཟླ་༨_ཟླ་བ་དགུ་པ ཟླ་༩_ཟླ་བ་བཅུ་པ ཟླ་༡༠_ཟླ་བ་བཅུ་གཅིག་པ ཟླ་༡༡_ཟླ་བ་བཅུ་གཉིས་པ ཟླ་༡༢'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'གཟའ་ཉི་མ་ ཉི་མ་ ཉི་མ་_གཟའ་ཟླ་བ་ ཟླ་བ་ ཟླ་བ་_གཟའ་མིག་དམར་ མིག་དམར་ མིག་དམར་_གཟའ་ལྷག་པ་ ལྷག་པ་ ལྷག་པ་_གཟའ་ཕུར་བུ ཕུར་བུ ཕུར་བུ_གཟའ་པ་སངས་ པ་སངས་ པ་སངས་_གཟའ་སྤེན་པ་ སྤེན་པ་ སྤེན་པ་'.split('_'), i; + var expected = 'གཟའ་ཉི་མ་ ཉི་མ་ ཉི_གཟའ་ཟླ་བ་ ཟླ་བ་ ཟླ_གཟའ་མིག་དམར་ མིག་དམར་ མིག_གཟའ་ལྷག་པ་ ལྷག་པ་ ལྷག_གཟའ་ཕུར་བུ ཕུར་བུ ཕུར_གཟའ་པ་སངས་ པ་སངས་ སངས_གཟའ་སྤེན་པ་ སྤེན་པ་ སྤེན'.split( + '_' + ), + i; 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 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), 'ལམ་སང', '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'); + 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(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().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) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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' + ); }); 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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[བདུན་ཕྲག་རྗེས་མ][,] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -7103,56 +12150,137 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[བདུན་ཕྲག་མཐའ་མ] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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, 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, 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 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'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -7167,27 +12295,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -7197,8 +12330,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -7211,7 +12346,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -7220,16 +12358,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -7237,7 +12381,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -7245,12 +12391,21 @@ 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'); + 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' + ); } }); @@ -7258,12 +12413,27 @@ 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'); + 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' + ); } }); @@ -7272,7 +12442,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -7282,24 +12455,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -7318,19 +12495,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -7345,7 +12542,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -7355,7 +12558,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -7368,7 +12578,11 @@ 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'); + 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'); @@ -7383,65 +12597,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('br'); 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -7452,29 +12705,39 @@ 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) { moment.locale('br'); var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sul, C\'hwevrer 14vet 2010, 3:25:50 pm'], - ['ddd, h A', 'Sul, 3 PM'], - ['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 3e25 PM'], - ['LLLL', 'Sul, 14 a viz C\'hwevrer 2010 3e25 PM'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + "Sul, C'hwevrer 14vet 2010, 3:25:50 pm", + ], + ['ddd, h A', 'Sul, 3 PM'], + ['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"], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -7523,146 +12786,398 @@ 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ), + i; 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 ddd dd'), + expected[i], + expected[i] + ); } }); 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'); - }); - - 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'); - }); - - test('calendar day', function (assert) { - moment.locale('br'); - - var a = moment().hours(12).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hiziv da 12e00 PM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hiziv da 12e25 PM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hiziv da 1e00 PM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Warc\'hoazh da 12e00 PM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hiziv da 11e00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Dec\'h da 12e00 PM', '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'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), 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('dddd [da] 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'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), 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('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}); - - 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'); + 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'); + }); + + 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' + ); + }); + + 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' + ); + assert.equal( + moment(a).add({ h: 3 }).calendar(), + 'Hiziv da 15:00', + 'Now plus 3 hour' + ); + 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'), + 'Today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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('dddd [da] 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'), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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('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 }); + + 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' + ); }); test('special mutations for years', function (assert) { moment.locale('br'); var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ur bloaz', 'mutation 1 year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), '2 vloaz', 'mutation 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), '3 bloaz', 'mutation 3 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), '4 bloaz', 'mutation 4 years'); - assert.equal(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'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ur bloaz', + 'mutation 1 year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 2 }), true), + '2 vloaz', + 'mutation 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 3 }), true), + '3 bloaz', + 'mutation 3 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 4 }), true), + '4 bloaz', + 'mutation 4 years' + ); + assert.equal( + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -7677,27 +13192,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -7707,8 +13227,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -7721,7 +13243,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -7730,16 +13255,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -7747,7 +13278,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -7755,12 +13288,21 @@ 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'); + 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' + ); } }); @@ -7768,12 +13310,27 @@ 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'); + 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' + ); } }); @@ -7782,7 +13339,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -7792,24 +13352,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -7828,19 +13392,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -7855,7 +13439,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -7865,7 +13455,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -7878,7 +13475,11 @@ 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'); + 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'); @@ -7893,65 +13494,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('bs'); 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1) + ' inp ' + mmm); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ' inp ' + mmm + ); } + + 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); @@ -7962,34 +13602,44 @@ 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, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'], - ['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. 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. 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'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'nedjelja, 14. februar 2010, 3:25:50 pm', + ], + ['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. 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. 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; @@ -8036,74 +13686,232 @@ }); test('format month', function (assert) { - 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[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('_'), i; + var expected = '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 dd'), expected[i], expected[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), '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'); + 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(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(), 'prije par sekundi', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'prije par sekundi', + 'now from now should display as in the past' + ); }); 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({ s: 30 }).fromNow(), + '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) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); - 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'); + 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' + ); + 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) { @@ -8126,12 +13934,24 @@ } for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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(makeFormat(m)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days end of day' + ); } }); @@ -8154,40 +13974,81 @@ } for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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(makeFormat(m)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); + 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')) : @@ -8202,27 +14063,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -8232,8 +14098,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -8246,7 +14114,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -8255,16 +14126,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -8272,7 +14149,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -8280,12 +14159,21 @@ 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'); + 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' + ); } }); @@ -8293,12 +14181,27 @@ 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'); + 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' + ); } }); @@ -8307,7 +14210,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -8317,24 +14223,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -8353,19 +14263,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -8380,7 +14310,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -8390,7 +14326,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -8403,7 +14346,11 @@ 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'); + 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'); @@ -8418,65 +14365,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('ca'); 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -8487,34 +14473,44 @@ 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, 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è 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'], - ['[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'] + [ + '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è 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'], + ['[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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -8561,132 +14557,363 @@ }); 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + var expected = 'diumenge dg. dg_dilluns dl. dl_dimarts dt. dt_dimecres dc. dc_dijous dj. dj_divendres dv. dv_dissabte ds. ds'.split( + '_' + ), + i; 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 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), 'uns segons', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuts', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuts', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 hores', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hores', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hores', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un dia', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un dia', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dies', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un dia', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dies', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dies', '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 mesos', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesos', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesos', '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 mesos', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un any', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anys', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un any', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anys', '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'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'fa uns segons', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'd\'aquí uns segons', 'd\'aquí uns segons'); - assert.equal(moment().add({d: 5}).fromNow(), 'd\'aquí 5 dies', 'd\'aquí 5 dies'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'avui a les 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'avui a les 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'avui a les 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '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(), 'avui a les 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ahir a les 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 [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('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('dddd [a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] 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('[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('[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('[el] dddd [passat a ' + ((m.hours() !== 1) ? 'les' : 'la') + '] 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'); - }); - - test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', 'Jan 8 2012 should be week 1'); - 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'); - }); - - test('day and month', function (assert) { + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'uns segons', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'un minut', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'un minut', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuts', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuts', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'una hora', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'una hora', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 hores', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hores', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hores', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'un dia', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'un dia', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dies', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'un dia', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dies', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dies', + '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 mesos', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mesos', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mesos', + '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 mesos', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un any', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 anys', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un any', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 anys', + '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'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'fa uns segons', + 'now from now should display as in the past' + ); + }); + + test('fromNow', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + "d'aquí uns segons", + "d'aquí uns segons" + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + "d'aquí 5 dies", + "d'aquí 5 dies" + ); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + 'avui a les 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'avui a les 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'avui a les 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + '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(), + 'avui a les 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'ahir a les 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 [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('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('dddd [a ' + (m.hours() !== 1 ? 'les' : 'la') + '] 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( + '[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( + '[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( + '[el] dddd [passat a ' + + (m.hours() !== 1 ? 'les' : 'la') + + '] 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' + ); + }); + + test('weeks year starting sunday formatted', function (assert) { + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52a', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1a', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1a', + 'Jan 8 2012 should be week 1' + ); + 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' + ); + }); + + 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('D MMMM'), "15 d'octubre"); assert.equal(moment([2012, 9, 15]).format('MMMM, D'), 'octubre, 15'); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -8701,27 +14928,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -8731,8 +14963,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -8745,7 +14979,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -8754,16 +14991,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -8771,7 +15014,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -8779,12 +15024,21 @@ 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'); + 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' + ); } }); @@ -8792,12 +15046,27 @@ 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'); + 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' + ); } }); @@ -8806,7 +15075,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -8816,24 +15088,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -8852,19 +15128,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -8879,7 +15175,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -8889,7 +15191,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -8902,7 +15211,11 @@ 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'); + 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'); @@ -8917,67 +15230,101 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('cs'); 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, monthIndex) { - assert.equal(moment(input, mmm).month(), monthIndex, input + ' ' + mmm + ' should be month ' + (monthIndex + 1)); + assert.equal( + moment(input, mmm).month(), + monthIndex, + input + ' ' + mmm + ' should be month ' + (monthIndex + 1) + ); } function equalTestStrict(input, mmm, monthIndex) { - assert.equal(moment(input, mmm, true).month(), monthIndex, input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1)); + 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(' '); @@ -9008,29 +15355,29 @@ test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss', 'neděle, únor 14. 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. 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 [den v roce]', '45. den v roce'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. únor 2010'], - ['LLL', '14. únor 2010 15:25'], - ['LLLL', 'neděle 14. únor 2010 15:25'], - ['l', '14. 2. 2010'], - ['ll', '14. úno 2010'], - ['lll', '14. úno 2010 15:25'], - ['llll', 'ne 14. úno 2010 15:25'] + ['dddd, MMMM Do YYYY, h:mm:ss', 'neděle, únor 14. 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. 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 [den v roce]', '45. den v roce'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14. únor 2010'], + ['LLL', '14. únor 2010 15:25'], + ['LLLL', 'neděle 14. únor 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; @@ -9077,113 +15424,355 @@ }); test('format month', function (assert) { - var expected = '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; + var expected = '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; 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 MMM'), + expected[i], + expected[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('_'), i; + 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( + '_' + ), + i; 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 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), '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 minuty', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '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 hodiny', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hodin', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '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 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 dní', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '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 měsíce', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 měsíce', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '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 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 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 let', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + '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 minuty', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '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 hodiny', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hodin', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '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 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 dní', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '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 měsíce', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 měsíce', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '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 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 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 let', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za pár sekund', 'prefix'); + 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'); + assert.equal( + moment().fromNow(), + 'před pár sekundami', + 'now from now should display as in the past' + ); }); test('fromNow (future)', 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'); + 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'); - assert.equal(moment().subtract({y: 10}).fromNow(), 'před 10 lety', '10 years ago'); + 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(), 'dnes v 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'dnes v 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'dnes v 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'zítra v 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'dnes v 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'včera v 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'dnes v 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'dnes v 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'dnes v 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'zítra v 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'dnes v 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'včera v 12:00', + 'yesterday at the same time' + ); }); test('calendar next week', function (assert) { var i, m, nextDay; for (i = 2; i < 7; i++) { - m = moment().add({d: i}); + m = moment().add({ d: i }); nextDay = ''; switch (m.day()) { case 0: @@ -9208,18 +15797,30 @@ nextDay = 'v sobotu'; break; } - assert.equal(m.calendar(), m.format('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days current time'); + assert.equal( + m.calendar(), + 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('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[' + nextDay + '] [v] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[' + nextDay + '] [v] LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { var i, m, lastDay; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); + m = moment().subtract({ d: i }); lastDay = ''; switch (m.day()) { case 0: @@ -9244,46 +15845,103 @@ lastDay = 'minulou sobotu'; break; } - assert.equal(m.calendar(), m.format('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days current time'); + assert.equal( + m.calendar(), + 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('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[' + lastDay + '] [v] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[' + lastDay + '] [v] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); + 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.', '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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -9298,27 +15956,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -9328,8 +15991,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -9342,7 +16007,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -9351,16 +16019,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -9368,7 +16042,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -9376,12 +16052,21 @@ 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'); + 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' + ); } }); @@ -9389,12 +16074,27 @@ 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'); + 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' + ); } }); @@ -9403,7 +16103,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -9413,24 +16116,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -9449,19 +16156,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -9476,7 +16203,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -9486,7 +16219,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -9499,7 +16239,11 @@ 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'); + 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'); @@ -9514,65 +16258,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('cv'); test('parse', function (assert) { - var tests = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; + var tests = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -9583,34 +16366,44 @@ 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', 'вырсарникун, нарӑс 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', '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', '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'] + [ + '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', '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', '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; @@ -9657,87 +16450,265 @@ }); test('format month', function (assert) { - var expected = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split('_'), i; + var expected = 'кӑрлач кӑр_нарӑс нар_пуш пуш_ака ака_май май_ҫӗртме ҫӗр_утӑ утӑ_ҫурла ҫур_авӑн авн_юпа юпа_чӳк чӳк_раштав раш'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кӗҫнерникун кӗҫ кҫ_эрнекун эрн эр_шӑматкун шӑм шм'.split('_'), i; + var expected = 'вырсарникун выр вр_тунтикун тун тн_ытларикун ытл ыт_юнкун юн юн_кӗҫнерникун кӗҫ кҫ_эрнекун эрн эр_шӑматкун шӑм шм'.split( + '_' + ), + i; 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 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), 'пӗр-ик ҫеккунт', '44 sekunder = 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), '2 сехет', '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), '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 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), '2 уйӑх', '46 days = 2 months'); - assert.equal(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), '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), '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 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'); - }); - - 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({h: 2}).fromNow(), '2 сехетрен', 'in 2 hours, the right suffix!'); - assert.equal(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(), 'Паян 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'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'пӗр-ик ҫеккунт', + '44 sekunder = 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), + '2 сехет', + '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), + '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 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), + '2 уйӑх', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 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' + ); + }); + + 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({ h: 2 }).fromNow(), + '2 сехетрен', + 'in 2 hours, the right suffix!' + ); + assert.equal( + 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(), + 'Паян 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [сехетре]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [сехетре]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Ҫитес] dddd LT [сехетре]'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -9745,43 +16716,84 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Иртнӗ] dddd LT [сехетре]'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 [сехетре]'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [сехетре]'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + 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'); + 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')) : @@ -9796,27 +16808,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -9826,8 +16843,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -9840,7 +16859,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -9849,16 +16871,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -9866,7 +16894,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -9874,12 +16904,21 @@ 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'); + 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' + ); } }); @@ -9887,12 +16926,27 @@ 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'); + 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' + ); } }); @@ -9901,7 +16955,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -9911,24 +16968,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -9947,19 +17008,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -9974,7 +17055,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -9984,7 +17071,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -9997,7 +17091,11 @@ 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'); + 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'); @@ -10012,66 +17110,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('cy'); 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('_'), + 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( + '_' + ), i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -10082,34 +17219,44 @@ 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', 'Dydd Sul, Chwefror 14eg 2010, 3:25:50 pm'], - ['ddd, hA', 'Sul, 3PM'], - ['M Mo MM MMMM MMM', '2 2il 02 Chwefror Chwe'], - ['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'], - ['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'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Dydd Sul, Chwefror 14eg 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sul, 3PM'], + ['M Mo MM MMMM MMM', '2 2il 02 Chwefror Chwe'], + ['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'], + ['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'], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -10156,49 +17303,175 @@ }); 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ), + i; 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 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), 'ychydig eiliadau', '44 seconds = 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', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 munud', '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', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 awr', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 awr', '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', '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 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 diwrnod', '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', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mis', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mis', '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 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', '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 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'ychydig eiliadau', + '44 seconds = 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 munud', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 awr', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 awr', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 diwrnod', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mis', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mis', + '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 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', + '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 years = 5 years' + ); }); test('suffix', function (assert) { @@ -10207,31 +17480,75 @@ }); 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(), 'mewn 5 diwrnod', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'mewn ychydig eiliadau', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'mewn 5 diwrnod', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Heddiw am 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Heddiw am 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Heddiw am 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Yfory am 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Heddiw am 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ddoe am 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Heddiw am 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Heddiw am 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Heddiw am 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Yfory am 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Heddiw am 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Ddoe am 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 [am] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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('dddd [am] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('dddd [am] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [am] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -10239,40 +17556,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [diwethaf am] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('dddd [diwethaf am] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('dddd [diwethaf am] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [diwethaf am] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ain', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1af', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1af', 'Jan 8 2012 should be week 1'); - 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'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52ain', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1af', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1af', + 'Jan 8 2012 should be week 1' + ); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -10287,27 +17645,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -10317,8 +17680,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -10331,7 +17696,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -10340,16 +17708,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -10357,7 +17731,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -10365,12 +17741,21 @@ 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'); + 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' + ); } }); @@ -10378,12 +17763,27 @@ 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'); + 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' + ); } }); @@ -10392,7 +17792,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -10402,24 +17805,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -10438,19 +17845,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -10465,7 +17892,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -10475,7 +17908,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -10488,7 +17928,11 @@ 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'); + 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'); @@ -10503,65 +17947,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('da'); 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -10572,34 +18055,44 @@ 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 [den] Do MMMM YYYY, h:mm:ss a', 'søndag den 14. februar 2010, 3:25:50 pm'], - ['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. søndag søn sø'], - ['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'], - ['[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', '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'] + [ + 'dddd [den] Do MMMM YYYY, h:mm:ss a', + 'søndag den 14. februar 2010, 3:25:50 pm', + ], + ['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. søndag søn sø'], + ['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'], + ['[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', '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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -10646,128 +18139,338 @@ }); 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ), + i; 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 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), 'få sekunder', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'et minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'et minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutter', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutter', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en time', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en time', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timer', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timer', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timer', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dage', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dage', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dage', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en måned', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '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 måneder', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 måneder', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 måneder', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en måned', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 måneder', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'et år', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'et år', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'få sekunder', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'et minut', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'et minut', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutter', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutter', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'en time', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'en time', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 timer', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 timer', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 timer', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'en dag', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'en dag', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dage', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'en dag', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dage', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dage', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'en måned', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '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 måneder', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 måneder', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 måneder', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'en måned', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 måneder', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'et år', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 år', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'et år', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 år', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'om få sekunder', 'prefix'); + 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().fromNow(), + 'få sekunder siden', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'om få sekunder', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dage', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'om få sekunder', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'om 5 dage', 'in 5 days'); }); - test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'i dag kl. 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'i dag kl. 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'i dag kl. 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'i morgen kl. 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'i dag kl. 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), '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('på dddd [kl.] 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'), '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'), '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('[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('[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('[i] dddd[s kl.] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + moment(a).calendar(), + 'i dag kl. 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'i dag kl. 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'i dag kl. 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'i morgen kl. 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'i dag kl. 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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('på dddd [kl.] 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'), + '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'), + '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('[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('[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('[i] dddd[s kl.] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -10782,27 +18485,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -10812,8 +18520,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -10826,7 +18536,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -10835,16 +18548,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -10852,7 +18571,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -10860,12 +18581,21 @@ 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'); + 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' + ); } }); @@ -10873,12 +18603,27 @@ 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'); + 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' + ); } }); @@ -10887,7 +18632,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -10897,24 +18645,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -10933,19 +18685,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -10960,7 +18732,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -10970,7 +18748,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -10983,7 +18768,11 @@ 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'); + 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'); @@ -10998,65 +18787,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('de-at'); 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -11069,12 +18896,22 @@ 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, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'], + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'Sonntag, 14. Februar 2010, 3:25:50 pm', + ], ['ddd, hA', 'So., 3PM'], ['M Mo MM MMMM MMM', '2 2. 02 Februar Feb.'], ['YYYY YY', '2010 10'], @@ -11096,7 +18933,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; @@ -11143,48 +18980,170 @@ }); 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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 ddd dd'), expected[i], expected[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), '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 Minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '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 Stunden', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '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 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 Tage', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '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: 46}), true), '2 Monate', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '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 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 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 Jahre', '5 years = 5 years'); + 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 Minuten', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '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 Stunden', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 Stunden', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '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 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 Tage', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '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: 46 }), true), + '2 Monate', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 Monate', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '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 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 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 Jahre', + '5 years = 5 years' + ); }); test('suffix', function (assert) { @@ -11193,70 +19152,151 @@ }); 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(), 'in 5 Tagen', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'in ein paar Sekunden', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'in 5 Tagen', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'heute um 12:00 Uhr', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'heute um 12:25 Uhr', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'heute um 13:00 Uhr', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'morgen um 12:00 Uhr', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'heute um 11:00 Uhr', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'gestern um 12:00 Uhr', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'heute um 12:00 Uhr', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'heute um 12:25 Uhr', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'heute um 13:00 Uhr', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'morgen um 12:00 Uhr', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'heute um 11:00 Uhr', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'gestern um 12:00 Uhr', + '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]'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [um] LT [Uhr]'), + '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('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[letzten] dddd [um] LT [Uhr]'), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -11271,27 +19311,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -11301,8 +19346,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -11315,7 +19362,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -11324,16 +19374,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -11341,7 +19397,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -11349,12 +19407,21 @@ 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'); + 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' + ); } }); @@ -11362,12 +19429,27 @@ 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'); + 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' + ); } }); @@ -11376,7 +19458,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -11386,24 +19471,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -11422,19 +19511,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -11449,7 +19558,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -11459,7 +19574,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -11472,7 +19594,11 @@ 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'); + 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'); @@ -11487,65 +19613,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('de-ch'); 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('_'), i; + 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(), i, input + ' should be month ' + (i + 1)); + 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); @@ -11556,35 +19721,45 @@ 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, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'], - ['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'], - ['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. 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'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'Sonntag, 14. Februar 2010, 3:25:50 pm', + ], + ['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'], + ['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. 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; @@ -11631,49 +19806,175 @@ }); 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; + 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 MMM'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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 ddd dd'), expected[i], expected[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), '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 Minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '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 Stunden', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '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 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 Tage', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '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 Monate', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '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 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 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 Jahre', '5 years = 5 years'); + 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 Minuten', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '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 Stunden', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 Stunden', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '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 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 Tage', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '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 Monate', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 Monate', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '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 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 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 Jahre', + '5 years = 5 years' + ); }); test('suffix', function (assert) { @@ -11682,70 +19983,151 @@ }); 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(), 'in 5 Tagen', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'in ein paar Sekunden', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'in 5 Tagen', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'heute um 12:00 Uhr', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'heute um 12:25 Uhr', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'heute um 13:00 Uhr', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'morgen um 12:00 Uhr', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'heute um 11:00 Uhr', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'gestern um 12:00 Uhr', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'heute um 12:00 Uhr', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'heute um 12:25 Uhr', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'heute um 13:00 Uhr', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'morgen um 12:00 Uhr', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'heute um 11:00 Uhr', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'gestern um 12:00 Uhr', + '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]'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [um] LT [Uhr]'), + '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('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[letzten] dddd [um] LT [Uhr]'), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -11760,27 +20142,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -11790,8 +20177,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -11804,7 +20193,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -11813,16 +20205,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -11830,7 +20228,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -11838,12 +20238,21 @@ 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'); + 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' + ); } }); @@ -11851,12 +20260,27 @@ 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'); + 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' + ); } }); @@ -11865,7 +20289,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -11875,24 +20302,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -11911,19 +20342,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -11938,7 +20389,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -11948,7 +20405,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -11961,7 +20425,11 @@ 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'); + 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'); @@ -11976,65 +20444,104 @@ }); 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var 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), + 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'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('de'); 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('_'), i; + 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(), i, input + ' should be month ' + (i + 1)); + 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); @@ -12045,34 +20552,44 @@ 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, Do MMMM YYYY, h:mm:ss a', 'Sonntag, 14. Februar 2010, 3:25:50 pm'], - ['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'], - ['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', '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'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'Sonntag, 14. Februar 2010, 3:25:50 pm', + ], + ['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'], + ['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', '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; @@ -12119,49 +20636,175 @@ }); 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; + 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 MMM'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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 ddd dd'), expected[i], expected[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), '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 Minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '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 Stunden', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stunden', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '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 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 Tage', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '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 Monate', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Monate', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '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 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 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 Jahre', '5 years = 5 years'); + 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 Minuten', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '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 Stunden', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 Stunden', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '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 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 Tage', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '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 Monate', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 Monate', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '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 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 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 Jahre', + '5 years = 5 years' + ); }); test('suffix', function (assert) { @@ -12170,70 +20813,151 @@ }); 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(), 'in 5 Tagen', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'in ein paar Sekunden', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'in 5 Tagen', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'heute um 12:00 Uhr', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'heute um 12:25 Uhr', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'heute um 13:00 Uhr', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'morgen um 12:00 Uhr', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'heute um 11:00 Uhr', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'gestern um 12:00 Uhr', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'heute um 12:00 Uhr', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'heute um 12:25 Uhr', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'heute um 13:00 Uhr', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'morgen um 12:00 Uhr', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'heute um 11:00 Uhr', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'gestern um 12:00 Uhr', + '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]'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [um] LT [Uhr]'), + '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('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[letzten] dddd [um] LT [Uhr]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[letzten] dddd [um] LT [Uhr]'), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -12248,27 +20972,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -12278,8 +21007,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -12292,7 +21023,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -12301,16 +21035,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -12318,7 +21058,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -12326,12 +21068,21 @@ 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'); + 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' + ); } }); @@ -12339,12 +21090,27 @@ 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'); + 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' + ); } }); @@ -12353,7 +21119,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -12363,24 +21132,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -12399,19 +21172,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -12426,7 +21219,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -12436,7 +21235,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -12449,7 +21255,11 @@ 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'); + 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'); @@ -12464,56 +21274,79 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('dv'); @@ -12532,11 +21365,23 @@ 'ސެޕްޓެމްބަރު', 'އޮކްޓޯބަރު', 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު' + 'ޑިސެމްބަރު', ]; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -12544,33 +21389,40 @@ equalTest(tests[i], 'MMMM', i); equalTest(tests[i].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i].toLocaleUpperCase(), 'MMMM', i); + + equalTestStrict(tests[i], 'MMM', i); + equalTestStrict(tests[i].toLocaleUpperCase(), 'MMM', i); + equalTestStrict(tests[i].toLocaleLowerCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'އާދިއްތަ، ފެބްރުއަރީ 14 2010، 3:25:50 މފ'], - ['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', '8 8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['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 15:25'], - ['llll', 'އާދިއްތަ 14 ފެބްރުއަރީ 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'އާދިއްތަ، ފެބްރުއަރީ 14 2010، 3:25:50 މފ', + ], + ['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', '8 8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['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 15:25'], + ['llll', 'އާދިއްތަ 14 ފެބްރުއަރީ 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -12594,7 +21446,7 @@ 'ސެޕްޓެމްބަރު', 'އޮކްޓޯބަރު', 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު' + 'ޑިސެމްބަރު', ]; for (i = 0; i < expected.length; i++) { @@ -12611,7 +21463,7 @@ 'ބުދަ', 'ބުރާސްފަތި', 'ހުކުރު', - 'ހޮނިހިރު' + 'ހޮނިހިރު', ]; for (i = 0; i < expected.length; i++) { @@ -12619,37 +21471,148 @@ } }); - 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', '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), 'ގަޑިއިރު 2', '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), 'ދުވަސް 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 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), 'މަސް 2', '46 days = 2 months'); - assert.equal(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), 'މަސް 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), 'އަހަރު 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 years = 5 years'); + 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), + 'ގަޑިއިރު 2', + '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), + 'ދުވަސް 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 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), + 'މަސް 2', + '46 days = 2 months' + ); + assert.equal( + 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), + 'މަސް 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), + 'އަހަރު 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 years = 5 years' + ); }); test('suffix', function (assert) { @@ -12658,70 +21621,155 @@ }); 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({ s: 30 }).fromNow(), + 'ތެރޭގައި ސިކުންތުކޮޅެއް', + 'in a few seconds' + ); + 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', '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'); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'), '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, 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'); + 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'), + '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, 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -12736,27 +21784,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -12766,8 +21819,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -12780,7 +21835,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -12789,16 +21847,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -12806,7 +21870,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -12814,12 +21880,21 @@ 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'); + 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' + ); } }); @@ -12827,12 +21902,27 @@ 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'); + 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' + ); } }); @@ -12841,7 +21931,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -12851,24 +21944,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -12887,19 +21984,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -12914,7 +22031,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -12924,7 +22047,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -12937,7 +22067,11 @@ 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'); + 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'); @@ -12952,66 +22086,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('el'); test('parse', function (assert) { var i, - tests = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split('_'); + tests = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split( + '_' + ); function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -13024,6 +22195,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); } }); @@ -13032,65 +22210,92 @@ 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 ΠΜ', 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] + ['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')); + 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'); + 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]); + 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]); + 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', 'Κυριακή, Φεβρουάριος 14η 2010, 3:25:50 μμ'], - ['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 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', 'μμ ΜΜ'], - ['[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 ΜΜ'], - ['l', '14/2/2010'], - ['ll', '14 Φεβ 2010'], - ['lll', '14 Φεβ 2010 3:25 ΜΜ'], - ['llll', 'Κυρ, 14 Φεβ 2010 3:25 ΜΜ'] + [ + '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 μμ', + ], + ['ddd, hA', 'Κυρ, 3ΜΜ'], + ['dddd, MMMM YYYY', 'Κυριακή, Φεβρουάριος 2010'], + ['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', 'μμ ΜΜ'], + ['[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 ΜΜ'], + ['l', '14/2/2010'], + ['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; @@ -13139,138 +22344,369 @@ test('format month', function (assert) { var i, - expected = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split('_'); + expected = 'Ιανουάριος Ιαν_Φεβρουάριος Φεβ_Μάρτιος Μαρ_Απρίλιος Απρ_Μάιος Μαϊ_Ιούνιος Ιουν_Ιούλιος Ιουλ_Αύγουστος Αυγ_Σεπτέμβριος Σεπ_Οκτώβριος Οκτ_Νοέμβριος Νοε_Δεκέμβριος Δεκ'.split( + '_' + ); 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { var i, - expected = 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split('_'); + expected = 'Κυριακή Κυρ Κυ_Δευτέρα Δευ Δε_Τρίτη Τρι Τρ_Τετάρτη Τετ Τε_Πέμπτη Πεμ Πε_Παρασκευή Παρ Πα_Σάββατο Σαβ Σα'.split( + '_' + ); 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 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), 'λίγα δευτερόλεπτα', '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), '2 ώρες', '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), '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 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), '2 μήνες', '46 days = 2 months'); - assert.equal(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), '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), '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 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'); - }); - - 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('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - 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(), 'Σήμερα στη 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'); - }); - - 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() % 12 === 1 ? 'στη' : 'στις') + '] 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.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [στις] LT'), 'Today + ' + i + ' days end of day'); - } - }); - - test('calendar last week', function (assert) { - 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(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(dayString + ' [στις] 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'); - } - }); - - 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'); - }); - - test('weeks year starting sunday format', function (assert) { - 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, 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'), '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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2η', 'Jan 15 2012 should be week 2'); + 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), + '2 ώρες', + '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), + '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 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), + '2 μήνες', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 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' + ); + }); + + 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('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + 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(), + 'Σήμερα στη 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' + ); + }); + + 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() % 12 === 1 ? 'στη' : 'στις') + '] 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.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('dddd [στις] LT'), + 'Today + ' + i + ' days end of day' + ); + } + }); + + test('calendar last week', function (assert) { + 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( + 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(dayString + ' [στις] 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' + ); + } + }); + + 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' + ); + }); + + test('weeks year starting sunday format', function (assert) { + 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, 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'), + '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' + ); + 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'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -13285,27 +22721,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -13315,8 +22756,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -13329,7 +22772,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -13338,16 +22784,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -13355,7 +22807,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -13363,12 +22817,21 @@ 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'); + 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' + ); } }); @@ -13376,12 +22839,27 @@ 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'); + 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' + ); } }); @@ -13390,7 +22868,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -13400,24 +22881,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -13436,19 +22921,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -13463,7 +22968,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -13473,7 +22984,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -13486,7 +23004,11 @@ 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'); + 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'); @@ -13501,65 +23023,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('en-SG'); + localeModule('en-au'); 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('_'), i; + 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(), i, input + ' should be month ' + (i + 1)); + 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); @@ -13570,34 +23131,44 @@ 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', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['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', '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', '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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sunday, February 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['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', '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', '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; @@ -13644,85 +23215,255 @@ }); 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('_'), i; + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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'), expected[i], expected[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), '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', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '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', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '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', '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 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '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', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '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 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', '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 years = 5 years'); + 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hours', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 days', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 months', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 months', + '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 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', + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', '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(), 'a few seconds ago', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'a few seconds ago', + 'now from now should display as in the past' + ); }); 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({ s: 30 }).fromNow(), + '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) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Today at 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Today at 12:00 PM', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at 12:25 PM', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at 1:00 PM', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at 12:00 PM', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at 11:00 AM', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [at] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -13730,40 +23471,115 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Last] dddd [at] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 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'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52nd', + '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' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1st', + '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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2nd', + '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), + 'Monday_Tuesday_Wednesday_Thursday_Friday_Saturday_Sunday'.split('_'), + 'locale-sorted weekdays start on Monday' + ); + 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), + 'Mon_Tue_Wed_Thu_Fri_Sat_Sun'.split('_'), + 'locale-sorted weekdaysShort start on Monday' + ); + 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), + 'Mo_Tu_We_Th_Fr_Sa_Su'.split('_'), + 'locale-sorted weekdaysMin start on Monday' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -13778,27 +23594,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -13808,8 +23629,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -13822,7 +23645,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -13831,16 +23657,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -13848,7 +23680,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -13856,12 +23690,21 @@ 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'); + 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' + ); } }); @@ -13869,12 +23712,27 @@ 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'); + 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' + ); } }); @@ -13883,7 +23741,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -13893,24 +23754,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -13929,19 +23794,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -13956,7 +23841,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -13966,7 +23857,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -13979,7 +23877,11 @@ 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'); + 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'); @@ -13994,65 +23896,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('en-au'); + localeModule('en-ca'); 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('_'), i; + 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( + '_' + ); + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -14063,37 +24005,48 @@ 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', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['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', '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', '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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sunday, February 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['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', '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'], + ['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]); } @@ -14137,85 +24090,258 @@ }); 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('_'), i; + 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( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ); + 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 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), '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', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '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', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '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', '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 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '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', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '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 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', '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 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'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); - }); - - 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'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Today at 12:00 PM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25 PM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 1:00 PM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00 PM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00 PM', 'yesterday at the same time'); - }); - + 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hours', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 days', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 months', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 months', + '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 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', + '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 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'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'a few seconds ago', + 'now from now should display as in the past' + ); + }); + + 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'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + 'Today at 12:00 PM', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at 12:25 PM', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at 1:00 PM', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at 12:00 PM', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at 11:00 AM', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [at] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -14223,68 +24349,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Last] dddd [at] 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(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'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - // 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), - 'Monday_Tuesday_Wednesday_Thursday_Friday_Saturday_Sunday'.split('_'), - 'locale-sorted weekdays start on Monday'); - 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), - 'Mon_Tue_Wed_Thu_Fri_Sat_Sun'.split('_'), - 'locale-sorted weekdaysShort start on Monday'); - 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), - 'Mo_Tu_We_Th_Fr_Sa_Su'.split('_'), - 'locale-sorted weekdaysMin start on Monday'); + 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' + ); + assert.equal( + 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 2nd', + 'Jan 8 2012 should be week 2' + ); + assert.equal( + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -14299,27 +24438,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -14329,8 +24473,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -14343,7 +24489,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -14352,16 +24501,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -14369,7 +24524,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -14377,12 +24534,21 @@ 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'); + 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' + ); } }); @@ -14390,12 +24556,27 @@ 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'); + 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' + ); } }); @@ -14404,7 +24585,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -14414,24 +24598,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -14450,19 +24638,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -14477,7 +24685,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -14487,7 +24701,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -14500,7 +24721,11 @@ 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'); + 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'); @@ -14515,66 +24740,102 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('en-ca'); + localeModule('en-gb'); test('parse', function (assert) { - 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('_'); - + 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(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -14587,38 +24848,47 @@ 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', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['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', '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'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sunday, February 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['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', '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', '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]); } @@ -14662,90 +24932,255 @@ }); test('format month', function (assert) { - 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('_'); - + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - 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('_'); - + 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'), expected[i], expected[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), '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', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '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', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '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', '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 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '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', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '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 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', '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 years = 5 years'); + 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hours', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 days', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 months', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 months', + '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 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', + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', '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(), 'a few seconds ago', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'a few seconds ago', + 'now from now should display as in the past' + ); }); 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({ s: 30 }).fromNow(), + '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) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Today at 12:00 PM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25 PM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 1:00 PM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00 PM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00 PM', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Today at 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [at] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -14753,40 +25188,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Last] dddd [at] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - 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'); - assert.equal(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 2nd', 'Jan 8 2012 should be week 2'); - assert.equal(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('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' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1st', + 'Jan 2 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' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2nd', + 'Jan 9 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -14801,27 +25277,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -14831,8 +25312,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -14845,7 +25328,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -14854,16 +25340,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -14871,7 +25363,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -14879,12 +25373,21 @@ 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'); + 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' + ); } }); @@ -14892,12 +25395,27 @@ 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'); + 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' + ); } }); @@ -14906,7 +25424,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -14916,24 +25437,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -14952,19 +25477,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -14979,7 +25524,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -14989,7 +25540,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -15002,7 +25560,11 @@ 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'); + 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'); @@ -15017,65 +25579,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('en-gb'); + localeModule('en-ie'); 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('_'), i; + 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(), i, input + ' should be month ' + (i + 1)); + 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); @@ -15086,34 +25687,44 @@ 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', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['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', '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', '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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sunday, February 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['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', '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', '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; @@ -15160,126 +25771,337 @@ }); 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('_'), i; + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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'), expected[i], expected[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), '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', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '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', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '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', '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 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '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', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '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 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', '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 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'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'a few seconds ago', 'now from now should display as in the past'); - }); - - 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'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Today at 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), '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(m.calendar(), 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 [at] 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'), '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('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), 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('[Last] dddd [at] 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'); - }); - - 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 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'); - }); - -}))); - - + 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hours', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 days', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 months', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 months', + '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 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', + '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 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'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'a few seconds ago', + 'now from now should display as in the past' + ); + }); + + 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'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + 'Today at 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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( + m.calendar(), + 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 [at] 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'), + '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('[Last] dddd [at] LT'), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] 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' + ); + }); + + 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' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1st', + 'Jan 2 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' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2nd', + 'Jan 9 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' + ); + }); + +}))); + + + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -15294,27 +26116,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -15324,8 +26151,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -15338,7 +26167,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -15347,16 +26179,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -15364,7 +26202,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -15372,12 +26212,21 @@ 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'); + 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' + ); } }); @@ -15385,12 +26234,27 @@ 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'); + 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' + ); } }); @@ -15399,7 +26263,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -15409,24 +26276,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -15445,19 +26316,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -15472,7 +26363,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -15482,7 +26379,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -15495,7 +26399,11 @@ 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'); + 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'); @@ -15510,65 +26418,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('en-ie'); + localeModule('en-il'); 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('_'), i; + 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(), i, input + ' should be month ' + (i + 1)); + 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); @@ -15579,34 +26526,44 @@ 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', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['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', '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', '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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sunday, February 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['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', '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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -15653,85 +26610,255 @@ }); 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('_'), i; + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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'), expected[i], expected[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), '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', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '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', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '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', '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 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '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', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '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 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', '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 years = 5 years'); + 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hours', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 days', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 months', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 months', + '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 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', + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', '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(), 'a few seconds ago', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'a few seconds ago', + 'now from now should display as in the past' + ); }); 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({ s: 30 }).fromNow(), + '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) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Today at 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Today at 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [at] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -15739,40 +26866,89 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Last] dddd [at] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 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'); + 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'), + '1 01 1st', + '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' + ); + assert.equal( + 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('days start on sunday', function (assert) { + assert.equal( + moment().startOf('week').format('dddd'), + 'Sunday', + 'First day of the week should be Sunday' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -15787,27 +26963,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -15817,8 +26998,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -15831,7 +27014,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -15840,16 +27026,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -15857,7 +27049,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -15865,12 +27059,21 @@ 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'); + 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' + ); } }); @@ -15878,12 +27081,27 @@ 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'); + 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' + ); } }); @@ -15892,7 +27110,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -15902,24 +27123,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -15938,19 +27163,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -15965,7 +27210,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -15975,7 +27226,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -15988,7 +27246,11 @@ 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'); + 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'); @@ -16003,64 +27265,94 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('en-il'); + localeModule('en-in'); 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('_'), i; + 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(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); @@ -16077,29 +27369,32 @@ test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['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', '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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sunday, February 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['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', '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', '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; @@ -16146,85 +27441,255 @@ }); 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('_'), i; + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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'), expected[i], expected[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), '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', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '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', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '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', '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 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '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', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '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 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', '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 years = 5 years'); + 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hours', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 days', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 months', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 months', + '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 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', + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', '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(), 'a few seconds ago', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'a few seconds ago', + 'now from now should display as in the past' + ); }); 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({ s: 30 }).fromNow(), + '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) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Today at 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Today at 12:00 PM', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at 12:25 PM', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at 1:00 PM', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at 12:00 PM', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at 11:00 AM', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [at] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -16232,44 +27697,115 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Last] dddd [at] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'), '1 01 1st', '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'); - assert.equal(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'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52nd', + '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' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1st', + '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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2nd', + 'Jan 15 2012 should be week 2' + ); }); - test('days start on sunday', function (assert) { - assert.equal(moment().startOf('week').format('dddd'), 'Sunday', 'First day of the week should be Sunday'); + // 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), + 'Monday_Tuesday_Wednesday_Thursday_Friday_Saturday_Sunday'.split('_'), + 'locale-sorted weekdays start on Monday' + ); + 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), + 'Mon_Tue_Wed_Thu_Fri_Sat_Sun'.split('_'), + 'locale-sorted weekdaysShort start on Monday' + ); + 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), + 'Mo_Tu_We_Th_Fr_Sa_Su'.split('_'), + 'locale-sorted weekdaysMin start on Monday' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -16284,27 +27820,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -16314,8 +27855,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -16328,7 +27871,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -16337,16 +27883,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -16354,7 +27906,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -16362,12 +27916,21 @@ 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'); + 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' + ); } }); @@ -16375,12 +27938,27 @@ 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'); + 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' + ); } }); @@ -16389,7 +27967,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -16399,24 +27980,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -16435,19 +28020,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -16462,7 +28067,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -16472,7 +28083,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -16485,7 +28103,11 @@ 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'); + 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'); @@ -16500,65 +28122,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } localeModule('en-nz'); 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('_'), i; + 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(), i, input + ' should be month ' + (i + 1)); + 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); @@ -16569,34 +28230,44 @@ 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', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['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', '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', '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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sunday, February 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['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', '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', '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; @@ -16643,85 +28314,255 @@ }); 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('_'), i; + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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'), expected[i], expected[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), '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', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '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', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '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', '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 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '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', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '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 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', '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 years = 5 years'); + 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hours', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 days', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 months', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 months', + '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 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', + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', '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(), 'a few seconds ago', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'a few seconds ago', + 'now from now should display as in the past' + ); }); 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({ s: 30 }).fromNow(), + '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) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Today at 12:00 PM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25 PM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 1:00 PM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00 PM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00 PM', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Today at 12:00 PM', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at 12:25 PM', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at 1:00 PM', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at 12:00 PM', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at 11:00 AM', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [at] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -16729,40 +28570,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Last] dddd [at] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 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'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52nd', + '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' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1st', + '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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2nd', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -16777,27 +28659,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -16807,8 +28694,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -16821,7 +28710,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -16830,16 +28722,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -16847,7 +28745,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -16855,12 +28755,21 @@ 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'); + 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' + ); } }); @@ -16868,12 +28777,27 @@ 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'); + 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' + ); } }); @@ -16882,7 +28806,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -16892,24 +28819,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -16928,19 +28859,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -16955,7 +28906,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -16965,7 +28922,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -16978,7 +28942,11 @@ 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'); + 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'); @@ -16993,68 +28961,95 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('en'); + localeModule('en-sg'); test('parse', function (assert) { - 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('_'); - + 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(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } - for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); @@ -17070,33 +29065,35 @@ test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Sunday, February 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], - ['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', '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', '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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sunday, February 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['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', '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', '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]); } @@ -17140,91 +29137,255 @@ }); test('format month', function (assert) { - 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('_'); - + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - 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('_'); - + 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'), expected[i], expected[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), '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', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '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', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hours', '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', '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 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 days', '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', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 months', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 months', '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 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', '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 years = 5 years'); + 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hours', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 days', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 months', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 months', + '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 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', + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in a few seconds', '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(), 'a few seconds ago', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'a few seconds ago', + 'now from now should display as in the past' + ); }); 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({ s: 30 }).fromNow(), + '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) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Today at 12:00 PM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at 12:25 PM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at 1:00 PM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at 12:00 PM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at 11:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at 12:00 PM', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Today at 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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(m.calendar(), m.format('dddd [at] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [at] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [at] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -17232,58 +29393,84 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Last] dddd [at] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Last] dddd [at] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Last] dddd [at] 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'); - }); - - 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'); - assert.equal(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 2nd', 'Jan 8 2012 should be week 2'); - assert.equal(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'); - }); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - test('weekdays strict parsing', function (assert) { - var m = moment('2015-01-01T12', moment.ISO_8601, true), - enLocale = moment.localeData('en'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - for (var 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); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - // 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); - } + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); -}))); - - -;(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' - && typeof require === 'function' ? factory(require('../../moment')) : + 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' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1st', + 'Jan 2 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' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2nd', + 'Jan 9 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' + ); + }); + +}))); + + + +;(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'; @@ -17295,27 +29482,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -17325,8 +29517,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -17339,7 +29533,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -17348,16 +29545,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -17365,7 +29568,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -17373,12 +29578,21 @@ 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'); + 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' + ); } }); @@ -17386,12 +29600,27 @@ 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'); + 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' + ); } }); @@ -17400,7 +29629,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -17410,24 +29642,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -17446,19 +29682,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -17473,7 +29729,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -17483,7 +29745,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -17496,7 +29765,11 @@ 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'); + 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'); @@ -17511,65 +29784,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('eo'); + localeModule('en'); test('parse', function (assert) { - var tests = 'januaro jan_februaro feb_marto mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split('_'), i; + 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( + '_' + ); + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -17580,160 +29893,418 @@ 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', 'dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.'], - ['ddd, hA', 'dim, 3P.T.M.'], - ['M Mo MM MMMM MMM', '2 2a 02 februaro 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'], - ['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', '14-a de februaro, 2010'], - ['LLL', '14-a de februaro, 2010 15:25'], - ['LLLL', 'dimanĉo, la 14-a de februaro, 2010 15:25'], - ['l', '2010-2-14'], - ['ll', '14-a de feb, 2010'], - ['lll', '14-a de feb, 2010 15:25'], - ['llll', 'dim, la 14-a de feb, 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Sunday, February 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 February Feb'], + ['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', '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', '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 mar_aprilo apr_majo maj_junio jun_julio jul_aŭgusto aŭg_septembro sep_oktobro okt_novembro nov_decembro dec'.split('_'), i; + 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( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ); + 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 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), 'sekundoj', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutoj', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutoj', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'horo', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'horo', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horoj', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horoj', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horoj', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'tago', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'tago', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 tagoj', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'tago', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 tagoj', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 tagoj', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'monato', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'monato', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'monato', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 monatoj', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 monatoj', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 monatoj', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'monato', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 monatoj', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'jaro', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaroj', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'jaro', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaroj', '5 years = 5 years'); + + 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', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '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', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hours', + '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', + '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 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 days', + '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', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 months', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 months', + '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 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', + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'post sekundoj', 'post prefix'); - assert.equal(moment(0).from(30000), 'antaŭ 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ŭ sekundoj', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'a few seconds ago', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'post sekundoj', 'post sekundoj'); - assert.equal(moment().add({d: 5}).fromNow(), 'post 5 tagoj', 'post 5 tagoj'); + 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'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Hodiaŭ je 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hodiaŭ je 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hodiaŭ je 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Morgaŭ je 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hodiaŭ je 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hieraŭ je 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Today at 12:00 PM', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at 12:25 PM', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at 1:00 PM', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at 12:00 PM', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at 11:00 AM', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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(m.calendar(), m.format('dddd [je] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [je] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [je] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [at] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -17741,40 +30312,117 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[pasinta] dddd [je] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Last] dddd [at] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - 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'), '1 01 1a', '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'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2a', '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'); + 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' + ); + assert.equal( + 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 2nd', + 'Jan 8 2012 should be week 2' + ); + assert.equal( + 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 + ); + } }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -17789,27 +30437,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -17819,8 +30472,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -17833,7 +30488,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -17842,16 +30500,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -17859,7 +30523,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -17867,12 +30533,21 @@ 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'); + 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' + ); } }); @@ -17880,12 +30555,27 @@ 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'); + 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' + ); } }); @@ -17894,7 +30584,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -17904,24 +30597,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -17940,19 +30637,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -17967,7 +30684,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -17977,7 +30700,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -17990,7 +30720,11 @@ 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'); + 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'); @@ -18005,65 +30739,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -18074,35 +30847,44 @@ 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', 'domingo, febrero 14º 2010, 3:25:50 pm'], - ['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º 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'], - ['[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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'dimanĉo, februaro 14a 2010, 3:25:50 p.t.m.', + ], + ['ddd, hA', 'dim, 3P.T.M.'], + ['M Mo MM MMMM MMM', '2 2a 02 februaro 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'], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -18112,171 +30894,383 @@ }); 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ), + i; 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 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), 'unos 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 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '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 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 días', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '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 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '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 meses', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un año', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 años', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un año', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 años', '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'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'hace unos segundos', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), '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(), 'hoy a las 12:00 PM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'hoy a las 12:25 PM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'hoy a las 1:00 PM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '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 AM', 'tomorrow minus 1 hour'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'hoy a las 11:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ayer a las 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(m.calendar(), 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('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('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] 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('[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('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'kelkaj sekundoj', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'unu minuto', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'unu minuto', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutoj', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutoj', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'unu horo', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'unu horo', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 horoj', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 horoj', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 horoj', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'unu tago', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'unu tago', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 tagoj', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'unu tago', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 tagoj', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 tagoj', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'unu monato', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'unu monato', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'unu monato', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 monatoj', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 monatoj', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 monatoj', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'unu monato', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 monatoj', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'unu jaro', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 jaroj', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'unu jaro', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 jaroj', + '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' + ); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'antaŭ kelkaj sekundoj', + 'now from now should display as in the past' + ); + }); + + 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' + ); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + 'Hodiaŭ je 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Hodiaŭ je 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Hodiaŭ je 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Morgaŭ je 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Hodiaŭ je 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Hieraŭ je 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[n] [je] 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'), + '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'), + '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('[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('[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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[pasintan] dddd[n je] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - 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'); + 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'), + '1 01 1a', + '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' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '2 02 2a', + '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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -18291,27 +31285,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -18321,8 +31320,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -18335,7 +31336,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -18344,16 +31348,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -18361,7 +31371,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -18369,12 +31381,21 @@ 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'); + 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' + ); } }); @@ -18382,12 +31403,27 @@ 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'); + 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' + ); } }); @@ -18396,7 +31432,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -18406,24 +31445,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -18442,19 +31485,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -18469,7 +31532,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -18479,7 +31548,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -18492,7 +31568,11 @@ 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'); + 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'); @@ -18507,65 +31587,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('es-us'); + localeModule('es-do'); 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -18576,36 +31695,45 @@ 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', 'domingo, febrero 14º 2010, 3:25:50 pm'], - ['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º domingo dom. do'], - ['DDD DDDo DDDD', '45 45º 045'], - ['w wo ww', '8 8º 08'], - ['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'], - ['[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'], - ['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'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'domingo, febrero 14º 2010, 3:25:50 pm', + ], + ['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º 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'], + ['[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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -18652,92 +31780,261 @@ }); test('format month', function (assert) { - 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('_'); - + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - 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('_'); - + 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'), expected[i], expected[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), 'unos 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 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '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 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 días', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '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 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '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 meses', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un año', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 años', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un año', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 años', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'unos 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 minutos', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutos', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'una hora', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'una hora', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 horas', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 horas', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '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 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 días', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '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 meses', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 meses', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '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 meses', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un año', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 años', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un año', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 años', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'en unos segundos', 'prefix'); + 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(), 'hace unos segundos', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'hace unos segundos', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'en unos segundos', 'en unos segundos'); - assert.equal(moment().add({d: 5}).fromNow(), 'en 5 días', 'en 5 días'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + '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(), 'hoy a las 12:00 PM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'hoy a las 12:25 PM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'hoy a las 1:00 PM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '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 AM', 'tomorrow minus 1 hour'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'hoy a las 11:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ayer a las 12:00 PM', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'hoy a las 12:00 PM', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'hoy a las 12:25 PM', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'hoy a las 1:00 PM', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + '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 AM', + 'tomorrow minus 1 hour' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'hoy a las 11:00 AM', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'ayer a las 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(m.calendar(), m.format('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [a la' + (m.hours() !== 1 ? 's' : '') + '] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -18745,51 +32042,101 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format( + '[el] dddd [pasado a la' + (m.hours() !== 1 ? 's' : '') + '] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'), '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'), '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'); + 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' + ); + 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'); - }); - - test('test lenient month parsing', function (assert) { - assert.ok(moment('nov 01, 2015', 'MMM D, YYYY', true).isValid(), 'nov 01, 2015 should parse correctly'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -18804,27 +32151,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -18834,8 +32186,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -18848,7 +32202,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -18857,16 +32214,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -18874,7 +32237,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -18882,12 +32247,21 @@ 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'); + 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' + ); } }); @@ -18895,12 +32269,27 @@ 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'); + 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' + ); } }); @@ -18909,7 +32298,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -18919,24 +32311,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -18955,19 +32351,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -18982,7 +32398,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -18992,7 +32414,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -19005,7 +32434,11 @@ 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'); + 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'); @@ -19020,65 +32453,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('es'); + localeModule('es-us'); 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -19089,35 +32561,46 @@ 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', 'domingo, febrero 14º 2010, 3:25:50 pm'], - ['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º 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'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'domingo, febrero 14º 2010, 3:25:50 pm', + ], + ['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º domingo dom. do'], + ['DDD DDDo DDDD', '45 45º 045'], + ['w wo ww', '8 8º 08'], + ['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'], + ['[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'], + ['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'], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -19164,133 +32647,378 @@ }); 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('_'), i; + 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( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ); + 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 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), 'unos 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 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'una hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'una hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '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 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 días', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '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 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '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 meses', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un año', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 años', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un año', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 años', '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'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'hace unos segundos', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), '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(), 'hoy a las 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'hoy a las 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'hoy a las 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '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(), 'hoy a las 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), '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('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('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('dddd [a la' + ((m.hours() !== 1) ? 's' : '') + '] 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('[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('[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('[el] dddd [pasado a la' + ((m.hours() !== 1) ? 's' : '') + '] 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'); - }); - - 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'); - 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'); - 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'; - assert.equal(moment(str, 'DD-MMM-YYYY').month(), '7', '02-ago-2016 month should be 7'); - }); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'unos 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 minutos', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutos', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'una hora', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'una hora', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 horas', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 horas', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '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 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 días', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '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 meses', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 meses', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '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 meses', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un año', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 años', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un año', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 años', + '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'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'hace unos segundos', + 'now from now should display as in the past' + ); + }); + + test('fromNow', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + '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(), + 'hoy a las 12:00 PM', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'hoy a las 12:25 PM', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'hoy a las 1:00 PM', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + '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 AM', + 'tomorrow minus 1 hour' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'hoy a las 11:00 AM', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'ayer a las 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( + m.calendar(), + 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('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('dddd [a la' + (m.hours() !== 1 ? 's' : '') + '] 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( + '[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( + '[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( + '[el] dddd [pasado a la' + (m.hours() !== 1 ? 's' : '') + '] 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' + ); + }); + + 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'), + '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'), + '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' + ); + }); + + 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' + ); + }); + + test('test lenient month parsing', function (assert) { + assert.ok( + moment('nov 01, 2015', 'MMM D, YYYY', true).isValid(), + 'nov 01, 2015 should parse correctly' + ); + }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -19305,27 +33033,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -19335,8 +33068,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -19349,7 +33084,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -19358,16 +33096,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -19375,7 +33119,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -19383,12 +33129,21 @@ 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'); + 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' + ); } }); @@ -19396,12 +33151,27 @@ 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'); + 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' + ); } }); @@ -19410,7 +33180,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -19420,24 +33193,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -19456,19 +33233,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -19483,7 +33280,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -19493,7 +33296,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -19506,7 +33316,11 @@ 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'); + 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'); @@ -19521,65 +33335,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' peaks olema kuu ' + (i + 1)); + 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); @@ -19590,34 +33443,45 @@ 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, Do MMMM YYYY, H:mm:ss', 'pühapäev, 14. veebruar 2010, 15:25:50'], - ['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. pühapäev P P'], - ['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'], - ['[aasta] DDDo [päev]', 'aasta 45. päev'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'domingo, febrero 14º 2010, 3:25:50 pm', + ], + ['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º 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'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['LTS', '15:25:50'], + ['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; @@ -19627,186 +33491,403 @@ }); 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('_'), i; + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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'), expected[i], expected[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), 'paar sekundit', '44 seconds = paar sekundit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'üks minut', '45 seconds = üks minut'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'üks minut', '89 seconds = üks minut'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutit', '90 seconds = 2 minutit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutit', '44 minutes = 44 minutit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'üks tund', '45 minutes = tund aega'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'üks tund', '89 minutes = üks tund'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tundi', '90 minutes = 2 tundi'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tundi', '5 hours = 5 tundi'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tundi', '21 hours = 21 tundi'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'üks päev', '22 hours = üks päev'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'üks päev', '35 hours = üks päev'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 päeva', '36 hours = 2 päeva'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'üks päev', '1 day = üks päev'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 päeva', '5 days = 5 päeva'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 päeva', '25 days = 25 päeva'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'üks kuu', '26 days = üks kuu'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'üks kuu', '30 days = üks kuu'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'üks kuu', '43 days = üks kuu'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 kuud', '46 days = 2 kuud'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 kuud', '75 days = 2 kuud'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 kuud', '76 days = 3 kuud'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'üks kuu', '1 month = üks kuu'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 kuud', '5 months = 5 kuud'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'üks aasta', '345 days = üks aasta'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 aastat', '548 days = 2 aastat'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'üks aasta', '1 year = üks aasta'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 aastat', '5 years = 5 aastat'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'unos 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 minutos', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutos', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'una hora', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'una hora', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 horas', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 horas', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '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 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 días', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '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 meses', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 meses', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '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 meses', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un año', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 años', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un año', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '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', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'hace unos segundos', + 'now from now should display as in the past' + ); }); 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'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + '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).add({m: 25}).calendar(), 'Täna, 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Täna, 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Homme, 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Täna, 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Eile, 12:00', 'yesterday 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(), + 'hoy a las 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'hoy a las 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + '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(), + 'hoy a las 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [a la' + (m.hours() !== 1 ? 's' : '') + '] 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('[Eelmine] dddd LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format( + '[el] dddd [pasado a la' + (m.hours() !== 1 ? 's' : '') + '] 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 nädal tagasi'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '1 nädala pärast'); + 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}); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 nädalat tagasi'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 nädala pärast'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + 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'; + 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 invalida', + 'Invalid date should translate' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -19821,27 +33902,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -19851,8 +33937,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -19865,7 +33953,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -19874,16 +33965,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -19891,7 +33988,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -19899,12 +33998,21 @@ 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'); + 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' + ); } }); @@ -19912,12 +34020,27 @@ 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'); + 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' + ); } }); @@ -19926,7 +34049,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -19936,24 +34062,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -19972,19 +34102,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -19999,7 +34149,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -20009,7 +34165,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -20022,7 +34185,11 @@ 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'); + 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'); @@ -20037,65 +34204,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' peaks olema kuu ' + (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); @@ -20106,34 +34312,44 @@ 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', 'igandea, otsaila 14. 2010, 3:25:50 pm'], - ['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'] + [ + 'dddd, Do MMMM YYYY, H:mm:ss', + 'pühapäev, 14. veebruar 2010, 15:25:50', + ], + ['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. pühapäev P P'], + ['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'], + ['[aasta] DDDo [päev]', 'aasta 45. päev'], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -20180,125 +34396,424 @@ }); 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ), + i; 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 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), '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'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'paar sekundit', + '44 seconds = paar sekundit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'üks minut', + '45 seconds = üks minut' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'üks minut', + '89 seconds = üks minut' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutit', + '90 seconds = 2 minutit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutit', + '44 minutes = 44 minutit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'üks tund', + '45 minutes = tund aega' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'üks tund', + '89 minutes = üks tund' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 tundi', + '90 minutes = 2 tundi' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 tundi', + '5 hours = 5 tundi' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 tundi', + '21 hours = 21 tundi' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'üks päev', + '22 hours = üks päev' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'üks päev', + '35 hours = üks päev' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 päeva', + '36 hours = 2 päeva' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'üks päev', + '1 day = üks päev' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 päeva', + '5 days = 5 päeva' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 päeva', + '25 days = 25 päeva' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'üks kuu', + '26 days = üks kuu' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'üks kuu', + '30 days = üks kuu' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'üks kuu', + '43 days = üks kuu' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 kuud', + '46 days = 2 kuud' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 kuud', + '75 days = 2 kuud' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 kuud', + '76 days = 3 kuud' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'üks kuu', + '1 month = üks kuu' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 kuud', + '5 months = 5 kuud' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'üks aasta', + '345 days = üks aasta' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 aastat', + '548 days = 2 aastat' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'üks aasta', + '1 year = üks aasta' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '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', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'mõni sekund tagasi', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'segundo batzuk barru', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 egun barru', 'in 5 days'); + 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' + ); }); 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).add({m: 25}).calendar(), 'gaur 12:25etan', 'now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), '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(), 'gaur 11:00etan', 'now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'atzo 12:00etan', 'yesterday 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(), + 'Täna, 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Täna, 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Homme, 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Täna, 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Eile, 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 LT[etan]'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Järgmine] 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('[aurreko] dddd LT[etan]'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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]'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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]'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Eelmine] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 nädal tagasi'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '1 nädala pärast' + ); - 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 nädalat tagasi'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -20313,27 +34828,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -20343,8 +34863,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -20357,7 +34879,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -20366,16 +34891,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -20383,7 +34914,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -20391,12 +34924,21 @@ 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'); + 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' + ); } }); @@ -20404,12 +34946,27 @@ 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'); + 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' + ); } }); @@ -20418,7 +34975,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -20428,24 +34988,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -20464,19 +35028,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -20491,7 +35075,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -20501,7 +35091,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -20514,7 +35111,11 @@ 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'); + 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'); @@ -20529,96 +35130,152 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('fa'); + localeModule('eu'); test('parse', function (assert) { - var tests = 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), i; + 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( + '_' + ), + 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()); + 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++) { - equalTest(tests[i], 'MMM', i); - equalTest(tests[i], '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][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', 'یک\u200cشنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر'], - ['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شنبه، ۱۴ فوریه ۲۰۱۰ ۱۵:۲۵'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'igandea, otsaila 14. 2010, 3:25:50 pm', + ], + ['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; @@ -20628,162 +35285,373 @@ }); 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('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'یک\u200cشنبه یک\u200cشنبه ی_دوشنبه دوشنبه د_سه\u200cشنبه سه\u200cشنبه س_چهارشنبه چهارشنبه چ_پنج\u200cشنبه پنج\u200cشنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split('_'), i; + var expected = 'igandea ig. ig_astelehena al. al_asteartea ar. ar_asteazkena az. az_osteguna og. og_ostirala ol. ol_larunbata lr. lr'.split( + '_' + ), + i; 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 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), 'چند ثانیه', '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'); + 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' + ); }); 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(), 'چند ثانیه پیش', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'duela segundo batzuk', + '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'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'segundo batzuk barru', + 'in seconds' + ); + 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(), 'امروز ساعت ۱۲:۰۰', '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'); - 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'); + assert.equal( + moment(a).calendar(), + 'gaur 12:00etan', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'gaur 12:25etan', + 'now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + '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(), + 'gaur 11:00etan', + 'now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'atzo 12:00etan', + '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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd LT[etan]'), + '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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[aurreko] dddd LT[etan]'), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '۲ ۰۲ ۲م', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '۳ ۰۳ ۳م', 'Jan 14 2012 should be week 3'); + 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')) : @@ -20798,27 +35666,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -20828,8 +35701,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -20842,7 +35717,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -20851,16 +35729,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -20868,7 +35752,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -20876,12 +35762,21 @@ 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'); + 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' + ); } }); @@ -20889,12 +35784,27 @@ 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'); + 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' + ); } }); @@ -20903,7 +35813,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -20913,24 +35826,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -20949,19 +35866,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -20976,7 +35913,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -20986,7 +35929,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -20999,7 +35949,11 @@ 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'); + 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'); @@ -21014,103 +35968,153 @@ }); 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'); - }); - + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + 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('_'), i; + var tests = 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + 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) + ); } + 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], '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); } }); test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'یک\u200cشنبه، فوریه ۱۴م ۲۰۱۰، ۳:۲۵:۵۰ بعد از ظهر', + ], + ['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; @@ -21120,163 +36124,388 @@ }); 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('_'), i; + var expected = 'ژانویه ژانویه_فوریه فوریه_مارس مارس_آوریل آوریل_مه مه_ژوئن ژوئن_ژوئیه ژوئیه_اوت اوت_سپتامبر سپتامبر_اکتبر اکتبر_نوامبر نوامبر_دسامبر دسامبر'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + var expected = 'یک\u200cشنبه یک\u200cشنبه ی_دوشنبه دوشنبه د_سه\u200cشنبه سه\u200cشنبه س_چهارشنبه چهارشنبه چ_پنج\u200cشنبه پنج\u200cشنبه پ_جمعه جمعه ج_شنبه شنبه ش'.split( + '_' + ), + i; 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 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), 'muutama sekunti', '44 seconds = 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'); + var start = moment([2007, 1, 28]), + s, + ss; + 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' + ); + + 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), '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'); + assert.equal( + moment().fromNow(), + 'چند ثانیه پیش', + 'now from now should display as in the past' + ); }); 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({ s: 30 }).fromNow(), + 'در چند ثانیه', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'در ۵ روز', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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' + ); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'); + assert.equal( + m.calendar(), + 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'); + assert.equal( + m.calendar(), + 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('[viime] dddd[na] [klo] LT'), 'today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'); + assert.equal( + m.calendar(), + 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'); + assert.equal( + m.calendar(), + 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'), 'yksi viikko sitten'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'yhden viikon päästä'); + 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}); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'kaksi viikkoa sitten'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'kaden viikon päästä'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 13]).format('w ww wo'), + '۲ ۰۲ ۲م', + 'Jan 13 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '۳ ۰۳ ۳م', + 'Jan 14 2012 should be week 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -21291,27 +36520,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -21321,8 +36555,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -21335,7 +36571,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -21344,16 +36583,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -21361,7 +36606,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -21369,12 +36616,21 @@ 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'); + 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' + ); } }); @@ -21382,12 +36638,27 @@ 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'); + 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' + ); } }); @@ -21396,7 +36667,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -21406,24 +36680,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -21442,19 +36720,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -21469,7 +36767,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -21479,7 +36783,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -21492,7 +36803,11 @@ 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'); + 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'); @@ -21507,65 +36822,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('fo'); + localeModule('fi'); 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('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -21576,34 +36930,44 @@ 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 [tann] Do MMMM YYYY, h:mm:ss a', 'sunnudagur tann 14. februar 2010, 3:25:50 pm'], - ['ddd hA', 'sun 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. 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'], - ['[tann] DDDo [dagin á árinum]', 'tann 45. dagin á árinum'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'sunnuntai, helmikuu 14. 2010, 3:25:50 pm', + ], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -21613,164 +36977,386 @@ }); 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 = '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; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + var expected = 'sunnuntai su su_maanantai ma ma_tiistai ti ti_keskiviikko ke ke_torstai to to_perjantai pe pe_lauantai la la'.split( + '_' + ), + i; 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 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), 'fá sekund', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ein minuttur', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ein minuttur', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuttir', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuttir', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ein tími', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ein tími', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tímar', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tímar', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tímar', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein dagur', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein dagur', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein dagur', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein mánaður', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein mánaður', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein mánaður', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánaðir', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánaðir', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánaðir', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein mánaður', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánaðir', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eitt ár', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ár', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eitt ár', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ár', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'muutama sekunti', + '44 seconds = 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('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'um fá sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'fá sekund síðani', 'suffix'); + 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().fromNow(), 'fá sekund síðani', 'now from now should display as in the past'); + assert.equal( + 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(), 'um fá sekund', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'um 5 dagar', 'in 5 days'); + 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' + ); }); - test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Í dag kl. 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Í dag kl. 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Í dag kl. 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Í morgin kl. 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Í dag kl. 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Í gjár kl. 12:00', 'yesterday at the same time'); + 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 [kl.] LT'), 'today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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('dddd [kl.] LT'), 'today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('dddd [kl.] LT'), 'today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [klo] 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('[síðstu] dddd [kl] LT'), 'today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[síðstu] dddd [kl] LT'), 'today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[síðstu] dddd [kl] LT'), 'today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[viime] dddd[na] [klo] 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'), 'yksi viikko sitten'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'yhden viikon päästä'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), 'kaksi viikkoa sitten'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'kaden viikon päästä'); - }); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); + + assert.equal( + weeksAgo.calendar(), + weeksAgo.format('L'), + 'yksi viikko sitten' + ); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'yhden viikon päästä' + ); + + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); + + assert.equal( + weeksAgo.calendar(), + weeksAgo.format('L'), + 'kaksi viikkoa sitten' + ); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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.', '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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -21785,27 +37371,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -21815,8 +37406,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -21829,7 +37422,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -21838,16 +37434,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -21855,7 +37457,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -21863,12 +37467,21 @@ 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'); + 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' + ); } }); @@ -21876,12 +37489,27 @@ 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'); + 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' + ); } }); @@ -21890,7 +37518,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -21900,24 +37531,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -21936,19 +37571,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -21963,7 +37618,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -21973,7 +37634,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -21986,7 +37654,11 @@ 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'); + 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'); @@ -22001,66 +37673,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('fr-ca'); + localeModule('fil'); 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 = '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(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -22073,178 +37782,340 @@ 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', '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 14e 14'], - ['d do dddd ddd dd', '0 0e dimanche dim. di'], - ['DDD DDDo DDDD', '45 45e 045'], - ['w wo ww', '8 8e 08'], - ['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'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Linggo, Pebrero 14 2010, 3:25:50 pm', + ], + ['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 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'], + ['[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'], ], 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, 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'); + 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 = '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 = '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; 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 MMM'), + expected[i], + expected[i] + ); } }); 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 = 'Linggo Lin Li_Lunes Lun Lu_Martes Mar Ma_Miyerkules Miy Mi_Huwebes Huw Hu_Biyernes Biy Bi_Sabado Sab Sab'.split( + '_' + ), + i; 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 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), 'quelques secondes', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'ilang segundo', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'isang minuto', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'isang minuto', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuto', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuto', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'isang oras', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'isang oras', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 oras', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 oras', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 oras', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'isang araw', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'isang araw', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 araw', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'isang araw', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 araw', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 araw', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'isang buwan', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'isang buwan', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'isang buwan', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 buwan', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 buwan', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 buwan', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'isang buwan', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 buwan', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'isang taon', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 taon', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'isang taon', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 taon', + '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), 'sa loob ng ilang segundo', 'prefix'); + assert.equal( + moment(0).from(30000), + 'ilang segundo ang nakalipas', + 'suffix' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dans quelques secondes', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'sa loob ng ilang segundo', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'sa loob ng 5 araw', + 'in 5 days' + ); }); test('same 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'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd’hui à 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd’hui à 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 12:00', 'Tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd’hui à 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 12:00', 'Yesterday at the same time'); + assert.equal( + moment(a).calendar(), + '12:00 ngayong araw', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + '12:25 ngayong araw', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + '13:00 ngayong araw', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Bukas ng 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + '11:00 ngayong araw', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '12:00 kahapon', + 'yesterday at the same time' + ); }); 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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [à] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [à] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('LT [sa susunod na] dddd'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -22252,40 +38123,81 @@ 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 = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('LT [noong nakaraang] dddd'), + 'Today - ' + i + ' days end of day' + ); } }); test('same 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1re', 'Jan 7 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'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2e', 'Jan 14 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -22300,27 +38212,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -22330,8 +38247,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -22344,7 +38263,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -22353,16 +38275,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -22370,7 +38298,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -22378,12 +38308,21 @@ 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'); + 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' + ); } }); @@ -22391,12 +38330,27 @@ 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'); + 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' + ); } }); @@ -22405,7 +38359,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -22415,24 +38372,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -22451,19 +38412,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -22478,7 +38459,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -22488,7 +38475,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -22501,7 +38495,11 @@ 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'); + 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'); @@ -22516,66 +38514,102 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('fr-ch'); + 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(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -22588,219 +38622,429 @@ 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', '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 14e 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'], - ['[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'], - ['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'] + [ + 'dddd [tann] Do MMMM YYYY, h:mm:ss a', + 'sunnudagur tann 14. februar 2010, 3:25:50 pm', + ], + ['ddd hA', 'sun 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. 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'], + ['[tann] DDDo [dagin á árinum]', 'tann 45. dagin á árinum'], + ['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'], ], 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, 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'); + 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 = '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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); 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'), expected[i], expected[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), 'quelques secondes', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'fá sekund', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'ein minuttur', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'ein minuttur', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuttir', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuttir', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'ein tími', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'ein tími', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 tímar', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 tímar', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 tímar', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'ein dagur', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'ein dagur', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dagar', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'ein dagur', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dagar', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dagar', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'ein mánaður', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'ein mánaður', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'ein mánaður', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mánaðir', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mánaðir', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mánaðir', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'ein mánaður', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mánaðir', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'eitt ár', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 ár', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'eitt ár', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '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', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'um fá sekund', + 'in a few seconds' + ); + 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'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd’hui à 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd’hui à 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 12:00', 'Tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd’hui à 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 12:00', 'Yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Í dag kl. 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Í dag kl. 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Í dag kl. 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Í morgin kl. 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Í dag kl. 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Í 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'); + assert.equal( + m.calendar(), + 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'); + assert.equal( + m.calendar(), + 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.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), 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('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[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('[síðstu] dddd [kl] LT'), + 'today - ' + i + ' days end of day' + ); } }); - test('same all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); + 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'); + assert.equal( + weeksAgo.calendar(), + weeksAgo.format('L'), + 'yksi viikko sitten' + ); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'yhden viikon päästä' + ); - 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + assert.equal( + weeksAgo.calendar(), + weeksAgo.format('L'), + 'kaksi viikkoa sitten' + ); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'kaden viikon päästä' + ); }); 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1re', 'Jan 2 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2e', 'Jan 9 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -22815,27 +39059,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -22845,8 +39094,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -22859,7 +39110,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -22868,16 +39122,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -22885,7 +39145,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -22893,12 +39155,21 @@ 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'); + 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' + ); } }); @@ -22906,12 +39177,27 @@ 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'); + 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' + ); } }); @@ -22920,7 +39206,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -22930,24 +39219,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -22966,19 +39259,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -22993,7 +39306,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -23003,7 +39322,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -23016,7 +39342,11 @@ 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'); + 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'); @@ -23031,66 +39361,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('fr'); + localeModule('fr-ca'); 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('_'); + 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( + '_' + ); function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -23103,35 +39470,45 @@ 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', 'dimanche, février 14 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 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'], - ['[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 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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + '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 14e 14'], + ['d do dddd ddd dd', '0 0e dimanche dim. di'], + ['DDD DDDo DDDD', '45 45e 045'], + ['w wo ww', '8 8e 08'], + ['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'], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -23142,139 +39519,303 @@ }); 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'), '2', '2'); - - 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'); + 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, 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 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('_'); + 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( + '_' + ); 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'); + expected = 'dimanche dim. di_lundi lun. lu_mardi mar. ma_mercredi mer. me_jeudi jeu. je_vendredi ven. ve_samedi sam. sa'.split( + '_' + ); 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 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), 'quelques secondes', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'une minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'une minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'une heure', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'une heure', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 heures', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 heures', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 heures', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un jour', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un jour', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 jours', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un jour', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 jours', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 jours', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mois', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mois', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mois', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mois', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mois', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mois', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mois', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mois', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ans', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ans', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'quelques secondes', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'une minute', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'une minute', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutes', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'une heure', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'une heure', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 heures', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 heures', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 heures', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'un jour', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'un jour', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 jours', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'un jour', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 jours', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 jours', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'un mois', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'un mois', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'un mois', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mois', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mois', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mois', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'un mois', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mois', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un an', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 ans', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un an', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 ans', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dans quelques secondes', 'prefix'); + 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(), 'dans quelques secondes', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'dans 5 jours', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'dans quelques secondes', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'dans 5 jours', 'in 5 days'); }); test('same 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'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Aujourd’hui à 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Aujourd’hui à 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Demain à 12:00', 'Tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Aujourd’hui à 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hier à 12:00', 'Yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Aujourd’hui à 12:00', + 'Today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Aujourd’hui à 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Aujourd’hui à 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Demain à 12:00', + 'Tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Aujourd’hui à 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Hier à 12:00', + 'Yesterday at the same time' + ); }); 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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [à] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -23282,40 +39823,81 @@ 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 = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('dddd [dernier à] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('dddd [dernier à] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [dernier à] LT'), + 'Today - ' + i + ' days end of day' + ); } }); test('same 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1re', 'Jan 2 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2e', 'Jan 9 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'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '1 01 1re', + 'Jan 1 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 7]).format('w ww wo'), + '1 01 1re', + 'Jan 7 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' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '2 02 2e', + 'Jan 14 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -23330,27 +39912,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -23360,8 +39947,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -23374,7 +39963,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -23383,16 +39975,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -23400,7 +39998,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -23408,12 +40008,21 @@ 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'); + 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' + ); } }); @@ -23421,12 +40030,27 @@ 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'); + 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' + ); } }); @@ -23435,7 +40059,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -23445,24 +40072,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -23481,19 +40112,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -23508,7 +40159,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -23518,7 +40175,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -23531,7 +40195,11 @@ 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'); + 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'); @@ -23546,65 +40214,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('fy'); + localeModule('fr-ch'); 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('_'), i; + 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( + '_' + ); + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -23615,204 +40323,434 @@ 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', 'snein, febrewaris 14de 2010, 15:25:50'], - ['ddd, HH', 'si., 15'], - ['M Mo MM MMMM MMM', '2 2de 02 febrewaris feb.'], - ['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'], - ['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'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + '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 14e 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'], + ['[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'], + ['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'), '2e', '2e'); - 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('_'), i; + 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( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + 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( + '_' + ); + 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 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), 'in pear sekonden', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ien minút', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ien minút', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ien oere', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ien oere', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 oeren', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 oeren', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 oeren', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ien dei', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ien dei', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ien dei', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ien moanne', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ien moanne', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ien moanne', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 moannen', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 moannen', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 moannen', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ien moanne', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 moannen', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ien jier', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jierren', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ien jier', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jierren', '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'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'quelques secondes', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'une minute', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'une minute', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutes', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'une heure', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'une heure', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 heures', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 heures', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 heures', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'un jour', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'un jour', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 jours', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'un jour', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 jours', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 jours', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'un mois', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'un mois', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'un mois', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mois', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mois', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mois', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'un mois', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mois', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un an', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 ans', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un an', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 ans', + '5 years = 5 years' + ); }); - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'in pear sekonden lyn', 'now from now should display as in the past'); + 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'); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'oer in pear sekonden', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'oer 5 dagen', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'dans quelques secondes', + 'in a few seconds' + ); + 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'); - assert.equal(moment(a).add({m: 25}).calendar(), 'hjoed om 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'hjoed om 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'moarn om 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'hjoed om 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'juster om 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Aujourd’hui à 12:00', + 'Today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Aujourd’hui à 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Aujourd’hui à 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Demain à 12:00', + 'Tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Aujourd’hui à 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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'), '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'), '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'), 'Today - ' + i + ' days end of day'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('dddd [dernier à] 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' + ); } }); - 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'); + test('same all else', function (assert) { + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52e', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1re', + 'Jan 2 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' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2e', + 'Jan 9 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -23827,27 +40765,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -23857,8 +40800,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -23871,7 +40816,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -23880,16 +40828,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -23897,7 +40851,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -23905,12 +40861,21 @@ 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'); + 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' + ); } }); @@ -23918,12 +40883,27 @@ 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'); + 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' + ); } }); @@ -23932,7 +40912,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -23942,24 +40925,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -23978,19 +40965,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -24005,7 +41012,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -24015,7 +41028,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -24028,7 +41048,11 @@ 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'); + 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'); @@ -24043,281 +41067,543 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ga'); - - var months = [ - 'Eanáir,Eaná', - 'Feabhra,Feab', - 'Márta,Márt', - 'Aibreán,Aibr', - 'Bealtaine,Beal', - 'Méitheamh,Méit', - 'Iúil,Iúil', - 'Lúnasa,Lúna', - 'Meán Fómhair,Meán', - 'Deaireadh Fómhair,Deai', - 'Samhain,Samh', - 'Nollaig,Noll' - ]; + localeModule('fr'); test('parse', function (assert) { - function equalTest(monthName, monthFormat, monthNum) { - assert.equal(moment(monthName, monthFormat).month(), monthNum, monthName + ' should be month ' + (monthNum + 1)); + 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( + '_' + ); + + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } - for (var i = 0; i < 12; i++) { - var testMonth = months[i].split(','); - 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); + 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', 'Dé Domhnaigh, Feabhra 14mh 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2na 02 Feabhra Feab'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14mh 14'], - ['d do dddd ddd dd', '0 0mh Dé Domhnaigh Dom Do'], - ['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'], - ['[an] DDDo [latha den bhliadhna]', 'an 45mh latha den bhliadhna'], - ['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 Feab 2010'], - ['lll', '14 Feab 2010 15:25'], - ['llll', 'Dom, 14 Feab 2010 15:25'] - ], - b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), - i; + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'dimanche, février 14 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 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'], + ['[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 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'), '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([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'), '2', '2'); + + 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 = months; - for (var i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM,MMM'), expected[i], expected[i]); + 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( + '_' + ); + + 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 = ['Dé Domhnaigh Dom Do', 'Dé Luain Lua Lu', 'Dé Máirt Mái Má', 'Dé Céadaoin Céa Ce', 'Déardaoin Déa Dé', 'Dé hAoine hAo hA', 'Dé Satharn Sat Sa']; - for (var i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + 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( + '_' + ); + + 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), 'cúpla soicind', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'nóiméad', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'nóiméad', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 nóiméad', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 nóiméad', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uair an chloig', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uair an chloig', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uair an chloig', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 uair an chloig', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 uair an chloig', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'lá', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'lá', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 lá', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'lá', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 lá', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 lá', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mí', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mí', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mí', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mí', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mí', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mí', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mí', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mí', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'bliain', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 bliain', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bliain', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 bliain', '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( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'quelques secondes', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'une minute', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'une minute', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutes', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutes', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'une heure', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'une heure', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 heures', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 heures', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 heures', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'un jour', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'un jour', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 jours', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'un jour', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 jours', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 jours', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'un mois', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'un mois', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'un mois', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mois', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mois', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mois', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'un mois', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mois', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un an', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 ans', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un an', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 ans', + '5 years = 5 years' + ); }); - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'cúpla soicind ó shin', 'now from now should display as in the past'); + 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'); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'i cúpla soicind', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'i 5 lá', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'dans quelques secondes', + 'in a few seconds' + ); + 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(), 'Inniu ag 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Inniu ag 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Inniu ag 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Amárach ag 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Inniu ag 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Inné aig 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Aujourd’hui à 12:00', + 'Today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Aujourd’hui à 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Aujourd’hui à 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Demain à 12:00', + 'Tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Aujourd’hui à 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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 [ag] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [ag] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [ag] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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('dddd [seo caite] [ag] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('dddd [seo caite] [ag] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('dddd [seo caite] [ag] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [dernier à] LT'), + 'Today - ' + i + ' days end of day' + ); } }); - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); + test('same 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'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1d', 'Eaná 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2na', 'Eaná 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'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52e', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1re', + 'Jan 2 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' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2e', + 'Jan 9 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -24332,27 +41618,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -24362,8 +41653,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -24376,7 +41669,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -24385,16 +41681,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -24402,7 +41704,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -24410,12 +41714,21 @@ 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'); + 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' + ); } }); @@ -24423,12 +41736,27 @@ 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'); + 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' + ); } }); @@ -24437,7 +41765,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -24447,24 +41778,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -24483,19 +41818,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -24510,7 +41865,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -24520,7 +41881,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -24533,7 +41901,11 @@ 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'); + 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'); @@ -24548,281 +41920,544 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - 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' - ]; + localeModule('fy'); test('parse', function (assert) { - function equalTest(monthName, monthFormat, monthNum) { - assert.equal(moment(monthName, monthFormat).month(), monthNum, monthName + ' should be month ' + (monthNum + 1)); + 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(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } - for (var i = 0; i < 12; i++) { - var testMonth = months[i].split(','); - 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); + 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); + + // 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', 'Didòmhnaich, An Gearran 14mh 2010, 3:25:50 pm'], - ['ddd, hA', 'Did, 3PM'], - ['M Mo MM MMMM MMM', '2 2na 02 An Gearran Gear'], - ['YYYY YY', '2010 10'], - ['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'], - ['[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'], - ['l', '14/2/2010'], - ['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; + [ + 'dddd, MMMM Do YYYY, HH:mm:ss', + 'snein, febrewaris 14de 2010, 15:25:50', + ], + ['ddd, HH', 'si., 15'], + ['M Mo MM MMMM MMM', '2 2de 02 febrewaris feb.'], + ['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'], + ['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'], + ['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'], + ], + 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'), '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 = months; - for (var 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 = ['Didòmhnaich Did Dò', 'Diluain Dil Lu', 'Dimàirt Dim Mà', 'Diciadain Dic Ci', 'Diardaoin Dia Ar', 'Dihaoine Dih Ha', 'Disathairne Dis Sa']; - for (var 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, 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'); - test('from', function (assert) { + 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 = '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'), + expected[i], + expected[i] + ); + } + }); + + 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( + '_' + ), + 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), 'beagan diogan', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'mionaid', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'mionaid', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 mionaidean', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 mionaidean', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uair', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uair', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uairean', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 uairean', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 uairean', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'latha', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'latha', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 latha', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'latha', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 latha', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 latha', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mìos', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mìos', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mìos', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mìosan', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mìosan', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mìosan', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mìos', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mìosan', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'bliadhna', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 bliadhna', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bliadhna', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 bliadhna', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'in pear sekonden', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'ien minút', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'ien minút', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuten', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuten', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'ien oere', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'ien oere', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 oeren', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 oeren', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 oeren', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'ien dei', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'ien dei', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dagen', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'ien dei', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dagen', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dagen', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'ien moanne', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'ien moanne', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'ien moanne', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 moannen', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 moannen', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 moannen', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'ien moanne', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 moannen', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'ien jier', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 jierren', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ien jier', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 jierren', + '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), '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(), 'bho chionn beagan diogan', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'in pear sekonden lyn', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), '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({ s: 30 }).fromNow(), + 'oer in pear sekonden', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'oer 5 dagen', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'An-diugh aig 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'An-diugh aig 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'An-diugh aig 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'A-màireach aig 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'An-diugh aig 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'An-dè aig 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'hjoed om 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'hjoed om 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'hjoed om 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'moarn om 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'hjoed om 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'juster om 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 [aig] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [aig] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [aig] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [om] 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 [seo chaidh] [aig] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 chaidh] [aig] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 chaidh] [aig] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[ôfrûne] dddd [om] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); + }); + + 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', 'Faoi 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'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1d', 'Faoi 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2na', 'Faoi 15 2012 should be week 2'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52ste', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1ste', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1ste', + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2de', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2de', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -24837,27 +42472,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -24867,8 +42507,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -24881,7 +42523,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -24890,16 +42535,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -24907,7 +42558,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -24915,12 +42568,21 @@ 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'); + 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' + ); } }); @@ -24928,12 +42590,27 @@ 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'); + 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' + ); } }); @@ -24942,7 +42619,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -24952,24 +42632,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -24988,19 +42672,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -25015,7 +42719,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -25025,7 +42735,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -25038,7 +42755,11 @@ 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'); + 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'); @@ -25053,103 +42774,150 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('gl'); + 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', + ]; 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) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + function equalTest(monthName, monthFormat, monthNum) { + assert.equal( + moment(monthName, monthFormat).month(), + monthNum, + monthName + ' should be month ' + (monthNum + 1) + ); } + + 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(','); + + 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); } }); test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'domingo, febreiro 14º 2010, 3:25:50 pm'], - ['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º 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', '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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Dé Domhnaigh, Feabhra 14mh 2010, 3:25:50 pm', + ], + ['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 Dé Domhnaigh Domh Do'], + ['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'], + ['[an] DDDo [latha den bhliadhna]', 'an 45mh latha den bhliadhna'], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -25159,171 +42927,375 @@ }); 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('_'), i; + var expected = months, + i; 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,MMM'), + expected[i], + expected[i] + ); } }); 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('_'), - i; + 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', + ], + i; 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 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), '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 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '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 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '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 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 días', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '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 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '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 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 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 anos', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'cúpla soicind', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'nóiméad', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'nóiméad', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 nóiméad', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 nóiméad', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'uair an chloig', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'uair an chloig', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 uair an chloig', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 uair an chloig', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 uair an chloig', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'lá', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'lá', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 lá', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'lá', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 lá', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 lá', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'mí', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'mí', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'mí', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 míonna', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 míonna', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 míonna', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'mí', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 míonna', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'bliain', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 bliain', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'bliain', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 bliain', + '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), '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(), 'hai uns segundos', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'cúpla soicind ó shin', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'nuns segundos', 'nuns segundos'); - assert.equal(moment().add({d: 5}).fromNow(), 'en 5 días', 'en 5 días'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'i cúpla soicind', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'i 5 lá', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'hoxe ás 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'hoxe ás 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'hoxe ás 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), '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(), 'hoxe ás 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'onte á 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Inniu ag 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Inniu ag 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Inniu ag 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Amárach ag 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Inniu ag 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Inné ag 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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [ag] 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('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[o] dddd [pasado ' + ((m.hours() !== 1) ? 'ás' : 'a') + '] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [seo caite] [ag] 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(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'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52na', + 'Ean 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' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1d', + 'Ean 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2na', + 'Ean 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -25338,27 +43310,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -25368,8 +43345,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -25382,7 +43361,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -25391,16 +43373,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -25408,7 +43396,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -25416,12 +43406,21 @@ 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'); + 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' + ); } }); @@ -25429,12 +43428,27 @@ 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'); + 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' + ); } }); @@ -25443,7 +43457,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -25453,24 +43470,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -25489,19 +43510,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -25516,7 +43557,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -25526,7 +43573,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -25539,7 +43593,11 @@ 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'); + 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'); @@ -25554,242 +43612,465 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('gom-latn'); - - 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('_'); + localeModule('gd'); - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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) { + function equalTest(monthName, monthFormat, monthNum) { + assert.equal( + moment(monthName, monthFormat).month(), + monthNum, + monthName + ' should be month ' + (monthNum + 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++) { - 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(','); + + 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); } }); test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Aitar, Febrer 14er 2010, 3:25:50 donparam'], - ['ddd, hA', 'Ait., 3donparam'], - ['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', '6 6 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'donparam donparam'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Didòmhnaich, An Gearran 14mh 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Did, 3PM'], + ['M Mo MM MMMM MMM', '2 2na 02 An Gearran Gear'], + ['YYYY YY', '2010 10'], + ['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'], + ['[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'], + ['l', '14/2/2010'], + ['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; - 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'); + 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 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('_'); - + var expected = months, + i; 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,MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var i, - expected = 'Aitar Ait. Ai_Somar Som. Sm_Mongllar Mon. Mo_Budvar Bud. Bu_Brestar Bre. Br_Sukrar Suk. Su_Son\'var Son. Sn'.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(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[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), 'thodde secondanim', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eka mintan', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eka mintan', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 mintanim', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 mintanim', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eka voran', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eka voran', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 voranim', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 voranim', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 voranim', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'eka disan', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'eka disan', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 disanim', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'eka disan', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 disanim', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 disanim', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'eka mhoinean', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'eka mhoinean', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'eka mhoinean', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mhoineanim', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mhoineanim', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mhoineanim', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'eka mhoinean', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mhoineanim', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eka vorsan', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 vorsanim', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eka vorsan', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 vorsanim', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'beagan diogan', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'mionaid', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'mionaid', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 mionaidean', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 mionaidean', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'uair', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'uair', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 uairean', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 uairean', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 uairean', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'latha', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'latha', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 latha', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'latha', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 latha', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 latha', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'mìos', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'mìos', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'mìos', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mìosan', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mìosan', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mìosan', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'mìos', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mìosan', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'bliadhna', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 bliadhna', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'bliadhna', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 bliadhna', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'thodde second', 'prefix'); - assert.equal(moment(0).from(30000), 'thodde second adim', '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(), 'thodde second adim', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'bho chionn beagan diogan', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'thodde second', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 dis', 'in 5 days'); - }); - - test('ago', function (assert) { - assert.equal(moment().subtract({h: 3}).fromNow(), '3 voram adim', '3 hours ago'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'ann an beagan diogan', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'ann an 5 latha', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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: 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 sokalli 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'); + assert.equal( + moment(a).calendar(), + 'An-diugh aig 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'An-diugh aig 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'An-diugh aig 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'A-màireach aig 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'An-diugh aig 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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('[Ieta to] dddd[,] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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('[Ieta to] dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Ieta to] dddd[,] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [aig] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -25797,40 +44078,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Fatlo] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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('[Fatlo] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Fatlo] dddd[,] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [seo chaidh] [aig] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting sunday format', function (assert) { - 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, 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'), '2 02 2', 'Jan 15 2012 should be week 2'); + test('weeks year starting sunday formatted', function (assert) { + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52na', + 'Faoi 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' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1d', + 'Faoi 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2na', + 'Faoi 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -25845,27 +44167,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -25875,8 +44202,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -25889,7 +44218,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -25898,16 +44230,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -25915,7 +44253,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -25923,12 +44263,21 @@ 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'); + 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' + ); } }); @@ -25936,12 +44285,27 @@ 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'); + 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' + ); } }); @@ -25950,7 +44314,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -25960,24 +44327,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -25996,19 +44367,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -26023,7 +44414,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -26033,7 +44430,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -26046,7 +44450,11 @@ 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'); + 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'); @@ -26061,65 +44469,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('gu'); + localeModule('gl'); test('parse', function (assert) { - var tests = 'જાન્યુઆરી જાન્યુ._ફેબ્રુઆરી ફેબ્રુ._માર્ચ માર્ચ_એપ્રિલ એપ્રિ._મે મે_જૂન જૂન_જુલાઈ જુલા._ઑગસ્ટ ઑગ._સપ્ટેમ્બર સપ્ટે._ઑક્ટ્બર ઑક્ટ્._નવેમ્બર નવે._ડિસેમ્બર ડિસે..'.split('_'), i; + 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(), i, input + ' should be month ' + (i + 1)); + 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); @@ -26130,33 +44576,44 @@ 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, 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', 'બપોર બપોર'], - ['LTS', 'બપોર ૩:૨૫:૫૦ વાગ્યે'], - ['L', '૧૪/૦૨/૨૦૧૦'], - ['LL', '૧૪ ફેબ્રુઆરી ૨૦૧૦'], - ['LLL', '૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], - ['LLLL', 'રવિવાર, ૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], - ['l', '૧૪/૨/૨૦૧૦'], - ['ll', '૧૪ ફેબ્રુ. ૨૦૧૦'], - ['lll', '૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], - ['llll', 'રવિ, ૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'domingo, febreiro 14º 2010, 3:25:50 pm', + ], + ['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º 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', '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; @@ -26166,179 +44623,395 @@ }); 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('_'), i; + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'રવિવાર રવિ ર_સોમવાર સોમ સો_મંગળવાર મંગળ મં_બુધ્વાર બુધ્ બુ_ગુરુવાર ગુરુ ગુ_શુક્રવાર શુક્ર શુ_શનિવાર શનિ શ'.split('_'), i; + 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'), expected[i], expected[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), 'અમુક પળો', '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'); + + 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 minutos', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '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 horas', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 horas', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '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 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 días', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '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 meses', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 meses', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '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 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 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 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(), 'અમુક પળો પેહલા', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'hai uns segundos', + '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(), + 'nuns segundos', + 'nuns 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(2).minutes(0).seconds(0); + var a = moment().hours(12).minutes(0).seconds(0); - 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 hour'); - 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'); + assert.equal( + moment(a).calendar(), + 'hoxe ás 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'hoxe ás 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'hoxe ás 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + '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(), + 'hoxe ás 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'onte á 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[,] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [' + (m.hours() !== 1 ? 'ás' : 'a') + '] 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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format( + '[o] dddd [pasado ' + (m.hours() !== 1 ? 'ás' : 'a') + '] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - 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('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'), '૧ ૦૧ ૧', '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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2º', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -26353,27 +45026,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -26383,8 +45061,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -26397,7 +45077,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -26406,16 +45089,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -26423,7 +45112,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -26431,12 +45122,21 @@ 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'); + 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' + ); } }); @@ -26444,12 +45144,27 @@ 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'); + 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' + ); } }); @@ -26458,7 +45173,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -26468,24 +45186,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -26504,19 +45226,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -26531,7 +45273,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -26541,7 +45289,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -26554,7 +45309,11 @@ 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'); + 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'); @@ -26569,65 +45328,97 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('he'); + localeModule('gom-deva'); test('parse', function (assert) { - var tests = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split('_'), i; + var i, + tests = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च_एप्रील एप्री._मे मे_जून जून_जुलय जुल._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split( + '_' + ); + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } + for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); @@ -26643,159 +45434,422 @@ test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'ראשון, פברואר 14 2010, 3:25:50 אחה"צ'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'आयतार, फेब्रुवारीच्या 14वेर 2010, 3:25:50 दनपारां', + ], + ['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', '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 वाजतां'], ], 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 expected = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split('_'), i; + var i, + expected = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च_एप्रील एप्री._मे मे_जून जून_जुलय जुल._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split('|'), i; + var i, + expected = 'आयतार आयत. आ_सोमार सोम. सो_मंगळार मंगळ. मं_बुधवार बुध. बु_बिरेस्तार ब्रेस्त. ब्रे_सुक्रार सुक्र. सु_शेनवार शेन. शे'.split( + '_' + ); + 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 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), 'מספר שניות', '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'); + + 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), + '2 वरां', + '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), + '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 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), + '2 म्हयने', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 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'); + 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 ימים', 'in 5 days'); + 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' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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(), + 'आयज दनपारां 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); + 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, 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'), + '2 02 2', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -26810,27 +45864,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -26840,8 +45899,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -26854,7 +45915,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -26863,16 +45927,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -26880,7 +45950,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -26888,12 +45960,21 @@ 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'); + 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' + ); } }); @@ -26901,12 +45982,27 @@ 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'); + 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' + ); } }); @@ -26915,7 +46011,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -26925,24 +46024,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -26961,19 +46064,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -26988,7 +46111,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -26998,7 +46127,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -27011,7 +46147,11 @@ 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'); + 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'); @@ -27026,65 +46166,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('hi'); + localeModule('gom-latn'); test('parse', function (assert) { - var tests = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split('_'), i; + 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( + '_' + ); + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -27095,158 +46274,352 @@ 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, 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', 'दोपहर दोपहर'], - ['LTS', 'दोपहर ३:२५:५० बजे'], - ['L', '१४/०२/२०१०'], - ['LL', '१४ फ़रवरी २०१०'], - ['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], - ['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], - ['l', '१४/२/२०१०'], - ['ll', '१४ फ़र. २०१०'], - ['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'], - ['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Aitar, Febrerachea 14er 2010, 3:25:50 donparam', + ], + ['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', '6 6 06'], + ['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('_'), i; + 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( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split('_'), i; + 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( + '_' + ); + 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 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), 'कुछ ही क्षण', '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'); + + 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(), 'कुछ ही क्षण पहले', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'thodde sekond adim', + '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(), + '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' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); - }); - - test('calendar next week', function (assert) { - var i, m; + 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: 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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Fuddlo] dddd[,] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -27254,56 +46627,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[पिछले] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Fattlo] 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(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'); - }); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - 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'); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - 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'); + test('weeks year starting sunday format', function (assert) { + 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, 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'), + '2 02 2', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -27318,27 +46716,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -27348,8 +46751,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -27362,7 +46767,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -27371,16 +46779,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -27388,7 +46802,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -27396,12 +46812,21 @@ 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'); + 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' + ); } }); @@ -27409,12 +46834,27 @@ 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'); + 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' + ); } }); @@ -27423,7 +46863,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -27433,24 +46876,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -27469,19 +46916,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -27496,7 +46963,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -27506,7 +46979,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -27519,7 +46999,11 @@ 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'); + 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'); @@ -27534,65 +47018,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('hr'); + localeModule('gu'); 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('_'), i; + var tests = 'જાન્યુઆરી જાન્યુ._ફેબ્રુઆરી ફેબ્રુ._માર્ચ માર્ચ_એપ્રિલ એપ્રિ._મે મે_જૂન જૂન_જુલાઈ જુલા._ઑગસ્ટ ઑગ._સપ્ટેમ્બર સપ્ટે._ઑક્ટ્બર ઑક્ટ્._નવેમ્બર નવે._ડિસેમ્બર ડિસે..'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -27603,34 +47125,46 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); 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][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][0].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[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'], - ['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ča 2010'], - ['LLL', '14. veljača 2010 15:25'], - ['LLLL', 'nedjelja, 14. veljača 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. velj. 2010'], - ['lll', '14. velj. 2010 15:25'], - ['llll', 'ned., 14. velj. 2010 15:25'] + [ + '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', 'બપોર બપોર'], + ['LTS', 'બપોર ૩:૨૫:૫૦ વાગ્યે'], + ['L', '૧૪/૦૨/૨૦૧૦'], + ['LL', '૧૪ ફેબ્રુઆરી ૨૦૧૦'], + ['LLL', '૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['LLLL', 'રવિવાર, ૧૪ ફેબ્રુઆરી ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['l', '૧૪/૨/૨૦૧૦'], + ['ll', '૧૪ ફેબ્રુ. ૨૦૧૦'], + ['lll', '૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], + ['llll', 'રવિ, ૧૪ ફેબ્રુ. ૨૦૧૦, બપોર ૩:૨૫ વાગ્યે'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -27640,195 +47174,414 @@ }); 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('_'), i; + var expected = 'જાન્યુઆરી જાન્યુ._ફેબ્રુઆરી ફેબ્રુ._માર્ચ માર્ચ_એપ્રિલ એપ્રિ._મે મે_જૂન જૂન_જુલાઈ જુલા._ઑગસ્ટ ઑગ._સપ્ટેમ્બર સપ્ટે._ઑક્ટ્બર ઑક્ટ્._નવેમ્બર નવે._ડિસેમ્બર ડિસે.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[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('_'), i; + var expected = 'રવિવાર રવિ ર_સોમવાર સોમ સો_મંગળવાર મંગળ મં_બુધ્વાર બુધ્ બુ_ગુરુવાર ગુરુ ગુ_શુક્રવાર શુક્ર શુ_શનિવાર શનિ શ'.split( + '_' + ), + i; 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 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), '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'); + 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), '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'); + assert.equal( + moment().fromNow(), + 'અમુક પળો પેહલા', + 'now from now should display as in the past' + ); }); 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({ s: 30 }).fromNow(), + 'અમુક પળો મા', + 'અમુક પળો મા' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '૫ દિવસ મા', '૫ દિવસ મા'); }); test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); + var a = moment().hours(2).minutes(0).seconds(0); - 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'); - 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'); + 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 hour' + ); + 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' + ); }); 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)), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd[,] 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'; - } - } - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - 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' + ); + }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + 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([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'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -27843,27 +47596,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -27873,8 +47631,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -27887,7 +47647,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -27896,16 +47659,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -27913,7 +47682,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -27921,12 +47692,21 @@ 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'); + 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' + ); } }); @@ -27934,12 +47714,27 @@ 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'); + 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' + ); } }); @@ -27948,7 +47743,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -27958,24 +47756,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -27994,19 +47796,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -28021,7 +47843,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -28031,7 +47859,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -28044,7 +47879,11 @@ 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'); + 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'); @@ -28059,66 +47898,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('hu'); + localeModule('he'); 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('_'), + var tests = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split( + '_' + ), i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -28129,32 +48005,44 @@ 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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'ראשון, פברואר 14 2010, 3:25:50 אחה"צ', + ], + ['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; @@ -28163,178 +48051,347 @@ } }); - 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('_'), + var expected = 'ינואר ינו׳_פברואר פבר׳_מרץ מרץ_אפריל אפר׳_מאי מאי_יוני יוני_יולי יולי_אוגוסט אוג׳_ספטמבר ספט׳_אוקטובר אוק׳_נובמבר נוב׳_דצמבר דצמ׳'.split( + '_' + ), i; 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 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('_'), + var expected = 'ראשון א׳ א|שני ב׳ ב|שלישי ג׳ ג|רביעי ד׳ ד|חמישי ה׳ ה|שישי ו׳ ו|שבת ש׳ ש'.split( + '|' + ), i; for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd'), expected[i], expected[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), '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'); + 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'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'néhány másodperce', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'לפני מספר שניות', + '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'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'בעוד מספר שניות', + 'in a few seconds' + ); + 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(), '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'); + 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' + ); }); 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; 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [בשעה] LT'), + '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'); + assert.equal( + m.calendar(), + 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('[' + days[m.day()] + '] LT[-kor]'), 'today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [בשעה] LT'), + '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; 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 = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[ביום] dddd [האחרון בשעה] LT'), + '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'); + assert.equal( + m.calendar(), + 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('[múlt ' + days[m.day()] + '] LT[-kor]'), 'today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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'), 'egy héte'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'egy hét múlva'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -28349,27 +48406,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -28379,8 +48441,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -28393,7 +48457,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -28402,16 +48469,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -28419,7 +48492,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -28427,12 +48502,21 @@ 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'); + 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' + ); } }); @@ -28440,12 +48524,27 @@ 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'); + 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' + ); } }); @@ -28454,7 +48553,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -28464,24 +48566,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -28500,19 +48606,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -28527,7 +48653,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -28537,7 +48669,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -28550,7 +48689,11 @@ 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'); + 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'); @@ -28565,65 +48708,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('hy-am'); + localeModule('hi'); test('parse', function (assert) { - var tests = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split('_'), i; + var tests = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -28634,38 +48815,43 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - test('parse exceptional case', function (assert) { - assert.equal(moment('11 մայիսի 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989'); + 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, HH:mm:ss', 'կիրակի, 14 փետրվարի 2010, 15:25:50'], - ['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'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'ցերեկվա ցերեկվա'], - ['[տարվա] 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'] + [ + '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', 'दोपहर दोपहर'], + ['LTS', 'दोपहर ३:२५:५० बजे'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फ़रवरी २०१०'], + ['LLL', '१४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], + ['LLLL', 'रविवार, १४ फ़रवरी २०१०, दोपहर ३:२५ बजे'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फ़र. २०१०'], + ['lll', '१४ फ़र. २०१०, दोपहर ३:२५ बजे'], + ['llll', 'रवि, १४ फ़र. २०१०, दोपहर ३:२५ बजे'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -28674,229 +48860,415 @@ } }); - 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'), '१', '१'); + 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 = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split('_'), i; + var expected = 'जनवरी जन._फ़रवरी फ़र._मार्च मार्च_अप्रैल अप्रै._मई मई_जून जून_जुलाई जुल._अगस्त अग._सितम्बर सित._अक्टूबर अक्टू._नवम्बर नव._दिसम्बर दिस.'.split( + '_' + ), + i; for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - 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 short case', function (assert) { - var monthsShort = { - 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); - assert.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.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 month short case with escaped symbols', function (assert) { - var monthsShort = { - 'nominative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), - 'accusative': 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); - assert.equal(moment([2013, i, 1]).format('[]D[] []MMM[]'), '1 ' + monthsShort.accusative[i] + '', '1 ' + monthsShort.accusative[i] + ''); - assert.equal(moment([2013, i, 1]).format('D[-ին օրը] MMM'), '1-ին օրը ' + monthsShort.accusative[i], '1-ին օրը ' + monthsShort.accusative[i]); - assert.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'կիրակի կրկ կրկ_երկուշաբթի երկ երկ_երեքշաբթի երք երք_չորեքշաբթի չրք չրք_հինգշաբթի հնգ հնգ_ուրբաթ ուրբ ուրբ_շաբաթ շբթ շբթ'.split('_'), i; + var expected = 'रविवार रवि र_सोमवार सोम सो_मंगलवार मंगल मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split( + '_' + ), + i; 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 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), 'մի քանի վայրկյան', '44 seconds = 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), '2 ժամ', '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), '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 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 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 ամիս', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + 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(), 'մի քանի վայրկյան հետո', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 օր հետո', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'कुछ ही क्षण में', + 'कुछ ही क्षण में' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '५ दिन में', '५ दिन में'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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' + ); }); 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)), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd[,] LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { var i, m; - function makeFormat(d) { - return '[անցած] dddd [օրը ժամը] LT'; - } - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - 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' + ); + }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + 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([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'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -28911,27 +49283,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -28941,8 +49318,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -28955,7 +49334,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -28964,16 +49346,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -28981,7 +49369,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -28989,12 +49379,21 @@ 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'); + 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' + ); } }); @@ -29002,12 +49401,27 @@ 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'); + 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' + ); } }); @@ -29016,7 +49430,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -29026,24 +49443,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -29062,19 +49483,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -29089,7 +49530,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -29099,7 +49546,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -29112,7 +49566,11 @@ 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'); + 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'); @@ -29127,65 +49585,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('id'); + localeModule('hr'); test('parse', function (assert) { - var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Agt_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; + 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( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -29196,162 +49692,454 @@ 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 sore'], - ['ddd, hA', 'Min, 3sore'], - ['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', 'sore sore'], - ['[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++) { + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'nedjelja, 14. veljače 2010, 3:25:50 pm', + ], + ['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'], + ], + 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 expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Agt_September Sep_Oktober Okt_November Nov_Desember Des'.split('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Minggu Min Mg_Senin Sen Sn_Selasa Sel Sl_Rabu Rab Rb_Kamis Kam Km_Jumat Jum Jm_Sabtu Sab Sb'.split('_'), i; + var expected = '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 dd'), expected[i], expected[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), 'beberapa detik', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'semenit', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'semenit', '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), 'sejam', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '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), 'sehari', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 years = 5 years'); + 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), 'dalam beberapa detik', 'prefix'); - assert.equal(moment(0).from(30000), 'beberapa detik yang lalu', '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(), 'beberapa detik yang lalu', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'prije par sekundi', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa detik', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'in 5 days'); + 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'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Hari ini pukul 12.00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 12.25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 13.00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Besok pukul 12.00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 11.00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kemarin pukul 12.00', 'yesterday at the same time'); + 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' + ); + 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('dddd [pukul] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [pukul] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [pukul] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days end of day' + ); } }); 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('dddd [lalu pukul] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 [lalu pukul] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [lalu pukul] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); + 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')) : @@ -29366,27 +50154,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -29396,8 +50189,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -29410,7 +50205,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -29419,16 +50217,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -29436,7 +50240,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -29444,12 +50250,21 @@ 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'); + 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' + ); } }); @@ -29457,12 +50272,27 @@ 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'); + 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' + ); } }); @@ -29471,7 +50301,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -29481,24 +50314,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -29517,19 +50354,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -29544,7 +50401,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -29554,7 +50417,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -29567,7 +50437,11 @@ 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'); + 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'); @@ -29582,65 +50456,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('is'); + localeModule('hu'); test('parse', function (assert) { - var tests = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split('_'), i; + 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)); + 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); @@ -29651,34 +50564,42 @@ 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, Do MMMM YYYY, h:mm:ss a', 'sunnudagur, 14. febrúar 2010, 3:25:50 pm'], - ['ddd, hA', 'sun, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 febrúar feb'], - ['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'], - ['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. febrúar 2010'], - ['LLL', '14. febrúar 2010 kl. 15:25'], - ['LLLL', 'sunnudagur, 14. febrúar 2010 kl. 15:25'], - ['l', '14.2.2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 kl. 15:25'], - ['llll', 'sun, 14. feb 2010 kl. 15:25'] + [ + '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; @@ -29687,6 +50608,18 @@ } }); + 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.'); @@ -29725,132 +50658,349 @@ }); test('format month', function (assert) { - var expected = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split('_'), i; + 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]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'sunnudagur sun Su_mánudagur mán Má_þriðjudagur þri Þr_miðvikudagur mið Mi_fimmtudagur fim Fi_föstudagur fös Fö_laugardagur lau La'.split('_'), i; + 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 dd'), expected[i], expected[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), 'nokkrar sekúndur', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'mínúta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'mínúta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 mínútur', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 mínútur', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 21}), true), '21 mínúta', '21 minutes = 21 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'klukkustund', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'klukkustund', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 klukkustundir', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 klukkustundir', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 klukkustund', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'dagur', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'dagur', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'dagur', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 11}), true), '11 dagar', '11 days = 11 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 21}), true), '21 dagur', '21 days = 21 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mánuður', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mánuður', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mánuður', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánuðir', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánuðir', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánuðir', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mánuður', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánuðir', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ár', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ár', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ár', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ár', '5 years = 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), '21 ár', '21 years = 21 years'); + 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), 'eftir nokkrar sekúndur', 'prefix'); - assert.equal(moment(0).from(30000), 'fyrir nokkrum sekúndum síðan', 'suffix'); - assert.equal(moment().subtract({m: 1}).fromNow(), 'fyrir mínútu síðan', 'a minute ago'); + 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(), 'fyrir nokkrum sekúndum síðan', 'now from now should display as in the past'); + 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(), 'eftir nokkrar sekúndur', 'in a few seconds'); - assert.equal(moment().add({m: 1}).fromNow(), 'eftir mínútu', 'in a minute'); - assert.equal(moment().add({d: 5}).fromNow(), 'eftir 5 daga', 'in 5 days'); + 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(), 'í dag kl. 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'í dag kl. 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'í dag kl. 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'á morgun kl. 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'í dag kl. 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'í gær kl. 12:00', 'yesterday at the same time'); + 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; + 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('dddd [kl.] LT'), 'Today + ' + i + ' days current time'); + 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('dddd [kl.] LT'), 'Today + ' + i + ' days beginning of day'); + 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('dddd [kl.] LT'), 'Today + ' + i + ' days end of day'); + 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; + 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('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days current time'); + 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('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days beginning of day'); + 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('[síðasta] dddd [kl.] LT'), 'Today - ' + i + ' days end of day'); + 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}); + 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'); + 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}); + 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'); + 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([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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -29865,27 +51015,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -29895,8 +51050,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -29909,7 +51066,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -29918,16 +51078,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -29935,7 +51101,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -29943,12 +51111,21 @@ 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'); + 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' + ); } }); @@ -29956,12 +51133,27 @@ 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'); + 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' + ); } }); @@ -29970,7 +51162,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -29980,24 +51175,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -30016,19 +51215,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -30043,7 +51262,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -30053,7 +51278,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -30066,7 +51298,11 @@ 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'); + 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'); @@ -30081,65 +51317,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('it-ch'); + localeModule('hy-am'); test('parse', function (assert) { - var tests = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i; + var tests = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -30150,34 +51424,51 @@ 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 exceptional case', function (assert) { + assert.equal( + moment('11 մայիսի 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), + '11-05-1989' + ); + }); + test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'domenica, febbraio 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 febbraio feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º domenica 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', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 febbraio 2010'], - ['LLL', '14 febbraio 2010 15:25'], - ['LLLL', 'domenica 14 febbraio 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'dom 14 feb 2010 15:25'] + [ + 'dddd, Do MMMM YYYY, HH:mm:ss', + 'կիրակի, 14 փետրվարի 2010, 15:25:50', + ], + ['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'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'ցերեկվա ցերեկվա'], + ['[տարվա] 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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -30186,162 +51477,532 @@ } }); - 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('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' + ); + }); - 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º'); + 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, 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, 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, 31]).format('DDDo'), '31º', '31º'); + 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 = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i; + var expected = 'հունվար հնվ_փետրվար փտր_մարտ մրտ_ապրիլ ապր_մայիս մյս_հունիս հնս_հուլիս հլս_օգոստոս օգս_սեպտեմբեր սպտ_հոկտեմբեր հկտ_նոյեմբեր նմբ_դեկտեմբեր դկտ'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); + } + }); + + 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 short case', function (assert) { + var monthsShort = { + nominative: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split( + '_' + ), + accusative: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split( + '_' + ), + }, + i; + for (i = 0; i < 12; i++) { + assert.equal( + moment([2011, i, 1]).format('D MMM'), + '1 ' + monthsShort.accusative[i], + '1 ' + monthsShort.accusative[i] + ); + assert.equal( + moment([2011, i, 1]).format('MMM'), + monthsShort.nominative[i], + '1 ' + monthsShort.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 month short case with escaped symbols', function (assert) { + var monthsShort = { + nominative: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split( + '_' + ), + accusative: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split( + '_' + ), + }, + i; + for (i = 0; i < 12; i++) { + assert.equal( + moment([2013, i, 1]).format('D[] MMM'), + '1 ' + monthsShort.accusative[i], + '1 ' + monthsShort.accusative[i] + ); + assert.equal( + moment([2013, i, 1]).format('[]D[] []MMM[]'), + '1 ' + monthsShort.accusative[i] + '', + '1 ' + monthsShort.accusative[i] + '' + ); + assert.equal( + moment([2013, i, 1]).format('D[-ին օրը] MMM'), + '1-ին օրը ' + monthsShort.accusative[i], + '1-ին օրը ' + monthsShort.accusative[i] + ); + assert.equal( + moment([2013, i, 1]).format('D, MMM'), + '1, ' + monthsShort.nominative[i], + '1, ' + monthsShort.nominative[i] + ); } }); test('format week', function (assert) { - var expected = 'domenica dom do_lunedì lun lu_martedì mar ma_mercoledì mer me_giovedì gio gi_venerdì ven ve_sabato sab sa'.split('_'), i; + var expected = 'կիրակի կրկ կրկ_երկուշաբթի երկ երկ_երեքշաբթի երք երք_չորեքշաբթի չրք չրք_հինգշաբթի հնգ հնգ_ուրբաթ ուրբ ուրբ_շաբաթ շբթ շբթ'.split( + '_' + ), + i; 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 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), 'alcuni secondi', '44 seconds = 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 minuti', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuti', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'un\'ora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'un\'ora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ore', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ore', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ore', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un giorno', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un giorno', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 giorni', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un giorno', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 giorni', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 giorni', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mese', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mese', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mese', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesi', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesi', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesi', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mese', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesi', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un anno', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anni', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un anno', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anni', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'մի քանի վայրկյան', + '44 seconds = 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), + '2 ժամ', + '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), + '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 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 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 ամիս', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in alcuni secondi', 'prefix'); - assert.equal(moment(0).from(30000), 'alcuni secondi fa', 'suffix'); + 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 alcuni secondi', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'tra 5 giorni', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'մի քանի վայրկյան հետո', + 'in seconds' + ); + 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(), 'Oggi alle 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Oggi alle 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Oggi alle 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Domani alle 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Oggi alle 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ieri alle 12:00', 'yesterday at the same time'); + 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' + ); }); 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 [alle] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat()), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [alle] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [alle] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat()), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { - var i, m, weekday, datestring; + var i, m; + + function makeFormat(d) { + return '[անցած] dddd [օրը ժամը] LT'; + } + for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - // Different date string - weekday = parseInt(m.format('d'), 10); - datestring = (weekday === 0) ? '[la scorsa] dddd [alle] LT' : '[lo scorso] dddd [alle] LT'; - assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat()), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format(makeFormat()), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat()), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); + 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')) : @@ -30356,27 +52017,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -30386,8 +52052,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -30400,7 +52068,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -30409,16 +52080,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -30426,7 +52103,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -30434,12 +52113,21 @@ 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'); + 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' + ); } }); @@ -30447,12 +52135,27 @@ 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'); + 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' + ); } }); @@ -30461,7 +52164,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -30471,24 +52177,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -30507,19 +52217,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -30534,7 +52264,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -30544,7 +52280,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -30557,7 +52300,11 @@ 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'); + 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'); @@ -30572,65 +52319,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('it'); + localeModule('id'); test('parse', function (assert) { - var tests = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i; + var tests = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Agt_September Sep_Oktober Okt_November Nov_Desember Des'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -30641,34 +52426,44 @@ 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', 'domenica, febbraio 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 febbraio feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º domenica 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', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45º day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 febbraio 2010'], - ['LLL', '14 febbraio 2010 15:25'], - ['LLLL', 'domenica 14 febbraio 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'dom 14 feb 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Minggu, Februari 14 2010, 3:25:50 sore', + ], + ['ddd, hA', 'Min, 3sore'], + ['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', 'sore sore'], + ['[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; @@ -30677,162 +52472,337 @@ } }); - 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 = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split('_'), i; + var expected = 'Januari Jan_Februari Feb_Maret Mar_April Apr_Mei Mei_Juni Jun_Juli Jul_Agustus Agt_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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'domenica dom do_lunedì lun lu_martedì mar ma_mercoledì mer me_giovedì gio gi_venerdì ven ve_sabato sab sa'.split('_'), i; + var expected = 'Minggu Min Mg_Senin Sen Sn_Selasa Sel Sl_Rabu Rab Rb_Kamis Kam Km_Jumat Jum Jm_Sabtu Sab Sb'.split( + '_' + ), + i; 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 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), 'alcuni secondi', '44 seconds = 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 minuti', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuti', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'un\'ora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'un\'ora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ore', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ore', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ore', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'un giorno', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'un giorno', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 giorni', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'un giorno', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 giorni', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 giorni', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'un mese', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'un mese', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'un mese', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesi', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesi', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesi', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'un mese', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesi', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un anno', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anni', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un anno', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anni', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'beberapa detik', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'semenit', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'semenit', + '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), + 'sejam', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'sejam', + '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), + 'sehari', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'sehari', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 hari', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'sehari', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 hari', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 hari', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'sebulan', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'sebulan', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'sebulan', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 bulan', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 bulan', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 bulan', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'sebulan', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 bulan', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'setahun', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 tahun', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'setahun', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 tahun', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'in alcuni secondi', 'prefix'); - assert.equal(moment(0).from(30000), 'alcuni secondi fa', 'suffix'); + assert.equal(moment(30000).from(0), 'dalam beberapa detik', 'prefix'); + assert.equal(moment(0).from(30000), 'beberapa detik yang lalu', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'beberapa detik yang lalu', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'in alcuni secondi', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'tra 5 giorni', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'dalam beberapa detik', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'dalam 5 hari', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Oggi alle 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Oggi alle 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Oggi alle 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Domani alle 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Oggi alle 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ieri alle 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Hari ini pukul 12.00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Hari ini pukul 12.25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Hari ini pukul 13.00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Besok pukul 12.00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Hari ini pukul 11.00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Kemarin 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 [alle] LT'), 'Today + ' + i + ' days current time'); + 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 [alle] LT'), 'Today + ' + i + ' days beginning of day'); + 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 [alle] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { - var i, m, weekday, datestring; + var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - // Different date string - weekday = parseInt(m.format('d'), 10); - datestring = (weekday === 0) ? '[la scorsa] dddd [alle] LT' : '[lo scorso] dddd [alle] LT'; - assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(datestring), 'Today - ' + i + ' days end of day'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [lalu pukul] LT'), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('dddd [lalu pukul] LT'), + 'Today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('dddd [lalu 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}); + 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'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); + 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')) : @@ -30847,27 +52817,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -30877,8 +52852,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -30891,7 +52868,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -30900,16 +52880,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -30917,7 +52903,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -30925,12 +52913,21 @@ 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'); + 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' + ); } }); @@ -30938,12 +52935,27 @@ 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'); + 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' + ); } }); @@ -30952,7 +52964,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -30962,24 +52977,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -30998,19 +53017,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -31025,7 +53064,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -31035,7 +53080,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -31048,7 +53100,11 @@ 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'); + 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'); @@ -31063,65 +53119,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ja'); + localeModule('is'); 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 tests = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -31132,34 +53226,44 @@ 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, a h:mm:ss', '日曜日, 二月 14日 2010, 午後 3:25:50'], - ['ddd, Ah', '日, 午後3'], - ['M Mo MM MMMM MMM', '2 2 02 二月 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', '午後 午後'], - ['[the] DDDo [day of the year]', 'the 45日 day of the year'], - ['LTS', '15:25:50'], - ['L', '2010/02/14'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日 15:25'], - ['LLLL', '2010年2月14日 日曜日 15:25'], - ['l', '2010/02/14'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日 15:25'], - ['llll', '2010年2月14日(日) 15:25'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'sunnudagur, 14. febrúar 2010, 3:25:50 pm', + ], + ['ddd, hA', 'sun, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 febrúar feb'], + ['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'], + ['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. febrúar 2010'], + ['LLL', '14. febrúar 2010 kl. 15:25'], + ['LLLL', 'sunnudagur, 14. febrúar 2010 kl. 15:25'], + ['l', '14.2.2010'], + ['ll', '14. feb 2010'], + ['lll', '14. feb 2010 kl. 15:25'], + ['llll', 'sun, 14. feb 2010 kl. 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -31168,148 +53272,409 @@ } }); + 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 = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; + var expected = 'janúar jan_febrúar feb_mars mar_apríl apr_maí maí_júní jún_júlí júl_ágúst ágú_september sep_október okt_nóvember nóv_desember des'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = '日曜日 日 日_月曜日 月 月_火曜日 火 火_水曜日 水 水_木曜日 木 木_金曜日 金 金_土曜日 土 土'.split('_'), i; + var expected = 'sunnudagur sun Su_mánudagur mán Má_þriðjudagur þri Þr_miðvikudagur mið Mi_fimmtudagur fim Fi_föstudagur fös Fö_laugardagur lau La'.split( + '_' + ), + i; 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 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), '数秒', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1分', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1分', '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), '1時間', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1時間', '89 minutes = an hour'); - assert.equal(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), '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), '1日', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1日', '35 hours = a day'); - assert.equal(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), '1日', '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), '1ヶ月', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1ヶ月', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1ヶ月', '43 days = a month'); - assert.equal(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), '2ヶ月', '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ヶ月', '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), '1年', '345 days = a year'); - assert.equal(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), '1年', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5年', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'nokkrar sekúndur', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'mínúta', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'mínúta', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 mínútur', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 mínútur', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 21 }), true), + '21 mínúta', + '21 minutes = 21 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'klukkustund', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'klukkustund', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 klukkustundir', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 klukkustundir', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 klukkustund', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'dagur', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'dagur', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dagar', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'dagur', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dagar', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dagar', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 11 }), true), + '11 dagar', + '11 days = 11 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 21 }), true), + '21 dagur', + '21 days = 21 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'mánuður', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'mánuður', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'mánuður', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mánuðir', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mánuðir', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mánuðir', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'mánuður', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mánuðir', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'ár', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 ár', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ár', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 ár', + '5 years = 5 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 21 }), true), + '21 ár', + '21 years = 21 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), 'eftir nokkrar sekúndur', 'prefix'); + assert.equal( + moment(0).from(30000), + 'fyrir nokkrum sekúndum síðan', + 'suffix' + ); + assert.equal( + moment().subtract({ m: 1 }).fromNow(), + 'fyrir mínútu síðan', + 'a minute ago' + ); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), '数秒前', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'fyrir nokkrum sekúndum síðan', + '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日後', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'eftir nokkrar sekúndur', + 'in a few seconds' + ); + assert.equal( + moment().add({ m: 1 }).fromNow(), + 'eftir mínútu', + 'in a minute' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'eftir 5 daga', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal( + moment(a).calendar(), + 'í dag kl. 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'í dag kl. 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'í dag kl. 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'á morgun kl. 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'í dag kl. 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'í gær kl. 12:00', + 'yesterday at the same time' + ); }); test('calendar next week', function (assert) { var i, m; - var dow = moment().day(); for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - if (dow + i < 7) { - assert.equal(m.calendar(), 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'), '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'); - } else { - assert.equal(m.calendar(), 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'), '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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [kl.] LT'), + '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' + ); } }); test('calendar last week', function (assert) { var i, m; - var dow = moment().day(); + for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - if (dow < i) { - assert.equal(m.calendar(), 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'), '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'); - } else { - assert.equal(m.calendar(), 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'), '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 = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[síðasta] dddd [kl.] LT'), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('[síðasta] dddd [kl.] LT'), + 'Today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[síðasta] dddd [kl.] 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(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'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('parse with japanese parentheses', function (assert) { - assert.ok(moment('2016年5月18日(水)', 'YYYY年M月D日(dd)', true).isValid(), 'parse with japanese parentheses'); + 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' + ); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -31324,27 +53689,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -31354,8 +53724,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -31368,7 +53740,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -31377,16 +53752,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -31394,7 +53775,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -31402,12 +53785,21 @@ 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'); + 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' + ); } }); @@ -31415,12 +53807,27 @@ 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'); + 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' + ); } }); @@ -31429,7 +53836,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -31439,24 +53849,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -31475,19 +53889,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -31502,7 +53936,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -31512,7 +53952,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -31525,7 +53972,11 @@ 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'); + 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'); @@ -31540,64 +53991,94 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('jv'); + localeModule('it-ch'); 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; + var tests = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); @@ -31614,29 +54095,32 @@ 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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'domenica, febbraio 14º 2010, 3:25:50 pm', + ], + ['ddd, hA', 'dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 febbraio feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º domenica 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', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 febbraio 2010'], + ['LLL', '14 febbraio 2010 15:25'], + ['LLLL', 'domenica 14 febbraio 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'dom 14 feb 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -31645,129 +54129,372 @@ } }); + 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 = '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; + var expected = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split( + '_' + ), + i; 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 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; + var expected = 'domenica dom do_lunedì lun lu_martedì mar ma_mercoledì mer me_giovedì gio gi_venerdì ven ve_sabato sab sa'.split( + '_' + ), + i; 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 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'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'alcuni secondi', + '44 seconds = 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 minuti', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuti', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + "un'ora", + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + "un'ora", + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 ore', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 ore', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 ore', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'un giorno', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'un giorno', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 giorni', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'un giorno', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 giorni', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 giorni', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'un mese', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'un mese', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'un mese', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mesi', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mesi', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mesi', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'un mese', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mesi', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un anno', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 anni', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un anno', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 anni', + '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'); + assert.equal(moment(30000).from(0), 'in alcuni secondi', 'prefix'); + assert.equal(moment(0).from(30000), 'alcuni secondi fa', 'suffix'); }); 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({ s: 30 }).fromNow(), + 'in alcuni secondi', + 'in seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'tra 5 giorni', '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'); + assert.equal( + moment(a).calendar(), + 'Oggi alle 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Oggi alle 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Oggi alle 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Domani alle 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Oggi alle 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Ieri alle 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [alle] 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'); + assert.equal( + m.calendar(), + m.format('dddd [alle] 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'); + assert.equal( + m.calendar(), + m.format('dddd [alle] LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { - var i, m; + var i, m, weekday, datestring; 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 = moment().subtract({ d: i }); + // Different date string + weekday = parseInt(m.format('d'), 10); + datestring = + weekday === 0 + ? '[la scorsa] dddd [alle] LT' + : '[lo scorso] dddd [alle] LT'; + assert.equal( + m.calendar(), + m.format(datestring), + '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'); + assert.equal( + m.calendar(), + m.format(datestring), + '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'); + assert.equal( + m.calendar(), + m.format(datestring), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2º', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -31782,27 +54509,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -31812,8 +54544,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -31826,7 +54560,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -31835,16 +54572,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -31852,7 +54595,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -31860,12 +54605,21 @@ 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'); + 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' + ); } }); @@ -31873,12 +54627,27 @@ 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'); + 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' + ); } }); @@ -31887,7 +54656,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -31897,24 +54669,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -31933,19 +54709,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -31960,7 +54756,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -31970,7 +54772,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -31983,7 +54792,11 @@ 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'); + 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'); @@ -31998,66 +54811,101 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ka'); + localeModule('it'); test('parse', function (assert) { - var i, - tests = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split('_'); - + var tests = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -32068,212 +54916,457 @@ 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'], - ['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', '3:25:50 PM'], - ['L', '14/02/2010'], - ['LL', '14 თებერვალს 2010'], - ['LLL', '14 თებერვალს 2010 3:25 PM'], - ['LLLL', 'კვირა, 14 თებერვალს 2010 3:25 PM'], - ['l', '14/2/2010'], - ['ll', '14 თებ 2010'], - ['lll', '14 თებ 2010 3:25 PM'], - ['llll', 'კვი, 14 თებ 2010 3:25 PM'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'domenica, febbraio 14º 2010, 3:25:50 pm', + ], + ['ddd, hA', 'dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 febbraio feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º domenica 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', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45º day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 febbraio 2010'], + ['LLL', '14 febbraio 2010 15:25'], + ['LLLL', 'domenica 14 febbraio 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'dom 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([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 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º', '31º'); }); test('format month', function (assert) { - var i, - expected = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split('_'); - + var expected = 'gennaio gen_febbraio feb_marzo mar_aprile apr_maggio mag_giugno giu_luglio lug_agosto ago_settembre set_ottobre ott_novembre nov_dicembre dic'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var i, - expected = 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split('_'); - + var expected = 'domenica dom do_lunedì lun lu_martedì mar ma_mercoledì mer me_giovedì gio gi_venerdì ven ve_sabato sab sa'.split( + '_' + ), + i; 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 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), 'რამდენიმე წამი', '44 წამი = რამდენიმე წამი'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'წუთი', '45 წამი = წუთი'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'წუთი', '89 წამი = წუთი'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 წუთი', '90 წამი = 2 წუთი'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 წუთი', '44 წამი = 44 წუთი'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'საათი', '45 წამი = საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'საათი', '89 წამი = საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 საათი', '90 წამი = 2 საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 საათი', '5 საათი = 5 საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 საათი', '21 საათი = 21 საათი'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'დღე', '22 საათი = დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'დღე', '35 საათი = დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 დღე', '36 საათი = 2 დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'დღე', '1 დღე = დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 დღე', '5 დღე = 5 დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 დღე', '25 დღე = 25 დღე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'თვე', '26 დღე = თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'თვე', '30 დღე = თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'თვე', '45 დღე = თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 თვე', '46 დღე = 2 თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 თვე', '75 დღე = 2 თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 თვე', '76 დღე = 3 თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'თვე', '1 თვე = თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 თვე', '5 თვე = 5 თვე'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'წელი', '345 დღე = წელი'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 წელი', '548 დღე = 2 წელი'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'წელი', '1 წელი = წელი'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 წელი', '5 წელი = 5 წელი'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'alcuni secondi', + '44 seconds = 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 minuti', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuti', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + "un'ora", + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + "un'ora", + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 ore', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 ore', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 ore', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'un giorno', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'un giorno', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 giorni', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'un giorno', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 giorni', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 giorni', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'un mese', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'un mese', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'un mese', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mesi', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mesi', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mesi', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'un mese', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mesi', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un anno', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 anni', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un anno', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 anni', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'რამდენიმე წამში', 'ში სუფიქსი'); - assert.equal(moment(0).from(30000), 'რამდენიმე წამის წინ', 'წინ სუფიქსი'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'რამდენიმე წამის წინ', 'უნდა აჩვენოს როგორც წარსული'); + assert.equal(moment(30000).from(0), 'in alcuni secondi', 'prefix'); + assert.equal(moment(0).from(30000), 'alcuni secondi fa', 'suffix'); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'რამდენიმე წამში', 'რამდენიმე წამში'); - assert.equal(moment().add({d: 5}).fromNow(), '5 დღეში', '5 დღეში'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'in alcuni secondi', + 'in seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'tra 5 giorni', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'დღეს 12:00 PM-ზე', 'დღეს ამავე დროს'); - assert.equal(moment(a).add({m: 25}).calendar(), 'დღეს 12:25 PM-ზე', 'ახლანდელ დროს დამატებული 25 წუთი'); - assert.equal(moment(a).add({h: 1}).calendar(), 'დღეს 1:00 PM-ზე', 'ახლანდელ დროს დამატებული 1 საათი'); - assert.equal(moment(a).add({d: 1}).calendar(), 'ხვალ 12:00 PM-ზე', 'ხვალ ამავე დროს'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'დღეს 11:00 AM-ზე', 'ახლანდელ დროს გამოკლებული 1 საათი'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'გუშინ 12:00 PM-ზე', 'გუშინ ამავე დროს'); + assert.equal( + moment(a).calendar(), + 'Oggi alle 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Oggi alle 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Oggi alle 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Domani alle 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).add({ d: 1, h: -1 }).calendar(), + 'Domani alle 11:00', + 'tomorrow minus 1 hour' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Oggi alle 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Ieri alle 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 LT[-ზე]'), 'დღეს + ' + i + ' დღე ახლანდელ დროს'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format( + 'dddd [a' + + (m.hours() > 1 ? 'lle ' : m.hours() === 0 ? ' ' : "ll'") + + ']LT' + ), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[შემდეგ] dddd LT[-ზე]'), 'დღეს + ' + i + ' დღე დღის დასაწყისში'); + assert.equal( + m.calendar(), + m.format( + 'dddd [a' + + (m.hours() > 1 ? 'lle ' : m.hours() === 0 ? ' ' : "ll'") + + ']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 + ' დღე დღის დასასრულს'); + assert.equal( + m.calendar(), + m.format( + 'dddd [a' + + (m.hours() > 1 ? 'lle ' : m.hours() === 0 ? ' ' : "ll'") + + ']LT' + ), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { - var i, m; + var i, m, weekday, datestring; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე ახლანდელ დროს'); + m = moment().subtract({ d: i }); + // Different date string + weekday = parseInt(m.format('d'), 10); + datestring = + weekday === 0 + ? '[La scorsa] dddd [a' + + (m.hours() > 1 ? 'lle ' : m.hours() === 0 ? ' ' : "ll'") + + ']LT' + : '[Lo scorso] dddd [a' + + (m.hours() > 1 ? 'lle ' : m.hours() === 0 ? ' ' : "ll'") + + ']LT'; + assert.equal( + m.calendar(), + m.format(datestring), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე დღის დასაწყისში'); + datestring = + weekday === 0 + ? '[La scorsa] dddd [a' + + (m.hours() > 1 ? 'lle ' : m.hours() === 0 ? ' ' : "ll'") + + ']LT' + : '[Lo scorso] dddd [a' + + (m.hours() > 1 ? 'lle ' : m.hours() === 0 ? ' ' : "ll'") + + ']LT'; + assert.equal( + m.calendar(), + m.format(datestring), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[წინა] dddd LT[-ზე]'), 'დღეს - ' + i + ' დღე დღის დასასრულს'); + datestring = + weekday === 0 + ? '[La scorsa] dddd [a' + + (m.hours() > 1 ? 'lle ' : m.hours() === 0 ? ' ' : "ll'") + + ']LT' + : '[Lo scorso] dddd [a' + + (m.hours() > 1 ? 'lle ' : m.hours() === 0 ? ' ' : "ll'") + + ']LT'; + assert.equal( + m.calendar(), + m.format(datestring), + '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 კვირის წინ'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '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}); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 კვირის წინ'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '2 კვირაში'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 მე-2', 'იან 2 2012 უნდა იყოს კვირა 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 მე-2', 'იან 8 2012 უნდა იყოს კვირა 2'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 მე-3', 'იან 9 2012 უნდა იყოს კვირა 3'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2º', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -32288,27 +55381,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -32318,8 +55416,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -32332,7 +55432,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -32341,16 +55444,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -32358,7 +55467,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -32366,12 +55477,21 @@ 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'); + 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' + ); } }); @@ -32379,12 +55499,27 @@ 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'); + 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' + ); } }); @@ -32393,7 +55528,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -32403,24 +55541,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -32439,19 +55581,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -32466,7 +55628,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -32476,7 +55644,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -32489,7 +55664,11 @@ 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'); + 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'); @@ -32504,65 +55683,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('kk'); + localeModule('ja'); test('parse', function (assert) { - var tests = 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split('_'), i; + 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; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -32573,34 +55790,44 @@ 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, Do MMMM YYYY, HH:mm:ss', 'жексенбі, 14-ші ақпан 2010, 15:25:50'], - ['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'] + [ + 'dddd, MMMM Do YYYY, a h:mm:ss', + '日曜日, 2月 14日 2010, 午後 3:25:50', + ], + ['ddd, Ah', '日, 午後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', '午後 午後'], + ['[the] DDDo [day of the year]', 'the 45日 day of the year'], + ['LTS', '15:25:50'], + ['L', '2010/02/14'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日 15:25'], + ['LLLL', '2010年2月14日 日曜日 15:25'], + ['l', '2010/02/14'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日 15:25'], + ['llll', '2010年2月14日(日) 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -32609,164 +55836,521 @@ } }); - 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'); + test('parse era', function (assert) { + // strict + assert.equal(moment('令和2年', 'NNNNy年', true).isValid(), true, '令和2年'); + assert.equal(moment('令和2年', 'NNNNy年', true).year(), 2020, '令和2年'); + assert.equal(moment('令和2年', 'NNNNyo', true).isValid(), true, '令和2年'); + assert.equal(moment('令和2年', 'NNNNyo', true).year(), 2020, '令和2年'); - 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('令和2年', 'Ny年', true).isValid(), false, '令和2年'); + assert.equal(moment('令和2年', 'Ny年', false).isValid(), true, '令和2年'); + assert.equal(moment('㋿2年', 'Ny年', true).isValid(), false, '㋿2年'); + assert.equal(moment('㋿2年', 'Ny年', false).isValid(), true, '㋿2年'); + assert.equal(moment('R2', 'Ny', false).isValid(), true, 'R2'); - 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'); + // abbrv + assert.equal(moment('R2', 'Ny', true).isValid(), true, 'R2'); + assert.equal(moment('R2', 'Ny', true).year(), 2020, 'R2'); + assert.equal(moment('R2', 'NNNNy', true).isValid(), false, 'R2'); + assert.equal(moment('R2', 'NNNNNy', true).isValid(), false, 'R2'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-ші', '31st'); + // narrow + assert.equal(moment('㋿2年', 'Ny年', true).isValid(), false, '㋿2年'); + assert.equal(moment('㋿2年', 'NNNNy年', true).isValid(), false, '㋿2年'); + assert.equal(moment('㋿2年', 'NNNNNy年', true).isValid(), true, '㋿2年'); + assert.equal(moment('㋿2年', 'NNNNNy年', true).year(), 2020, '㋿2年'); + + // ordinal year + assert.equal(moment('令和2年', 'NNNNyo', true).year(), 2020, '平成30年'); + assert.equal(moment('令和元年', 'NNNNyo', true).year(), 2019, '平成元年'); + + // old eras + assert.equal(moment('平成30年', 'NNNNyo', true).year(), 2018, '平成30年'); + assert.equal(moment('平成元年', 'NNNNyo', true).year(), 1989, '平成元年'); + assert.equal(moment('昭和64年', 'NNNNyo', true).year(), 1989, '昭和64年'); + assert.equal(moment('昭和元年', 'NNNNyo', true).year(), 1926, '昭和元年'); + assert.equal(moment('大正元年', 'NNNNyo', true).year(), 1912, '大正元年'); + assert.equal(moment('明治6年', 'NNNNyo', true).year(), 1873, '明治6年'); + }); + + test('format era', function (assert) { + var a = [ + /* First day of Reiwa Era */ + ['+002019-05-01', 'N, NN, NNN', 'R, R, R'], + ['+002019-05-01', 'NNNN', '令和'], + ['+002019-05-01', 'NNNNN', '㋿'], + ['+002019-05-01', 'y yy yyy yyyy', '1 01 001 0001'], + ['+002019-05-01', 'yo', '元年'], + + /* Last day of Heisei Era */ + ['+002019-04-30', 'N, NN, NNN', 'H, H, H'], + ['+002019-04-30', 'NNNN', '平成'], + ['+002019-04-30', 'NNNNN', '㍻'], + ['+002019-04-30', 'y yy yyy yyyy', '31 31 031 0031'], + ['+002019-04-30', 'yo', '31年'], + + /* First day of Heisei Era */ + ['+001989-01-08', 'N, NN, NNN', 'H, H, H'], + ['+001989-01-08', 'NNNN', '平成'], + ['+001989-01-08', 'NNNNN', '㍻'], + ['+001989-01-08', 'y yy yyy yyyy', '1 01 001 0001'], + ['+001989-01-08', 'yo', '元年'], + + /* Last day of Showa Era */ + ['+001989-01-07', 'N, NN, NNN', 'S, S, S'], + ['+001989-01-07', 'NNNN', '昭和'], + ['+001989-01-07', 'NNNNN', '㍼'], + ['+001989-01-07', 'y yy yyy yyyy', '64 64 064 0064'], + ['+001989-01-07', 'yo', '64年'], + + /* Last day of Showa Era */ + ['+001926-12-25', 'N, NN, NNN', 'S, S, S'], + ['+001926-12-25', 'NNNN', '昭和'], + ['+001926-12-25', 'NNNNN', '㍼'], + ['+001926-12-25', 'y yy yyy yyyy', '1 01 001 0001'], + ['+001926-12-25', 'yo', '元年'], + + /* Last day of Taisho Era */ + ['+001926-12-24', 'N, NN, NNN', 'T, T, T'], + ['+001926-12-24', 'NNNN', '大正'], + ['+001926-12-24', 'NNNNN', '㍽'], + ['+001926-12-24', 'y yy yyy yyyy', '15 15 015 0015'], + ['+001926-12-24', 'yo', '15年'], + + /* First day of Taisho Era */ + ['+001912-07-30', 'N, NN, NNN', 'T, T, T'], + ['+001912-07-30', 'NNNN', '大正'], + ['+001912-07-30', 'NNNNN', '㍽'], + ['+001912-07-30', 'y yy yyy yyyy', '1 01 001 0001'], + ['+001912-07-30', 'yo', '元年'], + + /* Last day of Meiji Era */ + ['+001912-07-29', 'N, NN, NNN', 'M, M, M'], + ['+001912-07-29', 'NNNN', '明治'], + ['+001912-07-29', 'NNNNN', '㍾'], + ['+001912-07-29', 'y yy yyy yyyy', '45 45 045 0045'], + ['+001912-07-29', 'yo', '45年'], + + /* The day the Japanese government had began using the Gregorian calendar */ + ['+001873-01-01', 'N, NN, NNN', 'M, M, M'], + ['+001873-01-01', 'NNNN', '明治'], + ['+001873-01-01', 'NNNNN', '㍾'], + ['+001873-01-01', 'y yy yyy yyyy', '6 06 006 0006'], + ['+001873-01-01', 'yo', '6年'], + + /* Christinan Era */ + ['+001872-12-31', 'N, NN, NNN', 'AD, AD, AD'], + ['+001872-12-31', 'NNNN', '西暦'], + ['+001872-12-31', 'NNNNN', 'AD'], + ['+001872-12-31', 'y yy yyy yyyy', '1872 1872 1872 1872'], + ['+001872-12-31', 'yo', '1872年'], + + ['+000001-01-01', 'N, NN, NNN', 'AD, AD, AD'], + ['+000001-01-01', 'NNNN', '西暦'], + ['+000001-01-01', 'NNNNN', 'AD'], + ['+000001-01-01', 'y', '1'], + + ['+000000-12-31', 'N, NN, NNN', 'BC, BC, BC'], + ['+000000-12-31', 'NNNN', '紀元前'], + ['+000000-12-31', 'NNNNN', 'BC'], + ['+000000-12-31', 'y', '1'], + + ['-000001-12-31', 'N, NN, NNN', 'BC, BC, BC'], + ['-000001-12-31', 'NNNN', '紀元前'], + ['-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 month', function (assert) { - var expected = 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split('_'), i; + 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; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'жексенбі жек жк_дүйсенбі дүй дй_сейсенбі сей сй_сәрсенбі сәр ср_бейсенбі бей бй_жұма жұм жм_сенбі сен сн'.split('_'), i; + var expected = '日曜日 日 日_月曜日 月 月_火曜日 火 火_水曜日 水 水_木曜日 木 木_金曜日 金 金_土曜日 土 土'.split( + '_' + ), + i; 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 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), 'бірнеше секунд', '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), '2 сағат', '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), '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 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), '2 ай', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + 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), + '1分', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + '1分', + '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), + '1時間', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + '1時間', + '89 minutes = an hour' + ); + assert.equal( + 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), + '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), + '1日', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '1日', + '35 hours = a day' + ); + assert.equal( + 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), + '1日', + '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), + '1ヶ月', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '1ヶ月', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + '1ヶ月', + '43 days = a month' + ); + assert.equal( + 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), + '2ヶ月', + '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ヶ月', + '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), + '1年', + '345 days = a year' + ); + assert.equal( + 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), + '1年', + '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'); - }); - - 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().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日後', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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' + ); }); test('calendar next week', function (assert) { - var i, m; + var i, + m, + dow = moment().day(); 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.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), 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'), 'Today + ' + i + ' days end of day'); + m = moment().add({ d: i }); + if (dow + i < 7) { + assert.equal( + m.calendar(), + 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'), + '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' + ); + } else { + assert.equal( + m.calendar(), + 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'), + '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' + ); + } } }); test('calendar last week', function (assert) { - var i, m; - + var i, + m, + dow = moment().day(); for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), 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'), '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 = moment().subtract({ d: i }); + if (dow < i) { + assert.equal( + m.calendar(), + 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'), + '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' + ); + } else { + assert.equal( + m.calendar(), + 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'), + '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' + ); + } } }); 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - 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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3-ші', 'Jan 15 2012 should be week 3'); + 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' + ); + }); + + test('parse with japanese parentheses', function (assert) { + assert.ok( + moment('2016年5月18日(水)', 'YYYY年M月D日(dd)', true).isValid(), + 'parse with japanese parentheses' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -32781,27 +56365,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -32811,8 +56400,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -32825,7 +56416,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -32834,16 +56428,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -32851,7 +56451,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -32859,12 +56461,21 @@ 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'); + 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' + ); } }); @@ -32872,12 +56483,27 @@ 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'); + 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' + ); } }); @@ -32886,7 +56512,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -32896,24 +56525,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -32932,19 +56565,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -32959,7 +56612,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -32969,7 +56628,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -32982,7 +56648,11 @@ 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'); + 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'); @@ -32997,66 +56667,88 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('km'); + localeModule('jv'); test('parse', function (assert) { - var tests = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មីនា មីនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split( + 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(), @@ -33064,6 +56756,14 @@ 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); @@ -33074,6 +56774,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); } }); @@ -33081,30 +56788,30 @@ var a = [ [ 'dddd, MMMM Do YYYY, h:mm:ss a', - 'អាទិត្យ, កុម្ភៈ ទី១៤ ២០១០, ៣:២៥:៥០ ល្ងាច' + 'Minggu, Februari 14 2010, 3:25:50 sonten', ], - ['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, 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; @@ -33113,45 +56820,8 @@ } }); - 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, 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'), 'ទី២១', '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'), 'ទី៣១', '31st'); - }); - test('format month', function (assert) { - var expected = 'មករា មករា_កុម្ភៈ កុម្ភៈ_មីនា មីនា_មេសា មេសា_ឧសភា ឧសភា_មិថុនា មិថុនា_កក្កដា កក្កដា_សីហា សីហា_កញ្ញា កញ្ញា_តុលា តុលា_វិច្ឆិកា វិច្ឆិកា_ធ្នូ ធ្នូ'.split( + 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; @@ -33165,7 +56835,7 @@ }); test('format week', function (assert) { - var expected = 'អាទិត្យ អា អា_ច័ន្ទ ច ច_អង្គារ អ អ_ពុធ ព ព_ព្រហស្បតិ៍ ព្រ ព្រ_សុក្រ សុ សុ_សៅរ៍ ស ស'.split( + 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; @@ -33181,225 +56851,208 @@ test('from', function (assert) { var start = moment([2007, 1, 28]); assert.equal( - start.from(moment([2007, 1, 28]).add({s: 44}), true), - 'ប៉ុន្មានវិនាទី', - '44 seconds = ប៉ុន្មានវិនាទី' + 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), - 'មួយនាទី', - '45 seconds = មួយនាទី' + 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), - 'មួយនាទី', - '89 seconds = មួយនាទី' + 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), - '២ នាទី', - '90 seconds = 2 នាទី' + 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 minutes = 44 នាទី' + 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), - 'មួយម៉ោង', - '45 minutes = មួយម៉ោង' + 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), - 'មួយម៉ោង', - '89 minutes = មួយម៉ោង' + 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), - '២ ម៉ោង', - '90 minutes = 2 ម៉ោង' + 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 hours = 5 ម៉ោង' + 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 hours = 21 ម៉ោង' + 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), - 'មួយថ្ងៃ', - '22 hours = មួយថ្ងៃ' + 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), - 'មួយថ្ងៃ', - '35 hours = មួយថ្ងៃ' + 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), - '២ ថ្ងៃ', - '36 hours = 2 ថ្ងៃ' + 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), - 'មួយថ្ងៃ', - '1 day = មួយថ្ងៃ' + 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 days = 5 ថ្ងៃ' + 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 days = 25 ថ្ងៃ' + 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), - 'មួយខែ', - '26 days = មួយខែ' + 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), - 'មួយខែ', - '30 days = មួយខែ' + 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), - 'មួយខែ', - '43 days = មួយខែ' + 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), - '២ ខែ', - '46 days = 2 ខែ' + 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), - '២ ខែ', - '75 days = 2 ខែ' + 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), - '៣ ខែ', - '76 days = 3 ខែ' + 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), - 'មួយខែ', - '1 month = មួយខែ' + 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 months = 5 ខែ' + 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), - 'មួយឆ្នាំ', - '345 days = មួយឆ្នាំ' + 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), - '២ ឆ្នាំ', - '548 days = 2 ឆ្នាំ' + 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), - 'មួយឆ្នាំ', - '1 year = មួយឆ្នាំ' + 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 years = 5 ឆ្នាំ' + 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), 'ប៉ុន្មានវិនាទីទៀត', 'prefix'); - assert.equal(moment(0).from(30000), 'ប៉ុន្មានវិនាទីមុន', 'suffix'); + 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(), - 'ប៉ុន្មានវិនាទីទៀត', + moment().add({ s: 30 }).fromNow(), + 'wonten ing sawetawis detik', 'in a few seconds' ); assert.equal( - moment() - .add({ - d: 5 - }) - .fromNow(), - '៥ ថ្ងៃទៀត', + 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); + 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(), - 'ថ្ងៃនេះ ម៉ោង ១២:២៥', + moment(a).add({ m: 25 }).calendar(), + 'Dinten puniko pukul 12.25', 'Now plus 25 min' ); assert.equal( - moment(a) - .add({h: 1}) - .calendar(), - 'ថ្ងៃនេះ ម៉ោង ១៣:០០', + moment(a).add({ h: 1 }).calendar(), + 'Dinten puniko pukul 13.00', 'Now plus 1 hour' ); assert.equal( - moment(a) - .add({d: 1}) - .calendar(), - 'ស្អែក ម៉ោង ១២:០០', + moment(a).add({ d: 1 }).calendar(), + 'Mbenjang pukul 12.00', 'tomorrow at the same time' ); assert.equal( - moment(a) - .subtract({h: 1}) - .calendar(), - 'ថ្ងៃនេះ ម៉ោង ១១:០០', + moment(a).subtract({ h: 1 }).calendar(), + 'Dinten puniko pukul 11.00', 'Now minus 1 hour' ); assert.equal( - moment(a) - .subtract({d: 1}) - .calendar(), - 'ម្សិលមិញ ម៉ោង ១២:០០', + moment(a).subtract({ d: 1 }).calendar(), + 'Kala wingi pukul 12.00', 'yesterday at the same time' ); }); @@ -33407,32 +57060,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 [pukul] LT'), 'Today + ' + i + ' days current time' ); - m - .hours(0) - .minutes(0) - .seconds(0) - .milliseconds(0); + m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [ម៉ោង] LT'), + m.format('dddd [pukul] LT'), 'Today + ' + i + ' days beginning of day' ); - m - .hours(23) - .minutes(59) - .seconds(59) - .milliseconds(999); + m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [ម៉ោង] LT'), + m.format('dddd [pukul] LT'), 'Today + ' + i + ' days end of day' ); } @@ -33440,46 +57083,31 @@ 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 [kepengker pukul] LT'), 'Today - ' + i + ' days current time' ); - m - .hours(0) - .minutes(0) - .seconds(0) - .milliseconds(0); + m.hours(0).minutes(0).seconds(0).milliseconds(0); assert.equal( m.calendar(), - m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), + m.format('dddd [kepengker pukul] LT'), 'Today - ' + i + ' days beginning of day' ); - m - .hours(23) - .minutes(59) - .seconds(59) - .milliseconds(999); + m.hours(23).minutes(59).seconds(59).milliseconds(999); assert.equal( m.calendar(), - m.format('dddd [សប្តាហ៍មុន] [ម៉ោង] LT'), + 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 - }); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); assert.equal( @@ -33488,12 +57116,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( @@ -33503,37 +57127,41 @@ ); }); + // 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'), - '៥២ ៥២ ទី៥២', - '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'), - '១ ០១ ទី១', - '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'), - '១ ០១ ទី១', - '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'), - '២ ០២ ទី២', - 'Jan 9 2012 should be week 2' - ); - assert.equal( - moment([2012, 0, 15]).format('w ww wo'), - '២ ០២ ទី២', - 'Jan 15 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')) : @@ -33548,27 +57176,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -33578,8 +57211,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -33592,7 +57227,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -33601,16 +57239,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -33618,7 +57262,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -33626,12 +57272,21 @@ 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'); + 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' + ); } }); @@ -33639,12 +57294,27 @@ 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'); + 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' + ); } }); @@ -33653,7 +57323,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -33663,24 +57336,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -33699,19 +57376,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -33726,7 +57423,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -33736,7 +57439,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -33749,7 +57459,11 @@ 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'); + 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'); @@ -33764,65 +57478,97 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('kn'); + localeModule('ka'); test('parse', function (assert) { - var tests = 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋ_ನವೆಂಬರ್ ನವೆಂ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂ'.split('_'), i; + var i, + tests = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split( + '_' + ); + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } + for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); @@ -33831,217 +57577,436 @@ 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); + // 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); } }); test('format', function (assert) { var a = [ - ['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', 'ಮಧ್ಯಾಹ್ನ ಮಧ್ಯಾಹ್ನ'], - ['LTS', 'ಮಧ್ಯಾಹ್ನ ೩:೨೫:೫೦'], - ['L', '೧೪/೦೨/೨೦೧೦'], - ['LL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦'], - ['LLL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], - ['LLLL', 'ಭಾನುವಾರ, ೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], - ['l', '೧೪/೨/೨೦೧೦'], - ['ll', '೧೪ ಫೆಬ್ರ ೨೦೧೦'], - ['lll', '೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], - ['llll', 'ಭಾನು, ೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'] + [ + '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', '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'], ], 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 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 = 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್ ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋ_ನವೆಂಬರ್ ನವೆಂ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂ'.split('_'), i; + var i, + expected = 'იანვარი იან_თებერვალი თებ_მარტი მარ_აპრილი აპრ_მაისი მაი_ივნისი ივნ_ივლისი ივლ_აგვისტო აგვ_სექტემბერი სექ_ოქტომბერი ოქტ_ნოემბერი ნოე_დეკემბერი დეკ'.split( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'ಭಾನುವಾರ ಭಾನು ಭಾ_ಸೋಮವಾರ ಸೋಮ ಸೋ_ಮಂಗಳವಾರ ಮಂಗಳ ಮಂ_ಬುಧವಾರ ಬುಧ ಬು_ಗುರುವಾರ ಗುರು ಗು_ಶುಕ್ರವಾರ ಶುಕ್ರ ಶು_ಶನಿವಾರ ಶನಿ ಶ'.split('_'), i; + var i, + expected = 'კვირა კვი კვ_ორშაბათი ორშ ორ_სამშაბათი სამ სა_ოთხშაბათი ოთხ ოთ_ხუთშაბათი ხუთ ხუ_პარასკევი პარ პა_შაბათი შაბ შა'.split( + '_' + ); + 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 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), 'ಕೆಲವು ಕ್ಷಣಗಳು', '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'); + + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'რამდენიმე წამი', + '44 წამი = რამდენიმე წამი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'წუთი', + '45 წამი = წუთი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'წუთი', + '89 წამი = წუთი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 წუთი', + '90 წამი = 2 წუთი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 წუთი', + '44 წამი = 44 წუთი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'საათი', + '45 წამი = საათი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'საათი', + '89 წამი = საათი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 საათი', + '90 წამი = 2 საათი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 საათი', + '5 საათი = 5 საათი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 საათი', + '21 საათი = 21 საათი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'დღე', + '22 საათი = დღე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'დღე', + '35 საათი = დღე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 დღე', + '36 საათი = 2 დღე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'დღე', + '1 დღე = დღე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 დღე', + '5 დღე = 5 დღე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 დღე', + '25 დღე = 25 დღე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'თვე', + '26 დღე = თვე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'თვე', + '30 დღე = თვე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'თვე', + '45 დღე = თვე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 თვე', + '46 დღე = 2 თვე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 თვე', + '75 დღე = 2 თვე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 თვე', + '76 დღე = 3 თვე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'თვე', + '1 თვე = თვე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 თვე', + '5 თვე = 5 თვე' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'წელი', + '345 დღე = წელი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 წელი', + '548 დღე = 2 წელი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'წელი', + '1 წელი = წელი' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '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), 'რამდენიმე წამში', 'ში სუფიქსი'); + assert.equal(moment(0).from(30000), 'რამდენიმე წამის წინ', 'წინ სუფიქსი'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ಕೆಲವು ಕ್ಷಣಗಳು ಹಿಂದೆ', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'რამდენიმე წამის წინ', + 'უნდა აჩვენოს როგორც წარსული' + ); }); 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(), '5 დღეში', '5 დღეში'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal(moment(a).calendar(), 'დღეს 12:00-ზე', 'დღეს ამავე დროს'); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'დღეს 12:25-ზე', + 'ახლანდელ დროს დამატებული 25 წუთი' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'დღეს 13:00-ზე', + 'ახლანდელ დროს დამატებული 1 საათი' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'ხვალ 12:00-ზე', + 'ხვალ ამავე დროს' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'დღეს 11:00-ზე', + 'ახლანდელ დროს გამოკლებული 1 საათი' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'გუშინ 12:00-ზე', + 'გუშინ ამავე დროს' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('[შემდეგ] dddd LT[-ზე]'), + 'დღეს + ' + i + ' დღე ახლანდელ დროს' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[შემდეგ] dddd LT[-ზე]'), + 'დღეს + ' + i + ' დღე დღის დასაწყისში' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd[,] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[შემდეგ] dddd LT[-ზე]'), + 'დღეს + ' + i + ' დღე დღის დასასრულს' + ); } }); 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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[წინა] dddd LT[-ზე]'), + 'დღეს - ' + i + ' დღე ახლანდელ დროს' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[ಕೊನೆಯ] dddd[,] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[წინა] dddd LT[-ზე]'), + 'დღეს - ' + i + ' დღე დღის დასაწყისში' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[ಕೊನೆಯ] dddd[,] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[წინა] dddd LT[-ზე]'), + 'დღეს - ' + i + ' დღე დღის დასასრულს' + ); } }); 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'); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - 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'); - }); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 კვირის წინ'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '1 კვირაში' + ); - 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'); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 კვირის წინ'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '2 კვირაში' + ); }); 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'); + 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' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '2 02 მე-2', + 'იან 2 2012 უნდა იყოს კვირა 2' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '2 02 მე-2', + 'იან 8 2012 უნდა იყოს კვირა 2' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '3 03 მე-3', + 'იან 9 2012 უნდა იყოს კვირა 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -34056,27 +58021,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -34086,8 +58056,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -34100,7 +58072,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -34109,16 +58084,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -34126,7 +58107,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -34134,12 +58117,21 @@ 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'); + 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' + ); } }); @@ -34147,12 +58139,27 @@ 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'); + 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' + ); } }); @@ -34161,7 +58168,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -34171,24 +58181,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -34207,19 +58221,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -34234,7 +58268,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -34244,7 +58284,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -34257,7 +58304,11 @@ 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'); + 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'); @@ -34272,65 +58323,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ko'); + localeModule('kk'); 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 tests = 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -34341,69 +58430,44 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].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 + '\'.' - ); + 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 = [ - ['YYYY년 MMMM Do dddd a h:mm:ss', '2010년 2월 14일 일요일 오후 3:25:50'], - ['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'] + [ + 'dddd, Do MMMM YYYY, HH:mm:ss', + 'жексенбі, 14-ші ақпан 2010, 15:25:50', + ], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -34413,162 +58477,374 @@ }); 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 = '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 expected = 'қаңтар қаң_ақпан ақп_наурыз нау_сәуір сәу_мамыр мам_маусым мау_шілде шіл_тамыз там_қыркүйек қыр_қазан қаз_қараша қар_желтоқсан жел'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split('_'), i; + var expected = 'жексенбі жек жк_дүйсенбі дүй дй_сейсенбі сей сй_сәрсенбі сәр ср_бейсенбі бей бй_жұма жұм жм_сенбі сен сн'.split( + '_' + ), + i; 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 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), '몇 초', '44초 = 몇 초'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1분', '45초 = 1분'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1분', '89초 = 1분'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2분', '90초 = 2분'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44분', '44분 = 44분'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '한 시간', '45분 = 한 시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '한 시간', '89분 = 한 시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2시간', '90분 = 2시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5시간', '5시간 = 5시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21시간', '21시간 = 21시간'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '하루', '22시간 = 하루'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '하루', '35시간 = 하루'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2일', '36시간 = 2일'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '하루', '하루 = 하루'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5일', '5일 = 5일'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25일', '25일 = 25일'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '한 달', '26일 = 한 달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '한 달', '30일 = 한 달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '한 달', '45일 = 한 달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2달', '46일 = 2달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2달', '75일 = 2달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3달', '76일 = 3달'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '한 달', '1달 = 한 달'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5달', '5달 = 5달'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '일 년', '345일 = 일 년'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2년', '548일 = 2년'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '일 년', '일 년 = 일 년'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5년', '5년 = 5년'); + 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), + '2 сағат', + '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), + '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 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), + '2 ай', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 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'); + 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일 후', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'бірнеше секунд ішінде', + 'in a few seconds' + ); + 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', '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(), '오늘 오후 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'); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(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'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); + }); + + 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' + ); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3-ші', + 'Jan 15 2012 should be week 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -34583,27 +58859,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -34613,8 +58894,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -34627,7 +58910,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -34636,16 +58922,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -34653,7 +58945,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -34661,12 +58955,21 @@ 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'); + 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' + ); } }); @@ -34674,12 +58977,27 @@ 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'); + 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' + ); } }); @@ -34688,7 +59006,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -34698,24 +59019,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -34734,19 +59059,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -34761,7 +59106,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -34771,7 +59122,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -34784,7 +59142,11 @@ 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'); + 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'); @@ -34799,117 +59161,153 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ku'); - - var months = [ - 'کانونی دووەم', - 'شوبات', - 'ئازار', - 'نیسان', - 'ئایار', - 'حوزەیران', - 'تەمموز', - 'ئاب', - 'ئەیلوول', - 'تشرینی یەكەم', - 'تشرینی دووەم', - 'كانونی یەکەم' - ]; + localeModule('km'); test('parse', function (assert) { - var tests = months, i; + 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()); + 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++) { - 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); + + 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', 'یه‌كشه‌ممه‌، شوبات ١٤ ٢٠١٠، ٣:٢٥:٥٠ ئێواره‌'], - ['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', 'یه‌كشه‌م، ١٤ شوبات ٢٠١٠ ١٥:٢٥'] + [ + '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'], + ['LTS', '១៥:២៥:៥០'], + ['L', '១៤/០២/២០១០'], + ['LL', '១៤ កុម្ភៈ ២០១០'], + ['LLL', '១៤ កុម្ភៈ ២០១០ ១៥:២៥'], + ['LLLL', 'អាទិត្យ, ១៤ កុម្ភៈ ២០១០ ១៥:២៥'], + ['l', '១៤/២/២០១០'], + ['ll', '១៤ កុម្ភៈ ២០១០'], + ['lll', '១៤ កុម្ភៈ ២០១០ ១៥:២៥'], + ['llll', 'អា, ១៤ កុម្ភៈ ២០១០ ១៥:២៥'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -34919,122 +59317,306 @@ }); 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'), 'ទី១', '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'); - 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'), 'ទី១១', '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'); - 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'); + 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'), 'ទី៣១', '31st'); }); - //ok + test('format month', function (assert) { - var expected = months, i; + 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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'یه‌كشه‌ممه‌ یه‌كشه‌م ی_دووشه‌ممه‌ دووشه‌م د_سێشه‌ممه‌ سێشه‌م س_چوارشه‌ممه‌ چوارشه‌م چ_پێنجشه‌ممه‌ پێنجشه‌م پ_هه‌ینی هه‌ینی ه_شه‌ممه‌ شه‌ممه‌ ش'.split('_'), i; + var expected = 'អាទិត្យ អា អា_ច័ន្ទ ច ច_អង្គារ អ អ_ពុធ ព ព_ព្រហស្បតិ៍ ព្រ ព្រ_សុក្រ សុ សុ_សៅរ៍ ស ស'.split( + '_' + ), + i; 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 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), 'چه‌ند چركه‌یه‌ك', '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'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'ប៉ុន្មានវិនាទី', + '44 seconds = ប៉ុន្មានវិនាទី' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'មួយនាទី', + '45 seconds = មួយនាទី' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'មួយនាទី', + '89 seconds = មួយនាទី' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '២ នាទី', + '90 seconds = 2 នាទី' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '៤៤ នាទី', + '44 minutes = 44 នាទី' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'មួយម៉ោង', + '45 minutes = មួយម៉ោង' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'មួយម៉ោង', + '89 minutes = មួយម៉ោង' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '២ ម៉ោង', + '90 minutes = 2 ម៉ោង' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '៥ ម៉ោង', + '5 hours = 5 ម៉ោង' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '២១ ម៉ោង', + '21 hours = 21 ម៉ោង' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'មួយថ្ងៃ', + '22 hours = មួយថ្ងៃ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'មួយថ្ងៃ', + '35 hours = មួយថ្ងៃ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '២ ថ្ងៃ', + '36 hours = 2 ថ្ងៃ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'មួយថ្ងៃ', + '1 day = មួយថ្ងៃ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '៥ ថ្ងៃ', + '5 days = 5 ថ្ងៃ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '២៥ ថ្ងៃ', + '25 days = 25 ថ្ងៃ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'មួយខែ', + '26 days = មួយខែ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'មួយខែ', + '30 days = មួយខែ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'មួយខែ', + '43 days = មួយខែ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '២ ខែ', + '46 days = 2 ខែ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '២ ខែ', + '75 days = 2 ខែ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '៣ ខែ', + '76 days = 3 ខែ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'មួយខែ', + '1 month = មួយខែ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '៥ ខែ', + '5 months = 5 ខែ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'មួយឆ្នាំ', + '345 days = មួយឆ្នាំ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '២ ឆ្នាំ', + '548 days = 2 ឆ្នាំ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'មួយឆ្នាំ', + '1 year = មួយឆ្នាំ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '៥ ឆ្នាំ', + '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'); + 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'); + assert.equal( + moment() + .add({ + s: 30, + }) + .fromNow(), + 'ប៉ុន្មានវិនាទីទៀត', + 'in a few seconds' + ); + assert.equal( + moment() + .add({ + d: 5, + }) + .fromNow(), + '៥ ថ្ងៃទៀត', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); - 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'); + 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' + ); + 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' + ); }); 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 = moment().add({ + d: i, + }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [ម៉ោង] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -35042,50 +59624,91 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [كاتژمێر] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ + d: i, + }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '٢ ٠٢ ٢', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '٣ ٠٣ ٣', 'Jan 14 2012 should be week 3'); - }); - - - // locale-specific - test('ku strict mode parsing works', function (assert) { - var m, formattedDate; - m = moment().locale('ku'); - formattedDate = m.format('l'); - assert.equal(moment.utc(formattedDate, 'l', 'ku', false).isValid(), true, 'Non-strict parsing works'); - assert.equal(moment.utc(formattedDate, 'l', 'ku', true).isValid(), true,'Strict parsing must work'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '៥២ ៥២ ទី៥២', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '១ ០១ ទី១', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '១ ០១ ទី១', + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '២ ០២ ទី២', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '២ ០២ ទី២', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -35100,27 +59723,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -35130,8 +59758,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -35144,7 +59774,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -35153,16 +59786,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -35170,7 +59809,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -35178,12 +59819,21 @@ 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'); + 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' + ); } }); @@ -35191,12 +59841,27 @@ 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'); + 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' + ); } }); @@ -35205,7 +59870,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -35215,24 +59883,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -35251,19 +59923,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -35278,7 +59970,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -35288,7 +59986,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -35301,7 +60006,11 @@ 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'); + 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'); @@ -35316,65 +60025,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ky'); + localeModule('kn'); test('parse', function (assert) { - var tests = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split('_'), i; + var tests = 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋ_ನವೆಂಬರ್ ನವೆಂ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂ'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -35385,34 +60132,44 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); 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); } }); test('format', function (assert) { var a = [ - ['dddd, Do MMMM YYYY, HH:mm:ss', 'Жекшемби, 14-чү февраль 2010, 15:25:50'], - ['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'] + [ + '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', 'ಮಧ್ಯಾಹ್ನ ಮಧ್ಯಾಹ್ನ'], + ['LTS', 'ಮಧ್ಯಾಹ್ನ ೩:೨೫:೫೦'], + ['L', '೧೪/೦೨/೨೦೧೦'], + ['LL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦'], + ['LLL', '೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], + ['LLLL', 'ಭಾನುವಾರ, ೧೪ ಫೆಬ್ರವರಿ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], + ['l', '೧೪/೨/೨೦೧೦'], + ['ll', '೧೪ ಫೆಬ್ರ ೨೦೧೦'], + ['lll', '೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], + ['llll', 'ಭಾನು, ೧೪ ಫೆಬ್ರ ೨೦೧೦, ಮಧ್ಯಾಹ್ನ ೩:೨೫'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -35422,122 +60179,292 @@ }); 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, 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, 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, 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, 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, 31]).format('DDDo'), '31-чи', '31st'); + 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('_'), i; + var expected = 'ಜನವರಿ ಜನ_ಫೆಬ್ರವರಿ ಫೆಬ್ರ_ಮಾರ್ಚ್ ಮಾರ್ಚ್_ಏಪ್ರಿಲ್ ಏಪ್ರಿಲ್_ಮೇ ಮೇ_ಜೂನ್ ಜೂನ್_ಜುಲೈ ಜುಲೈ_ಆಗಸ್ಟ್ ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್ ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋಬರ್ ಅಕ್ಟೋ_ನವೆಂಬರ್ ನವೆಂ_ಡಿಸೆಂಬರ್ ಡಿಸೆಂ'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Жекшемби Жек Жк_Дүйшөмбү Дүй Дй_Шейшемби Шей Шй_Шаршемби Шар Шр_Бейшемби Бей Бй_Жума Жум Жм_Ишемби Ише Иш'.split('_'), i; + var expected = 'ಭಾನುವಾರ ಭಾನು ಭಾ_ಸೋಮವಾರ ಸೋಮ ಸೋ_ಮಂಗಳವಾರ ಮಂಗಳ ಮಂ_ಬುಧವಾರ ಬುಧ ಬು_ಗುರುವಾರ ಗುರು ಗು_ಶುಕ್ರವಾರ ಶುಕ್ರ ಶು_ಶನಿವಾರ ಶನಿ ಶ'.split( + '_' + ), + i; 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 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), 'бирнече секунд', '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), '2 саат', '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), '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 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), '2 ай', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + 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'); + 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 күн ичинде', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ', + 'ಕೆಲವು ಕ್ಷಣಗಳು ನಂತರ' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '೫ ದಿನ ನಂತರ', '೫ ದಿನ ನಂತರ'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd[,] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -35545,40 +60472,129 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Өткөн аптанын] dddd [күнү] [саат] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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( + 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'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); + }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + 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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3-чү', 'Jan 15 2012 should be week 3'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -35593,27 +60609,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -35623,8 +60644,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -35637,7 +60660,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -35646,16 +60672,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -35663,7 +60695,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -35671,12 +60705,21 @@ 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'); + 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' + ); } }); @@ -35684,12 +60727,27 @@ 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'); + 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' + ); } }); @@ -35698,7 +60756,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -35708,24 +60769,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -35744,19 +60809,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -35771,7 +60856,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -35781,7 +60872,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -35794,7 +60892,11 @@ 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'); + 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'); @@ -35809,65 +60911,101 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('lb'); + localeModule('ko'); test('parse', function (assert) { - var tests = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; - + 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; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -35880,34 +61018,96 @@ 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 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, HH:mm:ss', 'Sonndeg, 14. Februar 2010, 15:25:50'], - ['ddd, HH:mm', 'So., 15:25'], - ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], + [ + 'YYYY년 MMMM Do dddd a h:mm:ss', + '2010년 2월 14일 일요일 오후 3:25:50', + ], + ['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. Sonndeg So. So'], - ['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', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50 Auer'], - ['L', '14.02.2010'], - ['LL', '14. Februar 2010'], - ['LLL', '14. Februar 2010 15:25 Auer'], - ['LLLL', 'Sonndeg, 14. Februar 2010 15:25 Auer'], - ['l', '14.2.2010'], - ['ll', '14. Febr. 2010'], - ['lll', '14. Febr. 2010 15:25 Auer'], - ['llll', 'So., 14. Febr. 2010 15:25 Auer'] + ['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; @@ -35916,139 +61116,374 @@ } }); + 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 Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split('_'), i; + 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; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Sonndeg So. So_Méindeg Mé. Mé_Dënschdeg Dë. Dë_Mëttwoch Më. Më_Donneschdeg Do. Do_Freideg Fr. Fr_Samschdeg Sa. Sa'.split('_'), i; + var expected = '일요일 일 일_월요일 월 월_화요일 화 화_수요일 수 수_목요일 목 목_금요일 금 금_토요일 토 토'.split( + '_' + ), + i; 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 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), 'e puer Sekonnen', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eng Minutt', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eng Minutt', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 Minutten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 Minutten', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'eng Stonn', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'eng Stonn', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 Stonnen', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 Stonnen', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 Stonnen', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'een Dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'een Dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 Deeg', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'een Dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 Deeg', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 Deeg', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ee Mount', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ee Mount', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ee Mount', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 Méint', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 Méint', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 Méint', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ee Mount', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 Méint', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ee Joer', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 Joer', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ee Joer', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 Joer', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + '몇 초', + '44초 = 몇 초' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + '1분', + '45초 = 1분' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + '1분', + '89초 = 1분' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2분', + '90초 = 2분' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44분', + '44분 = 44분' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + '한 시간', + '45분 = 한 시간' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + '한 시간', + '89분 = 한 시간' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2시간', + '90분 = 2시간' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5시간', + '5시간 = 5시간' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21시간', + '21시간 = 21시간' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + '하루', + '22시간 = 하루' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '하루', + '35시간 = 하루' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2일', + '36시간 = 2일' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + '하루', + '하루 = 하루' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5일', + '5일 = 5일' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25일', + '25일 = 25일' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + '한 달', + '26일 = 한 달' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '한 달', + '30일 = 한 달' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + '한 달', + '45일 = 한 달' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2달', + '46일 = 2달' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2달', + '75일 = 2달' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3달', + '76일 = 3달' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + '한 달', + '1달 = 한 달' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5달', + '5달 = 5달' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + '일 년', + '345일 = 일 년' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2년', + '548일 = 2년' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + '일 년', + '일 년 = 일 년' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5년', + '5년 = 5년' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'an e puer Sekonnen', 'prefix'); - assert.equal(moment(0).from(30000), 'virun e puer Sekonnen', '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(), 'an e puer Sekonnen', 'in a few seconds'); - assert.equal(moment().add({d: 1}).fromNow(), 'an engem Dag', 'in one day'); - assert.equal(moment().add({d: 2}).fromNow(), 'an 2 Deeg', 'in 2 days'); - assert.equal(moment().add({d: 3}).fromNow(), 'an 3 Deeg', 'in 3 days'); - assert.equal(moment().add({d: 4}).fromNow(), 'a 4 Deeg', 'in 4 days'); - assert.equal(moment().add({d: 5}).fromNow(), 'a 5 Deeg', 'in 5 days'); - assert.equal(moment().add({d: 6}).fromNow(), 'a 6 Deeg', 'in 6 days'); - assert.equal(moment().add({d: 7}).fromNow(), 'a 7 Deeg', 'in 7 days'); - assert.equal(moment().add({d: 8}).fromNow(), 'an 8 Deeg', 'in 8 days'); - assert.equal(moment().add({d: 9}).fromNow(), 'an 9 Deeg', 'in 9 days'); - assert.equal(moment().add({d: 10}).fromNow(), 'an 10 Deeg', 'in 10 days'); - assert.equal(moment().add({y: 100}).fromNow(), 'an 100 Joer', 'in 100 years'); - assert.equal(moment().add({y: 400}).fromNow(), 'a 400 Joer', 'in 400 years'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + '몇 초 후', + 'in a few seconds' + ); + 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(), 'Haut um 12:00 Auer', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Haut um 12:25 Auer', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Haut um 13:00 Auer', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Muer um 12:00 Auer', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Haut um 11:00 Auer', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Gëschter um 12:00 Auer', 'yesterday at the same time'); + 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(), + '오늘 오후 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' + ); }); 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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [um] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [um] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { - var i, m, weekday, datestring; + var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) - weekday = parseInt(m.format('d'), 10); - datestring = (weekday === 2 || weekday === 4 ? '[Leschten] dddd [um] LT' : '[Leschte] dddd [um] LT'); - - assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('지난주 dddd LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(datestring), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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(datestring), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); test('weeks year starting sunday format', function (assert) { - 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, 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'), '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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -36063,27 +61498,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -36093,8 +61533,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -36107,7 +61549,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -36116,16 +61561,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -36133,7 +61584,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -36141,12 +61594,21 @@ 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'); + 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' + ); } }); @@ -36154,12 +61616,27 @@ 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'); + 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' + ); } }); @@ -36168,7 +61645,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -36178,24 +61658,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -36214,19 +61698,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -36241,7 +61745,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -36251,7 +61761,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -36264,7 +61781,11 @@ 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'); + 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'); @@ -36279,103 +61800,152 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('lo'); + localeModule('ku'); + + var months = [ + 'کانونی دووەم', + 'شوبات', + 'ئازار', + 'نیسان', + 'ئایار', + 'حوزەیران', + 'تەمموز', + 'ئاب', + 'ئەیلوول', + 'تشرینی یەكەم', + 'تشرینی دووەم', + 'كانونی یەکەم', + ]; test('parse', function (assert) { - var tests = 'ມັງກອນ ມັງກອນ_ກຸມພາ ກຸມພາ_ມີນາ ມີນາ_ເມສາ ເມສາ_ພຶດສະພາ ພຶດສະພາ_ມິຖຸນາ ມິຖຸນາ_ກໍລະກົດ ກໍລະກົດ_ສິງຫາ ສິງຫາ_ກັນຍາ ກັນຍາ_ຕຸລາ ຕຸລາ_ພະຈິກ ພະຈິກ_ທັນວາ ທັນວາ'.split('_'), i; + var tests = months, + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + + ' should be month ' + + (i + 1) + + ' instead is month ' + + moment(input, mmm).month() + ); } 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); } }); test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'ອາທິດ, ກຸມພາ ທີ່14 2010, 3:25:50 ຕອນແລງ'], - ['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', '8 ທີ່8 08'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'ຕອນແລງ ຕອນແລງ'], - ['[ວັນ]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'] + [ + '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'], + ['LTS', '١٥:٢٥:٥٠'], + ['L', '١٤/٠٢/٢٠١٠'], + ['LL', '١٤ شوبات ٢٠١٠'], + ['LLL', '١٤ شوبات ٢٠١٠ ١٥:٢٥'], + ['LLLL', 'یه‌كشه‌ممه‌، ١٤ شوبات ٢٠١٠ ١٥:٢٥'], + ['l', '١٤/٢/٢٠١٠'], + ['ll', '١٤ شوبات ٢٠١٠'], + ['lll', '١٤ شوبات ٢٠١٠ ١٥:٢٥'], + ['llll', 'یه‌كشه‌م، ١٤ شوبات ٢٠١٠ ١٥:٢٥'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -36385,122 +61955,294 @@ }); 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, 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, 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, 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, 31]).format('DDDo'), 'ທີ່31', 'ທີ່31'); + 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'); }); - + //ok test('format month', function (assert) { - var expected = 'ມັງກອນ ມັງກອນ_ກຸມພາ ກຸມພາ_ມີນາ ມີນາ_ເມສາ ເມສາ_ພຶດສະພາ ພຶດສະພາ_ມິຖຸນາ ມິຖຸນາ_ກໍລະກົດ ກໍລະກົດ_ສິງຫາ ສິງຫາ_ກັນຍາ ກັນຍາ_ຕຸລາ ຕຸລາ_ພະຈິກ ພະຈິກ_ທັນວາ ທັນວາ'.split('_'), i; + var expected = months, + i; 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], + expected[i] + ); + assert.equal( + moment([2011, i, 1]).format('MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'ອາທິດ ທິດ ທ_ຈັນ ຈັນ ຈ_ອັງຄານ ອັງຄານ ອຄ_ພຸດ ພຸດ ພ_ພະຫັດ ພະຫັດ ພຫ_ສຸກ ສຸກ ສກ_ເສົາ ເສົາ ສ'.split('_'), i; + var expected = 'یه‌كشه‌ممه‌ یه‌كشه‌م ی_دووشه‌ممه‌ دووشه‌م د_سێشه‌ممه‌ سێشه‌م س_چوارشه‌ممه‌ چوارشه‌م چ_پێنجشه‌ممه‌ پێنجشه‌م پ_هه‌ینی هه‌ینی ه_شه‌ممه‌ شه‌ممه‌ ش'.split( + '_' + ), + i; 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 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), 'ບໍ່ເທົ່າໃດວິນາທີ', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 ນາທີ', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 ນາທີ', '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), '1 ຊົ່ວໂມງ', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 ຊົ່ວໂມງ', '89 minutes = an hour'); - assert.equal(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), '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), '1 ມື້', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 ມື້', '35 hours = a day'); - assert.equal(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), '1 ມື້', '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), '1 ເດືອນ', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 ເດືອນ', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 ເດືອນ', '43 days = a month'); - assert.equal(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), '2 ເດືອນ', '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 ເດືອນ', '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), '1 ປີ', '345 days = a year'); - assert.equal(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), '1 ປີ', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ປີ', '5 years = 5 years'); + 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'); + 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 ມື້', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'له‌ چه‌ند چركه‌یه‌ك', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'له‌ ٥ ڕۆژ', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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' + ); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [كاتژمێر] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -36508,40 +62250,98 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - 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'); + 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' + ); + assert.equal( + moment([2012, 0, 13]).format('w ww wo'), + '٢ ٠٢ ٢', + 'Jan 13 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '٣ ٠٣ ٣', + 'Jan 14 2012 should be week 3' + ); + }); + + // locale-specific + test('ku strict mode parsing works', function (assert) { + var m, formattedDate; + m = moment().locale('ku'); + formattedDate = m.format('l'); + assert.equal( + moment.utc(formattedDate, 'l', 'ku', false).isValid(), + true, + 'Non-strict parsing works' + ); + assert.equal( + moment.utc(formattedDate, 'l', 'ku', true).isValid(), + true, + 'Strict parsing must work' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -36556,27 +62356,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -36586,8 +62391,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -36600,7 +62407,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -36609,16 +62419,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -36626,7 +62442,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -36634,12 +62452,21 @@ 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'); + 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' + ); } }); @@ -36647,12 +62474,27 @@ 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'); + 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' + ); } }); @@ -36661,7 +62503,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -36671,24 +62516,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -36707,19 +62556,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -36734,7 +62603,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -36744,7 +62619,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -36757,7 +62639,11 @@ 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'); + 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'); @@ -36772,65 +62658,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('lt'); + localeModule('ky'); test('parse', function (assert) { - var tests = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split('_'), i; + var tests = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -36841,34 +62765,44 @@ 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, Do MMMM YYYY, h:mm:ss a', 'sekmadienis, 14-oji vasario 2010, 3:25:50 pm'], - ['ddd, hA', 'Sek, 3PM'], - ['M Mo MM MMMM MMM', '2 2-oji 02 vasaris vas'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14-oji 14'], - ['d do dddd ddd dd', '0 0-oji sekmadienis Sek S'], - ['DDD DDDo DDDD', '45 45-oji 045'], - ['w wo ww', '6 6-oji 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'pm PM'], - ['DDDo [metų diena]', '45-oji metų diena'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '2010 m. vasario 14 d.'], - ['LLL', '2010 m. vasario 14 d., 15:25 val.'], - ['LLLL', '2010 m. vasario 14 d., sekmadienis, 15:25 val.'], - ['l', '2010-02-14'], - ['ll', '2010 m. vasario 14 d.'], - ['lll', '2010 m. vasario 14 d., 15:25 val.'], - ['llll', '2010 m. vasario 14 d., Sek, 15:25 val.'] + [ + 'dddd, Do MMMM YYYY, HH:mm:ss', + 'Жекшемби, 14-чү февраль 2010, 15:25:50', + ], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -36878,183 +62812,374 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1-oji', '1-oji'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-oji', '2-oji'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-oji', '3-oji'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-oji', '4-oji'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-oji', '5-oji'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-oji', '6-oji'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-oji', '7-oji'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-oji', '8-oji'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-oji', '9-oji'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-oji', '10-oji'); + 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-oji', '11-oji'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-oji', '12-oji'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-oji', '13-oji'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-oji', '14-oji'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-oji', '15-oji'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-oji', '16-oji'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-oji', '17-oji'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-oji', '18-oji'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-oji', '19-oji'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-oji', '20-oji'); + 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-oji', '21-oji'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-oji', '22-oji'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-oji', '23-oji'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-oji', '24-oji'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-oji', '25-oji'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-oji', '26-oji'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-oji', '27-oji'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-oji', '28-oji'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-oji', '29-oji'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-oji', '30-oji'); + 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-oji', '31-oji'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-чи', '31st'); }); test('format month', function (assert) { - var expected = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split('_'), i; + var expected = 'январь янв_февраль фев_март март_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.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('format week on US calendar', function (assert) { - // Tests, whether the weekday names are correct, even if the week does not start on Monday - moment.updateLocale('lt', {week: {dow: 0, doy: 6}}); - var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split('_'), i; + var expected = 'Жекшемби Жек Жк_Дүйшөмбү Дүй Дй_Шейшемби Шей Шй_Шаршемби Шар Шр_Бейшемби Бей Бй_Жума Жум Жм_Ишемби Ише Иш'.split( + '_' + ), + i; 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 ddd dd'), + expected[i], + expected[i] + ); } - moment.updateLocale('lt', null); }); test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'kelios sekundės', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minutė', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minutė', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutės', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 10}), true), '10 minučių', '10 minutes = 10 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 11}), true), '11 minučių', '11 minutes = 11 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 19}), true), '19 minučių', '19 minutes = 19 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 20}), true), '20 minučių', '20 minutes = 20 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutės', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'valanda', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'valanda', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 valandos', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 valandos', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 10}), true), '10 valandų', '10 hours = 10 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 valandos', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diena', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diena', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienos', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diena', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienos', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 10}), true), '10 dienų', '10 days = 10 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienos', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mėnuo', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mėnuo', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mėnuo', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mėnesiai', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mėnesiai', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mėnesiai', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mėnuo', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mėnesiai', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 10}), true), '10 mėnesių', '10 months = 10 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'metai', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 metai', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'metai', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 metai', '5 years = 5 years'); + 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), + '2 саат', + '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), + '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 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), + '2 ай', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'po kelių sekundžių', 'prefix'); - assert.equal(moment(0).from(30000), 'prieš kelias sekundes', '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(), 'prieš kelias sekundes', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'бирнече секунд мурун', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'po kelių sekundžių', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'po 5 dienų', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'бирнече секунд ичинде', + 'in a few seconds' + ); + 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(), 'Šiandien 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Šiandien 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Šiandien 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Rytoj 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Šiandien 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Vakar 12:00', 'yesterday at the same time'); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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('[Praėjusį] dddd LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[Өткөн аптанын] dddd [күнү] [саат] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Praėjusį] dddd LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Praėjusį] dddd LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52-oji', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1-oji', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1-oji', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2-oji', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2-oji', 'Jan 15 2012 should be week 2'); - }); - - test('month cases', function (assert) { - assert.equal(moment([2015, 4, 1]).format('LL'), '2015 m. gegužės 1 d.', 'uses format instead of standalone form'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3-чү', + 'Jan 15 2012 should be week 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -37069,27 +63194,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -37099,8 +63229,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -37113,7 +63245,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -37122,16 +63257,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -37139,7 +63280,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -37147,12 +63290,21 @@ 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'); + 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' + ); } }); @@ -37160,12 +63312,27 @@ 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'); + 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' + ); } }); @@ -37174,7 +63341,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -37184,24 +63354,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -37220,19 +63394,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -37247,7 +63441,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -37257,7 +63457,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -37270,7 +63477,11 @@ 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'); + 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'); @@ -37285,65 +63496,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('lv'); + localeModule('lb'); test('parse', function (assert) { - var tests = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split('_'), i; + var tests = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -37354,34 +63604,44 @@ 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, Do MMMM YYYY, h:mm:ss a', 'svētdiena, 14. februāris 2010, 3:25:50 pm'], - ['ddd, hA', 'Sv, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 februāris feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. svētdiena Sv Sv'], - ['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', '14.02.2010.'], - ['LL', '2010. gada 14. februāris'], - ['LLL', '2010. gada 14. februāris, 15:25'], - ['LLLL', '2010. gada 14. februāris, svētdiena, 15:25'], - ['l', '14.2.2010.'], - ['ll', '2010. gada 14. feb'], - ['lll', '2010. gada 14. feb, 15:25'], - ['llll', '2010. gada 14. feb, Sv, 15:25'] + [ + 'dddd, Do MMMM YYYY, HH:mm:ss', + 'Sonndeg, 14. Februar 2010, 15:25:50', + ], + ['ddd, HH:mm', 'So., 15:25'], + ['M Mo MM MMMM MMM', '2 2. 02 Februar Febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. Sonndeg 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', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50 Auer'], + ['L', '14.02.2010'], + ['LL', '14. Februar 2010'], + ['LLL', '14. Februar 2010 15:25 Auer'], + ['LLLL', 'Sonndeg, 14. Februar 2010 15:25 Auer'], + ['l', '14.2.2010'], + ['ll', '14. Febr. 2010'], + ['lll', '14. Febr. 2010 15:25 Auer'], + ['llll', 'So., 14. Febr. 2010 15:25 Auer'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -37390,190 +63650,361 @@ } }); - 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 = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split('_'), i; + var expected = 'Januar Jan._Februar Febr._Mäerz Mrz._Abrëll Abr._Mee Mee_Juni Jun._Juli Jul._August Aug._September Sept._Oktober Okt._November Nov._Dezember Dez.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'svētdiena Sv Sv_pirmdiena P P_otrdiena O O_trešdiena T T_ceturtdiena C C_piektdiena Pk Pk_sestdiena S S'.split('_'), i; + var expected = 'Sonndeg So. So_Méindeg Mé. Mé_Dënschdeg Dë. Dë_Mëttwoch Më. Më_Donneschdeg Do. Do_Freideg Fr. Fr_Samschdeg Sa. Sa'.split( + '_' + ), + i; 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 ddd dd'), + expected[i], + expected[i] + ); } }); - // Includes testing the cases of withoutSuffix = true and false. test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'dažas sekundes', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), false), 'pirms dažām sekundēm', '44 seconds with suffix = seconds ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minūte', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), false), 'pirms minūtes', '45 seconds with suffix = a minute ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minūte', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: -89}), false), 'pēc minūtes', '89 seconds with suffix/prefix = in a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minūtes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), false), 'pirms 2 minūtēm', '90 seconds with suffix = 2 minutes ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minūtes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), false), 'pirms 44 minūtēm', '44 minutes with suffix = 44 minutes ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'stunda', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), false), 'pirms stundas', '45 minutes with suffix = an hour ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'stunda', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 stundas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: -90}), false), 'pēc 2 stundām', '90 minutes with suffix = in 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 stundas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), false), 'pirms 5 stundām', '5 hours with suffix = 5 hours ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 stunda', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), false), 'pirms 21 stundas', '21 hours with suffix = 21 hours ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'diena', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), false), 'pirms dienas', '22 hours with suffix = a day ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'diena', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dienas', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), false), 'pirms 2 dienām', '36 hours with suffix = 2 days ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'diena', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dienas', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), false), 'pirms 5 dienām', '5 days with suffix = 5 days ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dienas', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), false), 'pirms 25 dienām', '25 days with suffix = 25 days ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mēnesis', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), false), 'pirms mēneša', '26 days with suffix = a month ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mēnesis', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mēnesis', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mēneši', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), false), 'pirms 2 mēnešiem', '46 days with suffix = 2 months ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mēneši', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mēneši', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), false), 'pirms 3 mēnešiem', '76 days with suffix = 3 months ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mēnesis', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mēneši', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), false), 'pirms 5 mēnešiem', '5 months with suffix = 5 months ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'gads', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), false), 'pirms gada', '345 days with suffix = a year ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 gadi', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), false), 'pirms 2 gadiem', '548 days with suffix = 2 years ago'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'gads', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 gadi', '5 years = 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), false), 'pirms 5 gadiem', '5 years with suffix = 5 years ago'); - - // test that numbers ending with 1 are singular except for when they end with 11 in which case they are plural - assert.equal(start.from(moment([2007, 1, 28]).add({y: 11}), true), '11 gadi', '11 years = 11 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 21}), true), '21 gads', '21 year = 21 year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 211}), true), '211 gadi', '211 years = 211 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 221}), false), 'pirms 221 gada', '221 year with suffix = 221 years ago'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'e puer Sekonnen', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'eng Minutt', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'eng Minutt', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 Minutten', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 Minutten', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'eng Stonn', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'eng Stonn', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 Stonnen', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 Stonnen', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 Stonnen', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'een Dag', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'een Dag', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 Deeg', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'een Dag', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 Deeg', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 Deeg', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'ee Mount', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'ee Mount', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'ee Mount', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 Méint', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 Méint', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 Méint', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'ee Mount', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 Méint', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'ee Joer', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 Joer', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ee Joer', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 Joer', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'pēc dažām sekundēm', 'prefix'); - assert.equal(moment(0).from(30000), 'pirms dažām sekundēm', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'pirms dažām sekundēm', 'now from now should display as in the past'); + assert.equal(moment(30000).from(0), 'an e puer Sekonnen', 'prefix'); + assert.equal(moment(0).from(30000), 'virun e puer Sekonnen', 'suffix'); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'pēc dažām sekundēm', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'pēc 5 dienām', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'an e puer Sekonnen', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 1 }).fromNow(), + 'an engem Dag', + 'in one day' + ); + assert.equal(moment().add({ d: 2 }).fromNow(), 'an 2 Deeg', 'in 2 days'); + assert.equal(moment().add({ d: 3 }).fromNow(), 'an 3 Deeg', 'in 3 days'); + assert.equal(moment().add({ d: 4 }).fromNow(), 'a 4 Deeg', 'in 4 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'a 5 Deeg', 'in 5 days'); + assert.equal(moment().add({ d: 6 }).fromNow(), 'a 6 Deeg', 'in 6 days'); + assert.equal(moment().add({ d: 7 }).fromNow(), 'a 7 Deeg', 'in 7 days'); + assert.equal(moment().add({ d: 8 }).fromNow(), 'an 8 Deeg', 'in 8 days'); + assert.equal(moment().add({ d: 9 }).fromNow(), 'an 9 Deeg', 'in 9 days'); + assert.equal(moment().add({ d: 10 }).fromNow(), 'an 10 Deeg', 'in 10 days'); + assert.equal( + moment().add({ y: 100 }).fromNow(), + 'an 100 Joer', + 'in 100 years' + ); + assert.equal( + moment().add({ y: 400 }).fromNow(), + 'a 400 Joer', + 'in 400 years' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Šodien pulksten 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Šodien pulksten 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Šodien pulksten 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Rīt pulksten 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Šodien pulksten 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Vakar pulksten 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Haut um 12:00 Auer', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Haut um 12:25 Auer', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Haut um 13:00 Auer', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Muer um 12:00 Auer', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Haut um 11:00 Auer', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Gëschter um 12:00 Auer', + '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 [pulksten] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [um] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [um] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [pulksten] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [um] LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { - var i, m; + var i, m, weekday, datestring; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + + // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) + weekday = parseInt(m.format('d'), 10); + datestring = + weekday === 2 || weekday === 4 + ? '[Leschten] dddd [um] LT' + : '[Leschte] dddd [um] LT'; + + assert.equal( + m.calendar(), + m.format(datestring), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format(datestring), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[Pagājušā] dddd [pulksten] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(datestring), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + test('weeks year starting sunday format', function (assert) { + 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, 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'), + '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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -37588,27 +64019,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -37618,8 +64054,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -37632,7 +64070,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -37641,16 +64082,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -37658,7 +64105,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -37666,12 +64115,21 @@ 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'); + 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' + ); } }); @@ -37679,12 +64137,27 @@ 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'); + 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' + ); } }); @@ -37693,7 +64166,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -37703,24 +64179,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -37739,19 +64219,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -37766,7 +64266,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -37776,7 +64282,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -37789,7 +64302,11 @@ 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'); + 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'); @@ -37804,66 +64321,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('me'); + localeModule('lo'); test('parse', function (assert) { - var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), + var tests = 'ມັງກອນ ມັງກອນ_ກຸມພາ ກຸມພາ_ມີນາ ມີນາ_ເມສາ ເມສາ_ພຶດສະພາ ພຶດສະພາ_ມິຖຸນາ ມິຖຸນາ_ກໍລະກົດ ກໍລະກົດ_ສິງຫາ ສິງຫາ_ກັນຍາ ກັນຍາ_ຕຸລາ ຕຸລາ_ພະຈິກ ພະຈິກ_ທັນວາ ທັນວາ'.split( + '_' + ), i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -37874,34 +64428,44 @@ 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, Do MMMM YYYY, h:mm:ss a', 'nedjelja, 14. februar 2010, 3:25:50 pm'], - ['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. 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. 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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'ອາທິດ, ກຸມພາ ທີ່14 2010, 3:25:50 ຕອນແລງ', + ], + ['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', '8 ທີ່8 08'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'ຕອນແລງ ຕອນແລງ'], + ['[ວັນ]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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -37911,199 +64475,374 @@ }); 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._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), + var expected = 'ມັງກອນ ມັງກອນ_ກຸມພາ ກຸມພາ_ມີນາ ມີນາ_ເມສາ ເມສາ_ພຶດສະພາ ພຶດສະພາ_ມິຖຸນາ ມິຖຸນາ_ກໍລະກົດ ກໍລະກົດ_ສິງຫາ ສິງຫາ_ກັນຍາ ກັນຍາ_ຕຸລາ ຕຸລາ_ພະຈິກ ພະຈິກ_ທັນວາ ທັນວາ'.split( + '_' + ), i; 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 MMM'), + expected[i], + expected[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('_'), + var expected = 'ອາທິດ ທິດ ທ_ຈັນ ຈັນ ຈ_ອັງຄານ ອັງຄານ ອຄ_ພຸດ ພຸດ ພ_ພະຫັດ ພະຫັດ ພຫ_ສຸກ ສຸກ ສກ_ເສົາ ເສົາ ສ'.split( + '_' + ), i; 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 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), 'nekoliko sekundi', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedan minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedan minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuta', '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'); + 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), + '1 ນາທີ', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + '1 ນາທີ', + '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), + '1 ຊົ່ວໂມງ', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + '1 ຊົ່ວໂມງ', + '89 minutes = an hour' + ); + assert.equal( + 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), + '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), + '1 ມື້', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '1 ມື້', + '35 hours = a day' + ); + assert.equal( + 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), + '1 ມື້', + '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), + '1 ເດືອນ', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '1 ເດືອນ', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + '1 ເດືອນ', + '43 days = a month' + ); + assert.equal( + 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), + '2 ເດືອນ', + '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 ເດືອນ', + '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), + '1 ປີ', + '345 days = a year' + ); + assert.equal( + 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), + '1 ປີ', + '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), 'za nekoliko sekundi', 'prefix'); - assert.equal(moment(0).from(30000), 'prije nekoliko 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 nekoliko sekundi', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'ບໍ່ເທົ່າໃດວິນາທີຜ່ານມາ', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za nekoliko sekundi', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'ອີກ ບໍ່ເທົ່າໃດວິນາທີ', + 'in a few seconds' + ); + 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(), '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'); - assert.equal(moment(a).add({d: 1}).calendar(), 'sjutra 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če 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'; - } - } + 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' + ); + }); + 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(makeFormat(m)), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[ວັນ]dddd[ໜ້າເວລາ] LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { var i, m; - function makeFormat(d) { - var lastWeekDay = [ - '[prošle] [nedjelje] [u] LT', - '[prošlog] [ponedjeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srijede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - - return lastWeekDay[d.day()]; - } - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + 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'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -38118,27 +64857,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -38148,8 +64892,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -38162,7 +64908,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -38171,16 +64920,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -38188,7 +64943,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -38196,12 +64953,21 @@ 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'); + 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' + ); } }); @@ -38209,12 +64975,27 @@ 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'); + 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' + ); } }); @@ -38223,7 +65004,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -38233,24 +65017,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -38269,19 +65057,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -38296,7 +65104,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -38306,7 +65120,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -38319,7 +65140,11 @@ 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'); + 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'); @@ -38334,65 +65159,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('mi'); + localeModule('lt'); test('parse', function (assert) { - var tests = 'Kohi-tāte Kohi_Hui-tanguru Hui_Poutū-te-rangi Pou_Paenga-whāwhā Pae_Haratua Hara_Pipiri Pipi_Hōngoingoi Hōngoi_Here-turi-kōkā Here_Mahuru Mahu_Whiringa-ā-nuku Whi-nu_Whiringa-ā-rangi Whi-ra_Hakihea Haki'.split('_'), i; + var tests = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -38403,34 +65266,44 @@ 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', 'Rātapu, Hui-tanguru 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Ta, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Hui-tanguru Hui'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º Rātapu Ta Ta'], - ['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', '14/02/2010'], - ['LL', '14 Hui-tanguru 2010'], - ['LLL', '14 Hui-tanguru 2010 i 15:25'], - ['LLLL', 'Rātapu, 14 Hui-tanguru 2010 i 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Hui 2010'], - ['lll', '14 Hui 2010 i 15:25'], - ['llll', 'Ta, 14 Hui 2010 i 15:25'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'sekmadienis, 14-oji vasario 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sek, 3PM'], + ['M Mo MM MMMM MMM', '2 2-oji 02 vasaris vas'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14-oji 14'], + ['d do dddd ddd dd', '0 0-oji sekmadienis Sek S'], + ['DDD DDDo DDDD', '45 45-oji 045'], + ['w wo ww', '6 6-oji 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'pm PM'], + ['DDDo [metų diena]', '45-oji metų diena'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '2010 m. vasario 14 d.'], + ['LLL', '2010 m. vasario 14 d., 15:25 val.'], + ['LLLL', '2010 m. vasario 14 d., sekmadienis, 15:25 val.'], + ['l', '2010-02-14'], + ['ll', '2010 m. vasario 14 d.'], + ['lll', '2010 m. vasario 14 d., 15:25 val.'], + ['llll', '2010 m. vasario 14 d., Sek, 15:25 val.'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -38440,163 +65313,433 @@ }); 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-oji', '1-oji'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2-oji', '2-oji'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3-oji', '3-oji'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4-oji', '4-oji'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5-oji', '5-oji'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6-oji', '6-oji'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7-oji', '7-oji'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8-oji', '8-oji'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9-oji', '9-oji'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10-oji', '10-oji'); - 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-oji', '11-oji'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12-oji', '12-oji'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13-oji', '13-oji'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14-oji', '14-oji'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15-oji', '15-oji'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16-oji', '16-oji'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17-oji', '17-oji'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18-oji', '18-oji'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19-oji', '19-oji'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20-oji', '20-oji'); - 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-oji', '21-oji'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22-oji', '22-oji'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23-oji', '23-oji'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24-oji', '24-oji'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25-oji', '25-oji'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26-oji', '26-oji'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27-oji', '27-oji'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28-oji', '28-oji'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29-oji', '29-oji'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30-oji', '30-oji'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31º', '31º'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31-oji', '31-oji'); }); test('format month', function (assert) { - var expected = 'Kohi-tāte Kohi_Hui-tanguru Hui_Poutū-te-rangi Pou_Paenga-whāwhā Pae_Haratua Hara_Pipiri Pipi_Hōngoingoi Hōngoi_Here-turi-kōkā Here_Mahuru Mahu_Whiringa-ā-nuku Whi-nu_Whiringa-ā-rangi Whi-ra_Hakihea Haki'.split('_'), i; + var expected = 'sausis sau_vasaris vas_kovas kov_balandis bal_gegužė geg_birželis bir_liepa lie_rugpjūtis rgp_rugsėjis rgs_spalis spa_lapkritis lap_gruodis grd'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Rātapu Ta Ta_Mane Ma Ma_Tūrei Tū Tū_Wenerei We We_Tāite Tāi Tāi_Paraire Pa Pa_Hātarei Hā Hā'.split('_'), i; + var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split( + '_' + ), + i; 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 ddd dd'), + expected[i], + expected[i] + ); + } + }); + + test('format week on US calendar', function (assert) { + // Tests, whether the weekday names are correct, even if the week does not start on Monday + moment.updateLocale('lt', { week: { dow: 0, doy: 6 } }); + var expected = 'sekmadienis Sek S_pirmadienis Pir P_antradienis Ant A_trečiadienis Tre T_ketvirtadienis Ket K_penktadienis Pen Pn_šeštadienis Šeš Š'.split( + '_' + ), + i; + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd dd'), + expected[i], + expected[i] + ); } + moment.updateLocale('lt', null); }); test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'te hēkona ruarua', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'he meneti', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'he meneti', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 meneti', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 meneti', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'te haora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'te haora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 haora', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 haora', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 haora', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'he ra', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'he ra', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ra', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'he ra', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ra', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ra', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'he marama', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'he marama', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'he marama', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 marama', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 marama', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 marama', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'he marama', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 marama', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'he tau', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tau', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'he tau', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tau', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'kelios sekundės', + '44 seconds = seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'minutė', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'minutė', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutės', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 10 }), true), + '10 minučių', + '10 minutes = 10 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 11 }), true), + '11 minučių', + '11 minutes = 11 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 19 }), true), + '19 minučių', + '19 minutes = 19 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 20 }), true), + '20 minučių', + '20 minutes = 20 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutės', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'valanda', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'valanda', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 valandos', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 valandos', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 10 }), true), + '10 valandų', + '10 hours = 10 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 valandos', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'diena', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'diena', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dienos', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'diena', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dienos', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 10 }), true), + '10 dienų', + '10 days = 10 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dienos', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'mėnuo', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'mėnuo', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'mėnuo', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mėnesiai', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mėnesiai', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mėnesiai', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'mėnuo', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mėnesiai', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 10 }), true), + '10 mėnesių', + '10 months = 10 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'metai', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 metai', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'metai', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 metai', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'i roto i te hēkona ruarua', 'prefix'); - assert.equal(moment(0).from(30000), 'te hēkona ruarua i mua', 'suffix'); + assert.equal(moment(30000).from(0), 'po kelių sekundžių', 'prefix'); + assert.equal(moment(0).from(30000), 'prieš kelias sekundes', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'te hēkona ruarua i mua', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'prieš kelias sekundes', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'i roto i te hēkona ruarua', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'i roto i 5 ra', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'po kelių sekundžių', + 'in seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'po 5 dienų', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'i teie mahana, i 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'i teie mahana, i 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'i teie mahana, i 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'apopo i 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'i teie mahana, i 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'inanahi i 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Šiandien 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Šiandien 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Šiandien 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Rytoj 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Šiandien 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Vakar 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 [i] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [i] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [i] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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 [whakamutunga i] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[Praėjusį] dddd LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [whakamutunga i] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[Praėjusį] dddd LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [whakamutunga i] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Praėjusį] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52-oji', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1-oji', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1-oji', + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2-oji', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2-oji', + 'Jan 15 2012 should be week 2' + ); + }); + + test('month cases', function (assert) { + assert.equal( + moment([2015, 4, 1]).format('LL'), + '2015 m. gegužės 1 d.', + 'uses format instead of standalone form' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -38611,27 +65754,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -38641,8 +65789,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -38655,7 +65805,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -38664,16 +65817,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -38681,7 +65840,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -38689,12 +65850,21 @@ 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'); + 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' + ); } }); @@ -38702,12 +65872,27 @@ 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'); + 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' + ); } }); @@ -38716,7 +65901,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -38726,24 +65914,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -38762,19 +65954,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -38789,7 +66001,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -38799,7 +66017,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -38812,7 +66037,11 @@ 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'); + 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'); @@ -38827,65 +66056,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('mk'); + localeModule('lv'); test('parse', function (assert) { - var tests = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; + var tests = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -38896,34 +66163,44 @@ 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', 'недела, февруари 14-ти 2010, 15:25:50'], - ['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-ев недела нед нe'], - ['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 февруари 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'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'svētdiena, 14. februāris 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Sv, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 februāris feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. svētdiena Sv Sv'], + ['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', '14.02.2010.'], + ['LL', '2010. gada 14. februāris'], + ['LLL', '2010. gada 14. februāris, 15:25'], + ['LLLL', '2010. gada 14. februāris, svētdiena, 15:25'], + ['l', '14.2.2010.'], + ['ll', '2010. gada 14. feb'], + ['lll', '2010. gada 14. feb, 15:25'], + ['llll', '2010. gada 14. feb, Sv, 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -38933,177 +66210,496 @@ }); 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, 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, 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, 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, 31]).format('DDDo'), '31-ви', '31-ви'); + 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 = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split('_'), i; + var expected = 'janvāris jan_februāris feb_marts mar_aprīlis apr_maijs mai_jūnijs jūn_jūlijs jūl_augusts aug_septembris sep_oktobris okt_novembris nov_decembris dec'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'недела нед нe_понеделник пон пo_вторник вто вт_среда сре ср_четврток чет че_петок пет пе_сабота саб сa'.split('_'), i; + var expected = 'svētdiena Sv Sv_pirmdiena P P_otrdiena O O_trešdiena T T_ceturtdiena C C_piektdiena Pk Pk_sestdiena S S'.split( + '_' + ), + i; 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 ddd dd'), + expected[i], + expected[i] + ); } }); + // Includes testing the cases of withoutSuffix = true and false. 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 минути', '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), '2 часа', '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), '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 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), '2 месеци', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'dažas sekundes', + '44 seconds = seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), false), + 'pirms dažām sekundēm', + '44 seconds with suffix = seconds ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'minūte', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), false), + 'pirms minūtes', + '45 seconds with suffix = a minute ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'minūte', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: -89 }), false), + 'pēc minūtes', + '89 seconds with suffix/prefix = in a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minūtes', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), false), + 'pirms 2 minūtēm', + '90 seconds with suffix = 2 minutes ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minūtes', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), false), + 'pirms 44 minūtēm', + '44 minutes with suffix = 44 minutes ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'stunda', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), false), + 'pirms stundas', + '45 minutes with suffix = an hour ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'stunda', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 stundas', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: -90 }), false), + 'pēc 2 stundām', + '90 minutes with suffix = in 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 stundas', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), false), + 'pirms 5 stundām', + '5 hours with suffix = 5 hours ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 stunda', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), false), + 'pirms 21 stundas', + '21 hours with suffix = 21 hours ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'diena', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), false), + 'pirms dienas', + '22 hours with suffix = a day ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'diena', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dienas', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), false), + 'pirms 2 dienām', + '36 hours with suffix = 2 days ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'diena', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dienas', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), false), + 'pirms 5 dienām', + '5 days with suffix = 5 days ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dienas', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), false), + 'pirms 25 dienām', + '25 days with suffix = 25 days ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'mēnesis', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), false), + 'pirms mēneša', + '26 days with suffix = a month ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'mēnesis', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'mēnesis', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mēneši', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), false), + 'pirms 2 mēnešiem', + '46 days with suffix = 2 months ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mēneši', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mēneši', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), false), + 'pirms 3 mēnešiem', + '76 days with suffix = 3 months ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'mēnesis', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mēneši', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), false), + 'pirms 5 mēnešiem', + '5 months with suffix = 5 months ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'gads', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), false), + 'pirms gada', + '345 days with suffix = a year ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 gadi', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), false), + 'pirms 2 gadiem', + '548 days with suffix = 2 years ago' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'gads', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 gadi', + '5 years = 5 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), false), + 'pirms 5 gadiem', + '5 years with suffix = 5 years ago' + ); + + // test that numbers ending with 1 are singular except for when they end with 11 in which case they are plural + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 11 }), true), + '11 gadi', + '11 years = 11 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 21 }), true), + '21 gads', + '21 year = 21 year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 211 }), true), + '211 gadi', + '211 years = 211 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 221 }), false), + 'pirms 221 gada', + '221 year with suffix = 221 years ago' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'после неколку секунди', 'prefix'); - assert.equal(moment(0).from(30000), 'пред неколку секунди', 'suffix'); + assert.equal(moment(30000).from(0), 'pēc dažām sekundēm', 'prefix'); + assert.equal(moment(0).from(30000), 'pirms dažām sekundēm', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'пред неколку секунди', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'pirms dažām sekundēm', + '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 дена', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'pēc dažām sekundēm', + 'in seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'pēc 5 dienām', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal( + moment(a).calendar(), + 'Šodien pulksten 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Šodien pulksten 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Šodien pulksten 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Rīt pulksten 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Šodien pulksten 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Vakar pulksten 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 [во] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [pulksten] 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'); + assert.equal( + m.calendar(), + m.format('dddd [pulksten] 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'); + assert.equal( + m.calendar(), + m.format('dddd [pulksten] 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: - 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(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[Pagājušā] dddd [pulksten] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[Pagājušā] dddd [pulksten] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Pagājušā] dddd [pulksten] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -39118,27 +66714,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -39148,8 +66749,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -39162,7 +66765,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -39171,16 +66777,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -39188,7 +66800,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -39196,12 +66810,21 @@ 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'); + 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' + ); } }); @@ -39209,12 +66832,27 @@ 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'); + 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' + ); } }); @@ -39223,7 +66861,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -39233,24 +66874,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -39269,19 +66914,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -39296,7 +66961,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -39306,7 +66977,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -39319,7 +66997,11 @@ 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'); + 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'); @@ -39334,65 +67016,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ml'); + localeModule('me'); test('parse', function (assert) { - var tests = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split('_'), i; + var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -39403,33 +67125,44 @@ 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, Do MMMM YYYY, a h:mm:ss -നു', 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു'], - ['ddd, a h -നു', 'ഞായർ, ഉച്ച കഴിഞ്ഞ് 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', 'ഉച്ച കഴിഞ്ഞ് ഉച്ച കഴിഞ്ഞ്'], - ['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 -നു'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'nedjelja, 14. februar 2010, 3:25:50 pm', + ], + ['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. 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. 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; @@ -39439,179 +67172,408 @@ }); 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('_'), i; + var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'ഞായറാഴ്ച ഞായർ ഞാ_തിങ്കളാഴ്ച തിങ്കൾ തി_ചൊവ്വാഴ്ച ചൊവ്വ ചൊ_ബുധനാഴ്ച ബുധൻ ബു_വ്യാഴാഴ്ച വ്യാഴം വ്യാ_വെള്ളിയാഴ്ച വെള്ളി വെ_ശനിയാഴ്ച ശനി ശ'.split('_'), i; + var expected = '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 dd'), expected[i], expected[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), 'അൽപ നിമിഷങ്ങൾ', '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), '2 മണിക്കൂർ', '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), '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 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), '2 മാസം', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'nekoliko sekundi', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'jedan minut', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'jedan minut', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuta', + '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), 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്', 'prefix'); - assert.equal(moment(0).from(30000), 'അൽപ നിമിഷങ്ങൾ മുൻപ്', 'suffix'); + assert.equal(moment(30000).from(0), 'za nekoliko sekundi', 'prefix'); + assert.equal(moment(0).from(30000), 'prije nekoliko sekundi', 'prefix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'അൽപ നിമിഷങ്ങൾ മുൻപ്', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'prije nekoliko sekundi', + '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(), '5 ദിവസം കഴിഞ്ഞ്', '5 ദിവസം കഴിഞ്ഞ്'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'za nekoliko sekundi', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'za 5 dana', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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(), 'ഇന്ന് ഉച്ച കഴിഞ്ഞ് 3:00 -നു', 'Now plus 3 hours'); - 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'); + 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' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'sjutra 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če 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[,] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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[,] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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[,] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { var i, m; + function makeFormat(d) { + var lastWeekDay = [ + '[prošle] [nedjelje] [u] LT', + '[prošlog] [ponedjeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srijede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT', + ]; + + return lastWeekDay[d.day()]; + } + for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[കഴിഞ്ഞ] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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[,] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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[,] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + '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(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'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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'); + 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([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'); + 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')) : @@ -39626,27 +67588,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -39656,8 +67623,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -39670,7 +67639,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -39679,16 +67651,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -39696,7 +67674,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -39704,12 +67684,21 @@ 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'); + 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' + ); } }); @@ -39717,12 +67706,27 @@ 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'); + 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' + ); } }); @@ -39731,7 +67735,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -39741,24 +67748,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -39777,19 +67788,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -39804,7 +67835,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -39814,7 +67851,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -39827,7 +67871,11 @@ 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'); + 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'); @@ -39842,70 +67890,106 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('mn'); + localeModule('mi'); test('parse', function (assert) { - var i, - tests = 'Нэгдүгээр сар-1 сар_Хоёрдугаар сар-2 сар_Гуравдугаар сар-3 сар_Дөрөвдүгээр сар-4 сар_Тавдугаар сар-5 сар_Зургадугаар сар-6 сар_Долдугаар сар-7 сар_Наймдугаар сар-8 сар_Есдүгээр сар-9 сар_Аравдугаар сар-10 сар_Арван нэгдүгээр сар-11 сар_Арван хоёрдугаар сар-12 сар'.split('_'); - + var tests = 'Kohi-tāte Kohi_Hui-tanguru Hui_Poutū-te-rangi Pou_Paenga-whāwhā Pae_Haratua Hara_Pipiri Pipi_Hōngoingoi Hōngoi_Here-turi-kōkā Here_Mahuru Mahu_Whiringa-ā-nuku Whi-nu_Whiringa-ā-rangi Whi-ra_Hakihea Haki'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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('-'); + tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); equalTest(tests[i][1], 'MMM', i); equalTest(tests[i][0], 'MMMM', i); @@ -39914,165 +67998,343 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - assert.equal(moment('5 сар 11 1989', ['MMM DD YYYY']).format('YYYY-MM-DD'), '1989-05-11'); - assert.equal(moment('1989 он, Арван хоёрдугаар сар 11', ['YYYY [он], MMMM DD']).format('YYYY-MM-DD'), '1989-12-11'); - assert.equal(moment('1989 оны 11 сарын 2', ['YYYY [оны] MMMM[ын] DD']).format('YYYY-MM-D'), '1989-11-2'); - assert.equal(moment('1989 оны 5 сарын 11 өдөр', ['YYYY [оны] MMMM[ын] Do']).format('YYYY-MM-DD'), '1989-05-11'); - assert.equal(moment('1989 оны 5 сарын 11 өдөр 11:25 ҮӨ', ['YYYY [оны] MMM[ын] Do h:mm a']).format('YYYY-MM-DD h:mm a'), '1989-05-11 11:25 ҮӨ'); - assert.equal(moment('2003 оны Дөрөвдүгээр сарын 11 өдөр 17:25 ҮХ', ['YYYY [оны] MMMM[ын] Do HH:mm a']).format('YYYY-MM-DD HH:mm a'), '2003-04-11 17:25 ҮХ'); + 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 ҮХ'], - ['ddd, hA', 'Ням, 3ҮХ'], - ['M Mo MM MMMM MMM', '2 2 02 Хоёрдугаар сар 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', 'ҮХ ҮХ'], - ['[the] DDDo [day of the year]', 'the 45 өдөр day of the year'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '2010 оны Хоёрдугаар сарын 14'], - ['LLL', '2010 оны Хоёрдугаар сарын 14 15:25'], - ['LLLL', 'Ням, 2010 оны Хоёрдугаар сарын 14 15:25'], - ['l', '2010-2-14'], - ['ll', '2010 оны 2 сарын 14'], - ['lll', '2010 оны 2 сарын 14 15:25'], - ['llll', 'Ням, 2010 оны 2 сарын 14 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Rātapu, Hui-tanguru 14º 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Ta, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 Hui-tanguru Hui'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º Rātapu Ta Ta'], + ['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', '14/02/2010'], + ['LL', '14 Hui-tanguru 2010'], + ['LLL', '14 Hui-tanguru 2010 i 15:25'], + ['LLLL', 'Rātapu, 14 Hui-tanguru 2010 i 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Hui 2010'], + ['lll', '14 Hui 2010 i 15:25'], + ['llll', 'Ta, 14 Hui 2010 i 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 meridiem', function (assert) { - assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ҮӨ', 'AM'); - assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'ҮӨ', 'AM'); - assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'ҮХ', 'PM'); - assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'ҮХ', 'PM'); - }); - test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), '1 өдөр', '1st'); + 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 = 'Нэгдүгээр сар 1 сар_Хоёрдугаар сар 2 сар_Гуравдугаар сар 3 сар_Дөрөвдүгээр сар 4 сар_Тавдугаар сар 5 сар_Зургадугаар сар 6 сар_Долдугаар сар 7 сар_Наймдугаар сар 8 сар_Есдүгээр сар 9 сар_Аравдугаар сар 10 сар_Арван нэгдүгээр сар 11 сар_Арван хоёрдугаар сар 12 сар'.split('_'); - + var expected = 'Kohi-tāte Kohi_Hui-tanguru Hui_Poutū-te-rangi Pou_Paenga-whāwhā Pae_Haratua Hara_Pipiri Pipi_Hōngoingoi Hōngoi_Here-turi-kōkā Here_Mahuru Mahu_Whiringa-ā-nuku Whi-nu_Whiringa-ā-rangi Whi-ra_Hakihea Haki'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var i, - expected = 'Ням Ням Ня_Даваа Дав Да_Мягмар Мяг Мя_Лхагва Лха Лх_Пүрэв Пүр Пү_Баасан Баа Ба_Бямба Бям Бя'.split('_'); - + var expected = 'Rātapu Ta Ta_Mane Ma Ma_Tūrei Tū Tū_Wenerei We We_Tāite Tāi Tāi_Paraire Pa Pa_Hātarei Hā Hā'.split( + '_' + ), + i; 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 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), 'хэдхэн секунд', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 минут', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 минут', '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), '1 цаг', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 цаг', '89 minutes = an hour'); - assert.equal(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), '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), '1 өдөр', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 өдөр', '35 hours = a day'); - assert.equal(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), '1 өдөр', '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), '1 сар', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 сар', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 сар', '43 days = a month'); - assert.equal(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), '2 сар', '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 сар', '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), '1 жил', '345 days = a year'); - assert.equal(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), '1 жил', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 жил', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'te hēkona ruarua', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'he meneti', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'he meneti', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 meneti', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 meneti', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'te haora', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'te haora', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 haora', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 haora', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 haora', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'he ra', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'he ra', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 ra', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'he ra', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 ra', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 ra', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'he marama', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'he marama', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'he marama', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 marama', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 marama', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 marama', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'he marama', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 marama', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'he tau', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 tau', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'he tau', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 tau', + '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), 'i roto i te hēkona ruarua', 'prefix'); + assert.equal(moment(0).from(30000), 'te hēkona ruarua i mua', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'хэдхэн секундын өмнө', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'te hēkona ruarua i mua', + '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({s: 50}).fromNow(), '1 минутын дараа', 'in a minute'); - assert.equal(moment().add({m: 5}).fromNow(), '5 минутын дараа', 'in 5 minutes'); - assert.equal(moment().add({h: 2}).fromNow(), '2 цагийн дараа', 'in 2 hours'); - assert.equal(moment().add({d: 5}).fromNow(), '5 өдрийн дараа', 'in 5 days'); - assert.equal(moment().add({M: 2}).fromNow(), '2 сарын дараа', 'in 2 months'); - assert.equal(moment().add({M: 15}).fromNow(), '1 жилийн дараа', 'in a year'); - assert.equal(moment().add({M: 16}).fromNow(), '1 жилийн дараа', 'in a year'); - assert.equal(moment().add({M: 23}).fromNow(), '2 жилийн дараа', 'in 2 years'); - assert.equal(moment().add({y: 7}).fromNow(), '7 жилийн дараа', 'in 7 years'); - - assert.equal(moment().subtract({s: 30}).fromNow(), 'хэдхэн секундын өмнө', 'a few seconds ago'); - assert.equal(moment().subtract({s: 50}).fromNow(), '1 минутын өмнө', 'a minute ago'); - assert.equal(moment().subtract({m: 5}).fromNow(), '5 минутын өмнө', '5 minutes ago'); - assert.equal(moment().subtract({h: 2}).fromNow(), '2 цагийн өмнө', '2 hours ago'); - assert.equal(moment().subtract({d: 5}).fromNow(), '5 өдрийн өмнө', '5 days ago'); - assert.equal(moment().subtract({M: 2}).fromNow(), '2 сарын өмнө', '2 months ago'); - assert.equal(moment().subtract({M: 15}).fromNow(), '1 жилийн өмнө', 'a year ago'); - assert.equal(moment().subtract({M: 16}).fromNow(), '1 жилийн өмнө', 'a year ago'); - assert.equal(moment().subtract({M: 23}).fromNow(), '2 жилийн өмнө', '2 years ago'); - assert.equal(moment().subtract({y: 7}).fromNow(), '7 жилийн өмнө', '7 years ago'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'i roto i te hēkona ruarua', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'i roto i 5 ra', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal( + moment(a).calendar(), + 'i teie mahana, i 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'i teie mahana, i 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'i teie mahana, i 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'apopo i 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'i teie mahana, i 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'inanahi i 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 LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [i] 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'); + assert.equal( + m.calendar(), + m.format('dddd [i] 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'); + assert.equal( + m.calendar(), + m.format('dddd [i] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -40080,40 +68342,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[Өнгөрсөн] dddd LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [whakamutunga i] 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'); + assert.equal( + m.calendar(), + m.format('dddd [whakamutunga i] 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'); + assert.equal( + m.calendar(), + m.format('dddd [whakamutunga i] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - 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'); + 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' + ); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2º', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -40128,27 +68431,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -40158,8 +68466,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -40172,7 +68482,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -40181,16 +68494,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -40198,7 +68517,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -40206,12 +68527,21 @@ 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'); + 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' + ); } }); @@ -40219,12 +68549,27 @@ 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'); + 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' + ); } }); @@ -40233,7 +68578,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -40243,24 +68591,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -40279,19 +68631,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -40306,7 +68678,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -40316,7 +68694,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -40329,7 +68714,11 @@ 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'); + 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'); @@ -40344,65 +68733,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('mr'); + localeModule('mk'); test('parse', function (assert) { - var tests = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split('_'), i; + var tests = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -40413,33 +68841,44 @@ 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, 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', 'दुपारी दुपारी'], - ['LTS', 'दुपारी ३:२५:५० वाजता'], - ['L', '१४/०२/२०१०'], - ['LL', '१४ फेब्रुवारी २०१०'], - ['LLL', '१४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], - ['LLLL', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], - ['l', '१४/२/२०१०'], - ['ll', '१४ फेब्रु. २०१०'], - ['lll', '१४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'], - ['llll', 'रवि, १४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'] + [ + 'dddd, MMMM Do YYYY, H:mm:ss', + 'недела, февруари 14-ти 2010, 15:25:50', + ], + ['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-ев недела нед нe'], + ['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 февруари 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; @@ -40449,179 +68888,388 @@ }); 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('_'), i; + var expected = 'јануари јан_февруари фев_март мар_април апр_мај мај_јуни јун_јули јул_август авг_септември сеп_октомври окт_ноември ное_декември дек'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'रविवार रवि र_सोमवार सोम सो_मंगळवार मंगळ मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split('_'), i; + var expected = 'недела нед нe_понеделник пон пo_вторник вто вт_среда сре ср_четврток чет че_петок пет пе_сабота саб сa'.split( + '_' + ), + i; 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 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), 'काही सेकंद', '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'); + 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), + '2 часа', + '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), + '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 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), + '2 месеци', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 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'); + 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'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'за неколку секунди', + 'in a few seconds' + ); + 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(), 'आज दुपारी १२:०० वाजता', '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'); - }); - - 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.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), 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'), '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'), '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.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[मागील] dddd[,] LT'), 'Today - ' + i + ' days end of day'); - } + 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' + ); }); - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); + 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.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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'), + 'Today + ' + i + ' days end of day' + ); + } + }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + test('calendar last week', function (assert) { + var i, m; - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + 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'; + } + } - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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(makeFormat(m)), + 'Today - ' + i + ' days end of day' + ); + } }); - 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'); + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - 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(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' + ); }); 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'); + 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')) : @@ -40636,27 +69284,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -40666,8 +69319,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -40680,7 +69335,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -40689,16 +69347,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -40706,7 +69370,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -40714,12 +69380,21 @@ 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'); + 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' + ); } }); @@ -40727,12 +69402,27 @@ 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'); + 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' + ); } }); @@ -40741,7 +69431,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -40751,24 +69444,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -40787,19 +69484,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -40814,7 +69531,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -40824,7 +69547,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -40837,7 +69567,11 @@ 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'); + 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'); @@ -40852,66 +69586,102 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ms-my'); + localeModule('ml'); test('parse', function (assert) { - var i, - tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); - + var tests = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1)); + 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++) { @@ -40924,38 +69694,46 @@ 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', 'Ahad, Februari 14 2010, 3:25:50 petang'], - ['ddd, hA', 'Ahd, 3petang'], - ['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 Ahad Ahd Ah'], - ['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', 'petang petang'], - ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], - ['LTS', '15.25.50'], - ['L', '14/02/2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 pukul 15.25'], - ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 pukul 15.25'], - ['llll', 'Ahd, 14 Feb 2010 pukul 15.25'] + [ + 'dddd, Do MMMM YYYY, a h:mm:ss -നു', + 'ഞായറാഴ്ച, 14 ഫെബ്രുവരി 2010, ഉച്ച കഴിഞ്ഞ് 3:25:50 -നു', + ], + ['ddd, a h -നു', 'ഞായർ, ഉച്ച കഴിഞ്ഞ് 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', 'ഉച്ച കഴിഞ്ഞ് ഉച്ച കഴിഞ്ഞ്'], + ['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 -നു'], ], 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]); } @@ -40999,130 +69777,389 @@ }); test('format month', function (assert) { - var i, - expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); - + var expected = 'ജനുവരി ജനു._ഫെബ്രുവരി ഫെബ്രു._മാർച്ച് മാർ._ഏപ്രിൽ ഏപ്രി._മേയ് മേയ്_ജൂൺ ജൂൺ_ജൂലൈ ജൂലൈ._ഓഗസ്റ്റ് ഓഗ._സെപ്റ്റംബർ സെപ്റ്റ._ഒക്ടോബർ ഒക്ടോ._നവംബർ നവം._ഡിസംബർ ഡിസം.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var i, - expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split('_'); - + var expected = 'ഞായറാഴ്ച ഞായർ ഞാ_തിങ്കളാഴ്ച തിങ്കൾ തി_ചൊവ്വാഴ്ച ചൊവ്വ ചൊ_ബുധനാഴ്ച ബുധൻ ബു_വ്യാഴാഴ്ച വ്യാഴം വ്യാ_വെള്ളിയാഴ്ച വെള്ളി വെ_ശനിയാഴ്ച ശനി ശ'.split( + '_' + ), + i; 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 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), 'beberapa saat', '44 saat = beberapa saat'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'seminit', '45 saat = seminit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'seminit', '89 saat = seminit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minit', '90 saat = 2 minit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minit', '44 minit = 44 minit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minit = sejam'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minit = sejam'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minit = 2 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 jam = 5 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 jam = 21 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 jam = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 jam = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 jam = 2 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 hari = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 hari = 5 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 hari = 25 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '45 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 hari = 2 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 hari = 2 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 hari = 3 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 bulan = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 bulan = 5 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 hari = setahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 hari = 2 tahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 tahun = setahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 tahun = 5 tahun'); + 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), + '2 മണിക്കൂർ', + '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), + '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 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), + '2 മാസം', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix'); - assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', '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(), 'beberapa saat yang lepas', 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas'); + assert.equal( + moment().fromNow(), + 'അൽപ നിമിഷങ്ങൾ മുൻപ്', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa saat', 'dalam beberapa saat'); - assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'dalam 5 hari'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്', + 'അൽപ നിമിഷങ്ങൾ കഴിഞ്ഞ്' + ); + 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(), 'Hari ini pukul 12.00', 'hari ini pada waktu yang sama'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 12.25', 'Sekarang tambah 25 minit'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 13.00', 'Sekarang tambah 1 jam'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Esok pukul 12.00', 'esok pada waktu yang sama'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 11.00', 'Sekarang tolak 1 jam'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kelmarin pukul 12.00', 'kelmarin pada waktu yang sama'); + 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(), + 'ഇന്ന് ഉച്ച കഴിഞ്ഞ് 3:00 -നു', + 'Now plus 3 hours' + ); + 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' + ); }); 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'), 'Hari ini + ' + i + ' hari waktu sekarang'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [pukul] LT'), 'Hari ini + ' + i + ' hari permulaan hari'); + assert.equal( + m.calendar(), + 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 [pukul] LT'), 'Hari ini + ' + i + ' hari tamat hari'); + assert.equal( + m.calendar(), + 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 [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari waktu sekarang'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari permulaan hari'); + assert.equal( + m.calendar(), + 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 [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari tamat hari'); + assert.equal( + m.calendar(), + 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 minggu lepas'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 1 minggu'); + 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}); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 2 minggu'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 sepatutnya minggu 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 sepatutnya minggu 3'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 sepatutnya minggu 3'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -41137,27 +70174,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -41167,8 +70209,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -41181,7 +70225,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -41190,16 +70237,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -41207,7 +70260,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -41215,12 +70270,21 @@ 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'); + 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' + ); } }); @@ -41228,12 +70292,27 @@ 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'); + 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' + ); } }); @@ -41242,7 +70321,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -41252,24 +70334,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -41288,19 +70374,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -41315,7 +70421,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -41325,7 +70437,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -41338,7 +70457,11 @@ 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'); + 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'); @@ -41353,70 +70476,107 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ms'); + localeModule('mn'); test('parse', function (assert) { var i, - tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); + tests = 'Нэгдүгээр сар-1 сар_Хоёрдугаар сар-2 сар_Гуравдугаар сар-3 сар_Дөрөвдүгээр сар-4 сар_Тавдугаар сар-5 сар_Зургадугаар сар-6 сар_Долдугаар сар-7 сар_Наймдугаар сар-8 сар_Есдүгээр сар-9 сар_Аравдугаар сар-10 сар_Арван нэгдүгээр сар-11 сар_Арван хоёрдугаар сар-12 сар'.split( + '_' + ); function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' sepatutnya bulan ' + (i + 1)); + 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(' '); + tests[i] = tests[i].split('-'); equalTest(tests[i][0], 'MMM', i); equalTest(tests[i][1], 'MMM', i); equalTest(tests[i][0], 'MMMM', i); @@ -41425,34 +70585,79 @@ 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); } + + assert.equal( + moment('5 сар 11 1989', ['MMM DD YYYY']).format('YYYY-MM-DD'), + '1989-05-11' + ); + assert.equal( + moment('1989 он, Арван хоёрдугаар сар 11', [ + 'YYYY [он], MMMM DD', + ]).format('YYYY-MM-DD'), + '1989-12-11' + ); + assert.equal( + moment('1989 оны 11 сарын 2', ['YYYY [оны] MMMM[ын] DD']).format( + 'YYYY-MM-D' + ), + '1989-11-2' + ); + assert.equal( + moment('1989 оны 5 сарын 11 өдөр', ['YYYY [оны] MMMM[ын] Do']).format( + 'YYYY-MM-DD' + ), + '1989-05-11' + ); + assert.equal( + moment('1989 оны 5 сарын 11 өдөр 11:25 ҮӨ', [ + 'YYYY [оны] MMM[ын] Do h:mm a', + ]).format('YYYY-MM-DD h:mm a'), + '1989-05-11 11:25 ҮӨ' + ); + assert.equal( + moment('2003 оны Дөрөвдүгээр сарын 11 өдөр 17:25 ҮХ', [ + 'YYYY [оны] MMMM[ын] Do HH:mm a', + ]).format('YYYY-MM-DD HH:mm a'), + '2003-04-11 17:25 ҮХ' + ); }); test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Ahad, Februari 14 2010, 3:25:50 petang'], - ['ddd, hA', 'Ahd, 3petang'], - ['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 Ahad Ahd Ah'], - ['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', 'petang petang'], - ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], - ['LTS', '15.25.50'], - ['L', '14/02/2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 pukul 15.25'], - ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], - ['l', '14/2/2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 pukul 15.25'], - ['llll', 'Ahd, 14 Feb 2010 pukul 15.25'] + [ + 'dddd, MMMM[ын] Do YYYY, h:mm:ss a', + 'Ням, Хоёрдугаар сарын 14 өдөр 2010, 3:25:50 ҮХ', + ], + ['ddd, hA', 'Ням, 3ҮХ'], + ['M Mo MM MMMM MMM', '2 2 02 Хоёрдугаар сар 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', 'ҮХ ҮХ'], + ['[the] DDDo [day of the year]', 'the 45 өдөр day of the year'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '2010 оны Хоёрдугаар сарын 14'], + ['LLL', '2010 оны Хоёрдугаар сарын 14 15:25'], + ['LLLL', 'Ням, 2010 оны Хоёрдугаар сарын 14 15:25'], + ['l', '2010-2-14'], + ['ll', '2010 оны 2 сарын 14'], + ['lll', '2010 оны 2 сарын 14 15:25'], + ['llll', 'Ням, 2010 оны 2 сарын 14 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -41462,169 +70667,448 @@ } }); - 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'); + test('format meridiem', function (assert) { + assert.equal(moment([2012, 11, 28, 0, 0]).format('A'), 'ҮӨ', 'AM'); + assert.equal(moment([2012, 11, 28, 11, 59]).format('A'), 'ҮӨ', 'AM'); + assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'ҮХ', 'PM'); + assert.equal(moment([2012, 11, 28, 23, 59]).format('A'), 'ҮХ', 'PM'); + }); - assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); + test('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1 өдөр', '1st'); }); test('format month', function (assert) { var i, - expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split('_'); + expected = 'Нэгдүгээр сар 1 сар_Хоёрдугаар сар 2 сар_Гуравдугаар сар 3 сар_Дөрөвдүгээр сар 4 сар_Тавдугаар сар 5 сар_Зургадугаар сар 6 сар_Долдугаар сар 7 сар_Наймдугаар сар 8 сар_Есдүгээр сар 9 сар_Аравдугаар сар 10 сар_Арван нэгдүгээр сар 11 сар_Арван хоёрдугаар сар 12 сар'.split( + '_' + ); 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { var i, - expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split('_'); + expected = 'Ням Ням Ня_Даваа Дав Да_Мягмар Мяг Мя_Лхагва Лха Лх_Пүрэв Пүр Пү_Баасан Баа Ба_Бямба Бям Бя'.split( + '_' + ); 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 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), 'beberapa saat', '44 saat = beberapa saat'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'seminit', '45 saat = seminit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'seminit', '89 saat = seminit'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minit', '90 saat = 2 minit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minit', '44 minit = 44 minit'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'sejam', '45 minit = sejam'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'sejam', '89 minit = sejam'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 jam', '90 minit = 2 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 jam', '5 jam = 5 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 jam', '21 jam = 21 jam'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'sehari', '22 jam = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'sehari', '35 jam = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 hari', '36 jam = 2 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'sehari', '1 hari = sehari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 hari', '5 hari = 5 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 hari', '25 hari = 25 hari'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'sebulan', '26 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'sebulan', '30 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'sebulan', '45 hari = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 bulan', '46 hari = 2 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 bulan', '75 hari = 2 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 bulan', '76 hari = 3 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'sebulan', '1 bulan = sebulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 bulan', '5 bulan = 5 bulan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'setahun', '345 hari = setahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 tahun', '548 hari = 2 tahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'setahun', '1 tahun = setahun'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 tahun', '5 tahun = 5 tahun'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix'); - assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'beberapa saat yang lepas', 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dalam beberapa saat', 'dalam beberapa saat'); - assert.equal(moment().add({d: 5}).fromNow(), 'dalam 5 hari', 'dalam 5 hari'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Hari ini pukul 12.00', 'hari ini pada waktu yang sama'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hari ini pukul 12.25', 'Sekarang tambah 25 minit'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hari ini pukul 13.00', 'Sekarang tambah 1 jam'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Esok pukul 12.00', 'esok pada waktu yang sama'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hari ini pukul 11.00', 'Sekarang tolak 1 jam'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kelmarin pukul 12.00', 'kelmarin pada waktu yang sama'); - }); - - 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'), 'Hari ini + ' + i + ' hari waktu sekarang'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari permulaan hari'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [pukul] LT'), 'Hari ini + ' + i + ' hari tamat hari'); - } - }); - - 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 [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari waktu sekarang'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari permulaan hari'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [lepas] [pukul] LT'), 'Hari ini - ' + i + ' hari tamat hari'); - } - }); - - 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 minggu lepas'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 1 minggu'); - - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'dalam 2 minggu'); - }); - - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 sepatutnya minggu 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 sepatutnya minggu 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 sepatutnya minggu 3'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 sepatutnya minggu 3'); - }); - -}))); - - -;(function (global, factory) { + 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), + '1 минут', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + '1 минут', + '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), + '1 цаг', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + '1 цаг', + '89 minutes = an hour' + ); + assert.equal( + 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), + '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), + '1 өдөр', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '1 өдөр', + '35 hours = a day' + ); + assert.equal( + 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), + '1 өдөр', + '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), + '1 сар', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '1 сар', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + '1 сар', + '43 days = a month' + ); + assert.equal( + 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), + '2 сар', + '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 сар', + '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), + '1 жил', + '345 days = a year' + ); + assert.equal( + 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), + '1 жил', + '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'); + }); + + 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({ s: 50 }).fromNow(), + '1 минутын дараа', + 'in a minute' + ); + assert.equal( + moment().add({ m: 5 }).fromNow(), + '5 минутын дараа', + 'in 5 minutes' + ); + assert.equal( + moment().add({ h: 2 }).fromNow(), + '2 цагийн дараа', + 'in 2 hours' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + '5 өдрийн дараа', + 'in 5 days' + ); + assert.equal( + moment().add({ M: 2 }).fromNow(), + '2 сарын дараа', + 'in 2 months' + ); + assert.equal( + moment().add({ M: 15 }).fromNow(), + '1 жилийн дараа', + 'in a year' + ); + assert.equal( + moment().add({ M: 16 }).fromNow(), + '1 жилийн дараа', + 'in a year' + ); + assert.equal( + moment().add({ M: 23 }).fromNow(), + '2 жилийн дараа', + 'in 2 years' + ); + assert.equal( + moment().add({ y: 7 }).fromNow(), + '7 жилийн дараа', + 'in 7 years' + ); + + assert.equal( + moment().subtract({ s: 30 }).fromNow(), + 'хэдхэн секундын өмнө', + 'a few seconds ago' + ); + assert.equal( + moment().subtract({ s: 50 }).fromNow(), + '1 минутын өмнө', + 'a minute ago' + ); + assert.equal( + moment().subtract({ m: 5 }).fromNow(), + '5 минутын өмнө', + '5 minutes ago' + ); + assert.equal( + moment().subtract({ h: 2 }).fromNow(), + '2 цагийн өмнө', + '2 hours ago' + ); + assert.equal( + moment().subtract({ d: 5 }).fromNow(), + '5 өдрийн өмнө', + '5 days ago' + ); + assert.equal( + moment().subtract({ M: 2 }).fromNow(), + '2 сарын өмнө', + '2 months ago' + ); + assert.equal( + moment().subtract({ M: 15 }).fromNow(), + '1 жилийн өмнө', + 'a year ago' + ); + assert.equal( + moment().subtract({ M: 16 }).fromNow(), + '1 жилийн өмнө', + 'a year ago' + ); + assert.equal( + moment().subtract({ M: 23 }).fromNow(), + '2 жилийн өмнө', + '2 years ago' + ); + assert.equal( + moment().subtract({ y: 7 }).fromNow(), + '7 жилийн өмнө', + '7 years ago' + ); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + 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' + ); + }); + + 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.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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'), + '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'), + '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.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + 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 }); + + 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' + ); + }); + + 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' + ); + }); + +}))); + + + +;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : typeof define === 'function' && define.amd ? define(['../../moment'], factory) : @@ -41638,27 +71122,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -41668,8 +71157,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -41682,7 +71173,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -41691,16 +71185,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -41708,7 +71208,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -41716,12 +71218,21 @@ 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'); + 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' + ); } }); @@ -41729,12 +71240,27 @@ 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'); + 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' + ); } }); @@ -41743,7 +71269,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -41753,24 +71282,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -41789,19 +71322,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -41816,7 +71369,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -41826,7 +71385,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -41839,7 +71405,11 @@ 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'); + 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'); @@ -41854,65 +71424,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('mt'); + localeModule('mr'); test('parse', function (assert) { - var tests = 'Jannar Jan_Frar Fra_Marzu Mar_April Apr_Mejju Mej_Ġunju Ġun_Lulju Lul_Awwissu Aww_Settembru Set_Ottubru Ott_Novembru Nov_Diċembru Diċ'.split('_'), i; + var tests = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -41923,34 +71532,43 @@ 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', 'Il-Ħadd, Frar 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Ħad, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Frar Fra'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd dd', '0 0º Il-Ħadd Ħad Ħa'], - ['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', '14/02/2010'], - ['LL', '14 Frar 2010'], - ['LLL', '14 Frar 2010 15:25'], - ['LLLL', 'Il-Ħadd, 14 Frar 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Fra 2010'], - ['lll', '14 Fra 2010 15:25'], - ['llll', 'Ħad, 14 Fra 2010 15:25'] + [ + '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', 'दुपारी दुपारी'], + ['LTS', 'दुपारी ३:२५:५० वाजता'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फेब्रुवारी २०१०'], + ['LLL', '१४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], + ['LLLL', 'रविवार, १४ फेब्रुवारी २०१०, दुपारी ३:२५ वाजता'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फेब्रु. २०१०'], + ['lll', '१४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'], + ['llll', 'रवि, १४ फेब्रु. २०१०, दुपारी ३:२५ वाजता'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -41960,122 +71578,296 @@ }); 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 = 'Jannar Jan_Frar Fra_Marzu Mar_April Apr_Mejju Mej_Ġunju Ġun_Lulju Lul_Awwissu Aww_Settembru Set_Ottubru Ott_Novembru Nov_Diċembru Diċ'.split('_'), i; + var expected = 'जानेवारी जाने._फेब्रुवारी फेब्रु._मार्च मार्च._एप्रिल एप्रि._मे मे._जून जून._जुलै जुलै._ऑगस्ट ऑग._सप्टेंबर सप्टें._ऑक्टोबर ऑक्टो._नोव्हेंबर नोव्हें._डिसेंबर डिसें.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Il-Ħadd Ħad Ħa_It-Tnejn Tne Tn_It-Tlieta Tli Tl_L-Erbgħa Erb Er_Il-Ħamis Ħam Ħa_Il-Ġimgħa Ġim Ġi_Is-Sibt Sib Si'.split('_'), i; + var expected = 'रविवार रवि र_सोमवार सोम सो_मंगळवार मंगळ मं_बुधवार बुध बु_गुरूवार गुरू गु_शुक्रवार शुक्र शु_शनिवार शनि श'.split( + '_' + ), + i; 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 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), 'ftit sekondi', '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 minuti', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuti', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'siegħa', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'siegħa', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 siegħat', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 siegħat', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 siegħat', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ġurnata', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ġurnata', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ġranet', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ġurnata', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ġranet', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ġranet', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'xahar', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'xahar', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'xahar', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 xhur', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 xhur', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 xhur', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'xahar', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 xhur', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'sena', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 sni', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'sena', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 sni', '5 years = 5 years'); + 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), 'f’ ftit sekondi', 'prefix'); - assert.equal(moment(0).from(30000), 'ftit sekondi ilu', '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(), 'ftit sekondi ilu', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'काही सेकंदांपूर्वी', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'f’ ftit sekondi', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'f’ 5 ġranet', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'काही सेकंदांमध्ये', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + '५ दिवसांमध्ये', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Illum fil-12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Illum fil-12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Illum fil-13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Għada fil-12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Illum fil-11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Il-bieraħ fil-12:00', 'yesterday at the same time'); + 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' + ); }); 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 [fil-]LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [fil-]LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [fil-]LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd[,] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -42083,40 +71875,129 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [li għadda] [fil-]LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 [li għadda] [fil-]LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [li għadda] [fil-]LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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( + 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'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); + }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + 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'), '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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -42131,27 +72012,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -42161,8 +72047,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -42175,7 +72063,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -42184,16 +72075,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -42201,7 +72098,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -42209,12 +72108,21 @@ 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'); + 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' + ); } }); @@ -42222,12 +72130,27 @@ 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'); + 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' + ); } }); @@ -42236,7 +72159,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -42246,24 +72172,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -42282,19 +72212,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -42309,7 +72259,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -42319,7 +72275,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -42332,7 +72295,11 @@ 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'); + 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'); @@ -42347,67 +72314,105 @@ }); 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'); - }); - + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('my'); + localeModule('ms-my'); test('parse', function (assert) { - var tests = 'ဇန်နဝါရီ ဇန်_ဖေဖော်ဝါရီ ဖေ_မတ် မတ်_ဧပြီ ပြီ_မေ မေ_ဇွန် ဇွန်_ဇူလိုင် လိုင်_သြဂုတ် သြ_စက်တင်ဘာ စက်_အောက်တိုဘာ အောက်_နိုဝင်ဘာ နို_ဒီဇင်ဘာ ဒီ'.split('_'), - i; + var i, + tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split( + '_' + ); + + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm).month(), + i, + input + ' sepatutnya bulan ' + (i + 1) + ); + } - 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); @@ -42418,275 +72423,428 @@ 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', 'တနင်္ဂနွေ, ဖေဖော်ဝါရီ ၁၄ ၂၀၁၀, ၃:၂၅:၅၀ pm'], - ['ddd, hA', 'နွေ, ၃PM'], - ['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', 'pm PM'], - ['[နှစ်၏] DDDo [ရက်မြောက်]', 'နှစ်၏ ၄၅ ရက်မြောက်'], - ['LTS', '၁၅:၂၅:၅၀'], - ['L', '၁၄/၀၂/၂၀၁၀'], - ['LL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀'], - ['LLL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'], - ['LLLL', 'တနင်္ဂနွေ ၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'], - ['l', '၁၄/၂/၂၀၁၀'], - ['ll', '၁၄ ဖေ ၂၀၁၀'], - ['lll', '၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅'], - ['llll', 'နွေ ၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Ahad, Februari 14 2010, 3:25:50 petang', + ], + ['ddd, hA', 'Ahd, 3petang'], + ['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 Ahad Ahd Ah'], + ['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', 'petang petang'], + ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], + ['LTS', '15.25.50'], + ['L', '14/02/2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 pukul 15.25'], + ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 pukul 15.25'], + ['llll', 'Ahd, 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 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('_'), - i; + var i, + expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'တနင်္ဂနွေ နွေ နွေ_တနင်္လာ လာ လာ_အင်္ဂါ ဂါ ဂါ_ဗုဒ္ဓဟူး ဟူး ဟူး_ကြာသပတေး ကြာ ကြာ_သောကြာ သော သော_စနေ နေ နေ'.split('_'), - i; + var i, + expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split( + '_' + ); 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 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), 'စက္ကန်.အနည်းငယ်', '၄၄ စက္ကန်. = စက္ကန်.အနည်းငယ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 45 - }), true), 'တစ်မိနစ်', '၄၅ စက္ကန်. = တစ်မိနစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 89 - }), true), 'တစ်မိနစ်', '၈၉ စက္ကန်. = တစ်မိနစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - s: 90 - }), true), '၂ မိနစ်', '၉၀ စက္ကန်. = ၂ မိနစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 44 - }), true), '၄၄ မိနစ်', '၄၄ မိနစ် = ၄၄ မိနစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 45 - }), true), 'တစ်နာရီ', '၄၅ မိနစ် = ၁ နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 89 - }), true), 'တစ်နာရီ', '၈၉ မိနစ် = တစ်နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - m: 90 - }), true), '၂ နာရီ', 'မိနစ် ၉၀= ၂ နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 5 - }), true), '၅ နာရီ', '၅ နာရီ= ၅ နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 21 - }), true), '၂၁ နာရီ', '၂၁ နာရီ =၂၁ နာရီ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 22 - }), true), 'တစ်ရက်', '၂၂ နာရီ =တစ်ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 35 - }), true), 'တစ်ရက်', '၃၅ နာရီ =တစ်ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - h: 36 - }), true), '၂ ရက်', '၃၆ နာရီ = ၂ ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 1 - }), true), 'တစ်ရက်', '၁ ရက်= တစ်ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 5 - }), true), '၅ ရက်', '၅ ရက် = ၅ ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 25 - }), true), '၂၅ ရက်', '၂၅ ရက်= ၂၅ ရက်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 26 - }), true), 'တစ်လ', '၂၆ ရက် = တစ်လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 30 - }), true), 'တစ်လ', 'ရက် ၃၀ = တစ်လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 43 - }), true), 'တစ်လ', '၄၃ ရက် = တစ်လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 46 - }), true), '၂ လ', '၄၆ ရက် = ၂ လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 74 - }), true), '၂ လ', '၇၅ ရက်= ၂ လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 76 - }), true), '၃ လ', '၇၆ ရက် = ၃ လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - M: 1 - }), true), 'တစ်လ', '၁ လ = တစ်လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - M: 5 - }), true), '၅ လ', '၅ လ = ၅ လ'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 345 - }), true), 'တစ်နှစ်', '၃၄၅ ရက် = တစ်နှစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - d: 548 - }), true), '၂ နှစ်', '၅၄၈ ရက် = ၂ နှစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - y: 1 - }), true), 'တစ်နှစ်', '၁ နှစ် = တစ်နှစ်'); - assert.equal(start.from(moment([2007, 1, 28]).add({ - y: 5 - }), true), '၅ နှစ်', '၅ နှစ် = ၅ နှစ်'); + + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'beberapa saat', + '44 saat = beberapa saat' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'seminit', + '45 saat = seminit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'seminit', + '89 saat = seminit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minit', + '90 saat = 2 minit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minit', + '44 minit = 44 minit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'sejam', + '45 minit = sejam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'sejam', + '89 minit = sejam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 jam', + '90 minit = 2 jam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 jam', + '5 jam = 5 jam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 jam', + '21 jam = 21 jam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'sehari', + '22 jam = sehari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'sehari', + '35 jam = sehari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 hari', + '36 jam = 2 hari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'sehari', + '1 hari = sehari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 hari', + '5 hari = 5 hari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 hari', + '25 hari = 25 hari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'sebulan', + '26 hari = sebulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'sebulan', + '30 hari = sebulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'sebulan', + '45 hari = sebulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 bulan', + '46 hari = 2 bulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 bulan', + '75 hari = 2 bulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 bulan', + '76 hari = 3 bulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'sebulan', + '1 bulan = sebulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 bulan', + '5 bulan = 5 bulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'setahun', + '345 hari = setahun' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 tahun', + '548 hari = 2 tahun' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'setahun', + '1 tahun = setahun' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 tahun', + '5 tahun = 5 tahun' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'လာမည့် စက္ကန်.အနည်းငယ် မှာ', 'prefix'); - assert.equal(moment(0).from(30000), 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', 'suffix'); + assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix'); + assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', 'ယခုမှစပြီး အတိတ်တွင်ဖော်ပြသလိုဖော်ပြမည်'); + assert.equal( + moment().fromNow(), + 'beberapa saat yang lepas', + 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas' + ); }); 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(), + 'dalam beberapa saat', + 'dalam beberapa saat' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'dalam 5 hari', + 'dalam 5 hari' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'ယနေ. ၁၂:၀၀ မှာ', 'ယနေ. ဒီအချိန်'); - assert.equal(moment(a).add({m: 25}).calendar(), 'ယနေ. ၁၂:၂၅ မှာ', 'ယခုမှ ၂၅ မိနစ်ပေါင်းထည့်'); - assert.equal(moment(a).add({h: 1}).calendar(), 'ယနေ. ၁၃:၀၀ မှာ', 'ယခုမှ ၁ နာရီပေါင်းထည့်'); - assert.equal(moment(a).add({d: 1}).calendar(), 'မနက်ဖြန် ၁၂:၀၀ မှာ', 'မနက်ဖြန် ဒီအချိန်'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'ယနေ. ၁၁:၀၀ မှာ', 'ယခုမှ ၁ နာရီနှုတ်'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'မနေ.က ၁၂:၀၀ မှာ', 'မနေ.က ဒီအချိန်'); + assert.equal( + moment(a).calendar(), + 'Hari ini pukul 12.00', + 'hari ini pada waktu yang sama' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Hari ini pukul 12.25', + 'Sekarang tambah 25 minit' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Hari ini pukul 13.00', + 'Sekarang tambah 1 jam' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Esok pukul 12.00', + 'esok pada waktu yang sama' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Hari ini pukul 11.00', + 'Sekarang tolak 1 jam' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Kelmarin pukul 12.00', + 'kelmarin pada waktu yang sama' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Hari ini + ' + i + ' hari waktu sekarang' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Hari ini + ' + i + ' hari permulaan hari' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd LT [မှာ]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Hari ini + ' + i + ' hari tamat hari' + ); } }); 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 [မှာ]'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [lepas] [pukul] LT'), + 'Hari ini - ' + i + ' hari waktu sekarang' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [lepas] [pukul] LT'), + 'Hari ini - ' + i + ' hari permulaan hari' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[ပြီးခဲ့သော] dddd LT [မှာ]'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [lepas] [pukul] LT'), + 'Hari ini - ' + i + ' hari tamat hari' + ); } }); 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'), 'လွန်ခဲ့သော ၁ ပတ်က'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '၁ ပတ်အတွင်း'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 minggu lepas'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'dalam 1 minggu' + ); - 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'), '၂ ပတ် အရင်က'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), '၂ ပတ် အတွင်း'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'dalam 2 minggu' + ); }); - 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '၁ ၀၁ ၁', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '၁ ၀၁ ၁', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '၂ ၀၂ ၂', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '၂ ၀၂ ၂', 'Jan 15 2012 should be week 2'); + test('weeks year starting sunday format', function (assert) { + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '1 01 1', + 'Jan 1 2012 sepatutnya minggu 1' + ); + assert.equal( + moment([2012, 0, 7]).format('w ww wo'), + '2 02 2', + 'Jan 7 2012 sepatutnya minggu 2' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '2 02 2', + 'Jan 8 2012 sepatutnya minggu 2' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '3 03 3', + 'Jan 14 2012 sepatutnya minggu 3' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3', + 'Jan 15 2012 sepatutnya minggu 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -42701,27 +72859,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -42731,8 +72894,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -42745,7 +72910,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -42754,16 +72922,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -42771,7 +72945,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -42779,12 +72955,21 @@ 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'); + 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' + ); } }); @@ -42792,12 +72977,27 @@ 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'); + 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' + ); } }); @@ -42806,7 +73006,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -42816,24 +73019,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -42852,19 +73059,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -42879,7 +73106,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -42889,7 +73122,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -42902,7 +73142,11 @@ 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'); + 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'); @@ -42917,66 +73161,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('nb'); + localeModule('ms'); test('parse', function (assert) { - var tests = 'januar jan._februar feb._mars mars_april april_mai mai_juni juni_juli juli_august aug._september sep._oktober okt._november nov._desember des.'.split('_'), - i; + var i, + tests = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split( + '_' + ); + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' sepatutnya bulan ' + (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); @@ -42987,199 +73270,428 @@ 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', 'søndag, februar 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'sø., 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. søndag sø. sø'], - ['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'], - ['[den] DDDo [dagen i året]', 'den 45. dagen i året'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. februar 2010'], - ['LLL', '14. februar 2010 kl. 15:25'], - ['LLLL', 'søndag 14. februar 2010 kl. 15:25'], - ['l', '14.2.2010'], - ['ll', '14. feb. 2010'], - ['lll', '14. feb. 2010 kl. 15:25'], - ['llll', 'sø. 14. feb. 2010 kl. 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Ahad, Februari 14 2010, 3:25:50 petang', + ], + ['ddd, hA', 'Ahd, 3petang'], + ['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 Ahad Ahd Ah'], + ['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', 'petang petang'], + ['[hari] [ke] DDDo [tahun] ini', 'hari ke 45 tahun ini'], + ['LTS', '15.25.50'], + ['L', '14/02/2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 pukul 15.25'], + ['LLLL', 'Ahad, 14 Februari 2010 pukul 15.25'], + ['l', '14/2/2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 pukul 15.25'], + ['llll', 'Ahd, 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 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 mars_april april_mai mai_juni juni_juli juli_august aug._september sep._oktober okt._november nov._desember des.'.split('_'), i; + var i, + expected = 'Januari Jan_Februari Feb_Mac Mac_April Apr_Mei Mei_Jun Jun_Julai Jul_Ogos Ogs_September Sep_Oktober Okt_November Nov_Disember Dis'.split( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'søndag sø. sø_mandag ma. ma_tirsdag ti. ti_onsdag on. on_torsdag to. to_fredag fr. fr_lørdag lø. lø'.split('_'), i; + var i, + expected = 'Ahad Ahd Ah_Isnin Isn Is_Selasa Sel Sl_Rabu Rab Rb_Khamis Kha Km_Jumaat Jum Jm_Sabtu Sab Sb'.split( + '_' + ); + 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 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), 'noen sekunder', '44 sekunder = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ett minutt', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ett minutt', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutter', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutter', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en time', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en time', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timer', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timer', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timer', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dager', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dager', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dager', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en måned', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '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 måneder', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 måneder', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 måneder', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en måned', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 måneder', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ett år', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ett år', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); + + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'beberapa saat', + '44 saat = beberapa saat' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'seminit', + '45 saat = seminit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'seminit', + '89 saat = seminit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minit', + '90 saat = 2 minit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minit', + '44 minit = 44 minit' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'sejam', + '45 minit = sejam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'sejam', + '89 minit = sejam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 jam', + '90 minit = 2 jam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 jam', + '5 jam = 5 jam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 jam', + '21 jam = 21 jam' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'sehari', + '22 jam = sehari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'sehari', + '35 jam = sehari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 hari', + '36 jam = 2 hari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'sehari', + '1 hari = sehari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 hari', + '5 hari = 5 hari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 hari', + '25 hari = 25 hari' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'sebulan', + '26 hari = sebulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'sebulan', + '30 hari = sebulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'sebulan', + '45 hari = sebulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 bulan', + '46 hari = 2 bulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 bulan', + '75 hari = 2 bulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 bulan', + '76 hari = 3 bulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'sebulan', + '1 bulan = sebulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 bulan', + '5 bulan = 5 bulan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'setahun', + '345 hari = setahun' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 tahun', + '548 hari = 2 tahun' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'setahun', + '1 tahun = setahun' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 tahun', + '5 tahun = 5 tahun' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'om noen sekunder', 'prefix'); - assert.equal(moment(0).from(30000), 'noen sekunder siden', 'suffix'); + assert.equal(moment(30000).from(0), 'dalam beberapa saat', 'prefix'); + assert.equal(moment(0).from(30000), 'beberapa saat yang lepas', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'noen sekunder siden', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'beberapa saat yang lepas', + 'waktu sekarang dari sekarang sepatutnya menunjukkan sebagai telah lepas' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'om noen sekunder', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dager', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'dalam beberapa saat', + 'dalam beberapa saat' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'dalam 5 hari', + 'dalam 5 hari' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'i dag kl. 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'i dag kl. 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'i dag kl. 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'i morgen kl. 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'i dag kl. 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'i går kl. 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Hari ini pukul 12.00', + 'hari ini pada waktu yang sama' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Hari ini pukul 12.25', + 'Sekarang tambah 25 minit' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Hari ini pukul 13.00', + 'Sekarang tambah 1 jam' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Esok pukul 12.00', + 'esok pada waktu yang sama' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Hari ini pukul 11.00', + 'Sekarang tolak 1 jam' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Kelmarin pukul 12.00', + 'kelmarin pada waktu yang sama' + ); }); 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 [kl.] LT'), '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.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [kl.] LT'), 'Today + ' + i + ' days end of day'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Hari ini + ' + i + ' hari waktu sekarang' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Hari ini + ' + i + ' hari permulaan hari' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('dddd [pukul] LT'), + 'Hari ini + ' + i + ' hari tamat hari' + ); } }); 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('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [lepas] [pukul] LT'), + 'Hari ini - ' + i + ' hari waktu sekarang' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [lepas] [pukul] LT'), + 'Hari ini - ' + i + ' hari permulaan hari' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[forrige] dddd [kl.] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [lepas] [pukul] LT'), + 'Hari ini - ' + i + ' hari tamat hari' + ); } }); 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 minggu lepas'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'dalam 1 minggu' + ); - 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 minggu lepas'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'dalam 2 minggu' + ); }); - 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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + test('weeks year starting sunday format', function (assert) { + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '1 01 1', + 'Jan 1 2012 sepatutnya minggu 1' + ); + assert.equal( + moment([2012, 0, 7]).format('w ww wo'), + '2 02 2', + 'Jan 7 2012 sepatutnya minggu 2' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '2 02 2', + 'Jan 8 2012 sepatutnya minggu 2' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '3 03 3', + 'Jan 14 2012 sepatutnya minggu 3' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3', + 'Jan 15 2012 sepatutnya minggu 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -43194,27 +73706,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -43224,8 +73741,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -43238,7 +73757,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -43247,16 +73769,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -43264,7 +73792,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -43272,12 +73802,21 @@ 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'); + 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' + ); } }); @@ -43285,12 +73824,27 @@ 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'); + 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' + ); } }); @@ -43299,7 +73853,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -43309,24 +73866,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -43345,19 +73906,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -43372,7 +73953,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -43382,7 +73969,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -43395,7 +73989,11 @@ 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'); + 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'); @@ -43410,65 +74008,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ne'); + localeModule('mt'); test('parse', function (assert) { - var tests = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split('_'), i; + var tests = 'Jannar Jan_Frar Fra_Marzu Mar_April Apr_Mejju Mej_Ġunju Ġun_Lulju Lul_Awwissu Aww_Settembru Set_Ottubru Ott_Novembru Nov_Diċembru Diċ'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -43479,33 +74116,44 @@ 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, 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', 'दिउँसो दिउँसो'], - ['LTS', 'दिउँसोको ३:२५:५० बजे'], - ['L', '१४/०२/२०१०'], - ['LL', '१४ फेब्रुवरी २०१०'], - ['LLL', '१४ फेब्रुवरी २०१०, दिउँसोको ३:२५ बजे'], - ['LLLL', 'आइतबार, १४ फेब्रुवरी २०१०, दिउँसोको ३:२५ बजे'], - ['l', '१४/२/२०१०'], - ['ll', '१४ फेब्रु. २०१०'], - ['lll', '१४ फेब्रु. २०१०, दिउँसोको ३:२५ बजे'], - ['llll', 'आइत., १४ फेब्रु. २०१०, दिउँसोको ३:२५ बजे'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Il-Ħadd, Frar 14º 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Ħad, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 Frar Fra'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd dd', '0 0º Il-Ħadd Ħad Ħa'], + ['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', '14/02/2010'], + ['LL', '14 Frar 2010'], + ['LLL', '14 Frar 2010 15:25'], + ['LLLL', 'Il-Ħadd, 14 Frar 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Fra 2010'], + ['lll', '14 Fra 2010 15:25'], + ['llll', 'Ħad, 14 Fra 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -43515,178 +74163,374 @@ }); 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('_'), i; + var expected = 'Jannar Jan_Frar Fra_Marzu Mar_April Apr_Mejju Mej_Ġunju Ġun_Lulju Lul_Awwissu Aww_Settembru Set_Ottubru Ott_Novembru Nov_Diċembru Diċ'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'आइतबार आइत. आ._सोमबार सोम. सो._मङ्गलबार मङ्गल. मं._बुधबार बुध. बु._बिहिबार बिहि. बि._शुक्रबार शुक्र. शु._शनिबार शनि. श.'.split('_'), i; + var expected = 'Il-Ħadd Ħad Ħa_It-Tnejn Tne Tn_It-Tlieta Tli Tl_L-Erbgħa Erb Er_Il-Ħamis Ħam Ħa_Il-Ġimgħa Ġim Ġi_Is-Sibt Sib Si'.split( + '_' + ), + i; 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 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), 'केही क्षण', '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'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'ftit sekondi', + '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 minuti', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuti', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'siegħa', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'siegħa', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 siegħat', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 siegħat', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 siegħat', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'ġurnata', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'ġurnata', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 ġranet', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'ġurnata', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 ġranet', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 ġranet', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'xahar', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'xahar', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'xahar', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 xhur', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 xhur', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 xhur', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'xahar', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 xhur', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'sena', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 sni', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'sena', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 sni', + '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), 'f’ ftit sekondi', 'prefix'); + assert.equal(moment(0).from(30000), 'ftit sekondi ilu', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'केही क्षण अगाडि', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'ftit sekondi ilu', + '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(), + 'f’ ftit sekondi', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'f’ 5 ġranet', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); - 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'); + assert.equal( + moment(a).calendar(), + 'Illum fil-12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Illum fil-12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Illum fil-13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Għada fil-12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Illum fil-11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Il-bieraħ fil-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[,] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [fil-]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'); + assert.equal( + m.calendar(), + m.format('dddd [fil-]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'); + assert.equal( + m.calendar(), + m.format('dddd [fil-]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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [li għadda] [fil-]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'); + assert.equal( + m.calendar(), + m.format('dddd [li għadda] [fil-]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'); + assert.equal( + m.calendar(), + m.format('dddd [li għadda] [fil-]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'); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - 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'); - }); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - 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'); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 26]).format('w ww wo'), '५३ ५३ ५३', 'Dec 26 2011 should be week 53'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '१ ०१ १', 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '१ ०१ १', 'Jan 2 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, 9]).format('w ww wo'), '२ ०२ २', 'Jan 9 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2º', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -43701,27 +74545,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -43731,8 +74580,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -43745,7 +74596,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -43754,16 +74608,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -43771,7 +74631,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -43779,12 +74641,21 @@ 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'); + 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' + ); } }); @@ -43792,12 +74663,27 @@ 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'); + 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' + ); } }); @@ -43806,7 +74692,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -43816,24 +74705,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -43852,19 +74745,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -43879,7 +74792,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -43889,7 +74808,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -43902,7 +74828,11 @@ 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'); + 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'); @@ -43917,65 +74847,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('nl-be'); + localeModule('my'); test('parse', function (assert) { - var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i; + var tests = 'ဇန်နဝါရီ ဇန်_ဖေဖော်ဝါရီ ဖေ_မတ် မတ်_ဧပြီ ပြီ_မေ မေ_ဇွန် ဇွန်_ဇူလိုင် လိုင်_သြဂုတ် သြ_စက်တင်ဘာ စက်_အောက်တိုဘာ အောက်_နိုဝင်ဘာ နို_ဒီဇင်ဘာ ဒီ'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -43986,34 +74956,44 @@ 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', 'zondag, februari 14de 2010, 15:25:50'], - ['ddd, HH', 'zo., 15'], - ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14de 14'], - ['d do dddd ddd dd', '0 0de zondag zo. zo'], - ['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'], - ['[the] DDDo [day of the year]', 'the 45ste day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 februari 2010'], - ['LLL', '14 februari 2010 15:25'], - ['LLLL', 'zondag 14 februari 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 feb. 2010'], - ['lll', '14 feb. 2010 15:25'], - ['llll', 'zo. 14 feb. 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'တနင်္ဂနွေ, ဖေဖော်ဝါရီ ၁၄ ၂၀၁၀, ၃:၂၅:၅၀ pm', + ], + ['ddd, hA', 'နွေ, ၃PM'], + ['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', 'pm PM'], + ['[နှစ်၏] DDDo [ရက်မြောက်]', 'နှစ်၏ ၄၅ ရက်မြောက်'], + ['LTS', '၁၅:၂၅:၅၀'], + ['L', '၁၄/၀၂/၂၀၁၀'], + ['LL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀'], + ['LLL', '၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'], + ['LLLL', 'တနင်္ဂနွေ ၁၄ ဖေဖော်ဝါရီ ၂၀၁၀ ၁၅:၂၅'], + ['l', '၁၄/၂/၂၀၁၀'], + ['ll', '၁၄ ဖေ ၂၀၁၀'], + ['lll', '၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅'], + ['llll', 'နွေ ၁၄ ဖေ ၂၀၁၀ ၁၅:၂၅'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -44023,169 +75003,543 @@ }); 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([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'), '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, 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'), '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, 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'), '31ste', '31ste'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '၃၁', '၃၁'); }); test('format month', function (assert) { - var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i; + var expected = 'ဇန်နဝါရီ ဇန်_ဖေဖော်ဝါရီ ဖေ_မတ် မတ်_ဧပြီ ပြီ_မေ မေ_ဇွန် ဇွန်_ဇူလိုင် လိုင်_သြဂုတ် သြ_စက်တင်ဘာ စက်_အောက်တိုဘာ အောက်_နိုဝင်ဘာ နို_ဒီဇင်ဘာ ဒီ'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'zondag zo. zo_maandag ma. ma_dinsdag di. di_woensdag wo. wo_donderdag do. do_vrijdag vr. vr_zaterdag za. za'.split('_'), i; + var expected = 'တနင်္ဂနွေ နွေ နွေ_တနင်္လာ လာ လာ_အင်္ဂါ ဂါ ဂါ_ဗုဒ္ဓဟူး ဟူး ဟူး_ကြာသပတေး ကြာ ကြာ_သောကြာ သော သော_စနေ နေ နေ'.split( + '_' + ), + i; + 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 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), 'een paar seconden', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'één minuut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'één minuut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'één uur', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'één uur', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uur', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 uur', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 uur', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'één dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'één dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'één dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'één maand', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'één maand', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'één maand', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 maanden', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 maanden', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 maanden', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'één maand', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 maanden', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'één jaar', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaar', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'één jaar', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaar', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'over een paar seconden', 'prefix'); - assert.equal(moment(0).from(30000), 'een paar seconden geleden', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'een paar seconden geleden', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'over een paar seconden', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'over 5 dagen', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'vandaag om 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'vandaag om 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'vandaag om 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'morgen om 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'vandaag om 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'gisteren om 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 [om] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), 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 [om] 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('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] 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( + start.from( + moment([2007, 1, 28]).add({ + s: 44, + }), + true + ), + 'စက္ကန်.အနည်းငယ်', + '၄၄ စက္ကန်. = စက္ကန်.အနည်းငယ်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + s: 45, + }), + true + ), + 'တစ်မိနစ်', + '၄၅ စက္ကန်. = တစ်မိနစ်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + s: 89, + }), + true + ), + 'တစ်မိနစ်', + '၈၉ စက္ကန်. = တစ်မိနစ်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + s: 90, + }), + true + ), + '၂ မိနစ်', + '၉၀ စက္ကန်. = ၂ မိနစ်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + m: 44, + }), + true + ), + '၄၄ မိနစ်', + '၄၄ မိနစ် = ၄၄ မိနစ်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + m: 45, + }), + true + ), + 'တစ်နာရီ', + '၄၅ မိနစ် = ၁ နာရီ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + m: 89, + }), + true + ), + 'တစ်နာရီ', + '၈၉ မိနစ် = တစ်နာရီ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + m: 90, + }), + true + ), + '၂ နာရီ', + 'မိနစ် ၉၀= ၂ နာရီ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + h: 5, + }), + true + ), + '၅ နာရီ', + '၅ နာရီ= ၅ နာရီ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + h: 21, + }), + true + ), + '၂၁ နာရီ', + '၂၁ နာရီ =၂၁ နာရီ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + h: 22, + }), + true + ), + 'တစ်ရက်', + '၂၂ နာရီ =တစ်ရက်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + h: 35, + }), + true + ), + 'တစ်ရက်', + '၃၅ နာရီ =တစ်ရက်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + h: 36, + }), + true + ), + '၂ ရက်', + '၃၆ နာရီ = ၂ ရက်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 1, + }), + true + ), + 'တစ်ရက်', + '၁ ရက်= တစ်ရက်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 5, + }), + true + ), + '၅ ရက်', + '၅ ရက် = ၅ ရက်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 25, + }), + true + ), + '၂၅ ရက်', + '၂၅ ရက်= ၂၅ ရက်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 26, + }), + true + ), + 'တစ်လ', + '၂၆ ရက် = တစ်လ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 30, + }), + true + ), + 'တစ်လ', + 'ရက် ၃၀ = တစ်လ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 43, + }), + true + ), + 'တစ်လ', + '၄၃ ရက် = တစ်လ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 46, + }), + true + ), + '၂ လ', + '၄၆ ရက် = ၂ လ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 74, + }), + true + ), + '၂ လ', + '၇၅ ရက်= ၂ လ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 76, + }), + true + ), + '၃ လ', + '၇၆ ရက် = ၃ လ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + M: 1, + }), + true + ), + 'တစ်လ', + '၁ လ = တစ်လ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + M: 5, + }), + true + ), + '၅ လ', + '၅ လ = ၅ လ' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 345, + }), + true + ), + 'တစ်နှစ်', + '၃၄၅ ရက် = တစ်နှစ်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + d: 548, + }), + true + ), + '၂ နှစ်', + '၅၄၈ ရက် = ၂ နှစ်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + y: 1, + }), + true + ), + 'တစ်နှစ်', + '၁ နှစ် = တစ်နှစ်' + ); + assert.equal( + start.from( + moment([2007, 1, 28]).add({ + y: 5, + }), + true + ), + '၅ နှစ်', + '၅ နှစ် = ၅ နှစ်' + ); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'လာမည့် စက္ကန်.အနည်းငယ် မှာ', 'prefix'); + assert.equal( + moment(0).from(30000), + 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', + 'suffix' + ); + }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'လွန်ခဲ့သော စက္ကန်.အနည်းငယ် က', + 'ယခုမှစပြီး အတိတ်တွင်ဖော်ပြသလိုဖော်ပြမည်' + ); }); - 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]).unix(), moment('23-jun-2012', 'D-MMM-YYYY').unix(), 'parse month abbreviation surrounded by dashes without 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'); - assert.equal(moment([2012, 5, 23]).unix(), moment('23 jun. 2012', 'D MMM YYYY').unix(), 'parse month abbreviation not surrounded by dashes with dot'); + test('fromNow', function (assert) { + assert.equal( + moment() + .add({ + s: 30, + }) + .fromNow(), + 'လာမည့် စက္ကန်.အနည်းငယ် မှာ', + 'လာမည့် စက္ကန်.အနည်းငယ် မှာ' + ); + assert.equal( + moment() + .add({ + d: 5, + }) + .fromNow(), + 'လာမည့် ၅ ရက် မှာ', + 'လာမည့် ၅ ရက် မှာ' + ); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal(moment(a).calendar(), 'ယနေ. ၁၂:၀၀ မှာ', 'ယနေ. ဒီအချိန်'); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'ယနေ. ၁၂:၂၅ မှာ', + 'ယခုမှ ၂၅ မိနစ်ပေါင်းထည့်' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'ယနေ. ၁၃:၀၀ မှာ', + 'ယခုမှ ၁ နာရီပေါင်းထည့်' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'မနက်ဖြန် ၁၂:၀၀ မှာ', + 'မနက်ဖြန် ဒီအချိန်' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'ယနေ. ၁၁:၀၀ မှာ', + 'ယခုမှ ၁ နာရီနှုတ်' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'မနေ.က ၁၂:၀၀ မှာ', + 'မနေ.က ဒီအချိန်' + ); + }); + + 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.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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 [မှာ]'), + '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 [မှာ]'), + '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.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + 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, + }); + + assert.equal( + weeksAgo.calendar(), + weeksAgo.format('L'), + 'လွန်ခဲ့သော ၁ ပတ်က' + ); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '၁ ပတ်အတွင်း' + ); + + weeksAgo = moment().subtract({ + w: 2, + }); + weeksFromNow = moment().add({ + w: 2, + }); + + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '၂ ပတ် အရင်က'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '၂ ပတ် အတွင်း' + ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '၅၂ ၅၂ ၅၂', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '၁ ၀၁ ၁', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '၁ ၀၁ ၁', + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '၂ ၀၂ ၂', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '၂ ၀၂ ၂', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -44200,27 +75554,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -44230,8 +75589,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -44244,7 +75605,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -44253,16 +75617,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -44270,7 +75640,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -44278,12 +75650,21 @@ 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'); + 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' + ); } }); @@ -44291,12 +75672,27 @@ 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'); + 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' + ); } }); @@ -44305,7 +75701,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -44315,24 +75714,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -44351,19 +75754,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -44378,7 +75801,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -44388,7 +75817,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -44401,7 +75837,11 @@ 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'); + 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'); @@ -44416,65 +75856,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('nl'); + localeModule('nb'); test('parse', function (assert) { - var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i; + var tests = 'januar jan._februar feb._mars mars_april apr._mai mai_juni juni_juli juli_august aug._september sep._oktober okt._november nov._desember des.'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -44485,34 +75965,44 @@ 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', 'zondag, februari 14de 2010, 15:25:50'], - ['ddd, HH', 'zo., 15'], - ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14de 14'], - ['d do dddd ddd dd', '0 0de zondag zo. zo'], - ['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'], - ['[the] DDDo [day of the year]', 'the 45ste day of the year'], - ['LTS', '15:25:50'], - ['L', '14-02-2010'], - ['LL', '14 februari 2010'], - ['LLL', '14 februari 2010 15:25'], - ['LLLL', 'zondag 14 februari 2010 15:25'], - ['l', '14-2-2010'], - ['ll', '14 feb. 2010'], - ['lll', '14 feb. 2010 15:25'], - ['llll', 'zo. 14 feb. 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'søndag, februar 14. 2010, 3:25:50 pm', + ], + ['ddd, hA', 'sø., 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. søndag sø. sø'], + ['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'], + ['[den] DDDo [dagen i året]', 'den 45. dagen i året'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 kl. 15:25'], + ['LLLL', 'søndag 14. februar 2010 kl. 15:25'], + ['l', '14.2.2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 kl. 15:25'], + ['llll', 'sø. 14. feb. 2010 kl. 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -44522,169 +76012,373 @@ }); 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([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'), '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, 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'), '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, 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'), '31ste', '31ste'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); }); test('format month', function (assert) { - var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober okt._november nov._december dec.'.split('_'), i; + var expected = 'januar jan._februar feb._mars mars_april apr._mai mai_juni juni_juli juli_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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'zondag zo. zo_maandag ma. ma_dinsdag di. di_woensdag wo. wo_donderdag do. do_vrijdag vr. vr_zaterdag za. za'.split('_'), i; + var expected = 'søndag sø. sø_mandag ma. ma_tirsdag ti. ti_onsdag on. on_torsdag to. to_fredag fr. fr_lørdag lø. lø'.split( + '_' + ), + i; 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 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), 'een paar seconden', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'één minuut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'één minuut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuten', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuten', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'één uur', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'één uur', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uur', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 uur', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 uur', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'één dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'één dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagen', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'één dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagen', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagen', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'één maand', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'één maand', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'één maand', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 maanden', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 maanden', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 maanden', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'één maand', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 maanden', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'één jaar', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jaar', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'één jaar', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jaar', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'noen sekunder', + '44 sekunder = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'ett minutt', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'ett minutt', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutter', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutter', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'en time', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'en time', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 timer', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 timer', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 timer', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'en dag', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'en dag', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dager', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'en dag', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dager', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dager', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'en måned', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '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 måneder', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 måneder', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 måneder', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'en måned', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 måneder', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'ett år', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 år', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ett år', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 år', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'over een paar seconden', 'prefix'); - assert.equal(moment(0).from(30000), 'een paar seconden geleden', 'suffix'); + assert.equal(moment(30000).from(0), 'om noen sekunder', 'prefix'); + assert.equal(moment(0).from(30000), 'noen sekunder siden', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'een paar seconden geleden', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'noen sekunder siden', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'over een paar seconden', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'over 5 dagen', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'om noen sekunder', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'om 5 dager', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'vandaag om 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'vandaag om 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'vandaag om 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'morgen om 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'vandaag om 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'gisteren om 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'i dag kl. 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'i dag kl. 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'i dag kl. 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'i morgen kl. 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'i dag kl. 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '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 [om] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [om] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [om] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [kl.] 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('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[forrige] dddd [kl.] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[forrige] dddd [kl.] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[afgelopen] dddd [om] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[forrige] dddd [kl.] 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'); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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]).unix(), moment('23-jun-2012', 'D-MMM-YYYY').unix(), 'parse month abbreviation surrounded by dashes without 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'); - assert.equal(moment([2012, 5, 23]).unix(), moment('23 jun. 2012', 'D MMM YYYY').unix(), 'parse month abbreviation not surrounded by dashes with dot'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52ste', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1ste', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1ste', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2de', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2de', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -44699,27 +76393,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -44729,8 +76428,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -44743,7 +76444,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -44752,16 +76456,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -44769,7 +76479,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -44777,12 +76489,21 @@ 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'); + 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' + ); } }); @@ -44790,12 +76511,27 @@ 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'); + 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' + ); } }); @@ -44804,7 +76540,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -44814,24 +76553,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -44850,19 +76593,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -44877,7 +76640,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -44887,7 +76656,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -44900,7 +76676,11 @@ 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'); + 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'); @@ -44915,65 +76695,104 @@ }); 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var 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.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'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('nn'); + localeModule('ne'); test('parse', function (assert) { - var tests = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; + var tests = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -44984,34 +76803,43 @@ 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', 'sundag, februar 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'sun, 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. sundag 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'], - ['[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 kl. 15:25'], - ['LLLL', 'sundag 14. februar 2010 kl. 15:25'], - ['l', '14.2.2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 kl. 15:25'], - ['llll', 'sun 14. feb 2010 kl. 15:25'] + [ + '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', 'दिउँसो दिउँसो'], + ['LTS', 'दिउँसोको ३:२५:५० बजे'], + ['L', '१४/०२/२०१०'], + ['LL', '१४ फेब्रुवरी २०१०'], + ['LLL', '१४ फेब्रुवरी २०१०, दिउँसोको ३:२५ बजे'], + ['LLLL', 'आइतबार, १४ फेब्रुवरी २०१०, दिउँसोको ३:२५ बजे'], + ['l', '१४/२/२०१०'], + ['ll', '१४ फेब्रु. २०१०'], + ['lll', '१४ फेब्रु. २०१०, दिउँसोको ३:२५ बजे'], + ['llll', 'आइत., १४ फेब्रु. २०१०, दिउँसोको ३:२५ बजे'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -45021,162 +76849,413 @@ }); 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 = 'januar jan_februar feb_mars mar_april apr_mai mai_juni jun_juli jul_august aug_september sep_oktober okt_november nov_desember des'.split('_'), i; + var expected = 'जनवरी जन._फेब्रुवरी फेब्रु._मार्च मार्च_अप्रिल अप्रि._मई मई_जुन जुन_जुलाई जुलाई._अगष्ट अग._सेप्टेम्बर सेप्ट._अक्टोबर अक्टो._नोभेम्बर नोभे._डिसेम्बर डिसे.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'sundag sun su_måndag mån må_tysdag tys ty_onsdag ons on_torsdag tor to_fredag fre fr_laurdag lau lø'.split('_'), i; + var expected = 'आइतबार आइत. आ._सोमबार सोम. सो._मङ्गलबार मङ्गल. मं._बुधबार बुध. बु._बिहिबार बिहि. बि._शुक्रबार शुक्र. शु._शनिबार शनि. श.'.split( + '_' + ), + i; 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 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), 'nokre sekund', '44 sekunder = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'eit minutt', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'eit minutt', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutt', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutt', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ein time', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ein time', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timar', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timar', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timar', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ein dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ein dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ein dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ein månad', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ein månad', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ein månad', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 månader', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 månader', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 månader', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ein månad', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 månader', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eit år', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eit år', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); + 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), 'om nokre sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'nokre sekund sidan', '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(), 'nokre sekund sidan', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'केही क्षण अगाडि', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'om nokre sekund', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dagar', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'केही क्षणमा', + 'केही क्षणमा' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '५ दिनमा', '५ दिनमा'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'I dag klokka 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'I dag klokka 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'I dag klokka 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'I morgon klokka 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'I dag klokka 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'I går klokka 12:00', 'yesterday at the same time'); + 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' + ); + 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' + ); }); 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 [klokka] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [klokka] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [klokka] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[गएको] dddd[,] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[Føregåande] dddd [klokka] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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( + 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'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); + }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + 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'), '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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + assert.equal( + moment([2011, 11, 26]).format('w ww wo'), + '५३ ५३ ५३', + 'Dec 26 2011 should be week 53' + ); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '१ ०१ १', + 'Jan 1 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '१ ०१ १', + 'Jan 2 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, 9]).format('w ww wo'), + '२ ०२ २', + 'Jan 9 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -45191,27 +77270,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -45221,8 +77305,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -45235,7 +77321,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -45244,16 +77333,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -45261,7 +77356,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -45269,12 +77366,21 @@ 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'); + 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' + ); } }); @@ -45282,12 +77388,27 @@ 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'); + 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' + ); } }); @@ -45296,7 +77417,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -45306,24 +77430,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -45342,19 +77470,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -45369,7 +77517,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -45379,7 +77533,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -45392,7 +77553,11 @@ 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'); + 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'); @@ -45407,65 +77572,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('pa-in'); + localeModule('nl-be'); test('parse', function (assert) { - var tests = 'ਜਨਵਰੀ ਜਨਵਰੀ_ਫ਼ਰਵਰੀ ਫ਼ਰਵਰੀ_ਮਾਰਚ ਮਾਰਚ_ਅਪ੍ਰੈਲ ਅਪ੍ਰੈਲ_ਮਈ ਮਈ_ਜੂਨ ਜੂਨ_ਜੁਲਾਈ ਜੁਲਾਈ_ਅਗਸਤ ਅਗਸਤ_ਸਤੰਬਰ ਸਤੰਬਰ_ਅਕਤੂਬਰ ਅਕਤੂਬਰ_ਨਵੰਬਰ ਨਵੰਬਰ_ਦਸੰਬਰ ਦਸੰਬਰ'.split('_'), i; + var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober 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)); + 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); @@ -45476,33 +77680,47 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); 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][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, 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', 'ਦੁਪਹਿਰ ਦੁਪਹਿਰ'], - ['LTS', 'ਦੁਪਹਿਰ ੩:੨੫:੫੦ ਵਜੇ'], - ['L', '੧੪/੦੨/੨੦੧੦'], - ['LL', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦'], - ['LLL', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'], - ['LLLL', 'ਐਤਵਾਰ, ੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'], - ['l', '੧੪/੨/੨੦੧੦'], - ['ll', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦'], - ['lll', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'], - ['llll', 'ਐਤ, ੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'] + [ + 'dddd, MMMM Do YYYY, HH:mm:ss', + 'zondag, februari 14de 2010, 15:25:50', + ], + ['ddd, HH', 'zo., 15'], + ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14de 14'], + ['d do dddd ddd dd', '0 0de zondag zo. zo'], + ['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'], + ['[the] DDDo [day of the year]', 'the 45ste day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 februari 2010'], + ['LLL', '14 februari 2010 15:25'], + ['LLLL', 'zondag 14 februari 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 feb. 2010'], + ['lll', '14 feb. 2010 15:25'], + ['llll', 'zo. 14 feb. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -45512,276 +77730,396 @@ }); 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'), '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'), '੧੧', '੧੧'); - 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'), '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'), '੨੧', '੨੧'); - 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'), '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'), '੩੧', '੩੧'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); }); test('format month', function (assert) { - var expected = 'ਜਨਵਰੀ ਜਨਵਰੀ_ਫ਼ਰਵਰੀ ਫ਼ਰਵਰੀ_ਮਾਰਚ ਮਾਰਚ_ਅਪ੍ਰੈਲ ਅਪ੍ਰੈਲ_ਮਈ ਮਈ_ਜੂਨ ਜੂਨ_ਜੁਲਾਈ ਜੁਲਾਈ_ਅਗਸਤ ਅਗਸਤ_ਸਤੰਬਰ ਸਤੰਬਰ_ਅਕਤੂਬਰ ਅਕਤੂਬਰ_ਨਵੰਬਰ ਨਵੰਬਰ_ਦਸੰਬਰ ਦਸੰਬਰ'.split('_'), i; + var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober 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]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'ਐਤਵਾਰ ਐਤ ਐਤ_ਸੋਮਵਾਰ ਸੋਮ ਸੋਮ_ਮੰਗਲਵਾਰ ਮੰਗਲ ਮੰਗਲ_ਬੁਧਵਾਰ ਬੁਧ ਬੁਧ_ਵੀਰਵਾਰ ਵੀਰ ਵੀਰ_ਸ਼ੁੱਕਰਵਾਰ ਸ਼ੁਕਰ ਸ਼ੁਕਰ_ਸ਼ਨੀਚਰਵਾਰ ਸ਼ਨੀ ਸ਼ਨੀ'.split('_'), i; + var expected = 'zondag zo. zo_maandag ma. ma_dinsdag di. di_woensdag wo. wo_donderdag do. do_vrijdag vr. vr_zaterdag za. za'.split( + '_' + ), + i; 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 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), 'ਕੁਝ ਸਕਿੰਟ', '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'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'een paar seconden', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'één minuut', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'één minuut', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuten', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuten', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'één uur', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'één uur', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 uur', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 uur', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 uur', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'één dag', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'één dag', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dagen', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'één dag', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dagen', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dagen', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'één maand', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'één maand', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'één maand', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 maanden', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 maanden', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 maanden', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'één maand', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 maanden', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'één jaar', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 jaar', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'één jaar', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 jaar', + '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), 'over een paar seconden', 'prefix'); + assert.equal(moment(0).from(30000), 'een paar seconden geleden', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ਕੁਝ ਸਕਿੰਟ ਪਿਛਲੇ', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'een paar seconden geleden', + '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(), + 'over een paar seconden', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'over 5 dagen', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal( + moment(a).calendar(), + 'vandaag om 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'vandaag om 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'vandaag om 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'morgen om 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'vandaag om 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'gisteren om 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[,] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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[,] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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[,] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [om] 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'), '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.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[ਪਿਛਲੇ] dddd[,] LT'), 'Today - ' + i + ' days end of day'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[afgelopen] dddd [om] LT'), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('[afgelopen] dddd [om] LT'), + 'Today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[afgelopen] dddd [om] 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'); - }); - - test('meridiem invariant', 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', function (assert) { - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - }); - - test('weeks year starting monday', function (assert) { - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - }); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - test('weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - }); - - test('weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - }); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - test('weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - test('weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); + 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]).unix(), + moment('23-jun-2012', 'D-MMM-YYYY').unix(), + 'parse month abbreviation surrounded by dashes without 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' + ); + assert.equal( + moment([2012, 5, 23]).unix(), + moment('23 jun. 2012', 'D MMM YYYY').unix(), + 'parse month abbreviation not surrounded by dashes with dot' + ); }); 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'); - }); - - 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); - } + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52ste', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1ste', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1ste', + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2de', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2de', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -45796,27 +78134,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -45826,8 +78169,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -45840,7 +78185,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -45849,16 +78197,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -45866,7 +78220,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -45874,12 +78230,21 @@ 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'); + 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' + ); } }); @@ -45887,12 +78252,27 @@ 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'); + 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' + ); } }); @@ -45901,7 +78281,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -45911,24 +78294,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -45947,19 +78334,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -45974,7 +78381,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -45984,7 +78397,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -45997,7 +78417,11 @@ 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'); + 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'); @@ -46012,126 +78436,155 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('pl'); + localeModule('nl'); test('parse', function (assert) { - var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i; + var tests = 'januari jan._februari feb._maart mrt._april apr._mei mei._juni jun._juli jul._augustus aug._september sep._oktober 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)); + 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][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); - } - }); - test('parse strict', function (assert) { - var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split('_'), i; - function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm, true).month(), i, input + ' should be month ' + (i + 1)); - } - for (i = 0; i < 12; i++) { - tests[i] = tests[i].split(' '); - equalTest(tests[i][0], 'MMMM', i); - equalTest(tests[i][1], 'MMMM', i); - equalTest(tests[i][2], 'MMM', i); - equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); - equalTest(tests[i][2].toLocaleLowerCase(), 'MMM', i); - equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - equalTest(tests[i][2].toLocaleUpperCase(), 'MMM', 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', 'niedziela, luty 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'ndz, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 luty lut'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. niedziela ndz Nd'], - ['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', '14.02.2010'], - ['LL', '14 lutego 2010'], - ['LLL', '14 lutego 2010 15:25'], - ['LLLL', 'niedziela, 14 lutego 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 lut 2010'], - ['lll', '14 lut 2010 15:25'], - ['llll', 'ndz, 14 lut 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, HH:mm:ss', + 'zondag, februari 14de 2010, 15:25:50', + ], + ['ddd, HH', 'zo., 15'], + ['M Mo MM MMMM MMM', '2 2de 02 februari feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14de 14'], + ['d do dddd ddd dd', '0 0de zondag zo. zo'], + ['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'], + ['[the] DDDo [day of the year]', 'the 45ste day of the year'], + ['LTS', '15:25:50'], + ['L', '14-02-2010'], + ['LL', '14 februari 2010'], + ['LLL', '14 februari 2010 15:25'], + ['LLLL', 'zondag 14 februari 2010 15:25'], + ['l', '14-2-2010'], + ['ll', '14 feb. 2010'], + ['lll', '14 feb. 2010 15:25'], + ['llll', 'zo. 14 feb. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -46141,205 +78594,396 @@ }); 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'), '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'), '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'), '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'), '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'), '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'), '31.', '31.'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31ste', '31ste'); }); test('format month', function (assert) { - var expected = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split('_'), i; + var expected = 'januari jan._februari feb._maart mrt._april apr._mei mei_juni jun._juli jul._augustus aug._september sep._oktober 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]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'niedziela ndz Nd_poniedziałek pon Pn_wtorek wt Wt_środa śr Śr_czwartek czw Cz_piątek pt Pt_sobota sob So'.split('_'), i; + var expected = 'zondag zo. zo_maandag ma. ma_dinsdag di. di_woensdag wo. wo_donderdag do. do_vrijdag vr. vr_zaterdag za. za'.split( + '_' + ), + i; 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 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), 'kilka 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 minuty', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuty', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'godzina', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'godzina', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 godziny', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 godzin', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 godzin', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '1 dzień', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 dzień', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '1 dzień', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dni', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'miesiąc', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'miesiąc', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'miesiąc', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 miesiące', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 miesiące', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 miesiące', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'miesiąc', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 miesięcy', '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 lata', '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 lat', '5 years = 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 112}), true), '112 lat', '112 years = 112 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 122}), true), '122 lata', '122 years = 122 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 213}), true), '213 lat', '213 years = 213 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 223}), true), '223 lata', '223 years = 223 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'een paar seconden', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'één minuut', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'één minuut', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuten', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuten', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'één uur', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'één uur', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 uur', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 uur', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 uur', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'één dag', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'één dag', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dagen', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'één dag', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dagen', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dagen', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'één maand', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'één maand', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'één maand', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 maanden', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 maanden', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 maanden', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'één maand', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 maanden', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'één jaar', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 jaar', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'één jaar', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 jaar', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za kilka sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'kilka sekund temu', 'suffix'); + assert.equal(moment(30000).from(0), 'over een paar seconden', 'prefix'); + assert.equal(moment(0).from(30000), 'een paar seconden geleden', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'kilka sekund temu', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'een paar seconden geleden', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za kilka sekund', 'in a few seconds'); - assert.equal(moment().add({h: 1}).fromNow(), 'za godzinę', 'in an hour'); - assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dni', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'over een paar seconden', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'over 5 dagen', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Dziś o 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Dziś o 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Dziś o 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Jutro o 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Dziś o 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Wczoraj o 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'vandaag om 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'vandaag om 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'vandaag om 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'morgen om 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'vandaag om 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'gisteren om 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 '[W niedzielę o] LT'; - - case 2: - return '[We wtorek o] LT'; - - case 3: - return '[W środę o] LT'; - - case 6: - return '[W sobotę o] LT'; - - default: - return '[W] dddd [o] LT'; - } - } - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); - + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); - + assert.equal( + m.calendar(), + 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(makeFormat(m)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [om] LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - } - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); - + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[afgelopen] dddd [om] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); - + assert.equal( + m.calendar(), + m.format('[afgelopen] dddd [om] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[afgelopen] dddd [om] 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( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - 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 }); - 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' + ); + }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + 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]).unix(), + moment('23-jun-2012', 'D-MMM-YYYY').unix(), + 'parse month abbreviation surrounded by dashes without 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' + ); + assert.equal( + moment([2012, 5, 23]).unix(), + moment('23 jun. 2012', 'D MMM YYYY').unix(), + 'parse month abbreviation not surrounded by dashes with dot' + ); }); 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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52ste', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1ste', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1ste', + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2de', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2de', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -46354,27 +78998,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -46384,8 +79033,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -46398,7 +79049,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -46407,16 +79061,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -46424,7 +79084,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -46432,12 +79094,21 @@ 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'); + 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' + ); } }); @@ -46445,12 +79116,27 @@ 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'); + 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' + ); } }); @@ -46459,7 +79145,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -46469,24 +79158,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -46505,19 +79198,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -46532,7 +79245,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -46542,7 +79261,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -46555,7 +79281,11 @@ 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'); + 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'); @@ -46570,65 +79300,102 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('pt-br'); + localeModule('nn'); test('parse', function (assert) { - var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; - + var tests = 'januar jan._februar feb._mars mars_april apr._mai mai_juni juni_juli juli_august aug._september sep._oktober okt._november nov._desember des.'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -46641,34 +79408,44 @@ 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', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd', '0 0º Domingo Dom'], - ['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', '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 Fevereiro de 2010'], - ['LLL', '14 de Fevereiro de 2010 às 15:25'], - ['LLLL', 'Domingo, 14 de Fevereiro de 2010 às 15:25'], - ['l', '14/2/2010'], - ['ll', '14 de Fev de 2010'], - ['lll', '14 de Fev de 2010 às 15:25'], - ['llll', 'Dom, 14 de Fev de 2010 às 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'sundag, februar 14. 2010, 3:25:50 pm', + ], + ['ddd, hA', 'su., 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. sundag 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', '14.02.2010'], + ['LL', '14. februar 2010'], + ['LLL', '14. februar 2010 kl. 15:25'], + ['LLLL', 'sundag 14. februar 2010 kl. 15:25'], + ['l', '14.2.2010'], + ['ll', '14. feb. 2010'], + ['lll', '14. feb. 2010 kl. 15:25'], + ['llll', 'su. 14. feb. 2010 kl. 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -46678,172 +79455,373 @@ }); 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 = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; + var expected = 'januar jan._februar feb._mars mars_april apr._mai mai_juni juni_juli juli_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'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Domingo Dom Do_Segunda-feira Seg 2ª_Terça-feira Ter 3ª_Quarta-feira Qua 4ª_Quinta-feira Qui 5ª_Sexta-feira Sex 6ª_Sábado Sáb Sá'.split('_'), i; + var expected = 'sundag su. su_måndag må. må_tysdag ty. ty_onsdag on. on_torsdag to. to_fredag fr. fr_laurdag lau. la'.split( + '_' + ), + i; 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 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), 'poucos segundos', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'um minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'um minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uma hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uma hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'um dia', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'um dia', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dias', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'um dia', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dias', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dias', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'um mês', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'um mês', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'um mês', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'um mês', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'um ano', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'um ano', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'nokre sekund', + '44 sekunder = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'eit minutt', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'eit minutt', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutt', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutt', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'ein time', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'ein time', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 timar', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 timar', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 timar', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'ein dag', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'ein dag', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dagar', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'ein dag', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dagar', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dagar', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'ein månad', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'ein månad', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'ein månad', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 månader', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 månader', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 månader', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'ein månad', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 månader', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'eit år', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 år', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'eit år', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 år', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'em poucos segundos', 'prefix'); - assert.equal(moment(0).from(30000), 'há poucos segundos', 'prefix'); + assert.equal(moment(30000).from(0), 'om nokre sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'nokre sekund sidan', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'nokre sekund sidan', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'em poucos segundos', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'em 5 dias', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'om nokre sekund', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'om 5 dagar', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Hoje às 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hoje às 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hoje às 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Amanhã às 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hoje às 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ontem às 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'I dag klokka 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'I dag klokka 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'I dag klokka 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'I morgon klokka 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'I dag klokka 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'I går klokka 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 [às] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [klokka] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [klokka] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [klokka] 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((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[Føregåande] dddd [klokka] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[Føregåande] dddd [klokka] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[Føregåande] dddd [klokka] 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'); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('relative time threshold', function (assert) { - var rts = moment(), - rtsDefault = moment.relativeTimeThreshold('ss'); - - moment.relativeTimeThreshold('ss', 3); - - rts.subtract(3, 'seconds'); - assert.equal(rts.fromNow(), 'há poucos segundos', 'Below custom a few seconds to seconds threshold'); - rts.subtract(1, 'seconds'); - assert.equal(rts.fromNow(), 'há 4 segundos', 'Above custom a few seconds to seconds threshold'); - - moment.relativeTimeThreshold('ss', rtsDefault); + 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' + ); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -46858,27 +79836,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -46888,8 +79871,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -46902,7 +79887,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -46911,16 +79899,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -46928,7 +79922,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -46936,12 +79932,21 @@ 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'); + 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' + ); } }); @@ -46949,12 +79954,27 @@ 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'); + 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' + ); } }); @@ -46963,7 +79983,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -46973,24 +79996,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -47009,19 +80036,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -47036,7 +80083,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -47046,7 +80099,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -47059,7 +80119,11 @@ 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'); + 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'); @@ -47074,64 +80138,94 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('pt'); + localeModule('oc-lnc'); test('parse', function (assert) { - var tests = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; + var tests = 'genièr gen._febrièr febr._març març_abril abr._mai mai_junh junh_julhet julh._agost ago._setembre set._octòbre oct._novembre nov._decembre dec.'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } for (i = 0; i < 12; i++) { tests[i] = tests[i].split(' '); @@ -47148,29 +80242,32 @@ test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'Domingo, Fevereiro 14º 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2º 02 Fevereiro Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14º 14'], - ['d do dddd ddd', '0 0º Domingo Dom'], - ['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', '14/02/2010'], - ['LL', '14 de Fevereiro de 2010'], - ['LLL', '14 de Fevereiro de 2010 15:25'], - ['LLLL', 'Domingo, 14 de Fevereiro de 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 de Fev de 2010'], - ['lll', '14 de Fev de 2010 15:25'], - ['llll', 'Dom, 14 de Fev de 2010 15:25'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'dimenge, 14è de febrièr 2010, 3:25:50 pm', + ], + ['ddd, hA', 'dg., 3PM'], + ['M Mo MM MMMM MMM', '2 2n 02 febrièr febr.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14è 14'], + ['d do dddd ddd dd', '0 0è dimenge 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'], + ['[the] DDDo [day of the year]', 'the 45è day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 de febrièr de 2010'], + ['LLL', '14 de febrièr de 2010 a 15:25'], + ['LLLL', 'dimenge 14 de febrièr de 2010 a 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; @@ -47180,158 +80277,384 @@ }); 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 = 'Janeiro Jan_Fevereiro Fev_Março Mar_Abril Abr_Maio Mai_Junho Jun_Julho Jul_Agosto Ago_Setembro Set_Outubro Out_Novembro Nov_Dezembro Dez'.split('_'), i; + var expected = 'genièr gen._febrièr febr._març març_abril abr._mai mai_junh junh_julhet julh._agost ago._setembre set._octòbre oct._novembre nov._decembre dec.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Domingo Dom Do_Segunda-feira Seg 2ª_Terça-feira Ter 3ª_Quarta-feira Qua 4ª_Quinta-feira Qui 5ª_Sexta-feira Sex 6ª_Sábado Sáb Sá'.split('_'), i; + var expected = 'dimenge dg. dg_diluns dl. dl_dimars dm. dm_dimècres dc. dc_dijòus dj. dj_divendres dv. dv_dissabte ds. ds'.split( + '_' + ), + i; 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 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), 'segundos', '44 seconds = seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'um minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'um minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minutos', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minutos', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'uma hora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'uma hora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 horas', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 horas', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 horas', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'um dia', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'um dia', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dias', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'um dia', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dias', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dias', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'um mês', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'um mês', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'um mês', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meses', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meses', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meses', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'um mês', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meses', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'um ano', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 anos', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'um ano', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 anos', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'unas segondas', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'una minuta', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'una minuta', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutas', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutas', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'una ora', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'una ora', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 oras', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 oras', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 oras', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'un jorn', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'un jorn', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 jorns', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'un jorn', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 jorns', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 jorns', + '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 meses', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 meses', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '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 meses', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un an', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 ans', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un an', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 ans', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'em segundos', 'prefix'); - assert.equal(moment(0).from(30000), 'há segundos', 'suffix'); + assert.equal(moment(30000).from(0), "d'aquí unas segondas", 'prefix'); + assert.equal(moment(0).from(30000), 'fa unas segondas', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'fa unas segondas', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'em segundos', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'em 5 dias', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + "d'aquí unas segondas", + "d'aquí unas segondas" + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + "d'aquí 5 jorns", + "d'aquí 5 jorns" + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Hoje às 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hoje às 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hoje às 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Amanhã às 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hoje às 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ontem às 12:00', 'yesterday at the same time'); + assert.equal(moment(a).calendar(), 'uèi a 12:00', 'today at the same time'); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'uèi a 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'uèi a 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'deman a 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).add({ d: 1, h: -1 }).calendar(), + 'deman a 11:00', + 'tomorrow minus 1 hour' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'uèi a 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'ièr a 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 [às] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [a] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [a] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [às] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [a] 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((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [passat a] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [passat a] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format((m.day() === 0 || m.day() === 6) ? '[Último] dddd [às] LT' : '[Última] dddd [às] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [passat a] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2º', 'Jan 15 2012 should be week 2'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52a', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1a', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1a', + 'Jan 8 2012 should be week 1' + ); + 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' + ); + }); + + test('day and month', function (assert) { + assert.equal(moment([2012, 1, 15]).format('D MMMM'), '15 de febrièr'); + assert.equal(moment([2012, 9, 15]).format('D MMMM'), "15 d'octòbre"); + assert.equal(moment([2012, 9, 15]).format('MMMM, D'), 'octòbre, 15'); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -47346,27 +80669,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -47376,8 +80704,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -47390,7 +80720,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -47399,16 +80732,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -47416,7 +80755,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -47424,12 +80765,21 @@ 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'); + 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' + ); } }); @@ -47437,12 +80787,27 @@ 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'); + 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' + ); } }); @@ -47451,7 +80816,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -47461,24 +80829,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -47497,19 +80869,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -47524,7 +80916,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -47534,7 +80932,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -47547,7 +80952,11 @@ 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'); + 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'); @@ -47562,65 +80971,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ro'); + localeModule('pa-in'); test('parse', function (assert) { - var tests = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split('_'), i; + var tests = 'ਜਨਵਰੀ ਜਨਵਰੀ_ਫ਼ਰਵਰੀ ਫ਼ਰਵਰੀ_ਮਾਰਚ ਮਾਰਚ_ਅਪ੍ਰੈਲ ਅਪ੍ਰੈਲ_ਮਈ ਮਈ_ਜੂਨ ਜੂਨ_ਜੁਲਾਈ ਜੁਲਾਈ_ਅਗਸਤ ਅਗਸਤ_ਸਤੰਬਰ ਸਤੰਬਰ_ਅਕਤੂਬਰ ਅਕਤੂਬਰ_ਨਵੰਬਰ ਨਵੰਬਰ_ਦਸੰਬਰ ਦਸੰਬਰ'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -47631,34 +81079,43 @@ 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', 'duminică, februarie 14 2010, 3:25:50 PM'], - ['ddd, hA', 'Dum, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 februarie febr.'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 duminică Dum Du'], - ['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'], - ['[a] DDDo[a zi a anului]', 'a 45a zi a anului'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 februarie 2010'], - ['LLL', '14 februarie 2010 15:25'], - ['LLLL', 'duminică, 14 februarie 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 febr. 2010'], - ['lll', '14 febr. 2010 15:25'], - ['llll', 'Dum, 14 febr. 2010 15:25'] + [ + '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', 'ਦੁਪਹਿਰ ਦੁਪਹਿਰ'], + ['LTS', 'ਦੁਪਹਿਰ ੩:੨੫:੫੦ ਵਜੇ'], + ['L', '੧੪/੦੨/੨੦੧੦'], + ['LL', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦'], + ['LLL', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'], + ['LLLL', 'ਐਤਵਾਰ, ੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'], + ['l', '੧੪/੨/੨੦੧੦'], + ['ll', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦'], + ['lll', '੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'], + ['llll', 'ਐਤ, ੧੪ ਫ਼ਰਵਰੀ ੨੦੧੦, ਦੁਪਹਿਰ ੩:੨੫ ਵਜੇ'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -47668,170 +81125,698 @@ }); 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 = 'ianuarie ian._februarie febr._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split('_'), i; + var expected = 'ਜਨਵਰੀ ਜਨਵਰੀ_ਫ਼ਰਵਰੀ ਫ਼ਰਵਰੀ_ਮਾਰਚ ਮਾਰਚ_ਅਪ੍ਰੈਲ ਅਪ੍ਰੈਲ_ਮਈ ਮਈ_ਜੂਨ ਜੂਨ_ਜੁਲਾਈ ਜੁਲਾਈ_ਅਗਸਤ ਅਗਸਤ_ਸਤੰਬਰ ਸਤੰਬਰ_ਅਕਤੂਬਰ ਅਕਤੂਬਰ_ਨਵੰਬਰ ਨਵੰਬਰ_ਦਸੰਬਰ ਦਸੰਬਰ'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'duminică Dum Du_luni Lun Lu_marți Mar Ma_miercuri Mie Mi_joi Joi Jo_vineri Vin Vi_sâmbătă Sâm Sâ'.split('_'), i; + var expected = 'ਐਤਵਾਰ ਐਤ ਐਤ_ਸੋਮਵਾਰ ਸੋਮ ਸੋਮ_ਮੰਗਲਵਾਰ ਮੰਗਲ ਮੰਗਲ_ਬੁਧਵਾਰ ਬੁਧ ਬੁਧ_ਵੀਰਵਾਰ ਵੀਰ ਵੀਰ_ਸ਼ੁੱਕਰਵਾਰ ਸ਼ੁਕਰ ਸ਼ੁਕਰ_ਸ਼ਨੀਚਰਵਾਰ ਸ਼ਨੀ ਸ਼ਨੀ'.split( + '_' + ), + i; 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 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), 'câteva secunde', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'un minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'un minut', '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 de minute', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'o oră', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'o oră', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ore', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ore', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 de ore', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'o zi', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'o zi', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 zile', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'o zi', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 zile', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 de zile', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'o lună', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'o lună', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'o lună', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 luni', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 luni', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 luni', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'o lună', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 luni', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'un an', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ani', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'un an', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ani', '5 years = 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 19}), true), '19 ani', '19 years = 19 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 20}), true), '20 de ani', '20 years = 20 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 100}), true), '100 de ani', '100 years = 100 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 101}), true), '101 ani', '101 years = 101 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 119}), true), '119 ani', '119 years = 119 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 120}), true), '120 de ani', '120 years = 120 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 219}), true), '219 ani', '219 years = 219 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 220}), true), '220 de ani', '220 years = 220 years'); + 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), 'peste câteva secunde', 'prefix'); - assert.equal(moment(0).from(30000), 'câteva secunde în urmă', '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(), 'câteva secunde în urmă', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'ਕੁਝ ਸਕਿੰਟ ਪਿਛਲੇ', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'peste câteva secunde', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'peste 5 zile', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'ਕੁਝ ਸਕਿੰਟ ਵਿੱਚ', + 'ਕੁਝ ਸਕਿੰਟ ਵਿੱਚ' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '੫ ਦਿਨ ਵਿੱਚ', '੫ ਦਿਨ ਵਿੱਚ'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'azi la 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'azi la 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'azi la 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'mâine la 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'azi la 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ieri la 12:00', 'yesterday at the same time'); + 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' + ); }); 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 [la] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [la] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [la] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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('[fosta] dddd [la] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[ਪਿਛਲੇ] dddd[,] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[fosta] dddd [la] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[fosta] dddd [la] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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( + 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' + ); + }); + + test('meridiem invariant', 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', function (assert) { + assert.equal( + moment([2012, 0, 1]).week(), + 1, + 'Jan 1 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 7]).week(), + 1, + 'Jan 7 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).week(), + 2, + 'Jan 8 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 14]).week(), + 2, + 'Jan 14 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).week(), + 3, + 'Jan 15 2012 should be week 3' + ); + }); + + test('weeks year starting monday', function (assert) { + assert.equal( + moment([2006, 11, 31]).week(), + 1, + 'Dec 31 2006 should be week 1' + ); + assert.equal( + moment([2007, 0, 1]).week(), + 1, + 'Jan 1 2007 should be week 1' + ); + assert.equal( + moment([2007, 0, 6]).week(), + 1, + 'Jan 6 2007 should be week 1' + ); + assert.equal( + moment([2007, 0, 7]).week(), + 2, + 'Jan 7 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 13]).week(), + 2, + 'Jan 13 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 14]).week(), + 3, + 'Jan 14 2007 should be week 3' + ); + }); + + test('weeks year starting tuesday', function (assert) { + assert.equal( + moment([2007, 11, 29]).week(), + 52, + 'Dec 29 2007 should be week 52' + ); + assert.equal( + moment([2008, 0, 1]).week(), + 1, + 'Jan 1 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 5]).week(), + 1, + 'Jan 5 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 6]).week(), + 2, + 'Jan 6 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 12]).week(), + 2, + 'Jan 12 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 13]).week(), + 3, + 'Jan 13 2008 should be week 3' + ); + }); + + test('weeks year starting wednesday', function (assert) { + assert.equal( + moment([2002, 11, 29]).week(), + 1, + 'Dec 29 2002 should be week 1' + ); + assert.equal( + moment([2003, 0, 1]).week(), + 1, + 'Jan 1 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 4]).week(), + 1, + 'Jan 4 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 5]).week(), + 2, + 'Jan 5 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 11]).week(), + 2, + 'Jan 11 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 12]).week(), + 3, + 'Jan 12 2003 should be week 3' + ); + }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + test('weeks year starting thursday', function (assert) { + assert.equal( + moment([2008, 11, 28]).week(), + 1, + 'Dec 28 2008 should be week 1' + ); + assert.equal( + moment([2009, 0, 1]).week(), + 1, + 'Jan 1 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 3]).week(), + 1, + 'Jan 3 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 4]).week(), + 2, + 'Jan 4 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 10]).week(), + 2, + 'Jan 10 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 11]).week(), + 3, + 'Jan 11 2009 should be week 3' + ); + }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + test('weeks year starting friday', function (assert) { + assert.equal( + moment([2009, 11, 27]).week(), + 1, + 'Dec 27 2009 should be week 1' + ); + assert.equal( + moment([2010, 0, 1]).week(), + 1, + 'Jan 1 2010 should be week 1' + ); + assert.equal( + moment([2010, 0, 2]).week(), + 1, + 'Jan 2 2010 should be week 1' + ); + assert.equal( + moment([2010, 0, 3]).week(), + 2, + 'Jan 3 2010 should be week 2' + ); + assert.equal( + moment([2010, 0, 9]).week(), + 2, + 'Jan 9 2010 should be week 2' + ); + assert.equal( + moment([2010, 0, 10]).week(), + 3, + 'Jan 10 2010 should be week 3' + ); + }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + test('weeks year starting saturday', function (assert) { + assert.equal( + moment([2010, 11, 26]).week(), + 1, + 'Dec 26 2010 should be week 1' + ); + assert.equal( + moment([2011, 0, 1]).week(), + 1, + 'Jan 1 2011 should be week 1' + ); + assert.equal( + moment([2011, 0, 2]).week(), + 2, + 'Jan 2 2011 should be week 2' + ); + assert.equal( + moment([2011, 0, 8]).week(), + 2, + 'Jan 8 2011 should be week 2' + ); + assert.equal( + moment([2011, 0, 9]).week(), + 3, + 'Jan 9 2011 should be week 3' + ); }); 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'); + 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' + ); + }); + + 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 + ); + } }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -47846,27 +81831,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -47876,8 +81866,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -47890,7 +81882,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -47899,16 +81894,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -47916,7 +81917,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -47924,12 +81927,21 @@ 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'); + 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' + ); } }); @@ -47937,12 +81949,27 @@ 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'); + 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' + ); } }); @@ -47951,7 +81978,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -47961,24 +81991,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -47997,19 +82031,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -48024,7 +82078,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -48034,7 +82094,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -48047,7 +82114,11 @@ 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'); + 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'); @@ -48062,118 +82133,188 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ru'); + localeModule('pl'); test('parse', function (assert) { - var tests = 'январь янв._февраль февр._март март_апрель апр._май май_июнь июнь_июль июль_август авг._сентябрь сент._октябрь окт._ноябрь нояб._декабрь дек.'.split('_'), i; + var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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)); + 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][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); + // Fails for all months + // equalTestStrict(tests[i][0], '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][1], 'MMMM', i); + // Fails for all months + // equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMM', i); + // Fails for all months + // equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMM', i); equalTestStrict(tests[i][0].toLocaleLowerCase(), 'MMMM', i); equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTestStrict(tests[i][1].toLocaleUpperCase(), 'MMMM', i); } }); - test('parse exceptional case', function (assert) { - assert.equal(moment('11 Мая 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), '11-05-1989'); + test('parse strict', function (assert) { + var tests = 'styczeń stycznia sty_luty lutego lut_marzec marca mar_kwiecień kwietnia kwi_maj maja maj_czerwiec czerwca cze_lipiec lipca lip_sierpień sierpnia sie_wrzesień września wrz_październik października paź_listopad listopada lis_grudzień grudnia gru'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm, true).month(), + i, + input + ' should be month ' + (i + 1) + ); + } + for (i = 0; i < 12; i++) { + tests[i] = tests[i].split(' '); + equalTest(tests[i][0], 'MMMM', i); + equalTest(tests[i][1], 'MMMM', i); + equalTest(tests[i][2], 'MMM', i); + equalTest(tests[i][0].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleLowerCase(), 'MMM', i); + equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + equalTest(tests[i][2].toLocaleUpperCase(), 'MMM', i); + } }); 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 февраль февр.'], - ['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', 'дня дня'], - ['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'], - ['l', '14.2.2010'], - ['ll', '14 февр. 2010 г.'], - ['lll', '14 февр. 2010 г., 15:25'], - ['llll', 'вс, 14 февр. 2010 г., 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'niedziela, luty 14. 2010, 3:25:50 pm', + ], + ['ddd, hA', 'ndz, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 luty lut'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. niedziela ndz Nd'], + ['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', '14.02.2010'], + ['LL', '14 lutego 2010'], + ['LLL', '14 lutego 2010 15:25'], + ['LLLL', 'niedziela, 14 lutego 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 lut 2010'], + ['lll', '14 lut 2010 15:25'], + ['llll', 'ndz, 14 lut 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -48182,296 +82323,433 @@ } }); - 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('_'), i; + var expected = 'styczeń sty_luty lut_marzec mar_kwiecień kwi_maj maj_czerwiec cze_lipiec lip_sierpień sie_wrzesień wrz_październik paź_listopad lis_grudzień gru'.split( + '_' + ), + i; for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - 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 short case', function (assert) { - var monthsShort = { - 'nominative': 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_'), - 'accusative': 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); - assert.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.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 month short case with escaped symbols', function (assert) { - var monthsShort = { - 'nominative': 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_'), - 'accusative': 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_') - }, i; - for (i = 0; i < 12; i++) { - assert.equal(moment([2013, i, 1]).format('D[] MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]); - assert.equal(moment([2013, i, 1]).format('[]D[] []MMM[]'), '1 ' + monthsShort.accusative[i] + '', '1 ' + monthsShort.accusative[i] + ''); - assert.equal(moment([2013, i, 1]).format('D[-й день] MMM'), '1-й день ' + monthsShort.accusative[i], '1-й день ' + monthsShort.accusative[i]); - assert.equal(moment([2013, i, 1]).format('D, MMM'), '1, ' + monthsShort.nominative[i], '1, ' + monthsShort.nominative[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'воскресенье вс вс_понедельник пн пн_вторник вт вт_среда ср ср_четверг чт чт_пятница пт пт_суббота сб сб'.split('_'), i; + var expected = 'niedziela ndz Nd_poniedziałek pon Pn_wtorek wt Wt_środa śr Śr_czwartek czw Cz_piątek pt Pt_sobota sob So'.split( + '_' + ), + i; 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 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), 'несколько секунд', '44 seconds = 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: 31}), true), '31 минута', '31 minutes = 31 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), '2 часа', '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), '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 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 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 месяца', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'kilka 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 minuty', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuty', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'godzina', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'godzina', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 godziny', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 godzin', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 godzin', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + '1 dzień', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '1 dzień', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dni', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + '1 dzień', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dni', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dni', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'miesiąc', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'miesiąc', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'miesiąc', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 miesiące', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 miesiące', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 miesiące', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'miesiąc', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 miesięcy', + '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 lata', + '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 lat', + '5 years = 5 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 112 }), true), + '112 lat', + '112 years = 112 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 122 }), true), + '122 lata', + '122 years = 122 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 213 }), true), + '213 lat', + '213 years = 213 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 223 }), true), + '223 lata', + '223 years = 223 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 kilka sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'kilka sekund temu', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'kilka sekund temu', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'через несколько секунд', 'in 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({ s: 30 }).fromNow(), + 'za kilka sekund', + 'in a few seconds' + ); + assert.equal(moment().add({ h: 1 }).fromNow(), 'za godzinę', 'in an hour'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'za 5 dni', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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({h: 4}).calendar(), 'Сегодня, в 8:00', 'Now minus 4 hours'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчера, в 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Dziś o 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Dziś o 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Dziś o 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Jutro o 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Dziś o 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Wczoraj o 12:00', + 'yesterday at the same time' + ); }); test('calendar next week', function (assert) { - var i, m, now; + var i, m; - function makeFormatNext(d) { + function makeFormat(d) { switch (d.day()) { case 0: - return '[В следующее] dddd, [в] LT'; - case 1: + return '[W niedzielę o] LT'; + case 2: - case 4: - return '[В следующий] dddd, [в] LT'; + return '[We wtorek o] LT'; + case 3: - case 5: + return '[W środę o] LT'; + case 6: - return '[В следующую] dddd, [в] LT'; - } - } + return '[W sobotę o] LT'; - function makeFormatThis(d) { - if (d.day() === 2) { - return '[Во] dddd, [в] LT'; - } - else { - return '[В] dddd, [в] LT'; + default: + return '[W] dddd [o] LT'; } } - now = moment().startOf('week'); for (i = 2; i < 7; i++) { - m = moment(now).add({d: i}); - assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today + ' + i + ' days end of day'); - } + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days current time' + ); - now = moment().endOf('week'); - for (i = 2; i < 7; i++) { - m = moment(now).add({d: i}); - assert.equal(m.calendar(now), m.format(makeFormatNext(m)), 'Today + ' + i + ' days current time'); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(now), m.format(makeFormatNext(m)), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(now), m.format(makeFormatNext(m)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { - var i, m, now; + var i, m; - function makeFormatLast(d) { + function makeFormat(d) { switch (d.day()) { case 0: - return '[В прошлое] dddd, [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd, [в] LT'; + return '[W zeszłą niedzielę o] LT'; case 3: - case 5: + return '[W zeszłą środę o] LT'; case 6: - return '[В прошлую] dddd, [в] LT'; - } - } - - function makeFormatThis(d) { - if (d.day() === 2) { - return '[Во] dddd, [в] LT'; - } - else { - return '[В] dddd, [в] LT'; + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; } } - now = moment().startOf('week'); for (i = 2; i < 7; i++) { - m = moment(now).subtract({d: i}); - assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(now), m.format(makeFormatLast(m)), 'Today - ' + i + ' days end of day'); - } + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today - ' + i + ' days current time' + ); - now = moment().endOf('week'); - for (i = 2; i < 7; i++) { - m = moment(now).subtract({d: i}); - assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days current time'); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(now), m.format(makeFormatThis(m)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting monday 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'); + 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' + ); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -48486,27 +82764,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -48516,8 +82799,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -48530,7 +82815,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -48539,16 +82827,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -48556,7 +82850,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -48564,12 +82860,21 @@ 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'); + 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' + ); } }); @@ -48577,12 +82882,27 @@ 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'); + 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' + ); } }); @@ -48591,7 +82911,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -48601,24 +82924,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -48637,19 +82964,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -48664,7 +83011,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -48674,7 +83027,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -48687,7 +83047,11 @@ 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'); + 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'); @@ -48702,119 +83066,153 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('sd'); - - var months = [ - 'جنوري', - 'فيبروري', - 'مارچ', - 'اپريل', - 'مئي', - 'جون', - 'جولاءِ', - 'آگسٽ', - 'سيپٽمبر', - 'آڪٽوبر', - 'نومبر', - 'ڊسمبر' - ]; - var days = [ - 'آچر', - 'سومر', - 'اڱارو', - 'اربع', - 'خميس', - 'جمع', - 'ڇنڇر' - ]; + localeModule('pt-br'); test('parse', function (assert) { + var tests = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } - for (var i = 0; i < 12; i++) { - equalTest(months[i], 'MMM', i); - equalTest(months[i], 'MMMM', i); + + 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', 'آچر، فيبروري 14 2010، 3:25:50 شام'], - ['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'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'شام شام'], - ['[سال جو] 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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'domingo, fevereiro 14º 2010, 3:25:50 pm', + ], + ['ddd, hA', 'dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 fevereiro fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd', '0 0º domingo dom'], + ['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', '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 fevereiro de 2010'], + ['LLL', '14 de fevereiro de 2010 às 15:25'], + ['LLLL', 'domingo, 14 de fevereiro de 2010 às 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de fev de 2010'], + ['lll', '14 de fev de 2010 às 15:25'], + ['llll', 'dom, 14 de fev de 2010 às 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -48824,160 +83222,399 @@ }); 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) { - for (var i = 0; i < months.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), months[i] + ' ' + months[i], months[i] + ' ' + months[i]); + var expected = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.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) { - for (var i = 0; i < days.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), days[i] + ' ' + days[i] + ' ' + days[i], days[i] + ' ' + days[i] + ' ' + days[i]); + var expected = 'domingo dom do_segunda-feira seg 2ª_terça-feira ter 3ª_quarta-feira qua 4ª_quinta-feira qui 5ª_sexta-feira sex 6ª_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'), + 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), 'چند سيڪنڊ', '44 seconds = چند سيڪنڊ'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'هڪ منٽ', '45 seconds = هڪ منٽ'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'هڪ منٽ', '89 seconds = هڪ منٽ'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 منٽ', '90 seconds = 2 منٽ'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 منٽ', '44 minutes = 44 منٽ'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'هڪ ڪلاڪ', '45 minutes = هڪ ڪلاڪ'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'هڪ ڪلاڪ', '89 minutes = هڪ ڪلاڪ'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 ڪلاڪ', '90 minutes = 2 ڪلاڪ'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ڪلاڪ', '5 hours = 5 ڪلاڪ'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ڪلاڪ', '21 hours = 21 ڪلاڪ'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'هڪ ڏينهن', '22 hours = هڪ ڏينهن'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'هڪ ڏينهن', '35 hours = هڪ ڏينهن'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ڏينهن', '36 hours = 2 ڏينهن'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'هڪ ڏينهن', '1 day = هڪ ڏينهن'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ڏينهن', '5 days = 5 ڏينهن'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ڏينهن', '25 days = 25 ڏينهن'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'هڪ مهينو', '26 days = هڪ مهينو'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'هڪ مهينو', '30 days = هڪ مهينو'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'هڪ مهينو', '43 days = هڪ مهينو'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 مهينا', '46 days = 2 مهينا'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 مهينا', '75 days = 2 مهينا'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 مهينا', '76 days = 3 مهينا'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'هڪ مهينو', '1 month = هڪ مهينو'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 مهينا', '5 months = 5 مهينا'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'هڪ سال', '345 days = هڪ سال'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 سال', '548 days = 2 سال'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'هڪ سال', '1 year = هڪ سال'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 سال', '5 years = 5 سال'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'poucos segundos', + '44 seconds = seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'um minuto', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'um minuto', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutos', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutos', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'uma hora', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'uma hora', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 horas', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 horas', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 horas', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'um dia', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'um dia', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dias', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'um dia', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dias', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dias', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'um mês', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'um mês', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'um mês', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 meses', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 meses', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 meses', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'um mês', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 meses', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'um ano', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 anos', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'um ano', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 anos', + '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), 'em poucos segundos', 'prefix'); + assert.equal(moment(0).from(30000), 'há poucos segundos', 'prefix'); }); 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({ s: 30 }).fromNow(), + 'em poucos segundos', + 'in seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'em 5 dias', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal( + moment(a).calendar(), + 'Hoje às 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Hoje às 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Hoje às 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Amanhã às 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Hoje às 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Ontem às 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 [اڳين هفتي تي] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [às] 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'); + assert.equal( + m.calendar(), + m.format('dddd [às] 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'); + assert.equal( + m.calendar(), + m.format('dddd [às] 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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format( + m.day() === 0 || m.day() === 6 + ? '[Último] dddd [às] LT' + : '[Última] dddd [às] 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'); + assert.equal( + m.calendar(), + m.format( + m.day() === 0 || m.day() === 6 + ? '[Último] dddd [às] LT' + : '[Última] dddd [às] 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'); + assert.equal( + m.calendar(), + m.format( + m.day() === 0 || m.day() === 6 + ? '[Último] dddd [às] LT' + : '[Última] dddd [às] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + 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' + ); + }); + + test('relative time threshold', function (assert) { + var rts = moment(), + rtsDefault = moment.relativeTimeThreshold('ss'); + + moment.relativeTimeThreshold('ss', 3); + + rts.subtract(3, 'seconds'); + assert.equal( + rts.fromNow(), + 'há poucos segundos', + 'Below custom a few seconds to seconds threshold' + ); + rts.subtract(1, 'seconds'); + assert.equal( + rts.fromNow(), + 'há 4 segundos', + 'Above custom a few seconds to seconds threshold' + ); + + moment.relativeTimeThreshold('ss', rtsDefault); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -48992,27 +83629,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -49022,8 +83664,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -49036,7 +83680,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -49045,16 +83692,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -49062,7 +83715,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -49070,12 +83725,21 @@ 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'); + 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' + ); } }); @@ -49083,12 +83747,27 @@ 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'); + 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' + ); } }); @@ -49097,7 +83776,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -49107,24 +83789,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -49143,19 +83829,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -49170,7 +83876,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -49180,7 +83892,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -49193,7 +83912,11 @@ 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'); + 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'); @@ -49208,66 +83931,102 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('se'); + localeModule('pt'); test('parse', function (assert) { - var i, - tests = 'ođđajagemánnu ođđj_guovvamánnu guov_njukčamánnu njuk_cuoŋománnu cuo_miessemánnu mies_geassemánnu geas_suoidnemánnu suoi_borgemánnu borg_čakčamánnu čakč_golggotmánnu golg_skábmamánnu skáb_juovlamánnu juov'.split('_'); - + var tests = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -49280,207 +84039,424 @@ 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', 'sotnabeaivi, guovvamánnu 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'sotn, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 guovvamánnu guov'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. sotnabeaivi sotn s'], - ['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'], - ['[jagi] DDDo [beaivi]', 'jagi 45. beaivi'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', 'guovvamánnu 14. b. 2010'], - ['LLL', 'guovvamánnu 14. b. 2010 ti. 15:25'], - ['LLLL', 'sotnabeaivi, guovvamánnu 14. b. 2010 ti. 15:25'], - ['l', '14.2.2010'], - ['ll', 'guov 14. b. 2010'], - ['lll', 'guov 14. b. 2010 ti. 15:25'], - ['llll', 'sotn, guov 14. b. 2010 ti. 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Domingo, fevereiro 14º 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2º 02 fevereiro fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14º 14'], + ['d do dddd ddd', '0 0º Domingo Dom'], + ['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', '14/02/2010'], + ['LL', '14 de fevereiro de 2010'], + ['LLL', '14 de fevereiro de 2010 15:25'], + ['LLLL', 'Domingo, 14 de fevereiro de 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 de fev de 2010'], + ['lll', '14 de fev de 2010 15:25'], + ['llll', 'Dom, 14 de fev 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 = 'ođđajagemánnu ođđj_guovvamánnu guov_njukčamánnu njuk_cuoŋománnu cuo_miessemánnu mies_geassemánnu geas_suoidnemánnu suoi_borgemánnu borg_čakčamánnu čakč_golggotmánnu golg_skábmamánnu skáb_juovlamánnu juov'.split('_'); - + var expected = 'janeiro jan_fevereiro fev_março mar_abril abr_maio mai_junho jun_julho jul_agosto ago_setembro set_outubro out_novembro nov_dezembro dez'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var i, - expected = 'sotnabeaivi sotn s_vuossárga vuos v_maŋŋebárga maŋ m_gaskavahkku gask g_duorastat duor d_bearjadat bear b_lávvardat láv L'.split('_'); - + var expected = 'Domingo Dom Do_Segunda-feira Seg 2ª_Terça-feira Ter 3ª_Quarta-feira Qua 4ª_Quinta-feira Qui 5ª_Sexta-feira Sex 6ª_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'), expected[i], expected[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), 'moadde sekunddat', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'okta minuhta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'okta minuhta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuhtat', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuhtat', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'okta diimmu', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'okta diimmu', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 diimmut', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 diimmut', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 diimmut', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'okta beaivi', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'okta beaivi', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 beaivvit', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'okta beaivi', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 beaivvit', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 beaivvit', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'okta mánnu', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'okta mánnu', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'okta mánnu', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mánut', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mánut', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mánut', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'okta mánnu', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mánut', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'okta jahki', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 jagit', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'okta jahki', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 jagit', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'segundos', + '44 seconds = seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'um minuto', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'um minuto', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minutos', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minutos', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'uma hora', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'uma hora', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 horas', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 horas', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 horas', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'um dia', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'um dia', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dias', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'um dia', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dias', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dias', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'um mês', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'um mês', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'um mês', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 meses', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 meses', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 meses', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'um mês', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 meses', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'um ano', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 anos', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'um ano', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 anos', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'moadde sekunddat geažes', 'prefix'); - assert.equal(moment(0).from(30000), 'maŋit moadde sekunddat', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'maŋit moadde sekunddat', 'now from now should display as in the past'); + assert.equal(moment(30000).from(0), 'em segundos', 'prefix'); + assert.equal(moment(0).from(30000), 'há segundos', 'suffix'); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'moadde sekunddat geažes', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 beaivvit geažes', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'em segundos', + 'in seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'em 5 dias', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'otne ti 12:00', 'Today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'otne ti 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'otne ti 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'ihttin ti 12:00', 'Tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'otne ti 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ikte ti 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Hoje às 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Hoje às 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Hoje às 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Amanhã às 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Hoje às 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Ontem às 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 [ti] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [às] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [ti] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [às] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [ti] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [às] 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('[ovddit] dddd [ti] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format( + m.day() === 0 || m.day() === 6 + ? '[Último] dddd [às] LT' + : '[Última] dddd [às] LT' + ), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[ovddit] dddd [ti] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format( + m.day() === 0 || m.day() === 6 + ? '[Último] dddd [às] LT' + : '[Última] dddd [às] LT' + ), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[ovddit] dddd [ti] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format( + m.day() === 0 || m.day() === 6 + ? '[Último] dddd [às] LT' + : '[Última] dddd [às] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2º', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -49495,27 +84471,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -49525,8 +84506,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -49539,7 +84522,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -49548,16 +84534,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -49565,7 +84557,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -49573,12 +84567,21 @@ 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'); + 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' + ); } }); @@ -49586,12 +84589,27 @@ 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'); + 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' + ); } }); @@ -49600,7 +84618,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -49610,24 +84631,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -49646,19 +84671,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -49673,7 +84718,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -49683,7 +84734,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -49696,7 +84754,11 @@ 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'); + 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'); @@ -49711,66 +84773,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('si'); + localeModule('ro'); - /*jshint -W100*/ test('parse', function (assert) { - var tests = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්‍රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split('_'), i; + var tests = 'ianuarie ian._februarie feb._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -49781,35 +84881,44 @@ 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 = [ - ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], - ['YYYY MMMM Do dddd, a h:mm:ss', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], - ['ddd, A h', 'ඉරි, පස් වරු 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'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'ප.ව. පස් වරු'], - ['[වසරේ] DDDo [දිනය]', 'වසරේ 45 වැනි දිනය'], - ['LTS', 'ප.ව. 3:25:50'], - ['LT', 'ප.ව. 3:25'], - ['L', '2010/02/14'], - ['LL', '2010 පෙබරවාරි 14'], - ['LLL', '2010 පෙබරවාරි 14, ප.ව. 3:25'], - ['LLLL', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], - ['l', '2010/2/14'], - ['ll', '2010 පෙබ 14'], - ['lll', '2010 පෙබ 14, ප.ව. 3:25'], - ['llll', '2010 පෙබ 14 වැනි ඉරි, ප.ව. 3:25:50'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss A', + 'duminică, februarie 14 2010, 3:25:50 PM', + ], + ['ddd, hA', 'Dum, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 februarie feb.'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 duminică Dum Du'], + ['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'], + ['[a] DDDo[a zi a anului]', 'a 45a zi a anului'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 februarie 2010'], + ['LLL', '14 februarie 2010 15:25'], + ['LLLL', 'duminică, 14 februarie 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 feb. 2010'], + ['lll', '14 feb. 2010 15:25'], + ['llll', 'Dum, 14 feb. 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -49819,155 +84928,413 @@ }); 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('_'), i; + var expected = 'ianuarie ian._februarie feb._martie mart._aprilie apr._mai mai_iunie iun._iulie iul._august aug._septembrie sept._octombrie oct._noiembrie nov._decembrie dec.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'ඉරිදා ඉරි ඉ_සඳුදා සඳු ස_අඟහරුවාදා අඟ අ_බදාදා බදා බ_බ්‍රහස්පතින්දා බ්‍රහ බ්‍ර_සිකුරාදා සිකු සි_සෙනසුරාදා සෙන සෙ'.split('_'), i; + var expected = 'duminică Dum Du_luni Lun Lu_marți Mar Ma_miercuri Mie Mi_joi Joi Jo_vineri Vin Vi_sâmbătă Sâm Sâ'.split( + '_' + ), + i; 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 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), 'තත්පර කිහිපය', '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), 'පැය 2', '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), 'දින 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 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), 'මාස 2', '46 days = 2 months'); - assert.equal(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), 'මාස 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), 'වසර 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 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'තත්පර කිහිපයකින්', 'prefix'); - assert.equal(moment(0).from(30000), 'තත්පර කිහිපයකට පෙර', 'suffix'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'câteva secunde', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'un minut', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'un minut', + '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 de minute', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'o oră', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'o oră', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 ore', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 ore', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 de ore', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'o zi', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'o zi', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 zile', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'o zi', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 zile', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 de zile', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'o lună', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'o lună', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'o lună', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 luni', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 luni', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 luni', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'o lună', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 luni', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'un an', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 ani', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'un an', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 ani', + '5 years = 5 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 19 }), true), + '19 ani', + '19 years = 19 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 20 }), true), + '20 de ani', + '20 years = 20 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 100 }), true), + '100 de ani', + '100 years = 100 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 101 }), true), + '101 ani', + '101 years = 101 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 119 }), true), + '119 ani', + '119 years = 119 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 120 }), true), + '120 de ani', + '120 years = 120 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 219 }), true), + '219 ani', + '219 years = 219 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 220 }), true), + '220 de ani', + '220 years = 220 years' + ); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'peste câteva secunde', 'prefix'); + assert.equal(moment(0).from(30000), 'câteva secunde în urmă', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'තත්පර කිහිපයකට පෙර', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'câteva secunde în urmă', + '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කින්', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'peste câteva secunde', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'peste 5 zile', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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(), 'අද ප.ව. 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'); + assert.equal( + moment(a).calendar(), + 'azi la 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'azi la 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'azi la 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'mâine la 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'azi la 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'ieri la 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 LT[ට]'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [la] 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'); + assert.equal( + m.calendar(), + m.format('dddd [la] 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'); + assert.equal( + m.calendar(), + m.format('dddd [la] 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[ට]'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[fosta] dddd [la] 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'); + assert.equal( + m.calendar(), + m.format('[fosta] dddd [la] 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'); + assert.equal( + m.calendar(), + m.format('[fosta] dddd [la] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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' + ); + }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + 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')) : @@ -49982,27 +85349,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -50012,8 +85384,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -50026,7 +85400,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -50035,16 +85412,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -50052,7 +85435,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -50060,12 +85445,21 @@ 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'); + 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' + ); } }); @@ -50073,12 +85467,27 @@ 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'); + 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' + ); } }); @@ -50087,7 +85496,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -50097,24 +85509,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -50133,19 +85549,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -50160,7 +85596,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -50170,7 +85612,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -50183,7 +85632,11 @@ 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'); + 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'); @@ -50198,64 +85651,101 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('sk'); + localeModule('ru'); test('parse', function (assert) { - var tests = 'január jan._február feb._marec mar._apríl apr._máj máj_jún jún._júl júl._august aug._september sep._október okt._november nov._december dec.'.split('_'), i; - function equalTest(input, mmm, monthIndex) { - assert.equal(moment(input, mmm).month(), monthIndex, input + ' should be month ' + (monthIndex + 1)); + var tests = 'январь янв._февраль февр._март март_апрель апр._май май_июнь июнь_июль июль_август авг._сентябрь сент._октябрь окт._ноябрь нояб._декабрь дек.'.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(' '); @@ -50267,34 +85757,52 @@ 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 exceptional case', function (assert) { + assert.equal( + moment('11 Мая 1989', ['DD MMMM YYYY']).format('DD-MM-YYYY'), + '11-05-1989' + ); + }); + test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss', 'nedeľa, február 14. 2010, 3:25:50'], - ['ddd, h', 'ne, 3'], - ['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. nedeľa 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 [deň v roku]', '45. deň v roku'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14. február 2010'], - ['LLL', '14. február 2010 15:25'], - ['LLLL', 'nedeľa 14. február 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14. feb 2010'], - ['lll', '14. feb 2010 15:25'], - ['llll', 'ne 14. feb 2010 15:25'] + [ + 'dddd, Do MMMM YYYY, HH:mm:ss', + 'воскресенье, 14-го февраля 2010, 15:25:50', + ], + ['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', '6 6-я 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['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'], + ['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; @@ -50303,251 +85811,629 @@ } }); + 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 = 'január jan_február feb_marec mar_apríl apr_máj máj_jún jún_júl júl_august aug_september sep_október okt_november nov_december dec'.split('_'), i; + var expected = 'январь янв._февраль февр._март март_апрель апр._май май_июнь июнь_июль июль_август авг._сентябрь сент._октябрь окт._ноябрь нояб._декабрь дек.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); + } + }); + + 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 short case', function (assert) { + var monthsShort = { + nominative: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( + '_' + ), + accusative: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( + '_' + ), + }, + i; + for (i = 0; i < 12; i++) { + assert.equal( + moment([2011, i, 1]).format('D MMM'), + '1 ' + monthsShort.accusative[i], + '1 ' + monthsShort.accusative[i] + ); + assert.equal( + moment([2011, i, 1]).format('MMM'), + monthsShort.nominative[i], + '1 ' + monthsShort.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 month short case with escaped symbols', function (assert) { + var monthsShort = { + nominative: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( + '_' + ), + accusative: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( + '_' + ), + }, + i; + for (i = 0; i < 12; i++) { + assert.equal( + moment([2013, i, 1]).format('D[] MMM'), + '1 ' + monthsShort.accusative[i], + '1 ' + monthsShort.accusative[i] + ); + assert.equal( + moment([2013, i, 1]).format('[]D[] []MMM[]'), + '1 ' + monthsShort.accusative[i] + '', + '1 ' + monthsShort.accusative[i] + '' + ); + assert.equal( + moment([2013, i, 1]).format('D[-й день] MMM'), + '1-й день ' + monthsShort.accusative[i], + '1-й день ' + monthsShort.accusative[i] + ); + assert.equal( + moment([2013, i, 1]).format('D, MMM'), + '1, ' + monthsShort.nominative[i], + '1, ' + monthsShort.nominative[i] + ); } }); test('format week', function (assert) { - var expected = 'nedeľa ne ne_pondelok po po_utorok ut ut_streda st st_štvrtok št št_piatok pi pi_sobota so so'.split('_'), i; + var expected = 'воскресенье вс вс_понедельник пн пн_вторник вт вт_среда ср ср_четверг чт чт_пятница пт пт_суббота сб сб'.split( + '_' + ), + i; 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 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), 'pár sekúnd', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minúta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minúta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minúty', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minút', '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 hodiny', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 hodín', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 hodín', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'deň', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'deň', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'deň', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dní', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dní', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mesiac', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mesiac', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mesiac', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesiace', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesiace', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesiace', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mesiac', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesiacov', '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 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 rokov', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'несколько секунд', + '44 seconds = 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: 31 }), true), + '31 минута', + '31 minutes = 31 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), + '2 часа', + '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), + '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 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 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 месяца', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'za pár sekúnd', 'prefix'); - assert.equal(moment(0).from(30000), 'pred pár sekundami', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'pred pár sekundami', 'now from now should display as in the past'); - }); - - test('fromNow (future)', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za pár sekúnd', 'in a few seconds'); - assert.equal(moment().add({m: 1}).fromNow(), 'za minútu', 'in a minute'); - assert.equal(moment().add({m: 3}).fromNow(), 'za 3 minúty', 'in 3 minutes'); - assert.equal(moment().add({m: 10}).fromNow(), 'za 10 minút', '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 hodín', 'in 10 hours'); - assert.equal(moment().add({d: 1}).fromNow(), 'za deň', 'in a day'); - assert.equal(moment().add({d: 3}).fromNow(), 'za 3 dni', 'in 3 days'); - assert.equal(moment().add({d: 10}).fromNow(), 'za 10 dní', 'in 10 days'); - assert.equal(moment().add({M: 1}).fromNow(), 'za mesiac', 'in a month'); - assert.equal(moment().add({M: 3}).fromNow(), 'za 3 mesiace', 'in 3 months'); - assert.equal(moment().add({M: 10}).fromNow(), 'za 10 mesiacov', '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 rokov', 'in 10 years'); + assert.equal(moment(30000).from(0), 'через несколько секунд', 'prefix'); + assert.equal(moment(0).from(30000), 'несколько секунд назад', 'suffix'); }); - test('fromNow (past)', function (assert) { - assert.equal(moment().subtract({s: 30}).fromNow(), 'pred pár sekundami', 'a few seconds ago'); - assert.equal(moment().subtract({m: 1}).fromNow(), 'pred minútou', 'a minute ago'); - assert.equal(moment().subtract({m: 3}).fromNow(), 'pred 3 minútami', '3 minutes ago'); - assert.equal(moment().subtract({m: 10}).fromNow(), 'pred 10 minútami', '10 minutes ago'); - assert.equal(moment().subtract({h: 1}).fromNow(), 'pred hodinou', 'an hour ago'); - assert.equal(moment().subtract({h: 3}).fromNow(), 'pred 3 hodinami', '3 hours ago'); - assert.equal(moment().subtract({h: 10}).fromNow(), 'pred 10 hodinami', '10 hours ago'); - assert.equal(moment().subtract({d: 1}).fromNow(), 'pred dňom', 'a day ago'); - assert.equal(moment().subtract({d: 3}).fromNow(), 'pred 3 dňami', '3 days ago'); - assert.equal(moment().subtract({d: 10}).fromNow(), 'pred 10 dňami', '10 days ago'); - assert.equal(moment().subtract({M: 1}).fromNow(), 'pred mesiacom', 'a month ago'); - assert.equal(moment().subtract({M: 3}).fromNow(), 'pred 3 mesiacmi', '3 months ago'); - assert.equal(moment().subtract({M: 10}).fromNow(), 'pred 10 mesiacmi', '10 months ago'); - assert.equal(moment().subtract({y: 1}).fromNow(), 'pred rokom', 'a year ago'); - assert.equal(moment().subtract({y: 3}).fromNow(), 'pred 3 rokmi', '3 years ago'); - assert.equal(moment().subtract({y: 10}).fromNow(), 'pred 10 rokmi', '10 years ago'); + test('fromNow', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'через несколько секунд', + 'in 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' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'dnes o 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'dnes o 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'dnes o 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'zajtra o 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'dnes o 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'včera o 12:00', 'yesterday at the same time'); + 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({ h: 4 }).calendar(), + 'Сегодня, в 8:00', + 'Now minus 4 hours' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Вчера, в 12:00', + 'yesterday at the same time' + ); }); test('calendar next week', function (assert) { - var i, m, nextDay; - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - nextDay = ''; - switch (m.day()) { + var i, m, now; + + function makeFormatNext(d) { + switch (d.day()) { case 0: - nextDay = 'v nedeľu'; - break; + return '[В следующее] dddd, [в] LT'; case 1: - nextDay = 'v pondelok'; - break; case 2: - nextDay = 'v utorok'; - break; - case 3: - nextDay = 'v stredu'; - break; case 4: - nextDay = 'vo štvrtok'; - break; + return '[В следующий] dddd, [в] LT'; + case 3: case 5: - nextDay = 'v piatok'; - break; case 6: - nextDay = 'v sobotu'; - break; + return '[В следующую] dddd, [в] LT'; } - assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[' + nextDay + '] [o] LT'), 'Today + ' + i + ' days end of day'); } - }); - test('calendar last week', function (assert) { - var i, m, lastDay; + function makeFormatThis(d) { + if (d.day() === 2) { + return '[Во] dddd, [в] LT'; + } else { + return '[В] dddd, [в] LT'; + } + } + + now = moment().startOf('week'); for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - lastDay = ''; - switch (m.day()) { - case 0: - lastDay = 'minulú nedeľu'; - break; + m = moment(now).add({ d: i }); + assert.equal( + m.calendar(now), + m.format(makeFormatThis(m)), + 'Today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(now), + m.format(makeFormatThis(m)), + 'Today + ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(now), + m.format(makeFormatThis(m)), + 'Today + ' + i + ' days end of day' + ); + } + + now = moment().endOf('week'); + for (i = 2; i < 7; i++) { + m = moment(now).add({ d: i }); + assert.equal( + m.calendar(now), + m.format(makeFormatNext(m)), + 'Today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(now), + m.format(makeFormatNext(m)), + 'Today + ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(now), + m.format(makeFormatNext(m)), + 'Today + ' + i + ' days end of day' + ); + } + }); + + test('calendar last week', function (assert) { + var i, m, now; + + function makeFormatLast(d) { + switch (d.day()) { + case 0: + return '[В прошлое] dddd, [в] LT'; case 1: - lastDay = 'minulý pondelok'; - break; case 2: - lastDay = 'minulý utorok'; - break; - case 3: - lastDay = 'minulú stredu'; - break; case 4: - lastDay = 'minulý štvrtok'; - break; + return '[В прошлый] dddd, [в] LT'; + case 3: case 5: - lastDay = 'minulý piatok'; - break; case 6: - lastDay = 'minulú sobotu'; - break; + return '[В прошлую] dddd, [в] LT'; + } + } + + function makeFormatThis(d) { + if (d.day() === 2) { + return '[Во] dddd, [в] LT'; + } else { + return '[В] dddd, [в] LT'; } - assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days current time'); + } + + now = moment().startOf('week'); + for (i = 2; i < 7; i++) { + m = moment(now).subtract({ d: i }); + assert.equal( + m.calendar(now), + m.format(makeFormatLast(m)), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(now), + m.format(makeFormatLast(m)), + 'Today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(now), + m.format(makeFormatLast(m)), + 'Today - ' + i + ' days end of day' + ); + } + + now = moment().endOf('week'); + for (i = 2; i < 7; i++) { + m = moment(now).subtract({ d: i }); + assert.equal( + m.calendar(now), + m.format(makeFormatThis(m)), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(now), + m.format(makeFormatThis(m)), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[' + lastDay + '] [o] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(now), + m.format(makeFormatThis(m)), + '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(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'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - test('humanize duration', function (assert) { - assert.equal(moment.duration(1, 'minutes').humanize(), 'minúta', 'a minute (future)'); - assert.equal(moment.duration(1, 'minutes').humanize(true), 'za minútu', 'in a minute'); - assert.equal(moment.duration(-1, 'minutes').humanize(), 'minúta', 'a minute (past)'); - assert.equal(moment.duration(-1, 'minutes').humanize(true), 'pred minútou', 'a minute ago'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + test('weeks year starting monday 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -50562,27 +86448,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -50592,8 +86483,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -50606,7 +86499,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -50615,16 +86511,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -50632,7 +86534,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -50640,12 +86544,21 @@ 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'); + 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' + ); } }); @@ -50653,12 +86566,27 @@ 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'); + 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' + ); } }); @@ -50667,7 +86595,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -50677,24 +86608,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -50713,19 +86648,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -50740,7 +86695,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -50750,7 +86711,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -50763,7 +86731,11 @@ 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'); + 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'); @@ -50778,103 +86750,153 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('sl'); + localeModule('sd'); + + var months = [ + 'جنوري', + 'فيبروري', + 'مارچ', + 'اپريل', + 'مئي', + 'جون', + 'جولاءِ', + 'آگسٽ', + 'سيپٽمبر', + 'آڪٽوبر', + 'نومبر', + 'ڊسمبر', + ], + days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر']; test('parse', function (assert) { - var tests = 'januar jan._februar feb._marec mar._april apr._maj maj_junij jun._julij jul._avgust avg._september sep._oktober 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)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 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); + + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } + + for (var i = 0; i < 12; i++) { + equalTest(months[i], 'MMM', i); + equalTest(months[i], 'MMMM', i); + + equalTestStrict(months[i], 'MMM', i); + equalTestStrict(months[i], 'MMMM', i); } }); test('format', function (assert) { var a = [ - ['dddd, Do MMMM YYYY, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'], - ['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. nedelja 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. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'nedelja, 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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'آچر، فيبروري 14 2010، 3:25:50 شام', + ], + ['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'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'شام شام'], + ['[سال جو] 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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -50884,286 +86906,361 @@ }); 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._marec mar._april apr._maj maj._junij jun._julij jul._avgust avg._september sep._oktober 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]); + for (var i = 0; i < months.length; i++) { + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + months[i] + ' ' + months[i], + months[i] + ' ' + months[i] + ); } }); test('format week', function (assert) { - var expected = 'nedelja ned. ne_ponedeljek pon. po_torek tor. to_sreda sre. sr_četrtek čet. če_petek pet. pe_sobota sob. so'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + for (var i = 0; i < days.length; i++) { + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd dd'), + days[i] + ' ' + days[i] + ' ' + days[i], + days[i] + ' ' + days[i] + ' ' + days[i] + ); } }); test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'nekaj sekund', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ena minuta', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ena minuta', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuti', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minut', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ena ura', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ena ura', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 uri', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ur', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 ur', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dan', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dan', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dni', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dan', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dni', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en mesec', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en mesec', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en mesec', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meseca', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meseca', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesece', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en mesec', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesecev', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'eno leto', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 leti', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years = 5 years'); - - assert.equal(start.from(moment([2007, 1, 28]).add({m: 1}), true), 'ena minuta', 'a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 2}), true), '2 minuti', '2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 3}), true), '3 minute', '3 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 4}), true), '4 minute', '4 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 5}), true), '5 minut', '5 minutes'); - - assert.equal(start.from(moment([2007, 1, 28]).add({h: 1}), true), 'ena ura', 'an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 2}), true), '2 uri', '2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 3}), true), '3 ure', '3 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 4}), true), '4 ure', '4 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 ur', '5 hours'); - - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dan', 'a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 2}), true), '2 dni', '2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 3}), true), '3 dni', '3 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 4}), true), '4 dni', '4 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dni', '5 days'); - - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en mesec', 'a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 2}), true), '2 meseca', '2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 3}), true), '3 mesece', '3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 4}), true), '4 mesece', '4 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesecev', '5 months'); - - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'eno leto', 'a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 2}), true), '2 leti', '2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 3}), true), '3 leta', '3 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 4}), true), '4 leta', '4 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 let', '5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'چند سيڪنڊ', + '44 seconds = چند سيڪنڊ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'هڪ منٽ', + '45 seconds = هڪ منٽ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'هڪ منٽ', + '89 seconds = هڪ منٽ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 منٽ', + '90 seconds = 2 منٽ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 منٽ', + '44 minutes = 44 منٽ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'هڪ ڪلاڪ', + '45 minutes = هڪ ڪلاڪ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'هڪ ڪلاڪ', + '89 minutes = هڪ ڪلاڪ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 ڪلاڪ', + '90 minutes = 2 ڪلاڪ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 ڪلاڪ', + '5 hours = 5 ڪلاڪ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 ڪلاڪ', + '21 hours = 21 ڪلاڪ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'هڪ ڏينهن', + '22 hours = هڪ ڏينهن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'هڪ ڏينهن', + '35 hours = هڪ ڏينهن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 ڏينهن', + '36 hours = 2 ڏينهن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'هڪ ڏينهن', + '1 day = هڪ ڏينهن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 ڏينهن', + '5 days = 5 ڏينهن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 ڏينهن', + '25 days = 25 ڏينهن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'هڪ مهينو', + '26 days = هڪ مهينو' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'هڪ مهينو', + '30 days = هڪ مهينو' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'هڪ مهينو', + '43 days = هڪ مهينو' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 مهينا', + '46 days = 2 مهينا' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 مهينا', + '75 days = 2 مهينا' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 مهينا', + '76 days = 3 مهينا' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'هڪ مهينو', + '1 month = هڪ مهينو' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 مهينا', + '5 months = 5 مهينا' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'هڪ سال', + '345 days = هڪ سال' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 سال', + '548 days = 2 سال' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'هڪ سال', + '1 year = هڪ سال' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 سال', + '5 years = 5 سال' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'čez nekaj sekund', 'prefix'); - assert.equal(moment(0).from(30000), 'pred nekaj sekundami', '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(), 'pred nekaj sekundami', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'چند سيڪنڊ اڳ', + 'now from now should display as in the past' + ); }); - test('fromNow (future)', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'čez nekaj sekund', 'in a few seconds'); - assert.equal(moment().add({m: 1}).fromNow(), 'čez eno minuto', 'in a minute'); - assert.equal(moment().add({m: 2}).fromNow(), 'čez 2 minuti', 'in 2 minutes'); - assert.equal(moment().add({m: 3}).fromNow(), 'čez 3 minute', 'in 3 minutes'); - assert.equal(moment().add({m: 4}).fromNow(), 'čez 4 minute', 'in 4 minutes'); - assert.equal(moment().add({m: 5}).fromNow(), 'čez 5 minut', 'in 5 minutes'); - - assert.equal(moment().add({h: 1}).fromNow(), 'čez eno uro', 'in an hour'); - assert.equal(moment().add({h: 2}).fromNow(), 'čez 2 uri', 'in 2 hours'); - assert.equal(moment().add({h: 3}).fromNow(), 'čez 3 ure', 'in 3 hours'); - assert.equal(moment().add({h: 4}).fromNow(), 'čez 4 ure', 'in 4 hours'); - assert.equal(moment().add({h: 5}).fromNow(), 'čez 5 ur', 'in 5 hours'); - - assert.equal(moment().add({d: 1}).fromNow(), 'čez en dan', 'in a day'); - assert.equal(moment().add({d: 2}).fromNow(), 'čez 2 dni', 'in 2 days'); - assert.equal(moment().add({d: 3}).fromNow(), 'čez 3 dni', 'in 3 days'); - assert.equal(moment().add({d: 4}).fromNow(), 'čez 4 dni', 'in 4 days'); - assert.equal(moment().add({d: 5}).fromNow(), 'čez 5 dni', 'in 5 days'); - - assert.equal(moment().add({M: 1}).fromNow(), 'čez en mesec', 'in a month'); - assert.equal(moment().add({M: 2}).fromNow(), 'čez 2 meseca', 'in 2 months'); - assert.equal(moment().add({M: 3}).fromNow(), 'čez 3 mesece', 'in 3 months'); - assert.equal(moment().add({M: 4}).fromNow(), 'čez 4 mesece', 'in 4 months'); - assert.equal(moment().add({M: 5}).fromNow(), 'čez 5 mesecev', 'in 5 months'); - - assert.equal(moment().add({y: 1}).fromNow(), 'čez eno leto', 'in a year'); - assert.equal(moment().add({y: 2}).fromNow(), 'čez 2 leti', 'in 2 years'); - assert.equal(moment().add({y: 3}).fromNow(), 'čez 3 leta', 'in 3 years'); - assert.equal(moment().add({y: 4}).fromNow(), 'čez 4 leta', 'in 4 years'); - assert.equal(moment().add({y: 5}).fromNow(), 'čez 5 let', 'in 5 years'); - - assert.equal(moment().subtract({s: 30}).fromNow(), 'pred nekaj sekundami', 'a few seconds ago'); - - assert.equal(moment().subtract({m: 1}).fromNow(), 'pred eno minuto', 'a minute ago'); - assert.equal(moment().subtract({m: 2}).fromNow(), 'pred 2 minutama', '2 minutes ago'); - assert.equal(moment().subtract({m: 3}).fromNow(), 'pred 3 minutami', '3 minutes ago'); - assert.equal(moment().subtract({m: 4}).fromNow(), 'pred 4 minutami', '4 minutes ago'); - assert.equal(moment().subtract({m: 5}).fromNow(), 'pred 5 minutami', '5 minutes ago'); - - assert.equal(moment().subtract({h: 1}).fromNow(), 'pred eno uro', 'an hour ago'); - assert.equal(moment().subtract({h: 2}).fromNow(), 'pred 2 urama', '2 hours ago'); - assert.equal(moment().subtract({h: 3}).fromNow(), 'pred 3 urami', '3 hours ago'); - assert.equal(moment().subtract({h: 4}).fromNow(), 'pred 4 urami', '4 hours ago'); - assert.equal(moment().subtract({h: 5}).fromNow(), 'pred 5 urami', '5 hours ago'); - - assert.equal(moment().subtract({d: 1}).fromNow(), 'pred enim dnem', 'a day ago'); - assert.equal(moment().subtract({d: 2}).fromNow(), 'pred 2 dnevoma', '2 days ago'); - assert.equal(moment().subtract({d: 3}).fromNow(), 'pred 3 dnevi', '3 days ago'); - assert.equal(moment().subtract({d: 4}).fromNow(), 'pred 4 dnevi', '4 days ago'); - assert.equal(moment().subtract({d: 5}).fromNow(), 'pred 5 dnevi', '5 days ago'); - - assert.equal(moment().subtract({M: 1}).fromNow(), 'pred enim mesecem', 'a month ago'); - assert.equal(moment().subtract({M: 2}).fromNow(), 'pred 2 mesecema', '2 months ago'); - assert.equal(moment().subtract({M: 3}).fromNow(), 'pred 3 meseci', '3 months ago'); - assert.equal(moment().subtract({M: 4}).fromNow(), 'pred 4 meseci', '4 months ago'); - assert.equal(moment().subtract({M: 5}).fromNow(), 'pred 5 meseci', '5 months ago'); - - assert.equal(moment().subtract({y: 1}).fromNow(), 'pred enim letom', 'a year ago'); - assert.equal(moment().subtract({y: 2}).fromNow(), 'pred 2 letoma', '2 years ago'); - assert.equal(moment().subtract({y: 3}).fromNow(), 'pred 3 leti', '3 years ago'); - assert.equal(moment().subtract({y: 4}).fromNow(), 'pred 4 leti', '4 years ago'); - assert.equal(moment().subtract({y: 5}).fromNow(), 'pred 5 leti', '5 years ago'); + 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('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'danes ob 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'danes ob 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'danes ob 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'jutri ob 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'danes ob 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'včeraj ob 12:00', 'yesterday at the same time'); + 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' + ); }); test('calendar next week', function (assert) { var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - } - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [اڳين هفتي تي] LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[prejšnjo] [nedeljo] [ob] LT'; - case 3: - return '[prejšnjo] [sredo] [ob] LT'; - case 6: - return '[prejšnjo] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - } - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -51178,27 +87275,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -51208,8 +87310,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -51222,7 +87326,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -51231,16 +87338,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -51248,7 +87361,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -51256,12 +87371,21 @@ 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'); + 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' + ); } }); @@ -51269,12 +87393,27 @@ 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'); + 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' + ); } }); @@ -51283,7 +87422,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -51293,24 +87435,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -51329,19 +87475,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -51356,7 +87522,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -51366,7 +87538,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -51379,7 +87558,11 @@ 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'); + 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'); @@ -51394,66 +87577,103 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('sq'); + localeModule('se'); test('parse', function (assert) { var i, - tests = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split('_'); + tests = 'ođđajagemánnu ođđj_guovvamánnu guov_njukčamánnu njuk_cuoŋománnu cuo_miessemánnu mies_geassemánnu geas_suoidnemánnu suoi_borgemánnu borg_čakčamánnu čakč_golggotmánnu golg_skábmamánnu skáb_juovlamánnu juov'.split( + '_' + ); function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -51466,34 +87686,44 @@ 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', 'E Diel, Shkurt 14. 2010, 15:25:50'], - ['ddd, HH', 'Die, 15'], - ['M Mo MM MMMM MMM', '2 2. 02 Shkurt Shk'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. E Diel Die D'], - ['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', 'MD MD'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 Shkurt 2010'], - ['LLL', '14 Shkurt 2010 15:25'], - ['LLLL', 'E Diel, 14 Shkurt 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Shk 2010'], - ['lll', '14 Shk 2010 15:25'], - ['llll', 'Die, 14 Shk 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'sotnabeaivi, guovvamánnu 14. 2010, 3:25:50 pm', + ], + ['ddd, hA', 'sotn, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 guovvamánnu guov'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. sotnabeaivi sotn s'], + ['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'], + ['[jagi] DDDo [beaivi]', 'jagi 45. beaivi'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', 'guovvamánnu 14. b. 2010'], + ['LLL', 'guovvamánnu 14. b. 2010 ti. 15:25'], + ['LLLL', 'sotnabeaivi, guovvamánnu 14. b. 2010 ti. 15:25'], + ['l', '14.2.2010'], + ['ll', 'guov 14. b. 2010'], + ['lll', 'guov 14. b. 2010 ti. 15:25'], + ['llll', 'sotn, guov 14. b. 2010 ti. 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -51503,11 +87733,6 @@ } }); - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'PD', 'before dawn'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'MD', 'noon'); - }); - 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.'); @@ -51547,90 +87772,262 @@ test('format month', function (assert) { var i, - expected = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split('_'); + expected = 'ođđajagemánnu ođđj_guovvamánnu guov_njukčamánnu njuk_cuoŋománnu cuo_miessemánnu mies_geassemánnu geas_suoidnemánnu suoi_borgemánnu borg_čakčamánnu čakč_golggotmánnu golg_skábmamánnu skáb_juovlamánnu juov'.split( + '_' + ); 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { var i, - expected = 'E Diel Die D_E Hënë Hën H_E Martë Mar Ma_E Mërkurë Mër Më_E Enjte Enj E_E Premte Pre P_E Shtunë Sht Sh'.split('_'); + expected = 'sotnabeaivi sotn s_vuossárga vuos v_maŋŋebárga maŋ m_gaskavahkku gask g_duorastat duor d_bearjadat bear b_lávvardat láv L'.split( + '_' + ); 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 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), 'disa sekonda', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'një minutë', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'një minutë', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuta', '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), 'një orë', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'një orë', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 orë', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 orë', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 orë', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'një ditë', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'një ditë', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ditë', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'një ditë', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ditë', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ditë', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'një muaj', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'një muaj', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'një muaj', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 muaj', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 muaj', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 muaj', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'një muaj', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 muaj', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'një vit', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 vite', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'një vit', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 vite', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'në disa sekonda', 'prefix'); - assert.equal(moment(0).from(30000), 'disa sekonda më parë', 'suffix'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'moadde sekunddat', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'okta minuhta', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'okta minuhta', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuhtat', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuhtat', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'okta diimmu', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'okta diimmu', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 diimmut', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 diimmut', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 diimmut', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'okta beaivi', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'okta beaivi', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 beaivvit', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'okta beaivi', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 beaivvit', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 beaivvit', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'okta mánnu', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'okta mánnu', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'okta mánnu', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mánut', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mánut', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mánut', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'okta mánnu', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mánut', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'okta jahki', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 jagit', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'okta jahki', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 jagit', + '5 years = 5 years' + ); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'moadde sekunddat geažes', 'prefix'); + assert.equal(moment(0).from(30000), 'maŋit moadde sekunddat', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'disa sekonda më parë', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'maŋit moadde sekunddat', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'në disa sekonda', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'në 5 ditë', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'moadde sekunddat geažes', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + '5 beaivvit geažes', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Sot në 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Sot në 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Sot në 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Nesër në 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Sot në 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Dje në 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'otne ti 12:00', + 'Today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'otne ti 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'otne ti 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'ihttin ti 12:00', + 'Tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'otne ti 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'ikte ti 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 [në] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [ti] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [ti] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [në] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [ti] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -51638,40 +88035,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[ovddit] dddd [ti] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[ovddit] dddd [ti] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [e kaluar në] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[ovddit] dddd [ti] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -51686,27 +88124,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -51716,8 +88159,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -51730,7 +88175,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -51739,16 +88187,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -51756,7 +88210,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -51764,12 +88220,21 @@ 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'); + 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' + ); } }); @@ -51777,12 +88242,27 @@ 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'); + 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' + ); } }); @@ -51791,7 +88271,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -51801,24 +88284,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -51837,19 +88324,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -51864,7 +88371,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -51874,7 +88387,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -51887,7 +88407,11 @@ 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'); + 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'); @@ -51902,66 +88426,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('sr-cyrl'); + localeModule('si'); test('parse', function (assert) { - var tests = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split('_'), + var tests = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්‍රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split( + '_' + ), i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -51972,34 +88534,48 @@ 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, Do MMMM 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', '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. фебруар 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'] + [ + 'YYYY MMMM Do dddd, a h:mm:ss', + '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50', + ], + [ + 'YYYY MMMM Do dddd, a h:mm:ss', + '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50', + ], + ['ddd, A h', 'ඉරි, පස් වරු 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'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'ප.ව. පස් වරු'], + ['[වසරේ] DDDo [දිනය]', 'වසරේ 45 වැනි දිනය'], + ['LTS', 'ප.ව. 3:25:50'], + ['LT', 'ප.ව. 3:25'], + ['L', '2010/02/14'], + ['LL', '2010 පෙබරවාරි 14'], + ['LLL', '2010 පෙබරවාරි 14, ප.ව. 3:25'], + ['LLLL', '2010 පෙබරවාරි 14 වැනි ඉරිදා, ප.ව. 3:25:50'], + ['l', '2010/2/14'], + ['ll', '2010 පෙබ 14'], + ['lll', '2010 පෙබ 14, ප.ව. 3:25'], + ['llll', '2010 පෙබ 14 වැනි ඉරි, ප.ව. 3:25:50'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -52009,196 +88585,346 @@ }); 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('_'), + var expected = 'ජනවාරි ජන_පෙබරවාරි පෙබ_මාර්තු මාර්_අප්‍රේල් අප්_මැයි මැයි_ජූනි ජූනි_ජූලි ජූලි_අගෝස්තු අගෝ_සැප්තැම්බර් සැප්_ඔක්තෝබර් ඔක්_නොවැම්බර් නොවැ_දෙසැම්බර් දෙසැ'.split( + '_' + ), i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'недеља нед. не_понедељак пон. по_уторак уто. ут_среда сре. ср_четвртак чет. че_петак пет. пе_субота суб. су'.split('_'), + var expected = 'ඉරිදා ඉරි ඉ_සඳුදා සඳු ස_අඟහරුවාදා අඟ අ_බදාදා බදා බ_බ්‍රහස්පතින්දා බ්‍රහ බ්‍ර_සිකුරාදා සිකු සි_සෙනසුරාදා සෙන සෙ'.split( + '_' + ), i; 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 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), 'неколико секунди', '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), '2 сата', '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), '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 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), '2 месеца', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + 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), + 'පැය 2', + '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), + 'දින 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 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), + 'මාස 2', + '46 days = 2 months' + ); + assert.equal( + 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), + 'මාස 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), + 'වසර 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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'за неколико секунди', 'prefix'); - assert.equal(moment(0).from(30000), 'пре неколико секунди', '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(), 'пре неколико секунди', 'now from now should display as in the past'); + 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 дана', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'තත්පර කිහිපයකින්', + 'in a few seconds' + ); + 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', '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'); + 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(), + 'අද ප.ව. 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' + ); }); test('calendar next week', function (assert) { var i, m; - - function makeFormat(d) { - switch (d.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - } - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd LT[ට]'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { var i, m; - function makeFormat(d) { - var lastWeekDay = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' - ]; - - return lastWeekDay[d.day()]; - } - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(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'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -52213,27 +88939,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -52243,8 +88974,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -52257,7 +88990,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -52266,16 +89002,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -52283,7 +89025,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -52291,12 +89035,21 @@ 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'); + 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' + ); } }); @@ -52304,12 +89057,27 @@ 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'); + 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' + ); } }); @@ -52318,7 +89086,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -52328,24 +89099,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -52364,19 +89139,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -52391,7 +89186,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -52401,7 +89202,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -52414,7 +89222,11 @@ 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'); + 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'); @@ -52429,66 +89241,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('sr'); + localeModule('sk'); test('parse', function (assert) { - var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), + var tests = 'január jan._február feb._marec mar._apríl apr._máj máj_jún jún._júl júl._august aug._september sep._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 equalTest(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm).month(), + monthIndex, + input + ' should be 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); @@ -52499,34 +89349,47 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); + + // Fails for all months + // equalTestStrict(tests[i][1], 'MMM', i); + equalTestStrict(tests[i][0], 'MMMM', i); + // Fails for all months + // equalTestStrict(tests[i][1].toLocaleLowerCase(), 'MMM', i); + // Fails for all months + // 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, h:mm:ss a', 'nedelja, 14. februar 2010, 3:25:50 pm'], - ['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. nedelja 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. februar 2010'], - ['LLL', '14. februar 2010 15:25'], - ['LLLL', 'nedelja, 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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss', + 'nedeľa, február 14. 2010, 3:25:50', + ], + ['ddd, h', 'ne, 3'], + ['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. nedeľa 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 [deň v roku]', '45. deň v roku'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14. február 2010'], + ['LLL', '14. február 2010 15:25'], + ['LLLL', 'nedeľa 14. február 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14. feb 2010'], + ['lll', '14. feb 2010 15:25'], + ['llll', 'ne 14. feb 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -52573,159 +89436,528 @@ }); test('format month', function (assert) { - var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split('_'), + var expected = 'január jan_február feb_marec mar_apríl apr_máj máj_jún jún_júl júl_august aug_september sep_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]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'nedelja ned. ne_ponedeljak pon. po_utorak uto. ut_sreda sre. sr_četvrtak čet. če_petak pet. pe_subota sub. su'.split('_'), + var expected = 'nedeľa ne ne_pondelok po po_utorok ut ut_streda st st_štvrtok št št_piatok pi pi_sobota so so'.split( + '_' + ), i; 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 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), 'nekoliko sekundi', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'jedan minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'jedan minut', '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), 'mesec', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mesec', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mesec', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 meseca', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 meseca', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 meseca', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mesec', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 meseci', '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 nekoliko sekundi', 'prefix'); - assert.equal(moment(0).from(30000), 'pre nekoliko sekundi', 'prefix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'pre nekoliko sekundi', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'za nekoliko sekundi', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'za 5 dana', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - 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'); - 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če 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] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'pár sekúnd', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'minúta', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'minúta', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minúty', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minút', + '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 hodiny', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 hodín', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 hodín', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'deň', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'deň', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dni', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'deň', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dní', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dní', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'mesiac', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'mesiac', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'mesiac', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mesiace', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mesiace', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mesiace', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'mesiac', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mesiacov', + '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 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 rokov', + '5 years = 5 years' + ); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'za pár sekúnd', 'prefix'); + assert.equal(moment(0).from(30000), 'pred pár sekundami', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'pred pár sekundami', + 'now from now should display as in the past' + ); + }); + + test('fromNow (future)', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'za pár sekúnd', + 'in a few seconds' + ); + assert.equal(moment().add({ m: 1 }).fromNow(), 'za minútu', 'in a minute'); + assert.equal( + moment().add({ m: 3 }).fromNow(), + 'za 3 minúty', + 'in 3 minutes' + ); + assert.equal( + moment().add({ m: 10 }).fromNow(), + 'za 10 minút', + '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 hodín', + 'in 10 hours' + ); + assert.equal(moment().add({ d: 1 }).fromNow(), 'za deň', 'in a day'); + assert.equal(moment().add({ d: 3 }).fromNow(), 'za 3 dni', 'in 3 days'); + assert.equal(moment().add({ d: 10 }).fromNow(), 'za 10 dní', 'in 10 days'); + assert.equal(moment().add({ M: 1 }).fromNow(), 'za mesiac', 'in a month'); + assert.equal( + moment().add({ M: 3 }).fromNow(), + 'za 3 mesiace', + 'in 3 months' + ); + assert.equal( + moment().add({ M: 10 }).fromNow(), + 'za 10 mesiacov', + '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 rokov', + 'in 10 years' + ); + }); + + test('fromNow (past)', function (assert) { + assert.equal( + moment().subtract({ s: 30 }).fromNow(), + 'pred pár sekundami', + 'a few seconds ago' + ); + assert.equal( + moment().subtract({ m: 1 }).fromNow(), + 'pred minútou', + 'a minute ago' + ); + assert.equal( + moment().subtract({ m: 3 }).fromNow(), + 'pred 3 minútami', + '3 minutes ago' + ); + assert.equal( + moment().subtract({ m: 10 }).fromNow(), + 'pred 10 minútami', + '10 minutes ago' + ); + assert.equal( + moment().subtract({ h: 1 }).fromNow(), + 'pred hodinou', + 'an hour ago' + ); + assert.equal( + moment().subtract({ h: 3 }).fromNow(), + 'pred 3 hodinami', + '3 hours ago' + ); + assert.equal( + moment().subtract({ h: 10 }).fromNow(), + 'pred 10 hodinami', + '10 hours ago' + ); + assert.equal( + moment().subtract({ d: 1 }).fromNow(), + 'pred dňom', + 'a day ago' + ); + assert.equal( + moment().subtract({ d: 3 }).fromNow(), + 'pred 3 dňami', + '3 days ago' + ); + assert.equal( + moment().subtract({ d: 10 }).fromNow(), + 'pred 10 dňami', + '10 days ago' + ); + assert.equal( + moment().subtract({ M: 1 }).fromNow(), + 'pred mesiacom', + 'a month ago' + ); + assert.equal( + moment().subtract({ M: 3 }).fromNow(), + 'pred 3 mesiacmi', + '3 months ago' + ); + assert.equal( + moment().subtract({ M: 10 }).fromNow(), + 'pred 10 mesiacmi', + '10 months ago' + ); + assert.equal( + moment().subtract({ y: 1 }).fromNow(), + 'pred rokom', + 'a year ago' + ); + assert.equal( + moment().subtract({ y: 3 }).fromNow(), + 'pred 3 rokmi', + '3 years ago' + ); + assert.equal( + moment().subtract({ y: 10 }).fromNow(), + 'pred 10 rokmi', + '10 years ago' + ); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + 'dnes o 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'dnes o 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'dnes o 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'zajtra o 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'dnes o 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'včera o 12:00', + 'yesterday at the same time' + ); + }); + + test('calendar next week', function (assert) { + var i, m, nextDay; + for (i = 2; i < 7; i++) { + m = moment().add({ d: i }); + nextDay = ''; + switch (m.day()) { + case 0: + nextDay = 'v nedeľu'; + break; case 1: + nextDay = 'v pondelok'; + break; case 2: + nextDay = 'v utorok'; + break; + case 3: + nextDay = 'v stredu'; + break; case 4: + nextDay = 'vo štvrtok'; + break; case 5: - return '[u] dddd [u] LT'; + nextDay = 'v piatok'; + break; + case 6: + nextDay = 'v sobotu'; + break; } - } - - for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days current time'); + assert.equal( + m.calendar(), + m.format('[' + nextDay + '] [o] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[' + nextDay + '] [o] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[' + nextDay + '] [o] LT'), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { - var i, m; - - function makeFormat(d) { - var lastWeekDay = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - - return lastWeekDay[d.day()]; - } - + var i, m, lastDay; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + lastDay = ''; + switch (m.day()) { + case 0: + lastDay = 'minulú nedeľu'; + break; + case 1: + lastDay = 'minulý pondelok'; + break; + case 2: + lastDay = 'minulý utorok'; + break; + case 3: + lastDay = 'minulú stredu'; + break; + case 4: + lastDay = 'minulý štvrtok'; + break; + case 5: + lastDay = 'minulý piatok'; + break; + case 6: + lastDay = 'minulú sobotu'; + break; + } + assert.equal( + m.calendar(), + m.format('[' + lastDay + '] [o] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[' + lastDay + '] [o] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[' + lastDay + '] [o] 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( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - 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 }); - 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' + ); + }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + test('humanize duration', function (assert) { + assert.equal( + moment.duration(1, 'minutes').humanize(), + 'minúta', + 'a minute (future)' + ); + assert.equal( + moment.duration(1, 'minutes').humanize(true), + 'za minútu', + 'in a minute' + ); + assert.equal( + moment.duration(-1, 'minutes').humanize(), + 'minúta', + 'a minute (past)' + ); + assert.equal( + moment.duration(-1, 'minutes').humanize(true), + 'pred minútou', + 'a minute ago' + ); }); 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -52740,27 +89972,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -52770,8 +90007,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -52784,7 +90023,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -52793,16 +90035,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -52810,7 +90058,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -52818,12 +90068,21 @@ 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'); + 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' + ); } }); @@ -52831,12 +90090,27 @@ 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'); + 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' + ); } }); @@ -52845,7 +90119,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -52855,24 +90132,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -52891,19 +90172,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -52918,7 +90219,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -52928,7 +90235,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -52941,7 +90255,11 @@ 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'); + 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'); @@ -52956,65 +90274,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ss'); + localeModule('sl'); test('parse', function (assert) { - var tests = "Bhimbidvwane Bhi_Indlovana Ina_Indlov'lenkhulu Inu_Mabasa Mab_Inkhwekhweti Ink_Inhlaba Inh_Kholwane Kho_Ingci Igc_Inyoni Iny_Imphala Imp_Lweti lwe_Ingongoni Igo".split('_'), i; + var tests = 'januar jan._februar feb._marec mar._april apr._maj maj_junij jun._julij jul._avgust avg._september sep._oktober 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)); + 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); @@ -53025,66 +90382,47 @@ equalTest(tests[i][1].toLocaleLowerCase(), 'MMMM', i); equalTest(tests[i][0].toLocaleUpperCase(), 'MMMM', i); equalTest(tests[i][1].toLocaleUpperCase(), 'MMMM', i); - } - }); - - test('parse meridiem', function (assert) { - var i, - b = moment(), - meridiemTests = [ - // h a patterns, expected hours, isValid - ['10 ekuseni', 10, true], - ['11 emini', 11, true], - ['3 entsambama', 15, true], - ['4 entsambama', 16, true], - ['6 entsambama', 18, true], - ['7 ebusuku', 19, true], - ['12 ebusuku', 0, 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', 'ss', true), 'seconds'), b.format('h:mm:ss a') + ' should be equal to ' + moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'ss', 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', 'ss', 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', 'ss', 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]); - } + // 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', 'Lisontfo, Indlovana 14 2010, 3:25:50 entsambama'], - ['ddd, h A', 'Lis, 3 entsambama'], - ['M Mo MM MMMM MMM', '2 2 02 Indlovana Ina'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Lisontfo Lis 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', 'entsambama entsambama'], - ['[Lilanga] DDDo [lilanga lelinyaka]', 'Lilanga 45 lilanga lelinyaka'], - ['LTS', '3:25:50 entsambama'], - ['L', '14/02/2010'], - ['LL', '14 Indlovana 2010'], - ['LLL', '14 Indlovana 2010 3:25 entsambama'], - ['LLLL', 'Lisontfo, 14 Indlovana 2010 3:25 entsambama'], - ['l', '14/2/2010'], - ['ll', '14 Ina 2010'], - ['lll', '14 Ina 2010 3:25 entsambama'], - ['llll', 'Lis, 14 Ina 2010 3:25 entsambama'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'nedelja, 14. februar 2010, 3:25:50 pm', + ], + ['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. nedelja 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. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedelja, 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; @@ -53094,163 +90432,741 @@ }); 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 = "Bhimbidvwane Bhi_Indlovana Ina_Indlov'lenkhulu Inu_Mabasa Mab_Inkhwekhweti Ink_Inhlaba Inh_Kholwane Kho_Ingci Igc_Inyoni Iny_Imphala Imp_Lweti Lwe_Ingongoni Igo".split('_'), i; + var expected = 'januar jan._februar feb._marec mar._april apr._maj maj._junij jun._julij jul._avgust avg._september sep._oktober 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]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Lisontfo Lis Li_Umsombuluko Umb Us_Lesibili Lsb Lb_Lesitsatfu Les Lt_Lesine Lsi Ls_Lesihlanu Lsh Lh_Umgcibelo Umg Ug'.split('_'), i; + var expected = 'nedelja ned. ne_ponedeljek pon. po_torek tor. to_sreda sre. sr_četrtek čet. če_petek pet. pe_sobota sob. so'.split( + '_' + ), + i; 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 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), 'emizuzwana lomcane', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'umzuzu', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'umzuzu', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 emizuzu', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 emizuzu', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'lihora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'lihora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 emahora', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 emahora', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 emahora', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'lilanga', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'lilanga', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 emalanga', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'lilanga', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 emalanga', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 emalanga', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'inyanga', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'inyanga', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'inyanga', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 tinyanga', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 tinyanga', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 tinyanga', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'inyanga', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 tinyanga', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'umnyaka', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 iminyaka', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'umnyaka', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 iminyaka', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'nga emizuzwana lomcane', 'prefix'); - assert.equal(moment(0).from(30000), 'wenteka nga emizuzwana lomcane', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'wenteka nga emizuzwana lomcane', 'now from now should display as in the past'); - }); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'nekaj sekund', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'ena minuta', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'ena minuta', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuti', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minut', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'ena ura', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'ena ura', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 uri', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 ur', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 ur', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'en dan', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'en dan', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dni', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'en dan', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dni', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dni', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'en mesec', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'en mesec', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'en mesec', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 meseca', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 meseca', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mesece', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'en mesec', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mesecev', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'eno leto', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 leti', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'eno leto', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 let', + '5 years = 5 years' + ); - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'nga emizuzwana lomcane', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'nga 5 emalanga', 'in 5 days'); - }); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 1 }), true), + 'ena minuta', + 'a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 2 }), true), + '2 minuti', + '2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 3 }), true), + '3 minute', + '3 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 4 }), true), + '4 minute', + '4 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 5 }), true), + '5 minut', + '5 minutes' + ); - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 1 }), true), + 'ena ura', + 'an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 2 }), true), + '2 uri', + '2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 3 }), true), + '3 ure', + '3 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 4 }), true), + '4 ure', + '4 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 ur', + '5 hours' + ); - assert.equal(moment(a).calendar(), 'Namuhla nga 12:00 emini', 'Today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Namuhla nga 12:25 emini', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Namuhla nga 1:00 emini', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Kusasa nga 12:00 emini', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Namuhla nga 11:00 emini', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Itolo nga 12:00 emini', 'yesterday at the same time'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'en dan', + 'a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 2 }), true), + '2 dni', + '2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 3 }), true), + '3 dni', + '3 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 4 }), true), + '4 dni', + '4 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dni', + '5 days' + ); + + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'en mesec', + 'a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 2 }), true), + '2 meseca', + '2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 3 }), true), + '3 mesece', + '3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 4 }), true), + '4 mesece', + '4 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mesecev', + '5 months' + ); + + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'eno leto', + 'a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 2 }), true), + '2 leti', + '2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 3 }), true), + '3 leta', + '3 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 4 }), true), + '4 leta', + '4 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 let', + '5 years' + ); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'čez nekaj sekund', 'prefix'); + assert.equal(moment(0).from(30000), 'pred nekaj sekundami', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'pred nekaj sekundami', + 'now from now should display as in the past' + ); + }); + + test('fromNow (future)', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'čez nekaj sekund', + 'in a few seconds' + ); + assert.equal( + moment().add({ m: 1 }).fromNow(), + 'čez eno minuto', + 'in a minute' + ); + assert.equal( + moment().add({ m: 2 }).fromNow(), + 'čez 2 minuti', + 'in 2 minutes' + ); + assert.equal( + moment().add({ m: 3 }).fromNow(), + 'čez 3 minute', + 'in 3 minutes' + ); + assert.equal( + moment().add({ m: 4 }).fromNow(), + 'čez 4 minute', + 'in 4 minutes' + ); + assert.equal( + moment().add({ m: 5 }).fromNow(), + 'čez 5 minut', + 'in 5 minutes' + ); + + assert.equal(moment().add({ h: 1 }).fromNow(), 'čez eno uro', 'in an hour'); + assert.equal(moment().add({ h: 2 }).fromNow(), 'čez 2 uri', 'in 2 hours'); + assert.equal(moment().add({ h: 3 }).fromNow(), 'čez 3 ure', 'in 3 hours'); + assert.equal(moment().add({ h: 4 }).fromNow(), 'čez 4 ure', 'in 4 hours'); + assert.equal(moment().add({ h: 5 }).fromNow(), 'čez 5 ur', 'in 5 hours'); + + assert.equal(moment().add({ d: 1 }).fromNow(), 'čez en dan', 'in a day'); + assert.equal(moment().add({ d: 2 }).fromNow(), 'čez 2 dni', 'in 2 days'); + assert.equal(moment().add({ d: 3 }).fromNow(), 'čez 3 dni', 'in 3 days'); + assert.equal(moment().add({ d: 4 }).fromNow(), 'čez 4 dni', 'in 4 days'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'čez 5 dni', 'in 5 days'); + + assert.equal( + moment().add({ M: 1 }).fromNow(), + 'čez en mesec', + 'in a month' + ); + assert.equal( + moment().add({ M: 2 }).fromNow(), + 'čez 2 meseca', + 'in 2 months' + ); + assert.equal( + moment().add({ M: 3 }).fromNow(), + 'čez 3 mesece', + 'in 3 months' + ); + assert.equal( + moment().add({ M: 4 }).fromNow(), + 'čez 4 mesece', + 'in 4 months' + ); + assert.equal( + moment().add({ M: 5 }).fromNow(), + 'čez 5 mesecev', + 'in 5 months' + ); + + assert.equal(moment().add({ y: 1 }).fromNow(), 'čez eno leto', 'in a year'); + assert.equal(moment().add({ y: 2 }).fromNow(), 'čez 2 leti', 'in 2 years'); + assert.equal(moment().add({ y: 3 }).fromNow(), 'čez 3 leta', 'in 3 years'); + assert.equal(moment().add({ y: 4 }).fromNow(), 'čez 4 leta', 'in 4 years'); + assert.equal(moment().add({ y: 5 }).fromNow(), 'čez 5 let', 'in 5 years'); + + assert.equal( + moment().subtract({ s: 30 }).fromNow(), + 'pred nekaj sekundami', + 'a few seconds ago' + ); + + assert.equal( + moment().subtract({ m: 1 }).fromNow(), + 'pred eno minuto', + 'a minute ago' + ); + assert.equal( + moment().subtract({ m: 2 }).fromNow(), + 'pred 2 minutama', + '2 minutes ago' + ); + assert.equal( + moment().subtract({ m: 3 }).fromNow(), + 'pred 3 minutami', + '3 minutes ago' + ); + assert.equal( + moment().subtract({ m: 4 }).fromNow(), + 'pred 4 minutami', + '4 minutes ago' + ); + assert.equal( + moment().subtract({ m: 5 }).fromNow(), + 'pred 5 minutami', + '5 minutes ago' + ); + + assert.equal( + moment().subtract({ h: 1 }).fromNow(), + 'pred eno uro', + 'an hour ago' + ); + assert.equal( + moment().subtract({ h: 2 }).fromNow(), + 'pred 2 urama', + '2 hours ago' + ); + assert.equal( + moment().subtract({ h: 3 }).fromNow(), + 'pred 3 urami', + '3 hours ago' + ); + assert.equal( + moment().subtract({ h: 4 }).fromNow(), + 'pred 4 urami', + '4 hours ago' + ); + assert.equal( + moment().subtract({ h: 5 }).fromNow(), + 'pred 5 urami', + '5 hours ago' + ); + + assert.equal( + moment().subtract({ d: 1 }).fromNow(), + 'pred enim dnem', + 'a day ago' + ); + assert.equal( + moment().subtract({ d: 2 }).fromNow(), + 'pred 2 dnevoma', + '2 days ago' + ); + assert.equal( + moment().subtract({ d: 3 }).fromNow(), + 'pred 3 dnevi', + '3 days ago' + ); + assert.equal( + moment().subtract({ d: 4 }).fromNow(), + 'pred 4 dnevi', + '4 days ago' + ); + assert.equal( + moment().subtract({ d: 5 }).fromNow(), + 'pred 5 dnevi', + '5 days ago' + ); + + assert.equal( + moment().subtract({ M: 1 }).fromNow(), + 'pred enim mesecem', + 'a month ago' + ); + assert.equal( + moment().subtract({ M: 2 }).fromNow(), + 'pred 2 mesecema', + '2 months ago' + ); + assert.equal( + moment().subtract({ M: 3 }).fromNow(), + 'pred 3 meseci', + '3 months ago' + ); + assert.equal( + moment().subtract({ M: 4 }).fromNow(), + 'pred 4 meseci', + '4 months ago' + ); + assert.equal( + moment().subtract({ M: 5 }).fromNow(), + 'pred 5 meseci', + '5 months ago' + ); + + assert.equal( + moment().subtract({ y: 1 }).fromNow(), + 'pred enim letom', + 'a year ago' + ); + assert.equal( + moment().subtract({ y: 2 }).fromNow(), + 'pred 2 letoma', + '2 years ago' + ); + assert.equal( + moment().subtract({ y: 3 }).fromNow(), + 'pred 3 leti', + '3 years ago' + ); + assert.equal( + moment().subtract({ y: 4 }).fromNow(), + 'pred 4 leti', + '4 years ago' + ); + assert.equal( + moment().subtract({ y: 5 }).fromNow(), + 'pred 5 leti', + '5 years ago' + ); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + 'danes ob 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'danes ob 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'danes ob 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'jutri ob 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'danes ob 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'včeraj ob 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 '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + } + for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('dddd [nga] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [nga] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [nga] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { var i, m; + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[prejšnjo] [nedeljo] [ob] LT'; + case 3: + return '[prejšnjo] [sredo] [ob] LT'; + case 6: + return '[prejšnjo] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + } + for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [leliphelile] [nga] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 [leliphelile] [nga] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [leliphelile] [nga] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1', 'Jan 4 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + 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')) : @@ -53265,27 +91181,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -53295,8 +91216,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -53309,7 +91232,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -53318,16 +91244,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -53335,7 +91267,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -53343,12 +91277,21 @@ 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'); + 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' + ); } }); @@ -53356,12 +91299,27 @@ 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'); + 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' + ); } }); @@ -53370,7 +91328,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -53380,24 +91341,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -53416,19 +91381,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -53443,7 +91428,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -53453,7 +91444,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -53466,7 +91464,11 @@ 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'); + 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'); @@ -53481,65 +91483,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('sv'); + localeModule('sq'); test('parse', function (assert) { - var tests = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split('_'), i; + var i, + tests = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split( + '_' + ); + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -53550,200 +91592,432 @@ 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', 'söndag, februari 14e 2010, 3:25:50 pm'], - ['ddd, hA', 'sön, 3PM'], - ['M Mo MM MMMM MMM', '2 2a 02 februari feb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14e 14'], - ['d do dddd ddd dd', '0 0e söndag sön sö'], - ['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 45e day of the year'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '14 februari 2010'], - ['LLL', '14 februari 2010 kl. 15:25'], - ['LLLL', 'söndag 14 februari 2010 kl. 15:25'], - ['l', '2010-2-14'], - ['ll', '14 feb 2010'], - ['lll', '14 feb 2010 15:25'], - ['llll', 'sön 14 feb 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, HH:mm:ss', + 'E Diel, Shkurt 14. 2010, 15:25:50', + ], + ['ddd, HH', 'Die, 15'], + ['M Mo MM MMMM MMM', '2 2. 02 Shkurt Shk'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. E Diel Die D'], + ['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', 'MD MD'], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 Shkurt 2010'], + ['LLL', '14 Shkurt 2010 15:25'], + ['LLLL', 'E Diel, 14 Shkurt 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Shk 2010'], + ['lll', '14 Shk 2010 15:25'], + ['llll', 'Die, 14 Shk 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('meridiem', function (assert) { + assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'PD', 'before dawn'); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'MD', 'noon'); + }); + 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'), '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, 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'), '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, 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'), '21a', '21a'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), '22a', '22a'); - 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, 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'), '31a', '31a'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31.', '31.'); }); test('format month', function (assert) { - var expected = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober okt_november nov_december dec'.split('_'), i; + var i, + expected = 'Janar Jan_Shkurt Shk_Mars Mar_Prill Pri_Maj Maj_Qershor Qer_Korrik Kor_Gusht Gus_Shtator Sht_Tetor Tet_Nëntor Nën_Dhjetor Dhj'.split( + '_' + ); + 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'söndag sön sö_måndag mån må_tisdag tis ti_onsdag ons on_torsdag tor to_fredag fre fr_lördag lör lö'.split('_'), i; + var i, + expected = 'E Diel Die D_E Hënë Hën H_E Martë Mar Ma_E Mërkurë Mër Më_E Enjte Enj E_E Premte Pre P_E Shtunë Sht Sh'.split( + '_' + ); + 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 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), 'några sekunder', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'en minut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'en minut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuter', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuter', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'en timme', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'en timme', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 timmar', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 timmar', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 timmar', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'en dag', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'en dag', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 dagar', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'en dag', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 dagar', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 dagar', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'en månad', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'en månad', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'en månad', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 månader', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 månader', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 månader', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'en månad', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 månader', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ett år', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 år', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ett år', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 år', '5 years = 5 years'); + + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'disa sekonda', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'një minutë', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'një minutë', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuta', + '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), + 'një orë', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'një orë', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 orë', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 orë', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 orë', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'një ditë', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'një ditë', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 ditë', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'një ditë', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 ditë', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 ditë', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'një muaj', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'një muaj', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'një muaj', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 muaj', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 muaj', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 muaj', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'një muaj', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 muaj', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'një vit', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 vite', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'një vit', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 vite', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'om några sekunder', 'prefix'); - assert.equal(moment(0).from(30000), 'för några sekunder sedan', 'suffix'); + assert.equal(moment(30000).from(0), 'në disa sekonda', 'prefix'); + assert.equal(moment(0).from(30000), 'disa sekonda më parë', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'för några sekunder sedan', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'disa sekonda më parë', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'om några sekunder', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'om 5 dagar', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'në disa sekonda', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'në 5 ditë', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Idag 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Idag 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Idag 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Imorgon 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Idag 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Igår 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Sot në 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Sot në 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Sot në 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Nesër në 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Sot në 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Dje në 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('[På] dddd LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [në] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [në] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[På] dddd LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [në] 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('[I] dddd[s] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [e kaluar në] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[I] dddd[s] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [e kaluar në] 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] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [e kaluar në] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52a', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1a', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 1a', 'Jan 8 2012 should be week 1'); - 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'); - }); - -}))); - - -;(function (global, factory) { + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); + }); + +}))); + + + +;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : typeof define === 'function' && define.amd ? define(['../../moment'], factory) : @@ -53757,27 +92031,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -53787,8 +92066,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -53801,7 +92082,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -53810,16 +92094,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -53827,7 +92117,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -53835,12 +92127,21 @@ 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'); + 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' + ); } }); @@ -53848,12 +92149,27 @@ 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'); + 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' + ); } }); @@ -53862,7 +92178,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -53872,24 +92191,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -53908,19 +92231,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -53935,7 +92278,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -53945,7 +92294,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -53958,7 +92314,11 @@ 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'); + 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'); @@ -53973,65 +92333,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('sw'); + localeModule('sr-cyrl'); test('parse', function (assert) { - var tests = 'Januari Jan_Februari Feb_Machi Mac_Aprili Apr_Mei Mei_Juni Jun_Julai Jul_Agosti Ago_Septemba Sep_Oktoba Okt_Novemba Nov_Desemba Des'.split('_'), i; + var tests = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -54042,34 +92442,44 @@ 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', 'Jumapili, Februari 14 2010, 3:25:50 pm'], - ['ddd, hA', 'Jpl, 3PM'], - ['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 Jumapili Jpl J2'], - ['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'], - ['[siku] DDDo [ya mwaka]', 'siku 45 ya mwaka'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 Februari 2010'], - ['LLL', '14 Februari 2010 15:25'], - ['LLLL', 'Jumapili, 14 Februari 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 Feb 2010'], - ['lll', '14 Feb 2010 15:25'], - ['llll', 'Jpl, 14 Feb 2010 15:25'] + [ + 'dddd, Do MMMM 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', '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. фебруар 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; @@ -54079,162 +92489,405 @@ }); 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 = 'Januari Jan_Februari Feb_Machi Mac_Aprili Apr_Mei Mei_Juni Jun_Julai Jul_Agosti Ago_Septemba Sep_Oktoba Okt_Novemba Nov_Desemba Des'.split('_'), i; + var expected = 'јануар јан._фебруар феб._март мар._април апр._мај мај_јун јун_јул јул_август авг._септембар сеп._октобар окт._новембар нов._децембар дец.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Jumapili Jpl J2_Jumatatu Jtat J3_Jumanne Jnne J4_Jumatano Jtan J5_Alhamisi Alh Al_Ijumaa Ijm Ij_Jumamosi Jmos J1'.split('_'), i; + var expected = 'недеља нед. не_понедељак пон. по_уторак уто. ут_среда сре. ср_четвртак чет. че_петак пет. пе_субота суб. су'.split( + '_' + ), + i; 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 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), 'hivi punde', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'dakika moja', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'dakika moja', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'dakika 2', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'dakika 44', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'saa limoja', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'saa limoja', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'masaa 2', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'masaa 5', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'masaa 21', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'siku moja', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'siku moja', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'masiku 2', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'siku moja', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'masiku 5', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'masiku 25', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'mwezi mmoja', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'mwezi mmoja', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'mwezi mmoja', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'miezi 2', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'miezi 2', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'miezi 3', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'mwezi mmoja', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'miezi 5', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'mwaka mmoja', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'miaka 2', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'mwaka mmoja', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'miaka 5', '5 years = 5 years'); + 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), + '2 сата', + '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), + '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 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), + '2 месеца', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'hivi punde baadaye', 'prefix'); - assert.equal(moment(0).from(30000), 'tokea hivi punde', 'suffix'); + assert.equal(moment(30000).from(0), 'за неколико секунди', 'prefix'); + assert.equal(moment(0).from(30000), 'пре неколико секунди', 'prefix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'tokea hivi punde', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'пре неколико секунди', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'hivi punde baadaye', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'masiku 5 baadaye', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'за неколико секунди', + 'in a few seconds' + ); + 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(), 'leo saa 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'leo saa 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'leo saa 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'kesho saa 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'leo saa 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'jana 12:00', 'yesterday at the same time'); + + 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' + ); }); test('calendar next week', function (assert) { var i, m; + + function makeFormat(d) { + switch (d.day()) { + case 0: + return '[у] [недељу] [у] LT'; + case 3: + return '[у] [среду] [у] LT'; + case 6: + return '[у] [суботу] [у] LT'; + case 1: + case 2: + case 4: + case 5: + return '[у] dddd [у] LT'; + } + } + for (i = 2; i < 7; i++) { - m = moment().add({d: i}); - assert.equal(m.calendar(), m.format('[wiki ijayo] dddd [saat] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[wiki ijayo] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[wiki ijayo] dddd [saat] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today + ' + i + ' days end of day' + ); } }); test('calendar last week', function (assert) { var i, m; + function makeFormat(d) { + var lastWeekDay = [ + '[прошле] [недеље] [у] LT', + '[прошлог] [понедељка] [у] LT', + '[прошлог] [уторка] [у] LT', + '[прошле] [среде] [у] LT', + '[прошлог] [четвртка] [у] LT', + '[прошлог] [петка] [у] LT', + '[прошле] [суботе] [у] LT', + ]; + + return lastWeekDay[d.day()]; + } + for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[wiki iliyopita] dddd [saat] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[wiki iliyopita] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[wiki iliyopita] dddd [saat] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting sunday format', 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'); + 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')) : @@ -54249,27 +92902,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -54279,8 +92937,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -54293,7 +92953,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -54302,16 +92965,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -54319,7 +92988,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -54327,12 +92998,21 @@ 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'); + 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' + ); } }); @@ -54340,12 +93020,27 @@ 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'); + 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' + ); } }); @@ -54354,7 +93049,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -54364,24 +93062,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -54400,19 +93102,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -54427,7 +93149,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -54437,7 +93165,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -54450,7 +93185,11 @@ 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'); + 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'); @@ -54465,65 +93204,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ta'); + localeModule('sr'); test('parse', function (assert) { - var tests = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split('_'), i; + var tests = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -54534,34 +93313,44 @@ 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', 'ஞாயிற்றுக்கிழமை, பிப்ரவரி ௧௪வது ௨௦௧௦, ௩:௨௫:௫௦ எற்பாடு'], - ['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', ' எற்பாடு எற்பாடு'], - ['[ஆண்டின்] DDDo [நாள்]', 'ஆண்டின் ௪௫வது நாள்'], - ['LTS', '௧௫:௨௫:௫௦'], - ['L', '௧௪/௦௨/௨௦௧௦'], - ['LL', '௧௪ பிப்ரவரி ௨௦௧௦'], - ['LLL', '௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'], - ['LLLL', 'ஞாயிற்றுக்கிழமை, ௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'], - ['l', '௧௪/௨/௨௦௧௦'], - ['ll', '௧௪ பிப்ரவரி ௨௦௧௦'], - ['lll', '௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'], - ['llll', 'ஞாயிறு, ௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'nedelja, 14. februar 2010, 3:25:50 pm', + ], + ['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. nedelja 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. februar 2010'], + ['LLL', '14. februar 2010 15:25'], + ['LLLL', 'nedelja, 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; @@ -54571,167 +93360,407 @@ }); 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('_'), i; + var expected = 'januar jan._februar feb._mart mar._april apr._maj maj_jun jun_jul jul_avgust avg._septembar sep._oktobar okt._novembar nov._decembar dec.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'ஞாயிற்றுக்கிழமை ஞாயிறு ஞா_திங்கட்கிழமை திங்கள் தி_செவ்வாய்கிழமை செவ்வாய் செ_புதன்கிழமை புதன் பு_வியாழக்கிழமை வியாழன் வி_வெள்ளிக்கிழமை வெள்ளி வெ_சனிக்கிழமை சனி ச'.split('_'), i; + var expected = 'nedelja ned. ne_ponedeljak pon. po_utorak uto. ut_sreda sre. 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 dd'), expected[i], expected[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), 'ஒரு சில விநாடிகள்', '44 விநாடிகள் = ஒரு சில விநாடிகள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ஒரு நிமிடம்', '45 விநாடிகள் = ஒரு நிமிடம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ஒரு நிமிடம்', '89 விநாடிகள் = ஒரு நிமிடம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '௨ நிமிடங்கள்', '90 விநாடிகள் = ௨ நிமிடங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '௪௪ நிமிடங்கள்', '44 நிமிடங்கள் = 44 நிமிடங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ஒரு மணி நேரம்', '45 நிமிடங்கள் = ஒரு மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ஒரு மணி நேரம்', '89 நிமிடங்கள் = ஒரு மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '௨ மணி நேரம்', '90 நிமிடங்கள் = ௨ மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '௫ மணி நேரம்', '5 மணி நேரம் = 5 மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '௨௧ மணி நேரம்', '௨௧ மணி நேரம் = ௨௧ மணி நேரம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ஒரு நாள்', '௨௨ மணி நேரம் = ஒரு நாள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ஒரு நாள்', '௩5 மணி நேரம் = ஒரு நாள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '௨ நாட்கள்', '௩6 மணி நேரம் = ௨ days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ஒரு நாள்', '௧ நாள் = ஒரு நாள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '௫ நாட்கள்', '5 நாட்கள் = 5 நாட்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '௨௫ நாட்கள்', '௨5 நாட்கள் = ௨5 நாட்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ஒரு மாதம்', '௨6 நாட்கள் = ஒரு மாதம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ஒரு மாதம்', '௩0 நாட்கள் = ஒரு மாதம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ஒரு மாதம்', '45 நாட்கள் = ஒரு மாதம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '௨ மாதங்கள்', '46 நாட்கள் = ௨ மாதங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '௨ மாதங்கள்', '75 நாட்கள் = ௨ மாதங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '௩ மாதங்கள்', '76 நாட்கள் = ௩ மாதங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ஒரு மாதம்', '௧ மாதம் = ஒரு மாதம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '௫ மாதங்கள்', '5 மாதங்கள் = 5 மாதங்கள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ஒரு வருடம்', '௩45 நாட்கள் = ஒரு வருடம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '௨ ஆண்டுகள்', '548 நாட்கள் = ௨ ஆண்டுகள்'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ஒரு வருடம்', '௧ வருடம் = ஒரு வருடம்'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '௫ ஆண்டுகள்', '5 ஆண்டுகள் = 5 ஆண்டுகள்'); - }); - - 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(), 'ஒரு சில விநாடிகள் முன்', 'இப்போது இருந்து கடந்த காலத்தில் காட்ட வேண்டும்'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'ஒரு சில விநாடிகள் இல்', 'ஒரு சில விநாடிகள் இல்'); - assert.equal(moment().add({d: 5}).fromNow(), '௫ நாட்கள் இல்', '5 நாட்கள் இல்'); - }); - - 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).add({m: 25}).calendar(), 'இன்று ௧௨:௨௫', 'இன்று 12:25'); - assert.equal(moment(a).add({h: 1}).calendar(), 'இன்று ௧௩:௦௦', 'இன்று 13:00'); - assert.equal(moment(a).add({d: 1}).calendar(), 'நாளை ௧௨:௦௦', 'நாளை 12:00'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'இன்று ௧௧:௦௦', 'இன்று 11:00'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'நேற்று ௧௨:௦௦', 'நேற்று 12:00'); - }); - - 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.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), 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'), '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'), '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.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), 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}); - - 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'); - }); - - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 30]).format('a'), ' யாமம்', '(after) midnight'); - 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, 23, 30]).format('a'), ' யாமம்', '(before) midnight'); - }); - -}))); - - -;(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'nekoliko sekundi', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'jedan minut', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'jedan minut', + '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), + 'mesec', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'mesec', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'mesec', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 meseca', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 meseca', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 meseca', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'mesec', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 meseci', + '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 nekoliko sekundi', 'prefix'); + assert.equal(moment(0).from(30000), 'pre nekoliko sekundi', 'prefix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'pre nekoliko sekundi', + 'now from now should display as in the past' + ); + }); + + test('fromNow', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'za nekoliko sekundi', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'za 5 dana', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + 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' + ); + 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če 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] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [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)), + 'Today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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(makeFormat(m)), + 'Today + ' + i + ' days end of day' + ); + } + }); + + test('calendar last week', function (assert) { + var i, m; + + function makeFormat(d) { + var lastWeekDay = [ + '[prošle] [nedelje] [u] LT', + '[prošlog] [ponedeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT', + ]; + + return lastWeekDay[d.day()]; + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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(makeFormat(m)), + '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' + ); + }); + + 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) @@ -54744,27 +93773,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -54774,8 +93808,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -54788,7 +93824,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -54797,16 +93836,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -54814,7 +93859,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -54822,12 +93869,21 @@ 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'); + 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' + ); } }); @@ -54835,12 +93891,27 @@ 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'); + 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' + ); } }); @@ -54849,7 +93920,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -54859,24 +93933,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -54895,19 +93973,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -54922,7 +94020,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -54932,7 +94036,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -54945,7 +94056,11 @@ 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'); + 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'); @@ -54960,65 +94075,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('te'); + localeModule('ss'); test('parse', function (assert) { - var tests = 'జనవరి జన._ఫిబ్రవరి ఫిబ్ర._మార్చి మార్చి_ఏప్రిల్ ఏప్రి._మే మే_జూన్ జూన్_జులై జులై_ఆగస్టు ఆగ._సెప్టెంబర్ సెప్._అక్టోబర్ అక్టో._నవంబర్ నవ._డిసెంబర్ డిసె.'.split('_'), i; + var tests = "Bhimbidvwane Bhi_Indlovana Ina_Indlov'lenkhulu Inu_Mabasa Mab_Inkhwekhweti Ink_Inhlaba Inh_Kholwane Kho_Ingci Igc_Inyoni Iny_Imphala Imp_Lweti lwe_Ingongoni Igo".split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -55029,33 +94183,100 @@ 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 ekuseni', 10, true], + ['11 emini', 11, true], + ['3 entsambama', 15, true], + ['4 entsambama', 16, true], + ['6 entsambama', 18, true], + ['7 ebusuku', 19, true], + ['12 ebusuku', 0, 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', 'ss', true), + 'seconds' + ), + b.format('h:mm:ss a') + + ' should be equal to ' + + moment(b.format('h:mm:ss a'), 'h:mm:ss a', 'ss', 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', 'ss', 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', 'ss', 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, Do తేదీ MMMM YYYY, a h:mm:ss', 'ఆదివారం, 14వ తేదీ ఫిబ్రవరి 2010, మధ్యాహ్నం 3:25:50'], - ['ddd, a h గంటలు', 'ఆది, మధ్యాహ్నం 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', 'మధ్యాహ్నం మధ్యాహ్నం'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Lisontfo, Indlovana 14 2010, 3:25:50 entsambama', + ], + ['ddd, h A', 'Lis, 3 entsambama'], + ['M Mo MM MMMM MMM', '2 2 02 Indlovana Ina'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Lisontfo Lis 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', 'entsambama entsambama'], + [ + '[Lilanga] DDDo [lilanga lelinyaka]', + 'Lilanga 45 lilanga lelinyaka', + ], + ['LTS', '3:25:50 entsambama'], + ['L', '14/02/2010'], + ['LL', '14 Indlovana 2010'], + ['LLL', '14 Indlovana 2010 3:25 entsambama'], + ['LLLL', 'Lisontfo, 14 Indlovana 2010 3:25 entsambama'], + ['l', '14/2/2010'], + ['ll', '14 Ina 2010'], + ['lll', '14 Ina 2010 3:25 entsambama'], + ['llll', 'Lis, 14 Ina 2010 3:25 entsambama'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -55065,122 +94286,300 @@ }); 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('_'), i; + var expected = "Bhimbidvwane Bhi_Indlovana Ina_Indlov'lenkhulu Inu_Mabasa Mab_Inkhwekhweti Ink_Inhlaba Inh_Kholwane Kho_Ingci Igc_Inyoni Iny_Imphala Imp_Lweti Lwe_Ingongoni Igo".split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'ఆదివారం ఆది ఆ_సోమవారం సోమ సో_మంగళవారం మంగళ మం_బుధవారం బుధ బు_గురువారం గురు గు_శుక్రవారం శుక్ర శు_శనివారం శని శ'.split('_'), i; + var expected = 'Lisontfo Lis Li_Umsombuluko Umb Us_Lesibili Lsb Lb_Lesitsatfu Les Lt_Lesine Lsi Ls_Lesihlanu Lsh Lh_Umgcibelo Umg Ug'.split( + '_' + ), + i; 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 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), 'కొన్ని క్షణాలు', '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), '2 గంటలు', '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), '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 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), '2 నెలలు', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'emizuzwana lomcane', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'umzuzu', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'umzuzu', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 emizuzu', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 emizuzu', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'lihora', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'lihora', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 emahora', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 emahora', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 emahora', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'lilanga', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'lilanga', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 emalanga', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'lilanga', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 emalanga', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 emalanga', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'inyanga', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'inyanga', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'inyanga', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 tinyanga', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 tinyanga', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 tinyanga', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'inyanga', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 tinyanga', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'umnyaka', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 iminyaka', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'umnyaka', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 iminyaka', + '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), 'nga emizuzwana lomcane', 'prefix'); + assert.equal( + moment(0).from(30000), + 'wenteka nga emizuzwana lomcane', + 'suffix' + ); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'కొన్ని క్షణాలు క్రితం', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'wenteka nga emizuzwana lomcane', + '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(), '5 రోజులు లో', '5 రోజులు లో'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'nga emizuzwana lomcane', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'nga 5 emalanga', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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(), 'నేడు మధ్యాహ్నం 3:00', 'Now plus 3 hours'); - 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'); + assert.equal( + moment(a).calendar(), + 'Namuhla nga 12:00 emini', + 'Today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Namuhla nga 12:25 emini', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Namuhla nga 1:00 emini', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Kusasa nga 12:00 emini', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Namuhla nga 11:00 emini', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Itolo nga 12:00 emini', + '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'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [nga] 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'); + assert.equal( + m.calendar(), + m.format('dddd [nga] 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'); + assert.equal( + m.calendar(), + m.format('dddd [nga] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -55188,91 +94587,121 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[గత] dddd[,] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [leliphelile] [nga] 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'); + assert.equal( + m.calendar(), + m.format('dddd [leliphelile] [nga] 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'); + assert.equal( + m.calendar(), + m.format('dddd [leliphelile] [nga] 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'); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - 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'); - }); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - 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'); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - }); - -}))); - - -;(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++) { + 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 4 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2', + 'Jan 15 2012 should be week 2' + ); + }); + +}))); + + + +;(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$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -55282,8 +94711,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -55296,7 +94727,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -55305,16 +94739,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -55322,7 +94762,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -55330,12 +94772,21 @@ 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'); + 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' + ); } }); @@ -55343,12 +94794,27 @@ 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'); + 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' + ); } }); @@ -55357,7 +94823,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -55367,24 +94836,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -55403,19 +94876,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -55430,7 +94923,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -55440,7 +94939,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -55453,7 +94959,11 @@ 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'); + 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'); @@ -55468,65 +94978,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('tet'); + localeModule('sv'); test('parse', function (assert) { - var tests = 'Janeiru Jan_Fevereiru Fev_Marsu Mar_Abril Abr_Maiu Mai_Juñu Jun_Jullu Jul_Agustu Ago_Setembru Set_Outubru Out_Novembru Nov_Dezembru Dez'.split('_'), i; + var tests = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober 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)); + 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); @@ -55537,34 +95086,44 @@ 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', 'Domingu, Fevereiru 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'Dom, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 Fevereiru Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th Domingu Dom Do'], - ['DDD DDDo DDDD', '45 45th 045'], - ['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', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 Fevereiru 2010'], - ['LLL', '14 Fevereiru 2010 15:25'], - ['LLLL', 'Domingu, 14 Fevereiru 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Fev 2010'], - ['lll', '14 Fev 2010 15:25'], - ['llll', 'Dom, 14 Fev 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'söndag, februari 14:e 2010, 3:25:50 pm', + ], + ['ddd, hA', 'sön, 3PM'], + ['M Mo MM MMMM MMM', '2 2:a 02 februari feb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14:e 14'], + ['d do dddd ddd dd', '0 0:e söndag sön sö'], + ['DDD DDDo DDDD', '45 45:e 045'], + ['w wo ww', '6 6:e 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:e day of the year'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '14 februari 2010'], + ['LLL', '14 februari 2010 kl. 15:25'], + ['LLLL', 'söndag 14 februari 2010 kl. 15:25'], + ['l', '2010-2-14'], + ['ll', '14 feb 2010'], + ['lll', '14 feb 2010 15:25'], + ['llll', 'sön 14 feb 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -55574,163 +95133,369 @@ }); 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, 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'), '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'), '31st', '31st'); + assert.equal(moment([2011, 0, 1]).format('DDDo'), '1:a', '1:a'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), '2:a', '2:a'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), '3:e', '3:e'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), '4:e', '4:e'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), '5:e', '5:e'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), '6:e', '6:e'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), '7:e', '7:e'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), '8:e', '8:e'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), '9:e', '9:e'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), '10:e', '10:e'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), '11:e', '11:e'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), '12:e', '12:e'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), '13:e', '13:e'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), '14:e', '14:e'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), '15:e', '15:e'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), '16:e', '16:e'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), '17:e', '17:e'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), '18:e', '18:e'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), '19:e', '19:e'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), '20:e', '20:e'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), '21:a', '21:a'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), '22:a', '22:a'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), '23:e', '23:e'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), '24:e', '24:e'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), '25:e', '25:e'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), '26:e', '26:e'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), '27:e', '27:e'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), '28:e', '28:e'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), '29:e', '29:e'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), '30:e', '30:e'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31:a', '31:a'); }); test('format month', function (assert) { - var expected = 'Janeiru Jan_Fevereiru Fev_Marsu Mar_Abril Abr_Maiu Mai_Juñu Jun_Jullu Jul_Agustu Ago_Setembru Set_Outubru Out_Novembru Nov_Dezembru Dez'.split('_'), i; + var expected = 'januari jan_februari feb_mars mar_april apr_maj maj_juni jun_juli jul_augusti aug_september sep_oktober 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]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Domingu Dom Do_Segunda Seg Seg_Tersa Ters Te_Kuarta Kua Ku_Kinta Kint Ki_Sesta Sest Ses_Sabadu Sab Sa'.split('_'), i; + var expected = 'söndag sön sö_måndag mån må_tisdag tis ti_onsdag ons on_torsdag tor to_fredag fre fr_lördag lör lö'.split( + '_' + ), + i; 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 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), 'minutu balun', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minutu ida', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minutu ida', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'minutu 2', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'minutu 44', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'oras ida', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'oras ida', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'oras 2', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'oras 5', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'oras 21', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'loron ida', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'loron ida', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'loron 2', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'loron ida', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'loron 5', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'loron 25', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'fulan ida', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'fulan ida', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'fulan ida', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'fulan 2', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'fulan 2', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'fulan 3', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'fulan ida', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'fulan 5', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'tinan ida', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'tinan 2', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'tinan ida', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'tinan 5', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'några sekunder', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'en minut', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'en minut', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuter', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuter', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'en timme', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'en timme', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 timmar', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 timmar', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 timmar', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'en dag', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'en dag', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 dagar', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'en dag', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 dagar', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 dagar', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'en månad', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'en månad', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'en månad', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 månader', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 månader', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 månader', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'en månad', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 månader', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'ett år', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 år', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ett år', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 år', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'iha minutu balun', 'prefix'); - assert.equal(moment(0).from(30000), 'minutu balun liuba', 'suffix'); + assert.equal(moment(30000).from(0), 'om några sekunder', 'prefix'); + assert.equal(moment(0).from(30000), 'för några sekunder sedan', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'minutu balun liuba', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'för några sekunder sedan', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'iha minutu balun', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'iha loron 5', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'om några sekunder', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'om 5 dagar', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Ohin iha 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Ohin iha 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Ohin iha 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Aban iha 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Ohin iha 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Horiseik iha 12:00', 'yesterday at the same time'); + assert.equal(moment(a).calendar(), 'Idag 12:00', 'today at the same time'); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Idag 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Idag 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Imorgon 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Idag 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Igår 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 [iha] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('[På] dddd LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [iha] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[På] dddd LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [iha] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[På] 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 [semana kotuk] [iha] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[I] dddd[s] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [semana kotuk] [iha] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[I] dddd[s] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [semana kotuk] [iha] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[I] dddd[s] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 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'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52:a', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1:a', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1:a', + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2:a', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2:a', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -55745,27 +95510,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -55775,8 +95545,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -55789,7 +95561,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -55798,16 +95573,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -55815,7 +95596,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -55823,12 +95606,21 @@ 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'); + 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' + ); } }); @@ -55836,12 +95628,27 @@ 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'); + 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' + ); } }); @@ -55850,7 +95657,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -55860,24 +95670,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -55896,19 +95710,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -55923,7 +95757,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -55933,7 +95773,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -55946,7 +95793,11 @@ 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'); + 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'); @@ -55961,65 +95812,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('tg'); + localeModule('sw'); test('parse', function (assert) { - var tests = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split('_'), i; + var tests = 'Januari Jan_Februari Feb_Machi Mac_Aprili Apr_Mei Mei_Juni Jun_Julai Jul_Agosti Ago_Septemba Sep_Oktoba Okt_Novemba Nov_Desemba Des'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -56030,34 +95920,44 @@ 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, Do MMMM YYYY, h:mm:ss', 'якшанбе, 14-ум феврал 2010, 3:25:50'], - ['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'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'рӯз рӯз'], - ['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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Jumapili, Februari 14 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Jpl, 3PM'], + ['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 Jumapili Jpl J2'], + ['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'], + ['[siku] DDDo [ya mwaka]', 'siku 45 ya mwaka'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 Februari 2010'], + ['LLL', '14 Februari 2010 15:25'], + ['LLLL', 'Jumapili, 14 Februari 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 Feb 2010'], + ['lll', '14 Feb 2010 15:25'], + ['llll', 'Jpl, 14 Feb 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -56066,134 +95966,296 @@ } }); - 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, 10, 59]).format('A'), 'субҳ', 'morning'); - assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'рӯз', 'afternoon'); - assert.equal(moment([2012, 11, 28, 15, 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-ум', '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', '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-ум', '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', '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-ум', '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', '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-ум', '31st'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); }); test('format month', function (assert) { - var expected = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split('_'), i; + var expected = 'Januari Jan_Februari Feb_Machi Mac_Aprili Apr_Mei Mei_Juni Jun_Julai Jul_Agosti Ago_Septemba Sep_Oktoba Okt_Novemba Nov_Desemba Des'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'якшанбе яшб яш_душанбе дшб дш_сешанбе сшб сш_чоршанбе чшб чш_панҷшанбе пшб пш_ҷумъа ҷум ҷм_шанбе шнб шб'.split('_'), i; + var expected = 'Jumapili Jpl J2_Jumatatu Jtat J3_Jumanne Jnne J4_Jumatano Jtan J5_Alhamisi Alh Al_Ijumaa Ijm Ij_Jumamosi Jmos J1'.split( + '_' + ), + i; 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 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), 'якчанд сония', '44 сония = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'як дақиқа', '45 сония = як дақиқа'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'як дақиқа', '89 сония = як дақиқа'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 дақиқа', '90 сония = 2 дақиқа'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 дақиқа', '44 дақиқа = 44 дақиқа'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'як соат', '45 дақиқа = як соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'як соат', '89 дақиқа = як соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 соат', '90 дақиқа = 2 соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 соат', '5 соат = 5 соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 соат', '21 соат = 21 соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'як рӯз', '22 соат = як рӯз'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'як рӯз', '35 соат = як рӯз'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 рӯз', '36 соат = 2 рӯз'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'як рӯз', '1 рӯз = як рӯз'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 рӯз', '5 рӯз = 5 рӯз'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 рӯз', '25 рӯз = 25 рӯз'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'як моҳ', '26 рӯз = як моҳ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'як моҳ', '30 рӯз = як моҳ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'як моҳ', '43 рӯз = як моҳ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 моҳ', '46 рӯз = 2 моҳ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 моҳ', '74 рӯз = 2 моҳ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 моҳ', '76 рӯз = 3 моҳ'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'як моҳ', 'як моҳ = як моҳ'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 моҳ', '5 моҳ = 5 моҳ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'як сол', '345 рӯз = як сол'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 сол', '548 рӯз = 2 сол'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'як сол', '1 сол = як сол'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 сол', '5 сол = 5 сол'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'hivi punde', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'dakika moja', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'dakika moja', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + 'dakika 2', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + 'dakika 44', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'saa limoja', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'saa limoja', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + 'masaa 2', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + 'masaa 5', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + 'masaa 21', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'siku moja', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'siku moja', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + 'masiku 2', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'siku moja', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + 'masiku 5', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + 'masiku 25', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'mwezi mmoja', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'mwezi mmoja', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'mwezi mmoja', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + 'miezi 2', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + 'miezi 2', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + 'miezi 3', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'mwezi mmoja', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + 'miezi 5', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'mwaka mmoja', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + 'miaka 2', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'mwaka mmoja', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + 'miaka 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), 'hivi punde baadaye', 'prefix'); + assert.equal(moment(0).from(30000), 'tokea hivi punde', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'якчанд сония пеш', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'tokea hivi punde', + '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 рӯз', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'hivi punde baadaye', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'masiku 5 baadaye', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - - 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'); + assert.equal( + moment(a).calendar(), + 'leo saa 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'leo saa 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'leo saa 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'kesho saa 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'leo saa 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'jana 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[и] [ҳафтаи оянда соати] 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.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd[и] [ҳафтаи оянда соати] LT'), 'Today + ' + i + ' days end of day'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('[wiki ijayo] dddd [saat] LT'), + 'Today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('[wiki ijayo] dddd [saat] LT'), + 'Today + ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[wiki ijayo] dddd [saat] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -56201,40 +96263,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd[и] [ҳафтаи гузашта соати] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[wiki iliyopita] dddd [saat] 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'); + assert.equal( + m.calendar(), + m.format('[wiki iliyopita] dddd [saat] 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'); + assert.equal( + m.calendar(), + m.format('[wiki iliyopita] dddd [saat] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - 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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3-юм', 'Jan 15 2012 should be week 3'); + test('weeks year starting sunday format', 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')) : @@ -56249,27 +96352,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -56279,8 +96387,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -56293,7 +96403,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -56302,16 +96415,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -56319,7 +96438,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -56327,12 +96448,21 @@ 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'); + 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' + ); } }); @@ -56340,12 +96470,27 @@ 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'); + 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' + ); } }); @@ -56354,7 +96499,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -56364,24 +96512,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -56400,19 +96552,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -56427,7 +96599,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -56437,7 +96615,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -56450,7 +96635,11 @@ 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'); + 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'); @@ -56465,65 +96654,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('th'); + localeModule('ta'); test('parse', function (assert) { - var tests = 'มกราคม ม.ค._กุมภาพันธ์ ก.พ._มีนาคม มี.ค._เมษายน เม.ย._พฤษภาคม พ.ค._มิถุนายน มิ.ย._กรกฎาคม ก.ค._สิงหาคม ส.ค._กันยายน ก.ย._ตุลาคม ต.ค._พฤศจิกายน พ.ย._ธันวาคม ธ.ค.'.split('_'), i; + var tests = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -56534,34 +96762,44 @@ 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, Do MMMM YYYY, h:mm:ss a', 'อาทิตย์, 14 กุมภาพันธ์ 2010, 3:25:50 หลังเที่ยง'], - ['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'] + [ + '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', ' எற்பாடு எற்பாடு'], + ['[ஆண்டின்] DDDo [நாள்]', 'ஆண்டின் ௪௫வது நாள்'], + ['LTS', '௧௫:௨௫:௫௦'], + ['L', '௧௪/௦௨/௨௦௧௦'], + ['LL', '௧௪ பிப்ரவரி ௨௦௧௦'], + ['LLL', '௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'], + ['LLLL', 'ஞாயிற்றுக்கிழமை, ௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'], + ['l', '௧௪/௨/௨௦௧௦'], + ['ll', '௧௪ பிப்ரவரி ௨௦௧௦'], + ['lll', '௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'], + ['llll', 'ஞாயிறு, ௧௪ பிப்ரவரி ௨௦௧௦, ௧௫:௨௫'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -56570,126 +96808,381 @@ } }); + 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('_'), i; + var expected = 'ஜனவரி ஜனவரி_பிப்ரவரி பிப்ரவரி_மார்ச் மார்ச்_ஏப்ரல் ஏப்ரல்_மே மே_ஜூன் ஜூன்_ஜூலை ஜூலை_ஆகஸ்ட் ஆகஸ்ட்_செப்டெம்பர் செப்டெம்பர்_அக்டோபர் அக்டோபர்_நவம்பர் நவம்பர்_டிசம்பர் டிசம்பர்'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'อาทิตย์ อาทิตย์ อา._จันทร์ จันทร์ จ._อังคาร อังคาร อ._พุธ พุธ พ._พฤหัสบดี พฤหัส พฤ._ศุกร์ ศุกร์ ศ._เสาร์ เสาร์ ส.'.split('_'), i; + var expected = 'ஞாயிற்றுக்கிழமை ஞாயிறு ஞா_திங்கட்கிழமை திங்கள் தி_செவ்வாய்கிழமை செவ்வாய் செ_புதன்கிழமை புதன் பு_வியாழக்கிழமை வியாழன் வி_வெள்ளிக்கிழமை வெள்ளி வெ_சனிக்கிழமை சனி ச'.split( + '_' + ), + i; 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 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), 'ไม่กี่วินาที', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 นาที', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 นาที', '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), '1 ชั่วโมง', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 ชั่วโมง', '89 minutes = an hour'); - assert.equal(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), '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), '1 วัน', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 วัน', '35 hours = a day'); - assert.equal(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), '1 วัน', '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), '1 เดือน', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 เดือน', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 เดือน', '43 days = a month'); - assert.equal(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), '2 เดือน', '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 เดือน', '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), '1 ปี', '345 days = a year'); - assert.equal(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), '1 ปี', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ปี', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'ஒரு சில விநாடிகள்', + '44 விநாடிகள் = ஒரு சில விநாடிகள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'ஒரு நிமிடம்', + '45 விநாடிகள் = ஒரு நிமிடம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'ஒரு நிமிடம்', + '89 விநாடிகள் = ஒரு நிமிடம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '௨ நிமிடங்கள்', + '90 விநாடிகள் = ௨ நிமிடங்கள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '௪௪ நிமிடங்கள்', + '44 நிமிடங்கள் = 44 நிமிடங்கள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'ஒரு மணி நேரம்', + '45 நிமிடங்கள் = ஒரு மணி நேரம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'ஒரு மணி நேரம்', + '89 நிமிடங்கள் = ஒரு மணி நேரம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '௨ மணி நேரம்', + '90 நிமிடங்கள் = ௨ மணி நேரம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '௫ மணி நேரம்', + '5 மணி நேரம் = 5 மணி நேரம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '௨௧ மணி நேரம்', + '௨௧ மணி நேரம் = ௨௧ மணி நேரம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'ஒரு நாள்', + '௨௨ மணி நேரம் = ஒரு நாள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'ஒரு நாள்', + '௩5 மணி நேரம் = ஒரு நாள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '௨ நாட்கள்', + '௩6 மணி நேரம் = ௨ days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'ஒரு நாள்', + '௧ நாள் = ஒரு நாள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '௫ நாட்கள்', + '5 நாட்கள் = 5 நாட்கள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '௨௫ நாட்கள்', + '௨5 நாட்கள் = ௨5 நாட்கள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'ஒரு மாதம்', + '௨6 நாட்கள் = ஒரு மாதம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'ஒரு மாதம்', + '௩0 நாட்கள் = ஒரு மாதம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'ஒரு மாதம்', + '45 நாட்கள் = ஒரு மாதம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '௨ மாதங்கள்', + '46 நாட்கள் = ௨ மாதங்கள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '௨ மாதங்கள்', + '75 நாட்கள் = ௨ மாதங்கள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '௩ மாதங்கள்', + '76 நாட்கள் = ௩ மாதங்கள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'ஒரு மாதம்', + '௧ மாதம் = ஒரு மாதம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '௫ மாதங்கள்', + '5 மாதங்கள் = 5 மாதங்கள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'ஒரு வருடம்', + '௩45 நாட்கள் = ஒரு வருடம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '௨ ஆண்டுகள்', + '548 நாட்கள் = ௨ ஆண்டுகள்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ஒரு வருடம்', + '௧ வருடம் = ஒரு வருடம்' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '௫ ஆண்டுகள்', + '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'); + assert.equal( + moment().fromNow(), + 'ஒரு சில விநாடிகள் முன்', + 'இப்போது இருந்து கடந்த காலத்தில் காட்ட வேண்டும்' + ); }); 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({ s: 30 }).fromNow(), + 'ஒரு சில விநாடிகள் இல்', + 'ஒரு சில விநாடிகள் இல்' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + '௫ நாட்கள் இல்', + '5 நாட்கள் இல்' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal(moment(a).calendar(), 'இன்று ௧௨:௦௦', 'இன்று 12:00'); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'இன்று ௧௨:௨௫', + 'இன்று 12:25' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'இன்று ௧௩:௦௦', + 'இன்று 13:00' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'நாளை ௧௨:௦௦', + 'நாளை 12:00' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'இன்று ௧௧:௦௦', + 'இன்று 11:00' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'நேற்று ௧௨:௦௦', + 'நேற்று 12:00' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - 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'); + test('meridiem', function (assert) { + assert.equal( + moment([2011, 2, 23, 0, 30]).format('a'), + ' யாமம்', + '(after) midnight' + ); + 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, 23, 30]).format('a'), + ' யாமம்', + '(before) midnight' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -56704,27 +97197,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -56734,8 +97232,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -56748,7 +97248,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -56757,16 +97260,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -56774,7 +97283,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -56782,12 +97293,21 @@ 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'); + 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' + ); } }); @@ -56795,12 +97315,27 @@ 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'); + 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' + ); } }); @@ -56809,7 +97344,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -56819,24 +97357,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -56855,19 +97397,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -56882,7 +97444,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -56892,7 +97460,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -56905,7 +97480,11 @@ 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'); + 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'); @@ -56920,66 +97499,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('tl-ph'); + localeModule('te'); 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('_'), + var tests = 'జనవరి జన._ఫిబ్రవరి ఫిబ్ర._మార్చి మార్చి_ఏప్రిల్ ఏప్రి._మే మే_జూన్ జూన్_జులై జులై_ఆగస్టు ఆగ._సెప్టెంబర్ సెప్._అక్టోబర్ అక్టో._నవంబర్ నవ._డిసెంబర్ డిసె.'.split( + '_' + ), i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -56990,34 +97607,43 @@ 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', 'Linggo, Pebrero 14 2010, 3:25:50 pm'], - ['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 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'], - ['[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'] + [ + 'dddd, Do తేదీ MMMM YYYY, a h:mm:ss', + 'ఆదివారం, 14వ తేదీ ఫిబ్రవరి 2010, మధ్యాహ్నం 3:25:50', + ], + ['ddd, a h గంటలు', 'ఆది, మధ్యాహ్నం 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', 'మధ్యాహ్నం మధ్యాహ్నం'], + ['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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -57027,160 +97653,426 @@ }); 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 = '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; + var expected = 'జనవరి జన._ఫిబ్రవరి ఫిబ్ర._మార్చి మార్చి_ఏప్రిల్ ఏప్రి._మే మే_జూన్ జూన్_జులై జులై_ఆగస్టు ఆగ._సెప్టెంబర్ సెప్._అక్టోబర్ అక్టో._నవంబర్ నవ._డిసెంబర్ డిసె.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); 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('_'), i; + var expected = 'ఆదివారం ఆది ఆ_సోమవారం సోమ సో_మంగళవారం మంగళ మం_బుధవారం బుధ బు_గురువారం గురు గు_శుక్రవారం శుక్ర శు_శనివారం శని శ'.split( + '_' + ), + i; 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 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), 'ilang segundo', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'isang minuto', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'isang minuto', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuto', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuto', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'isang oras', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'isang oras', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 oras', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 oras', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 oras', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'isang araw', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'isang araw', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 araw', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'isang araw', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 araw', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 araw', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'isang buwan', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'isang buwan', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'isang buwan', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 buwan', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 buwan', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 buwan', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'isang buwan', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 buwan', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'isang taon', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 taon', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'isang taon', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 taon', '5 years = 5 years'); + 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), + '2 గంటలు', + '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), + '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 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), + '2 నెలలు', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'sa loob ng ilang segundo', 'prefix'); - assert.equal(moment(0).from(30000), 'ilang segundo ang nakalipas', '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(), 'sa loob ng ilang segundo', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'sa loob ng 5 araw', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'కొన్ని క్షణాలు లో', + 'కొన్ని క్షణాలు లో' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + '5 రోజులు లో', + '5 రోజులు లో' + ); }); - 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', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), '12:25 ngayong araw', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), '13:00 ngayong araw', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Bukas ng 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), '11:00 ngayong araw', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), '12:00 kahapon', 'yesterday at the same time'); + 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(), + 'నేడు మధ్యాహ్నం 3:00', + 'Now plus 3 hours' + ); + 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' + ); }); - 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [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('LT [sa susunod na] dddd'), 'Today + ' + i + ' days end of day'); - } - }); + assert.equal( + m.calendar(), + 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'), + '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 = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 [noong nakaraang] dddd'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [noong nakaraang] dddd'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[గత] dddd[,] LT'), + 'Today - ' + i + ' days end of day' + ); } }); - test('same all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); + 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' + ); - 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' + ); + }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + 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(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + 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'), '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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -57195,27 +98087,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -57225,8 +98122,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -57239,7 +98138,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -57248,16 +98150,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -57265,7 +98173,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -57273,12 +98183,21 @@ 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'); + 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' + ); } }); @@ -57286,12 +98205,27 @@ 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'); + 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' + ); } }); @@ -57300,7 +98234,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -57310,24 +98247,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -57346,19 +98287,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -57373,7 +98334,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -57383,7 +98350,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -57396,7 +98370,11 @@ 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'); + 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'); @@ -57411,69 +98389,106 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('tlh'); + localeModule('tet'); - //Current parsing method doesn't allow parsing correctly months 10, 11 and 12. - /* - * test('parse', function (assert) { - var tests = 'tera’ jar wa’.jar wa’_tera’ jar cha’.jar cha’_tera’ jar wej.jar wej_tera’ jar loS.jar loS_tera’ jar vagh.jar vagh_tera’ jar jav.jar jav_tera’ jar Soch.jar Soch_tera’ jar chorgh.jar chorgh_tera’ jar Hut.jar Hut_tera’ jar wa’maH.jar wa’maH_tera’ jar wa’maH wa’.jar wa’maH wa’_tera’ jar wa’maH cha’.jar wa’maH cha’'.split('_'), i; + test('parse', function (assert) { + var tests = 'Janeiru Jan_Fevereiru Fev_Marsu Mar_Abril Abr_Maiu Mai_Juñu Jun_Jullu Jul_Agustu Ago_Setembru Set_Outubru Out_Novembru Nov_Dezembru Dez'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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('.'); + tests[i] = tests[i].split(' '); equalTest(tests[i][0], 'MMM', i); equalTest(tests[i][1], 'MMM', i); equalTest(tests[i][0], 'MMMM', i); @@ -57482,34 +98497,44 @@ 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', 'lojmItjaj, tera’ jar cha’ 14. 2010, 3:25:50 pm'], - ['ddd, hA', 'lojmItjaj, 3PM'], - ['M Mo MM MMMM MMM', '2 2. 02 tera’ jar cha’ jar cha’'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. lojmItjaj lojmItjaj lojmItjaj'], - ['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'], - ['[DIS jaj] DDDo', 'DIS jaj 45.'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 tera’ jar cha’ 2010'], - ['LLL', '14 tera’ jar cha’ 2010 15:25'], - ['LLLL', 'lojmItjaj, 14 tera’ jar cha’ 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 jar cha’ 2010'], - ['lll', '14 jar cha’ 2010 15:25'], - ['llll', 'lojmItjaj, 14 jar cha’ 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Domingu, Fevereiru 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Dom, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 Fevereiru Fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th Domingu Dom Do'], + ['DDD DDDo DDDD', '45 45th 045'], + ['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', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 Fevereiru 2010'], + ['LLL', '14 Fevereiru 2010 15:25'], + ['LLLL', 'Domingu, 14 Fevereiru 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Fev 2010'], + ['lll', '14 Fev 2010 15:25'], + ['llll', 'Dom, 14 Fev 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -57519,176 +98544,374 @@ }); 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'), '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'), '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'), '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'), '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'), '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'), '31.', '31.'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31st', '31st'); }); test('format month', function (assert) { - var expected = 'tera’ jar wa’ jar wa’_tera’ jar cha’ jar cha’_tera’ jar wej jar wej_tera’ jar loS jar loS_tera’ jar vagh jar vagh_tera’ jar jav jar jav_tera’ jar Soch jar Soch_tera’ jar chorgh jar chorgh_tera’ jar Hut jar Hut_tera’ jar wa’maH jar wa’maH_tera’ jar wa’maH wa’ jar wa’maH wa’_tera’ jar wa’maH cha’ jar wa’maH cha’'.split('_'), i; + var expected = 'Janeiru Jan_Fevereiru Fev_Marsu Mar_Abril Abr_Maiu Mai_Juñu Jun_Jullu Jul_Agustu Ago_Setembru Set_Outubru Out_Novembru Nov_Dezembru Dez'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'lojmItjaj lojmItjaj lojmItjaj_DaSjaj DaSjaj DaSjaj_povjaj povjaj povjaj_ghItlhjaj ghItlhjaj ghItlhjaj_loghjaj loghjaj loghjaj_buqjaj buqjaj buqjaj_ghInjaj ghInjaj ghInjaj'.split('_'), i; + var expected = 'Domingu Dom Do_Segunda Seg Seg_Tersa Ters Te_Kuarta Kua Ku_Kinta Kint Ki_Sesta Sest Ses_Sabadu Sab Sa'.split( + '_' + ), + i; 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 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), 'puS lup', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'wa’ tup', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'wa’ tup', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'cha’ tup', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'loSmaH loS tup', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'wa’ rep', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'wa’ rep', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'cha’ rep', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'vagh rep', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'cha’maH wa’ rep', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'wa’ jaj', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'wa’ jaj', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'cha’ jaj', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'wa’ jaj', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'vagh jaj', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'cha’maH vagh jaj', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'wa’ jar', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'wa’ jar', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'wa’ jar', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'cha’ jar', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'cha’ jar', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'wej jar', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'wa’ jar', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'vagh jar', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'wa’ DIS', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'cha’ DIS', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'wa’ DIS', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'vagh DIS', '5 years = 5 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 112}), true), 'wa’vatlh wa’maH cha’ DIS', '112 years = 112 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 122}), true), 'wa’vatlh cha’maH cha’ DIS', '122 years = 122 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 213}), true), 'cha’vatlh wa’maH wej DIS', '213 years = 213 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 223}), true), 'cha’vatlh cha’maH wej DIS', '223 years = 223 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'segundu balun', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'minutu ida', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'minutu ida', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + 'minutu 2', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + 'minutu 44', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'oras ida', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'oras ida', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + 'oras 2', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + 'oras 5', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + 'oras 21', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'loron ida', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'loron ida', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + 'loron 2', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'loron ida', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + 'loron 5', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + 'loron 25', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'fulan ida', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'fulan ida', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'fulan ida', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + 'fulan 2', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + 'fulan 2', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + 'fulan 3', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'fulan ida', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + 'fulan 5', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'tinan ida', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + 'tinan 2', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'tinan ida', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + 'tinan 5', + '5 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'puS lup pIq', 'suffix'); - assert.equal(moment(0).from(30000), 'puS lup ret', 'suffix'); + assert.equal(moment(30000).from(0), 'iha segundu balun', 'prefix'); + assert.equal(moment(0).from(30000), 'segundu balun liuba', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'puS lup ret', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'segundu balun liuba', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'puS lup pIq', 'in a few seconds'); - assert.equal(moment().add({h: 1}).fromNow(), 'wa’ rep pIq', 'in an hour'); - assert.equal(moment().add({d: 5}).fromNow(), 'vagh leS', 'in 5 days'); - assert.equal(moment().add({M: 2}).fromNow(), 'cha’ waQ', 'in 2 months'); - assert.equal(moment().add({y: 1}).fromNow(), 'wa’ nem', 'in a year'); - assert.equal(moment().add({s: -30}).fromNow(), 'puS lup ret', 'a few seconds ago'); - assert.equal(moment().add({h: -1}).fromNow(), 'wa’ rep ret', 'an hour ago'); - assert.equal(moment().add({d: -5}).fromNow(), 'vagh Hu’', '5 days ago'); - assert.equal(moment().add({M: -2}).fromNow(), 'cha’ wen', '2 months ago'); - assert.equal(moment().add({y: -1}).fromNow(), 'wa’ ben', 'a year ago'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'iha segundu balun', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'iha loron 5', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'DaHjaj 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'DaHjaj 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'DaHjaj 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'wa’leS 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'DaHjaj 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'wa’Hu’ 12:00', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Ohin iha 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Ohin iha 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Ohin iha 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Aban iha 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Ohin iha 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Horiseik iha 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('LLL'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [iha] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('LLL'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [iha] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('LLL'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [iha] 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('LLL'), 'Today - ' + i + ' days current time'); + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [semana kotuk] [iha] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('LLL'), 'Today - ' + i + ' days beginning of day'); - + assert.equal( + m.calendar(), + m.format('dddd [semana kotuk] [iha] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('LLL'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [semana kotuk] [iha] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52nd', + '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' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 1st', + '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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2nd', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -57703,27 +98926,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -57733,8 +98961,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -57747,7 +98977,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -57756,16 +98989,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -57773,7 +99012,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -57781,12 +99022,21 @@ 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'); + 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' + ); } }); @@ -57794,12 +99044,27 @@ 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'); + 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' + ); } }); @@ -57808,7 +99073,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -57818,24 +99086,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -57854,19 +99126,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -57881,7 +99173,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -57891,7 +99189,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -57904,7 +99209,11 @@ 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'); + 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'); @@ -57919,65 +99228,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('tr'); + localeModule('tg'); test('parse', function (assert) { - var tests = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split('_'), i; + var tests = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -57988,210 +99336,436 @@ 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', 'Pazar, Şubat 14 2010, 3:25:50 pm'], - ['ddd, hA', 'Paz, 3PM'], - ['M Mo MM MMMM MMM', '2 2\'nci 02 Şubat Şub'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Pazar Paz Pz'], - ['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', 'pm PM'], - ['[yılın] DDDo [günü]', 'yılın 45\'inci günü'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 Şubat 2010'], - ['LLL', '14 Şubat 2010 15:25'], - ['LLLL', 'Pazar, 14 Şubat 2010 15:25'], - ['l', '14.2.2010'], - ['ll', '14 Şub 2010'], - ['lll', '14 Şub 2010 15:25'], - ['llll', 'Paz, 14 Şub 2010 15:25'] - ], - DDDo = [ - [359, '360\'ıncı'], - [199, '200\'üncü'], - [149, '150\'nci'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss', + 'якшанбе, 14-ум феврал 2010, 3:25:50', + ], + ['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'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'рӯз рӯз'], + ['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'], ], - 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 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, 10, 59]).format('A'), 'субҳ', 'morning'); + assert.equal(moment([2012, 11, 28, 12, 0]).format('A'), 'рӯз', 'afternoon'); + assert.equal( + moment([2012, 11, 28, 15, 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\'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\'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\'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\'inci', '31st'); + 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-ум', '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'), '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-ум', '31st'); }); test('format month', function (assert) { - var expected = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split('_'), i; + var expected = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Pazar Paz Pz_Pazartesi Pts Pt_Salı Sal Sa_Çarşamba Çar Ça_Perşembe Per Pe_Cuma Cum Cu_Cumartesi Cts Ct'.split('_'), i; + var expected = 'якшанбе яшб яш_душанбе дшб дш_сешанбе сшб сш_чоршанбе чшб чш_панҷшанбе пшб пш_ҷумъа ҷум ҷм_шанбе шнб шб'.split( + '_' + ), + i; 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 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), 'birkaç saniye', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'bir dakika', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'bir dakika', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 dakika', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 dakika', '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), 'bir ay', '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 yıl', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 yıl', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'bir yıl', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 yıl', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'birkaç saniye sonra', 'prefix'); - assert.equal(moment(0).from(30000), 'birkaç saniye önce', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'birkaç saniye önce', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'birkaç saniye sonra', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 gün sonra', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - 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(), 'yarın 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 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('[gelecek] dddd [saat] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[gelecek] dddd [saat] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[gelecek] dddd [saat] 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('[geçen] dddd [saat] LT'), 'Today - ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[geçen] dddd [saat] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'якчанд сония', + '44 сония = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'як дақиқа', + '45 сония = як дақиқа' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'як дақиқа', + '89 сония = як дақиқа' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 дақиқа', + '90 сония = 2 дақиқа' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 дақиқа', + '44 дақиқа = 44 дақиқа' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'як соат', + '45 дақиқа = як соат' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'як соат', + '89 дақиқа = як соат' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 соат', + '90 дақиқа = 2 соат' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 соат', + '5 соат = 5 соат' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 соат', + '21 соат = 21 соат' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'як рӯз', + '22 соат = як рӯз' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'як рӯз', + '35 соат = як рӯз' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 рӯз', + '36 соат = 2 рӯз' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'як рӯз', + '1 рӯз = як рӯз' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 рӯз', + '5 рӯз = 5 рӯз' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 рӯз', + '25 рӯз = 25 рӯз' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'як моҳ', + '26 рӯз = як моҳ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'як моҳ', + '30 рӯз = як моҳ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'як моҳ', + '43 рӯз = як моҳ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 моҳ', + '46 рӯз = 2 моҳ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 моҳ', + '74 рӯз = 2 моҳ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 моҳ', + '76 рӯз = 3 моҳ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'як моҳ', + 'як моҳ = як моҳ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 моҳ', + '5 моҳ = 5 моҳ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'як сол', + '345 рӯз = як сол' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 сол', + '548 рӯз = 2 сол' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'як сол', + '1 сол = як сол' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 сол', + '5 сол = 5 сол' + ); + }); + + 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' + ); + }); + + 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('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + 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' + ); + }); + + 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.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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'), + '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'), + '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.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[geçen] dddd [saat] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1\'inci', 'Jan 1 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'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2\'nci', 'Jan 8 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3-юм', + 'Jan 15 2012 should be week 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -58206,27 +99780,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -58236,8 +99815,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -58250,7 +99831,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -58259,16 +99843,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -58276,7 +99866,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -58284,12 +99876,21 @@ 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'); + 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' + ); } }); @@ -58297,12 +99898,27 @@ 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'); + 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' + ); } }); @@ -58311,7 +99927,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -58321,24 +99940,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -58357,19 +99980,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -58384,7 +100027,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -58394,7 +100043,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -58407,7 +100063,11 @@ 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'); + 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'); @@ -58422,65 +100082,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('tzl'); + localeModule('th'); test('parse', function (assert) { - var tests = 'Januar Jan_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split('_'), i; + var tests = 'มกราคม ม.ค._กุมภาพันธ์ ก.พ._มีนาคม มี.ค._เมษายน เม.ย._พฤษภาคม พ.ค._มิถุนายน มิ.ย._กรกฎาคม ก.ค._สิงหาคม ส.ค._กันยายน ก.ย._ตุลาคม ต.ค._พฤศจิกายน พ.ย._ธันวาคม ธ.ค.'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -58491,34 +100190,44 @@ 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', 'Súladi, Fevraglh 14. 2010, 3.25.50 d\'o'], - ['ddd, hA', 'Súl, 3D\'O'], - ['M Mo MM MMMM MMM', '2 2. 02 Fevraglh Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14. 14'], - ['d do dddd ddd dd', '0 0. Súladi Súl Sú'], - ['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', 'd\'o D\'O'], - ['[the] DDDo [day of the year]', 'the 45. day of the year'], - ['LTS', '15.25.50'], - ['L', '14.02.2010'], - ['LL', '14. Fevraglh dallas 2010'], - ['LLL', '14. Fevraglh dallas 2010 15.25'], - ['LLLL', 'Súladi, li 14. Fevraglh dallas 2010 15.25'], - ['l', '14.2.2010'], - ['ll', '14. Fev dallas 2010'], - ['lll', '14. Fev dallas 2010 15.25'], - ['llll', 'Súl, li 14. Fev dallas 2010 15.25'] + [ + 'dddd, Do MMMM YYYY, h:mm:ss a', + 'อาทิตย์, 14 กุมภาพันธ์ 2010, 3:25:50 หลังเที่ยง', + ], + ['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; @@ -58527,167 +100236,337 @@ } }); - 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_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split('_'), i; + var expected = 'มกราคม ม.ค._กุมภาพันธ์ ก.พ._มีนาคม มี.ค._เมษายน เม.ย._พฤษภาคม พ.ค._มิถุนายน มิ.ย._กรกฎาคม ก.ค._สิงหาคม ส.ค._กันยายน ก.ย._ตุลาคม ต.ค._พฤศจิกายน พ.ย._ธันวาคม ธ.ค.'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Súladi Súl Sú_Lúneçi Lún Lú_Maitzi Mai Ma_Márcuri Már Má_Xhúadi Xhú Xh_Viénerçi Vié Vi_Sáturi Sát Sá'.split('_'), i; + var expected = 'อาทิตย์ อาทิตย์ อา._จันทร์ จันทร์ จ._อังคาร อังคาร อ._พุธ พุธ พ._พฤหัสบดี พฤหัส พฤ._ศุกร์ ศุกร์ ศ._เสาร์ เสาร์ ส.'.split( + '_' + ), + i; 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 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), 'viensas secunds', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '\'n míut', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '\'n míut', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 míuts', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 míuts', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), '\'n þora', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '\'n þora', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 þoras', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 þoras', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 þoras', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), '\'n ziua', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '\'n ziua', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ziuas', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), '\'n ziua', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ziuas', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ziuas', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), '\'n mes', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '\'n mes', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '\'n mes', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 mesen', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 mesen', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 mesen', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), '\'n mes', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 mesen', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), '\'n ar', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ars', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), '\'n ar', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ars', '5 years = 5 years'); + 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), + '1 นาที', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + '1 นาที', + '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), + '1 ชั่วโมง', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + '1 ชั่วโมง', + '89 minutes = an hour' + ); + assert.equal( + 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), + '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), + '1 วัน', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '1 วัน', + '35 hours = a day' + ); + assert.equal( + 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), + '1 วัน', + '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), + '1 เดือน', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '1 เดือน', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + '1 เดือน', + '43 days = a month' + ); + assert.equal( + 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), + '2 เดือน', + '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 เดือน', + '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), + '1 ปี', + '345 days = a year' + ); + assert.equal( + 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), + '1 ปี', + '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), 'osprei viensas secunds', 'prefix'); - assert.equal(moment(0).from(30000), 'ja\'iensas secunds', '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(), 'ja\'iensas secunds', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'ไม่กี่วินาทีที่แล้ว', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'osprei viensas secunds', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'osprei 5 ziuas', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'อีก ไม่กี่วินาที', + 'in a few seconds' + ); + 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(), 'oxhi à 12.00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'oxhi à 12.25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'oxhi à 13.00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'demà à 12.00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'oxhi à 11.00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'ieiri à 12.00', 'yesterday at the same time'); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[sür el] dddd [lasteu à] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + 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 4th is the first week of the year. - - 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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2.', 'Jan 15 2012 should be week 2'); + 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -58702,27 +100581,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -58732,8 +100616,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -58746,7 +100632,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -58755,16 +100644,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -58772,7 +100667,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -58780,12 +100677,21 @@ 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'); + 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' + ); } }); @@ -58793,12 +100699,27 @@ 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'); + 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' + ); } }); @@ -58807,7 +100728,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -58817,24 +100741,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -58853,19 +100781,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -58880,7 +100828,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -58890,7 +100844,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -58903,7 +100864,11 @@ 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'); + 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'); @@ -58918,65 +100883,105 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('tzm-latn'); + localeModule('tl-ph'); test('parse', function (assert) { - var tests = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split('_'), i; + 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( + '_' + ), + i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -58987,34 +100992,44 @@ 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', 'asamas, brˤayrˤ 14 2010, 3:25:50 pm'], - ['ddd, hA', 'asamas, 3PM'], - ['M Mo MM MMMM MMM', '2 2 02 brˤayrˤ brˤayrˤ'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 asamas asamas asamas'], - ['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', 'pm PM'], - ['[the] DDDo [day of the year]', 'the 45 day of the year'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 brˤayrˤ 2010'], - ['LLL', '14 brˤayrˤ 2010 15:25'], - ['LLLL', 'asamas 14 brˤayrˤ 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 brˤayrˤ 2010'], - ['lll', '14 brˤayrˤ 2010 15:25'], - ['llll', 'asamas 14 brˤayrˤ 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Linggo, Pebrero 14 2010, 3:25:50 pm', + ], + ['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 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'], + ['[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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -59061,125 +101076,338 @@ }); test('format month', function (assert) { - var expected = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split('_'), i; + 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( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'asamas asamas asamas_aynas aynas aynas_asinas asinas asinas_akras akras akras_akwas akwas akwas_asimwas asimwas asimwas_asiḍyas asiḍyas asiḍyas'.split('_'), i; + var expected = 'Linggo Lin Li_Lunes Lun Lu_Martes Mar Ma_Miyerkules Miy Mi_Huwebes Huw Hu_Biyernes Biy Bi_Sabado Sab Sab'.split( + '_' + ), + i; 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 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), 'imik', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'minuḍ', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'minuḍ', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 minuḍ', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 minuḍ', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'saɛa', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'saɛa', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 tassaɛin', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 tassaɛin', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 tassaɛin', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ass', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ass', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ossan', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ass', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ossan', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ossan', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ayowr', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ayowr', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ayowr', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 iyyirn', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 iyyirn', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 iyyirn', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ayowr', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 iyyirn', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'asgas', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 isgasn', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'asgas', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 isgasn', '5 years = 5 years'); - }); - - test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'dadkh s yan imik', 'prefix'); - assert.equal(moment(0).from(30000), 'yan imik', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'yan imik', 'now from now should display as in the past'); - }); - - test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'dadkh s yan imik', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'dadkh s yan 5 ossan', 'in 5 days'); - }); - - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'asdkh g 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'asdkh g 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'asdkh g 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'aska g 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'asdkh g 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'assant g 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 [g] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today + ' + i + ' days end of day'); - } - }); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'ilang segundo', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'isang minuto', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'isang minuto', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuto', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuto', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'isang oras', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'isang oras', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 oras', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 oras', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 oras', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'isang araw', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'isang araw', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 araw', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'isang araw', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 araw', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 araw', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'isang buwan', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'isang buwan', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'isang buwan', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 buwan', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 buwan', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 buwan', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'isang buwan', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 buwan', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'isang taon', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 taon', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'isang taon', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 taon', + '5 years = 5 years' + ); + }); - test('calendar last week', function (assert) { + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'sa loob ng ilang segundo', 'prefix'); + assert.equal( + moment(0).from(30000), + 'ilang segundo ang nakalipas', + 'suffix' + ); + }); + + test('fromNow', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'sa loob ng ilang segundo', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'sa loob ng 5 araw', + 'in 5 days' + ); + }); + + test('same day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + '12:00 ngayong araw', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + '12:25 ngayong araw', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + '13:00 ngayong araw', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Bukas ng 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + '11:00 ngayong araw', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + '12:00 kahapon', + 'yesterday at the same time' + ); + }); + + test('same next week', function (assert) { var i, m; + for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [g] LT'), 'Today - ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [g] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [g] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('LT [sa susunod na] dddd'), + 'Today + ' + i + ' days end of day' + ); } }); - test('calendar all else', function (assert) { - var weeksAgo = moment().subtract({w: 1}), - weeksFromNow = moment().add({w: 1}); + 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('LT [noong nakaraang] dddd'), + '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.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('LT [noong nakaraang] dddd'), + 'Today - ' + i + ' days end of day' + ); + } + }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + test('same 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -59194,27 +101422,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -59224,8 +101457,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -59238,7 +101473,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -59247,16 +101485,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -59264,7 +101508,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -59272,12 +101518,21 @@ 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'); + 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' + ); } }); @@ -59285,12 +101540,27 @@ 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'); + 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' + ); } }); @@ -59299,7 +101569,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -59309,24 +101582,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -59345,19 +101622,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -59372,7 +101669,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -59382,7 +101685,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -59395,7 +101705,11 @@ 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'); + 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'); @@ -59410,67 +101724,107 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('tzm'); + localeModule('tlh'); test('parse', function (assert) { - var tests = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), i; + var tests = 'tera’ jar wa’.jar wa’_tera’ jar cha’.jar cha’_tera’ jar wej.jar wej_tera’ jar loS.jar loS_tera’ jar vagh.jar vagh_tera’ jar jav.jar jav_tera’ jar Soch.jar Soch_tera’ jar chorgh.jar chorgh_tera’ jar Hut.jar Hut_tera’ jar wa’maH.jar wa’maH_tera’ jar wa’maH wa’.jar wa’maH wa’_tera’ jar wa’maH cha’.jar wa’maH cha’'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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(' '); + tests[i] = tests[i].split('.'); equalTest(tests[i][0], 'MMM', i); equalTest(tests[i][1], 'MMM', i); equalTest(tests[i][0], 'MMMM', i); @@ -59479,34 +101833,44 @@ 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', 'ⴰⵙⴰⵎⴰⵙ, ⴱⵕⴰⵢⵕ 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', '8 8 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 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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'lojmItjaj, tera’ jar cha’ 14. 2010, 3:25:50 pm', + ], + ['ddd, hA', 'lojmItjaj, 3PM'], + ['M Mo MM MMMM MMM', '2 2. 02 tera’ jar cha’ jar cha’'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. lojmItjaj lojmItjaj lojmItjaj'], + ['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'], + ['[DIS jaj] DDDo', 'DIS jaj 45.'], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 tera’ jar cha’ 2010'], + ['LLL', '14 tera’ jar cha’ 2010 15:25'], + ['LLLL', 'lojmItjaj, 14 tera’ jar cha’ 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 jar cha’ 2010'], + ['lll', '14 jar cha’ 2010 15:25'], + ['llll', 'lojmItjaj, 14 jar cha’ 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -59516,162 +101880,411 @@ }); 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('_'), i; + var expected = 'tera’ jar wa’ jar wa’_tera’ jar cha’ jar cha’_tera’ jar wej jar wej_tera’ jar loS jar loS_tera’ jar vagh jar vagh_tera’ jar jav jar jav_tera’ jar Soch jar Soch_tera’ jar chorgh jar chorgh_tera’ jar Hut jar Hut_tera’ jar wa’maH jar wa’maH_tera’ jar wa’maH wa’ jar wa’maH wa’_tera’ jar wa’maH cha’ jar wa’maH cha’'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), i; + var expected = 'lojmItjaj lojmItjaj lojmItjaj_DaSjaj DaSjaj DaSjaj_povjaj povjaj povjaj_ghItlhjaj ghItlhjaj ghItlhjaj_loghjaj loghjaj loghjaj_buqjaj buqjaj buqjaj_ghInjaj ghInjaj ghInjaj'.split( + '_' + ), + i; 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 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), 'ⵉⵎⵉⴽ', '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), '2 ⵜⴰⵙⵙⴰⵄⵉⵏ', '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), '2 oⵙⵙⴰⵏ', '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 oⵙⵙⴰⵏ', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 oⵙⵙⴰⵏ', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ⴰⵢoⵓⵔ', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ⴰⵢoⵓⵔ', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ⴰⵢoⵓⵔ', '43 days = a month'); - assert.equal(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), '2 ⵉⵢⵢⵉⵔⵏ', '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), 'ⴰⵢoⵓⵔ', '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), '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 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'puS lup', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'wa’ tup', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'wa’ tup', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + 'cha’ tup', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + 'loSmaH loS tup', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'wa’ rep', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'wa’ rep', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + 'cha’ rep', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + 'vagh rep', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + 'cha’maH wa’ rep', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'wa’ jaj', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'wa’ jaj', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + 'cha’ jaj', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'wa’ jaj', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + 'vagh jaj', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + 'cha’maH vagh jaj', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'wa’ jar', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'wa’ jar', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'wa’ jar', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + 'cha’ jar', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + 'cha’ jar', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + 'wej jar', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'wa’ jar', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + 'vagh jar', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'wa’ DIS', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + 'cha’ DIS', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'wa’ DIS', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + 'vagh DIS', + '5 years = 5 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 112 }), true), + 'wa’vatlh wa’maH cha’ DIS', + '112 years = 112 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 122 }), true), + 'wa’vatlh cha’maH cha’ DIS', + '122 years = 122 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 213 }), true), + 'cha’vatlh wa’maH wej DIS', + '213 years = 213 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 223 }), true), + 'cha’vatlh cha’maH wej DIS', + '223 years = 223 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), 'puS lup pIq', 'suffix'); + assert.equal(moment(0).from(30000), 'puS lup ret', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ⵢⴰⵏ ⵉⵎⵉⴽ', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'puS lup ret', + '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 oⵙⵙⴰⵏ', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'puS lup pIq', + 'in a few seconds' + ); + assert.equal(moment().add({ h: 1 }).fromNow(), 'wa’ rep pIq', 'in an hour'); + assert.equal(moment().add({ d: 5 }).fromNow(), 'vagh leS', 'in 5 days'); + assert.equal(moment().add({ M: 2 }).fromNow(), 'cha’ waQ', 'in 2 months'); + assert.equal(moment().add({ y: 1 }).fromNow(), 'wa’ nem', 'in a year'); + assert.equal( + moment().add({ s: -30 }).fromNow(), + 'puS lup ret', + 'a few seconds ago' + ); + assert.equal( + moment().add({ h: -1 }).fromNow(), + 'wa’ rep ret', + 'an hour ago' + ); + assert.equal(moment().add({ d: -5 }).fromNow(), 'vagh Hu’', '5 days ago'); + assert.equal(moment().add({ M: -2 }).fromNow(), 'cha’ wen', '2 months ago'); + assert.equal(moment().add({ y: -1 }).fromNow(), 'wa’ ben', 'a year ago'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal( + moment(a).calendar(), + 'DaHjaj 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'DaHjaj 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'DaHjaj 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'wa’leS 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'DaHjaj 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'wa’Hu’ 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 [ⴴ] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('LLL'), + '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'); + assert.equal( + m.calendar(), + m.format('LLL'), + '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'); + assert.equal( + m.calendar(), + m.format('LLL'), + '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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('LLL'), + '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'); + assert.equal( + m.calendar(), + m.format('LLL'), + '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'); + assert.equal( + m.calendar(), + m.format('LLL'), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); test('weeks year starting sunday formatted', function (assert) { - assert.equal(moment([2011, 11, 31]).format('w ww wo'), '1 01 1', 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).format('w ww wo'), '1 01 1', 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '2 02 2', 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).format('w ww wo'), '2 02 2', 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '3 03 3', 'Jan 14 2012 should be week 3'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -59686,27 +102299,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -59716,8 +102334,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -59730,7 +102350,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -59739,16 +102362,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -59756,7 +102385,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -59764,12 +102395,21 @@ 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'); + 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' + ); } }); @@ -59777,12 +102417,27 @@ 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'); + 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' + ); } }); @@ -59791,7 +102446,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -59801,24 +102459,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -59837,19 +102499,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -59864,7 +102546,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -59874,7 +102562,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -59887,7 +102582,11 @@ 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'); + 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'); @@ -59902,65 +102601,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ug-cn'); + localeModule('tr'); test('parse', function (assert) { - var tests = 'يانۋار يانۋار_فېۋرال فېۋرال_مارت مارت_ئاپرېل ئاپرېل_ماي ماي_ئىيۇن ئىيۇن_ئىيۇل ئىيۇل_ئاۋغۇست ئاۋغۇست_سېنتەبىر سېنتەبىر_ئۆكتەبىر ئۆكتەبىر_نويابىر نويابىر_دېكابىر دېكابىر'.split('_'), i; - function equalTest (input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + var tests = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.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); @@ -59971,172 +102709,436 @@ 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); + // Fails for months 5 (index 4), 11 (index 10) and 12 (index 11) + //equalTestStrict(tests[i][0].toLocaleUpperCase(), 'MMMM', i); } }); test('format', function (assert) { var a = [ - ['dddd, YYYY MMMM Do, a h:mm:ss', 'يەكشەنبە، 2010 فېۋرال 14-كۈنى، چۈشتىن كېيىن 3:25:50'], - ['dddd, A h', 'يەكشەنبە، چۈشتىن كېيىن 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'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'چۈشتىن كېيىن چۈشتىن كېيىن'], - ['[يىلنىڭ] DDDo', 'يىلنىڭ 45-كۈنى'], - ['LTS', '15:25:50'], - ['L', '2010-02-14'], - ['LL', '2010-يىلى2-ئاينىڭ14-كۈنى'], - ['LLL', '2010-يىلى2-ئاينىڭ14-كۈنى، 15:25'], - ['LLLL', 'يەكشەنبە، 2010-يىلى2-ئاينىڭ14-كۈنى، 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]); + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Pazar, Şubat 14 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Paz, 3PM'], + ['M Mo MM MMMM MMM', "2 2'nci 02 Şubat Şub"], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Pazar Paz Pz'], + ['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', 'pm PM'], + ['[yılın] DDDo [günü]', "yılın 45'inci günü"], + ['LTS', '15:25:50'], + ['L', '14.02.2010'], + ['LL', '14 Şubat 2010'], + ['LLL', '14 Şubat 2010 15:25'], + ['LLLL', 'Pazar, 14 Şubat 2010 15:25'], + ['l', '14.2.2010'], + ['ll', '14 Şub 2010'], + ['lll', '14 Şub 2010 15:25'], + ['llll', 'Paz, 14 Şub 2010 15:25'], + ], + 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(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 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, 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'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'inci", '31st'); + }); + test('format month', function (assert) { - var expected = 'يانۋار يانۋار_فېۋرال فېۋرال_مارت مارت_ئاپرېل ئاپرېل_ماي ماي_ئىيۇن ئىيۇن_ئىيۇل ئىيۇل_ئاۋغۇست ئاۋغۇست_سېنتەبىر سېنتەبىر_ئۆكتەبىر ئۆكتەبىر_نويابىر نويابىر_دېكابىر دېكابىر'.split('_'), i; + var expected = 'Ocak Oca_Şubat Şub_Mart Mar_Nisan Nis_Mayıs May_Haziran Haz_Temmuz Tem_Ağustos Ağu_Eylül Eyl_Ekim Eki_Kasım Kas_Aralık Ara'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); - - test('format week', function (assert) { - var expected = 'يەكشەنبە يە يە_دۈشەنبە دۈ دۈ_سەيشەنبە سە سە_چارشەنبە چا چا_پەيشەنبە پە پە_جۈمە جۈ جۈ_شەنبە شە شە'.split('_'), i; - + var expected = 'Pazar Paz Pz_Pazartesi Pts Pt_Salı Sal Sa_Çarşamba Çar Ça_Perşembe Per Pe_Cuma Cum Cu_Cumartesi Cts Ct'.split( + '_' + ), + i; 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 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), 'نەچچە سېكونت', '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), '2 سائەت', '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), '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 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), '2 ئاي', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'birkaç saniye', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'bir dakika', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'bir dakika', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 dakika', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 dakika', + '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), + 'bir ay', + '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 yıl', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 yıl', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'bir yıl', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 yıl', + '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), 'birkaç saniye sonra', 'prefix'); + assert.equal(moment(0).from(30000), 'birkaç saniye önce', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'نەچچە سېكونت بۇرۇن', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'birkaç saniye önce', + '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 كۈن كېيىن', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'birkaç saniye sonra', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 gün sonra', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + 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(), + 'yarın 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 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 [سائەت] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('[gelecek] dddd [saat] 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'); + assert.equal( + m.calendar(), + m.format('[gelecek] dddd [saat] 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'); + assert.equal( + m.calendar(), + m.format('[gelecek] dddd [saat] 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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[geçen] dddd [saat] 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'); + assert.equal( + m.calendar(), + m.format('[geçen] dddd [saat] 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'); + assert.equal( + m.calendar(), + m.format('[geçen] dddd [saat] 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(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'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), 'يېرىم كېچە', 'before dawn'); - assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), 'سەھەر', 'morning'); - assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), 'چۈشتىن بۇرۇن', 'before noon'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'چۈش', 'noon'); - assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), 'چۈشتىن كېيىن', 'afternoon'); - assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), 'كەچ', 'night'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting sunday format', 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'); + 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' + ); + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + "1 01 1'inci", + 'Jan 1 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' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + "2 02 2'nci", + 'Jan 8 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -60151,27 +103153,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -60181,8 +103188,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -60195,7 +103204,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -60204,16 +103216,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -60221,7 +103239,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -60229,12 +103249,21 @@ 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'); + 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' + ); } }); @@ -60242,12 +103271,27 @@ 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'); + 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' + ); } }); @@ -60256,7 +103300,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -60266,24 +103313,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -60302,19 +103353,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -60329,7 +103400,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -60339,7 +103416,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -60352,7 +103436,11 @@ 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'); + 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'); @@ -60367,65 +103455,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('uk'); + localeModule('tzl'); test('parse', function (assert) { - var tests = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split('_'), i; + var tests = 'Januar Jan_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -60436,30 +103563,44 @@ 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, Do MMMM YYYY, HH:mm:ss', 'неділя, 14-го лютого 2010, 15:25:50'], - ['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'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'дня дня'], - ['DDDo [день року]', '45-й день року'], - ['LTS', '15:25:50'], - ['L', '14.02.2010'], - ['LL', '14 лютого 2010 р.'], - ['LLL', '14 лютого 2010 р., 15:25'], - ['LLLL', 'неділя, 14 лютого 2010 р., 15:25'] + [ + 'dddd, MMMM Do YYYY, h.mm.ss a', + "Súladi, Fevraglh 14. 2010, 3.25.50 d'o", + ], + ['ddd, hA', "Súl, 3D'O"], + ['M Mo MM MMMM MMM', '2 2. 02 Fevraglh Fev'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14. 14'], + ['d do dddd ddd dd', '0 0. Súladi Súl Sú'], + ['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', "d'o D'O"], + ['[the] DDDo [day of the year]', 'the 45. day of the year'], + ['LTS', '15.25.50'], + ['L', '14.02.2010'], + ['LL', '14. Fevraglh dallas 2010'], + ['LLL', '14. Fevraglh dallas 2010 15.25'], + ['LLLL', 'Súladi, li 14. Fevraglh dallas 2010 15.25'], + ['l', '14.2.2010'], + ['ll', '14. Fev dallas 2010'], + ['lll', '14. Fev dallas 2010 15.25'], + ['llll', 'Súl, li 14. Fev dallas 2010 15.25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -60468,200 +103609,382 @@ } }); - 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('_'), i; + var expected = 'Januar Jan_Fevraglh Fev_Març Mar_Avrïu Avr_Mai Mai_Gün Gün_Julia Jul_Guscht Gus_Setemvar Set_Listopäts Lis_Noemvar Noe_Zecemvar Zec'.split( + '_' + ), + i; for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); - } - }); - - 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]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'неділя нд нд_понеділок пн пн_вівторок вт вт_середа ср ср_четвер чт чт_п’ятниця пт пт_субота сб сб'.split('_'), i; + var expected = 'Súladi Súl Sú_Lúneçi Lún Lú_Maitzi Mai Ma_Márcuri Már Má_Xhúadi Xhú Xh_Viénerçi Vié Vi_Sáturi Sát Sá'.split( + '_' + ), + i; 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 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), 'декілька секунд', '44 seconds = 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), '2 години', '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), '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 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 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 місяці', '46 days = 2 months'); - assert.equal(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), '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), '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 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'viensas secunds', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + "'n míut", + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + "'n míut", + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 míuts', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 míuts', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + "'n þora", + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + "'n þora", + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 þoras', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 þoras', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 þoras', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + "'n ziua", + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + "'n ziua", + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 ziuas', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + "'n ziua", + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 ziuas', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 ziuas', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + "'n mes", + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + "'n mes", + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + "'n mes", + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 mesen', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 mesen', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 mesen', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + "'n mes", + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 mesen', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + "'n ar", + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 ars', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + "'n ar", + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 ars', + '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), 'osprei viensas secunds', 'prefix'); + assert.equal(moment(0).from(30000), "ja'iensas secunds", 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + "ja'iensas secunds", + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'за декілька секунд', 'in seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'за 5 днів', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'osprei viensas secunds', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'osprei 5 ziuas', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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: 2}).calendar(), 'Сьогодні о 10:00', 'Now minus 2 hours'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Вчора о 12:00', 'yesterday at the same time'); - // A special case for Ukrainian since 11 hours have different preposition - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Сьогодні об 11:00', 'same day at 11 o\'clock'); + assert.equal( + moment(a).calendar(), + 'oxhi à 12.00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'oxhi à 12.25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'oxhi à 13.00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'demà à 12.00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'oxhi à 11.00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'ieiri à 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() === 11 ? 'б' : '') + '] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [à] 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: - case 5: - case 6: - return '[Минулої] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; - case 1: - case 2: - case 4: - return '[Минулого] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT'; - } - } - for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[sür el] dddd [lasteu à] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('[sür el] dddd [lasteu à] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format(makeFormat(m)), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('[sür el] dddd [lasteu à] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + 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 4th 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2.', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -60676,27 +103999,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -60706,8 +104034,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -60720,7 +104050,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -60729,16 +104062,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -60746,7 +104085,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -60754,12 +104095,21 @@ 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'); + 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' + ); } }); @@ -60767,12 +104117,27 @@ 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'); + 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' + ); } }); @@ -60781,7 +104146,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -60791,24 +104159,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -60827,19 +104199,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -60854,7 +104246,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -60864,7 +104262,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -60877,7 +104282,11 @@ 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'); + 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'); @@ -60892,119 +104301,152 @@ }); 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('ur'); - - var months = [ - 'جنوری', - 'فروری', - 'مارچ', - 'اپریل', - 'مئی', - 'جون', - 'جولائی', - 'اگست', - 'ستمبر', - 'اکتوبر', - 'نومبر', - 'دسمبر' - ]; - var days = [ - 'اتوار', - 'پیر', - 'منگل', - 'بدھ', - 'جمعرات', - 'جمعہ', - 'ہفتہ' - ]; + localeModule('tzm-latn'); test('parse', function (assert) { + var tests = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } - for (var i = 0; i < 12; i++) { - equalTest(months[i], 'MMM', i); - equalTest(months[i], 'MMMM', i); + + 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', 'اتوار، فروری 14 2010، 3:25:50 شام'], - ['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'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', 'شام شام'], - ['[سال کا] 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'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'asamas, brˤayrˤ 14 2010, 3:25:50 pm', + ], + ['ddd, hA', 'asamas, 3PM'], + ['M Mo MM MMMM MMM', '2 2 02 brˤayrˤ brˤayrˤ'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 asamas asamas asamas'], + ['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', 'pm PM'], + ['[the] DDDo [day of the year]', 'the 45 day of the year'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 brˤayrˤ 2010'], + ['LLL', '14 brˤayrˤ 2010 15:25'], + ['LLLL', 'asamas 14 brˤayrˤ 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 brˤayrˤ 2010'], + ['lll', '14 brˤayrˤ 2010 15:25'], + ['llll', 'asamas 14 brˤayrˤ 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -61051,124 +104493,340 @@ }); test('format month', function (assert) { - for (var i = 0; i < months.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), months[i] + ' ' + months[i], months[i] + ' ' + months[i]); + var expected = 'innayr innayr_brˤayrˤ brˤayrˤ_marˤsˤ marˤsˤ_ibrir ibrir_mayyw mayyw_ywnyw ywnyw_ywlywz ywlywz_ɣwšt ɣwšt_šwtanbir šwtanbir_ktˤwbrˤ ktˤwbrˤ_nwwanbir nwwanbir_dwjnbir dwjnbir'.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) { - for (var i = 0; i < days.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), days[i] + ' ' + days[i] + ' ' + days[i], days[i] + ' ' + days[i] + ' ' + days[i]); + var expected = 'asamas asamas asamas_aynas aynas aynas_asinas asinas asinas_akras akras akras_akwas akwas akwas_asimwas asimwas asimwas_asiḍyas asiḍyas asiḍyas'.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), 'چند سیکنڈ', '44 seconds = چند سیکنڈ'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ایک منٹ', '45 seconds = ایک منٹ'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ایک منٹ', '89 seconds = ایک منٹ'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 منٹ', '90 seconds = 2 منٹ'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 منٹ', '44 minutes = 44 منٹ'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'ایک گھنٹہ', '45 minutes = ایک گھنٹہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'ایک گھنٹہ', '89 minutes = ایک گھنٹہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 گھنٹے', '90 minutes = 2 گھنٹے'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 گھنٹے', '5 hours = 5 گھنٹے'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 گھنٹے', '21 hours = 21 گھنٹے'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ایک دن', '22 hours = ایک دن'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ایک دن', '35 hours = ایک دن'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 دن', '36 hours = 2 دن'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ایک دن', '1 day = ایک دن'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 دن', '5 days = 5 دن'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 دن', '25 days = 25 دن'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'ایک ماہ', '26 days = ایک ماہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'ایک ماہ', '30 days = ایک ماہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'ایک ماہ', '43 days = ایک ماہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ماہ', '46 days = 2 ماہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ماہ', '75 days = 2 ماہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ماہ', '76 days = 3 ماہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'ایک ماہ', '1 month = ایک ماہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ماہ', '5 months = 5 ماہ'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ایک سال', '345 days = ایک سال'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 سال', '548 days = 2 سال'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ایک سال', '1 year = ایک سال'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 سال', '5 years = 5 سال'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'imik', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'minuḍ', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'minuḍ', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 minuḍ', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 minuḍ', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'saɛa', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'saɛa', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 tassaɛin', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 tassaɛin', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 tassaɛin', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'ass', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'ass', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 ossan', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'ass', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 ossan', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 ossan', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'ayowr', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'ayowr', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'ayowr', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 iyyirn', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 iyyirn', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 iyyirn', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'ayowr', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 iyyirn', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'asgas', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 isgasn', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'asgas', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 isgasn', + '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), 'dadkh s yan imik', 'prefix'); + assert.equal(moment(0).from(30000), 'yan imik', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'چند سیکنڈ قبل', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'yan imik', + '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 دن بعد', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'dadkh s yan imik', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'dadkh s yan 5 ossan', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal( + moment(a).calendar(), + 'asdkh g 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'asdkh g 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'asdkh g 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'aska g 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'asdkh g 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'assant g 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 [بوقت] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [g] 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'); + assert.equal( + m.calendar(), + m.format('dddd [g] 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'); + assert.equal( + m.calendar(), + m.format('dddd [g] 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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [g] 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'); + assert.equal( + m.calendar(), + m.format('dddd [g] 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'); + assert.equal( + m.calendar(), + m.format('dddd [g] 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + assert.equal( + moment([2011, 11, 31]).format('w ww wo'), + '1 01 1', + 'Dec 31 2011 should be week 1' + ); + assert.equal( + moment([2012, 0, 6]).format('w ww wo'), + '1 01 1', + 'Jan 6 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 7]).format('w ww wo'), + '2 02 2', + 'Jan 7 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 13]).format('w ww wo'), + '2 02 2', + 'Jan 13 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '3 03 3', + 'Jan 14 2012 should be week 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -61183,27 +104841,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -61213,8 +104876,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -61227,7 +104892,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -61236,16 +104904,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -61253,7 +104927,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -61261,12 +104937,21 @@ 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'); + 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' + ); } }); @@ -61274,12 +104959,27 @@ 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'); + 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' + ); } }); @@ -61288,7 +104988,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -61298,24 +105001,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -61334,19 +105041,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -61361,7 +105088,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -61371,7 +105104,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -61384,7 +105124,11 @@ 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'); + 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'); @@ -61399,65 +105143,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('uz-latn'); + localeModule('tzm'); test('parse', function (assert) { - var tests = 'Yanvar Yan_Fevral Fev_Mart Mar_Aprel Apr_May May_Iyun Iyun_Iyul Iyul_Avgust Avg_Sentabr Sen_Oktabr Okt_Noyabr Noy_Dekabr Dek'.split('_'), i; + var tests = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -61468,34 +105251,44 @@ 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, Do-MMMM YYYY, h:mm:ss', 'Yakshanba, 14-Fevral 2010, 3:25:50'], - ['ddd, h:mm', 'Yak, 3:25'], - ['M Mo MM MMMM MMM', '2 2 02 Fevral Fev'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 Yakshanba Yak Ya'], - ['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'], - ['[yilning] DDDo-[kuni]', 'yilning 45-kuni'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 Fevral 2010'], - ['LLL', '14 Fevral 2010 15:25'], - ['LLLL', '14 Fevral 2010, Yakshanba 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Fev 2010'], - ['lll', '14 Fev 2010 15:25'], - ['llll', '14 Fev 2010, Yak 15:25'] + [ + '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', '8 8 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 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; @@ -61505,163 +105298,377 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2016, 0, 1]).format('DDDo'), '1', '1'); - assert.equal(moment([2016, 0, 2]).format('DDDo'), '2', '2'); - assert.equal(moment([2016, 0, 3]).format('DDDo'), '3', '3'); - assert.equal(moment([2016, 0, 4]).format('DDDo'), '4', '4'); - assert.equal(moment([2016, 0, 5]).format('DDDo'), '5', '5'); - assert.equal(moment([2016, 0, 6]).format('DDDo'), '6', '6'); - assert.equal(moment([2016, 0, 7]).format('DDDo'), '7', '7'); - assert.equal(moment([2016, 0, 8]).format('DDDo'), '8', '8'); - assert.equal(moment([2016, 0, 9]).format('DDDo'), '9', '9'); - assert.equal(moment([2016, 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([2016, 0, 11]).format('DDDo'), '11', '11'); - assert.equal(moment([2016, 0, 12]).format('DDDo'), '12', '12'); - assert.equal(moment([2016, 0, 13]).format('DDDo'), '13', '13'); - assert.equal(moment([2016, 0, 14]).format('DDDo'), '14', '14'); - assert.equal(moment([2016, 0, 15]).format('DDDo'), '15', '15'); - assert.equal(moment([2016, 0, 16]).format('DDDo'), '16', '16'); - assert.equal(moment([2016, 0, 17]).format('DDDo'), '17', '17'); - assert.equal(moment([2016, 0, 18]).format('DDDo'), '18', '18'); - assert.equal(moment([2016, 0, 19]).format('DDDo'), '19', '19'); - assert.equal(moment([2016, 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([2016, 0, 21]).format('DDDo'), '21', '21'); - assert.equal(moment([2016, 0, 22]).format('DDDo'), '22', '22'); - assert.equal(moment([2016, 0, 23]).format('DDDo'), '23', '23'); - assert.equal(moment([2016, 0, 24]).format('DDDo'), '24', '24'); - assert.equal(moment([2016, 0, 25]).format('DDDo'), '25', '25'); - assert.equal(moment([2016, 0, 26]).format('DDDo'), '26', '26'); - assert.equal(moment([2016, 0, 27]).format('DDDo'), '27', '27'); - assert.equal(moment([2016, 0, 28]).format('DDDo'), '28', '28'); - assert.equal(moment([2016, 0, 29]).format('DDDo'), '29', '29'); - assert.equal(moment([2016, 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([2016, 0, 31]).format('DDDo'), '31', '31'); + assert.equal(moment([2011, 0, 31]).format('DDDo'), '31', '31'); }); test('format month', function (assert) { - var expected = 'Yanvar Yan_Fevral Fev_Mart Mar_Aprel Apr_May May_Iyun Iyun_Iyul Iyul_Avgust Avg_Sentabr Sen_Oktabr Okt_Noyabr Noy_Dekabr Dek'.split('_'), i; + var expected = 'ⵉⵏⵏⴰⵢⵔ ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ ⴷⵓⵊⵏⴱⵉⵔ'.split( + '_' + ), + i; for (i = 0; i < expected.length; i++) { - assert.equal(moment([2016, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Yakshanba Yak Ya_Dushanba Dush Du_Seshanba Sesh Se_Chorshanba Chor Cho_Payshanba Pay Pa_Juma Jum Ju_Shanba Shan Sha'.split('_'), i; + var expected = 'ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ ⴰⵙⵉⴹⵢⴰⵙ'.split( + '_' + ), + i; for (i = 0; i < expected.length; i++) { - assert.equal(moment([2016, 0, 3 + i]).format('dddd ddd dd'), expected[i], expected[i]); + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd dd'), + expected[i], + expected[i] + ); } }); test('from', function (assert) { - var start = moment([2017, 1, 28]); - assert.equal(start.from(moment([2017, 1, 28]).add({s: 44}), true), 'soniya', '44 soniya = soniya'); - assert.equal(start.from(moment([2017, 1, 28]).add({s: 45}), true), 'bir daqiqa', '45 soniya = bir daqiqa'); - assert.equal(start.from(moment([2017, 1, 28]).add({s: 89}), true), 'bir daqiqa', '89 soniya = bir daqiqa'); - assert.equal(start.from(moment([2017, 1, 28]).add({s: 90}), true), '2 daqiqa', '90 soniya = 2 daqiqa'); - assert.equal(start.from(moment([2017, 1, 28]).add({m: 44}), true), '44 daqiqa', '44 daqiqa = 44 daqiqa'); - assert.equal(start.from(moment([2017, 1, 28]).add({m: 45}), true), 'bir soat', '45 minut = bir soat'); - assert.equal(start.from(moment([2017, 1, 28]).add({m: 89}), true), 'bir soat', '89 minut = bir soat'); - assert.equal(start.from(moment([2017, 1, 28]).add({m: 90}), true), '2 soat', '90 minut = 2 soat'); - assert.equal(start.from(moment([2017, 1, 28]).add({h: 5}), true), '5 soat', '5 soat = 5 soat'); - assert.equal(start.from(moment([2017, 1, 28]).add({h: 21}), true), '21 soat', '21 soat = 21 soat'); - assert.equal(start.from(moment([2017, 1, 28]).add({h: 22}), true), 'bir kun', '22 soat = bir kun'); - assert.equal(start.from(moment([2017, 1, 28]).add({h: 35}), true), 'bir kun', '35 soat = bir kun'); - assert.equal(start.from(moment([2017, 1, 28]).add({h: 36}), true), '2 kun', '36 soat = 2 kun'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 1}), true), 'bir kun', '1 kun = 1 kun'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 5}), true), '5 kun', '5 kun = 5 kun'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 25}), true), '25 kun', '25 kun = 25 kun'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 26}), true), 'bir oy', '26 kun = bir oy'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 30}), true), 'bir oy', '30 kun = bir oy'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 43}), true), 'bir oy', '45 kun = bir oy'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 46}), true), '2 oy', '46 kun = 2 oy'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 74}), true), '2 oy', '75 kun = 2 oy'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 76}), true), '3 oy', '76 kun = 3 oy'); - assert.equal(start.from(moment([2017, 1, 28]).add({M: 1}), true), 'bir oy', 'bir oy = bir oy'); - assert.equal(start.from(moment([2017, 1, 28]).add({M: 5}), true), '5 oy', '5 oy = 5 oy'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 345}), true), 'bir yil', '345 kun = bir yil'); - assert.equal(start.from(moment([2017, 1, 28]).add({d: 548}), true), '2 yil', '548 kun = 2 yil'); - assert.equal(start.from(moment([2017, 1, 28]).add({y: 1}), true), 'bir yil', '1 yil = bir yil'); - assert.equal(start.from(moment([2017, 1, 28]).add({y: 5}), true), '5 yil', '5 yil = 5 yil'); + 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), + '2 ⵜⴰⵙⵙⴰⵄⵉⵏ', + '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), + '2 oⵙⵙⴰⵏ', + '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 oⵙⵙⴰⵏ', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 oⵙⵙⴰⵏ', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'ⴰⵢoⵓⵔ', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'ⴰⵢoⵓⵔ', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'ⴰⵢoⵓⵔ', + '43 days = a month' + ); + assert.equal( + 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), + '2 ⵉⵢⵢⵉⵔⵏ', + '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), + 'ⴰⵢoⵓⵔ', + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'Yaqin soniya ichida', 'prefix'); - assert.equal(moment(0).from(30000), 'Bir necha soniya oldin', '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 necha soniya oldin', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'ⵢⴰⵏ ⵉⵎⵉⴽ', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'Yaqin soniya ichida', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'Yaqin 5 kun ichida', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ ⵉⵎⵉⴽ', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ 5 oⵙⵙⴰⵏ', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Bugun soat 12:00 da', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Bugun soat 12:25 da', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Bugun soat 13:00 da', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Ertaga 12:00 da', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Bugun soat 11:00 da', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Kecha soat 12:00 da', 'yesterday at the same time'); + 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' + ); }); 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 [kuni soat] LT [da]'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [kuni soat] LT [da]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [kuni soat] LT [da]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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('[O\'tgan] dddd [kuni soat] LT [da]'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [ⴴ] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[O\'tgan] dddd [kuni soat] LT [da]'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[O\'tgan] dddd [kuni soat] LT [da]'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 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 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 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 2'); + assert.equal( + moment([2011, 11, 31]).format('w ww wo'), + '1 01 1', + 'Dec 31 2011 should be week 1' + ); + assert.equal( + moment([2012, 0, 6]).format('w ww wo'), + '1 01 1', + 'Jan 6 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 7]).format('w ww wo'), + '2 02 2', + 'Jan 7 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 13]).format('w ww wo'), + '2 02 2', + 'Jan 13 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '3 03 3', + 'Jan 14 2012 should be week 3' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -61676,27 +105683,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -61706,8 +105718,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -61720,7 +105734,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -61729,16 +105746,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -61746,7 +105769,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -61754,12 +105779,21 @@ 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'); + 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' + ); } }); @@ -61767,12 +105801,27 @@ 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'); + 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' + ); } }); @@ -61781,7 +105830,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -61791,24 +105843,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -61827,19 +105883,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -61854,7 +105930,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -61864,7 +105946,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -61877,7 +105966,11 @@ 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'); + 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'); @@ -61892,65 +105985,104 @@ }); 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; - assert.deepEqual( + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('uz'); + localeModule('ug-cn'); test('parse', function (assert) { - var tests = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split('_'), i; + var tests = 'يانۋار يانۋار_فېۋرال فېۋرال_مارت مارت_ئاپرېل ئاپرېل_ماي ماي_ئىيۇن ئىيۇن_ئىيۇل ئىيۇل_ئاۋغۇست ئاۋغۇست_سېنتەبىر سېنتەبىر_ئۆكتەبىر ئۆكتەبىر_نويابىر نويابىر_دېكابىر دېكابىر'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -61961,200 +106093,402 @@ 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, Do-MMMM YYYY, h:mm:ss', 'Якшанба, 14-феврал 2010, 3:25:50'], - ['ddd, h:mm', 'Якш, 3:25'], - ['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'] + [ + 'dddd, YYYY MMMM Do, a h:mm:ss', + 'يەكشەنبە، 2010 فېۋرال 14-كۈنى، چۈشتىن كېيىن 3:25:50', + ], + ['dddd, A h', 'يەكشەنبە، چۈشتىن كېيىن 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'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'چۈشتىن كېيىن چۈشتىن كېيىن'], + ['[يىلنىڭ] DDDo', 'يىلنىڭ 45-كۈنى'], + ['LTS', '15:25:50'], + ['L', '2010-02-14'], + ['LL', '2010-يىلى2-ئاينىڭ14-كۈنى'], + ['LLL', '2010-يىلى2-ئاينىڭ14-كۈنى، 15:25'], + ['LLLL', 'يەكشەنبە، 2010-يىلى2-ئاينىڭ14-كۈنى، 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 expected = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split('_'), i; + var expected = 'يانۋار يانۋار_فېۋرال فېۋرال_مارت مارت_ئاپرېل ئاپرېل_ماي ماي_ئىيۇن ئىيۇن_ئىيۇل ئىيۇل_ئاۋغۇست ئاۋغۇست_سېنتەبىر سېنتەبىر_ئۆكتەبىر ئۆكتەبىر_نويابىر نويابىر_دېكابىر دېكابىر'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Якшанба Якш Як_Душанба Душ Ду_Сешанба Сеш Се_Чоршанба Чор Чо_Пайшанба Пай Па_Жума Жум Жу_Шанба Шан Ша'.split('_'), i; + var expected = 'يەكشەنبە يە يە_دۈشەنبە دۈ دۈ_سەيشەنبە سە سە_چارشەنبە چا چا_پەيشەنبە پە پە_جۈمە جۈ جۈ_شەنبە شە شە'.split( + '_' + ), + i; + 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 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), 'фурсат', '44 секунд = фурсат'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'бир дакика', '45 секунд = бир дакика'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'бир дакика', '89 секунд = бир дакика'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 дакика', '90 секунд = 2 дакика'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 дакика', '44 дакика = 44 дакика'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'бир соат', '45 минут = бир соат'); - 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 соат', '90 минут = 2 соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 соат', '5 соат = 5 соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 соат', '21 соат = 21 соат'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'бир кун', '22 соат = бир кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'бир кун', '35 соат = бир кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 кун', '36 соат = 2 кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'бир кун', '1 кун = 1 кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 кун', '5 кун = 5 кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 кун', '25 кун = 25 кун'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'бир ой', '26 кун = бир ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'бир ой', '30 кун = бир ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'бир ой', '45 кун = бир ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 ой', '46 кун = 2 ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 ой', '75 кун = 2 ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 ой', '76 кун = 3 ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'бир ой', 'бир ой = бир ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 ой', '5 ой = 5 ой'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'бир йил', '345 кун = бир йил'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 йил', '548 кун = 2 йил'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'бир йил', '1 йил = бир йил'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 йил', '5 йил = 5 йил'); + 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), + '2 سائەت', + '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), + '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 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), + '2 ئاي', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 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'); + 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 кун ичида', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'نەچچە سېكونت كېيىن', + 'in a few seconds' + ); + 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 да', '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'); + 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' + ); }); 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 = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [да]'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [да]'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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 [да]'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 [да]'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [да]'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - 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 }); - 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' + ); + }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + test('meridiem', function (assert) { + assert.equal( + moment([2011, 2, 23, 0, 0]).format('A'), + 'يېرىم كېچە', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), 'سەھەر', 'morning'); + assert.equal( + moment([2011, 2, 23, 9, 0]).format('A'), + 'چۈشتىن بۇرۇن', + 'before noon' + ); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), 'چۈش', 'noon'); + assert.equal( + moment([2011, 2, 23, 13, 0]).format('A'), + 'چۈشتىن كېيىن', + 'afternoon' + ); + assert.equal(moment([2011, 2, 23, 18, 0]).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 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '2 02 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 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '3 03 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 2'); + test('weeks year starting sunday format', 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')) : @@ -62169,27 +106503,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -62199,8 +106538,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -62213,7 +106554,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -62222,16 +106566,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -62239,7 +106589,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -62247,12 +106599,21 @@ 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'); + 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' + ); } }); @@ -62260,12 +106621,27 @@ 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'); + 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' + ); } }); @@ -62274,7 +106650,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -62284,24 +106663,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -62320,19 +106703,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -62347,7 +106750,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -62357,7 +106766,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -62370,7 +106786,11 @@ 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'); + 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'); @@ -62385,279 +106805,604 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('vi'); + localeModule('uk'); test('parse', function (assert) { - var i, - tests = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split('_'); - + var tests = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + 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], '[tháng] M', i); - equalTest(tests[i][1], '[Th]M', i); - equalTest(tests[i][0], '[tháng] MM', i); - equalTest(tests[i][1], '[Th]MM', i); - equalTest(tests[i][0].toLocaleLowerCase(), '[THÁNG] M', i); - equalTest(tests[i][1].toLocaleLowerCase(), '[TH]M', i); - equalTest(tests[i][0].toLocaleUpperCase(), '[THÁNG] MM', i); - equalTest(tests[i][1].toLocaleUpperCase(), '[TH]MM', 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', 'chủ nhật, tháng 2 14 2010, 3:25:50 ch'], - ['ddd, hA', 'CN, 3CH'], - ['M Mo MM MMMM MMM', '2 2 02 tháng 2 Th02'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14 14'], - ['d do dddd ddd dd', '0 0 chủ nhật CN CN'], - ['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', 'ch CH'], - ['[ngày thứ] DDDo [của năm]', 'ngày thứ 45 của năm'], - ['LTS', '15:25:50'], - ['L', '14/02/2010'], - ['LL', '14 tháng 2 năm 2010'], - ['LLL', '14 tháng 2 năm 2010 15:25'], - ['LLLL', 'chủ nhật, 14 tháng 2 năm 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 Th02 2010'], - ['lll', '14 Th02 2010 15:25'], - ['llll', 'CN, 14 Th02 2010 15:25'] + [ + 'dddd, Do MMMM YYYY, HH:mm:ss', + 'неділя, 14-го лютого 2010, 15:25:50', + ], + ['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'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'дня дня'], + ['DDDo [день року]', '45-й день року'], + ['LTS', '15:25:50'], + ['L', '14.02.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 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 i, - expected = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split('_'); - + var expected = 'січень січ_лютий лют_березень бер_квітень квіт_травень трав_червень черв_липень лип_серпень серп_вересень вер_жовтень жовт_листопад лист_грудень груд'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); - test('format week', function (assert) { - var i, - expected = 'chủ nhật CN CN_thứ hai T2 T2_thứ ba T3 T3_thứ tư T4 T4_thứ năm T5 T5_thứ sáu T6 T6_thứ bảy T7 T7'.split('_'); + 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 week', function (assert) { + var expected = 'неділя нд нд_понеділок пн пн_вівторок вт вт_середа ср ср_четвер чт чт_п’ятниця пт пт_субота сб сб'.split( + '_' + ), + i; 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 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), 'vài giây', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'một phút', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'một phút', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 phút', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 phút', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'một giờ', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'một giờ', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 giờ', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 giờ', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 giờ', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'một ngày', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'một ngày', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 ngày', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'một ngày', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 ngày', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 ngày', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'một tháng', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'một tháng', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'một tháng', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 tháng', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 tháng', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 tháng', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'một tháng', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 tháng', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'một năm', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 năm', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'một năm', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 năm', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'декілька секунд', + '44 seconds = 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), + '2 години', + '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), + '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 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 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 місяці', + '46 days = 2 months' + ); + assert.equal( + 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), + '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), + '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 years = 5 years' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'vài giây tới', 'prefix'); - assert.equal(moment(0).from(30000), 'vài giây trước', 'suffix'); - }); - - test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'vài giây trước', '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(), 'vài giây tới', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), '5 ngày tới', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'за декілька секунд', + 'in seconds' + ); + 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(), 'Hôm nay lúc 12:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Hôm nay lúc 12:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Hôm nay lúc 13:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Ngày mai lúc 12:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Hôm nay lúc 11:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Hôm qua lúc 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 [tuần tới lúc] LT'), 'Today + ' + i + ' days current time'); - m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] LT'), 'Today + ' + i + ' days beginning of day'); - m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [tuần tới lúc] 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 [tuần rồi lúc] LT'), 'Today - ' + i + ' days current time'); + 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: 2 }).calendar(), + 'Сьогодні о 10:00', + 'Now minus 2 hours' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Вчора о 12:00', + 'yesterday at the same time' + ); + // A special case for Ukrainian since 11 hours have different preposition + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Сьогодні об 11:00', + "same day at 11 o'clock" + ); + }); + + 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() === 11 ? 'б' : '') + '] 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.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[У] dddd [о] 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: + case 5: + case 6: + return ( + '[Минулої] dddd [о' + (d.hours() === 11 ? 'б' : '') + '] LT' + ); + case 1: + case 2: + case 4: + return ( + '[Минулого] dddd [о' + + (d.hours() === 11 ? 'б' : '') + + '] LT' + ); + } + } + + for (i = 2; i < 7; i++) { + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + 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 [tuần rồi lúc] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [tuần rồi lúc] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format(makeFormat(m)), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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'); - 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'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 2', 'Jan 15 2012 should be week 2'); + 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')) : @@ -62672,27 +107417,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -62702,8 +107452,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -62716,7 +107468,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -62725,16 +107480,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -62742,7 +107503,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -62750,12 +107513,21 @@ 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'); + 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' + ); } }); @@ -62763,12 +107535,27 @@ 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'); + 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' + ); } }); @@ -62777,7 +107564,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -62787,24 +107577,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -62823,19 +107617,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -62850,7 +107664,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -62860,7 +107680,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -62873,7 +107700,11 @@ 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'); + 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'); @@ -62888,103 +107719,153 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('x-pseudo'); + localeModule('ur'); + + var months = [ + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر', + ], + days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']; test('parse', function (assert) { - var tests = 'J~áñúá~rý J~áñ_F~ébrú~árý ~Féb_~Márc~h ~Már_Áp~ríl ~Ápr_~Máý ~Máý_~Júñé~ ~Júñ_Júl~ý ~Júl_Áú~gúst~ ~Áúg_Sép~témb~ér ~Sép_Ó~ctób~ér ~Óct_Ñ~óvém~bér ~Ñóv_~Décé~mbér ~Déc'.split('_'), i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 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); + + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } + + for (var i = 0; i < 12; i++) { + equalTest(months[i], 'MMM', i); + equalTest(months[i], 'MMMM', i); + + equalTestStrict(months[i], 'MMM', i); + equalTestStrict(months[i], 'MMMM', i); } }); test('format', function (assert) { var a = [ - ['dddd, MMMM Do YYYY, h:mm:ss a', 'S~úñdá~ý, F~ébrú~árý 14th 2010, 3:25:50 pm'], - ['ddd, hA', 'S~úñ, 3PM'], - ['M Mo MM MMMM MMM', '2 2nd 02 F~ébrú~árý ~Féb'], - ['YYYY YY', '2010 10'], - ['D Do DD', '14 14th 14'], - ['d do dddd ddd dd', '0 0th S~úñdá~ý S~úñ S~ú'], - ['DDD DDDo DDDD', '45 45th 045'], - ['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'], - ['LT', '15:25'], - ['L', '14/02/2010'], - ['LL', '14 F~ébrú~árý 2010'], - ['LLL', '14 F~ébrú~árý 2010 15:25'], - ['LLLL', 'S~úñdá~ý, 14 F~ébrú~árý 2010 15:25'], - ['l', '14/2/2010'], - ['ll', '14 ~Féb 2010'], - ['lll', '14 ~Féb 2010 15:25'], - ['llll', 'S~úñ, 14 ~Féb 2010 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'اتوار، فروری 14 2010، 3:25:50 شام', + ], + ['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'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', 'شام شام'], + ['[سال کا] 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'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -62994,122 +107875,284 @@ }); 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 = 'J~áñúá~rý J~áñ_F~ébrú~árý ~Féb_~Márc~h ~Már_Áp~ríl ~Ápr_~Máý ~Máý_~Júñé~ ~Júñ_Júl~ý ~Júl_Áú~gúst~ ~Áúg_Sép~témb~ér ~Sép_Ó~ctób~ér ~Óct_Ñ~óvém~bér ~Ñóv_~Décé~mbér ~Déc'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + for (var i = 0; i < months.length; i++) { + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + months[i] + ' ' + months[i], + months[i] + ' ' + months[i] + ); } }); test('format week', function (assert) { - var expected = 'S~úñdá~ý S~úñ S~ú_Mó~ñdáý~ ~Móñ Mó~_Túé~sdáý~ ~Túé Tú_Wéd~ñésd~áý ~Wéd ~Wé_T~húrs~dáý ~Thú T~h_~Fríd~áý ~Frí Fr~_S~átúr~dáý ~Sát Sá'.split('_'), i; - for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]); + for (var i = 0; i < days.length; i++) { + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd dd'), + days[i] + ' ' + days[i] + ' ' + days[i], + days[i] + ' ' + days[i] + ' ' + days[i] + ); } }); test('from', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44}), true), 'á ~féw ~sécó~ñds', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'á ~míñ~úté', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'á ~míñ~úté', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '2 m~íñú~tés', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), '44 m~íñú~tés', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'á~ñ hó~úr', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'á~ñ hó~úr', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), '2 h~óúrs', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), '5 h~óúrs', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), '21 h~óúrs', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'á ~dáý', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'á ~dáý', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), '2 d~áýs', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'á ~dáý', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), '5 d~áýs', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), '25 d~áýs', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'á ~móñ~th', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'á ~móñ~th', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'á ~móñ~th', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), '2 m~óñt~hs', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), '2 m~óñt~hs', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), '3 m~óñt~hs', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'á ~móñ~th', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), '5 m~óñt~hs', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'á ~ýéár', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), '2 ý~éárs', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'á ~ýéár', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 ý~éárs', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'چند سیکنڈ', + '44 seconds = چند سیکنڈ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'ایک منٹ', + '45 seconds = ایک منٹ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'ایک منٹ', + '89 seconds = ایک منٹ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 منٹ', + '90 seconds = 2 منٹ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 منٹ', + '44 minutes = 44 منٹ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'ایک گھنٹہ', + '45 minutes = ایک گھنٹہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'ایک گھنٹہ', + '89 minutes = ایک گھنٹہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 گھنٹے', + '90 minutes = 2 گھنٹے' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 گھنٹے', + '5 hours = 5 گھنٹے' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 گھنٹے', + '21 hours = 21 گھنٹے' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'ایک دن', + '22 hours = ایک دن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'ایک دن', + '35 hours = ایک دن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 دن', + '36 hours = 2 دن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'ایک دن', + '1 day = ایک دن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 دن', + '5 days = 5 دن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 دن', + '25 days = 25 دن' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'ایک ماہ', + '26 days = ایک ماہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'ایک ماہ', + '30 days = ایک ماہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'ایک ماہ', + '43 days = ایک ماہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 ماہ', + '46 days = 2 ماہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 ماہ', + '75 days = 2 ماہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 ماہ', + '76 days = 3 ماہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'ایک ماہ', + '1 month = ایک ماہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 ماہ', + '5 months = 5 ماہ' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'ایک سال', + '345 days = ایک سال' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 سال', + '548 days = 2 سال' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ایک سال', + '1 year = ایک سال' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 سال', + '5 years = 5 سال' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'í~ñ á ~féw ~sécó~ñds', 'prefix'); - assert.equal(moment(0).from(30000), 'á ~féw ~sécó~ñds á~gó', '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(), 'á ~féw ~sécó~ñds á~gó', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'چند سیکنڈ قبل', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'í~ñ á ~féw ~sécó~ñds', 'in a few seconds'); - assert.equal(moment().add({d: 5}).fromNow(), 'í~ñ 5 d~áýs', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'چند سیکنڈ بعد', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 دن بعد', 'in 5 days'); }); test('calendar day', function (assert) { - var a = moment().hours(2).minutes(0).seconds(0); + var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'T~ódá~ý át 02:00', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'T~ódá~ý át 02:25', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'T~ódá~ý át 03:00', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'T~ómó~rró~w át 02:00', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'T~ódá~ý át 01:00', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Ý~ést~érdá~ý át 02:00', 'yesterday at the same time'); + 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' + ); }); 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 [át] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + 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 [át] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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 [át] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [بوقت] LT'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -63117,40 +108160,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('[L~ást] dddd [át] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[گذشتہ] dddd [بوقت] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[L~ást] dddd [át] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[L~ást] dddd [át] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + 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}); + 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'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); 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'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 1st', 'Jan 2 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'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 2nd', 'Jan 9 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'); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -63165,27 +108249,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -63195,8 +108284,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -63209,7 +108300,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -63218,16 +108312,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -63235,7 +108335,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -63243,12 +108345,21 @@ 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'); + 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' + ); } }); @@ -63256,12 +108367,27 @@ 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'); + 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' + ); } }); @@ -63270,7 +108396,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -63280,24 +108409,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -63316,19 +108449,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -63343,7 +108496,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -63353,7 +108512,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -63366,7 +108532,11 @@ 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'); + 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'); @@ -63381,65 +108551,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('yo'); + localeModule('uz-latn'); test('parse', function (assert) { - var tests = 'Sẹ́rẹ́ Sẹ́r_Èrèlè Èrl_Ẹrẹ̀nà Ẹrn_Ìgbé Ìgb_Èbibi Èbi_Òkùdu Òkù_Agẹmo Agẹ_Ògún Ògú_Owewe Owe_Ọ̀wàrà Ọ̀wà_Bélú Bél_Ọ̀pẹ̀̀ Ọ̀pẹ̀̀'.split('_'), i; + var tests = 'Yanvar Yan_Fevral Fev_Mart Mar_Aprel Apr_May May_Iyun Iyun_Iyul Iyul_Avgust Avg_Sentabr Sen_Oktabr Okt_Noyabr Noy_Dekabr Dek'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -63450,34 +108659,44 @@ 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', 'Àìkú, Èrèlè ọjọ́ 14 2010, 3:25:50 pm'], - ['ddd, hA', 'Àìk, 3PM'], - ['M Mo MM MMMM MMM', '2 ọjọ́ 2 02 Èrèlè Èrl'], + [ + 'dddd, Do-MMMM YYYY, h:mm:ss', + 'Yakshanba, 14-Fevral 2010, 3:25:50', + ], + ['ddd, h:mm', 'Yak, 3:25'], + ['M Mo MM MMMM MMM', '2 2 02 Fevral Fev'], ['YYYY YY', '2010 10'], - ['D Do DD', '14 ọjọ́ 14 14'], - ['d do dddd ddd dd', '0 ọjọ́ 0 Àìkú Àìk Àì'], - ['DDD DDDo DDDD', '45 ọjọ́ 45 045'], - ['w wo ww', '6 ọjọ́ 6 06'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 Yakshanba Yak Ya'], + ['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 ọjọ́ 45 day of the year'], - ['LTS', '3:25:50 PM'], + ['[yilning] DDDo-[kuni]', 'yilning 45-kuni'], + ['LTS', '15:25:50'], ['L', '14/02/2010'], - ['LL', '14 Èrèlè 2010'], - ['LLL', '14 Èrèlè 2010 3:25 PM'], - ['LLLL', 'Àìkú, 14 Èrèlè 2010 3:25 PM'], + ['LL', '14 Fevral 2010'], + ['LLL', '14 Fevral 2010 15:25'], + ['LLLL', '14 Fevral 2010, Yakshanba 15:25'], ['l', '14/2/2010'], - ['ll', '14 Èrl 2010'], - ['lll', '14 Èrl 2010 3:25 PM'], - ['llll', 'Àìk, 14 Èrl 2010 3:25 PM'] + ['ll', '14 Fev 2010'], + ['lll', '14 Fev 2010 15:25'], + ['llll', '14 Fev 2010, Yak 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -63487,125 +108706,296 @@ }); test('format ordinal', function (assert) { - assert.equal(moment([2011, 0, 1]).format('DDDo'), 'ọjọ́ 1', 'ọjọ́ 1'); - assert.equal(moment([2011, 0, 2]).format('DDDo'), 'ọjọ́ 2', 'ọjọ́ 2'); - assert.equal(moment([2011, 0, 3]).format('DDDo'), 'ọjọ́ 3', 'ọjọ́ 3'); - assert.equal(moment([2011, 0, 4]).format('DDDo'), 'ọjọ́ 4', 'ọjọ́ 4'); - assert.equal(moment([2011, 0, 5]).format('DDDo'), 'ọjọ́ 5', 'ọjọ́ 5'); - assert.equal(moment([2011, 0, 6]).format('DDDo'), 'ọjọ́ 6', 'ọjọ́ 6'); - assert.equal(moment([2011, 0, 7]).format('DDDo'), 'ọjọ́ 7', 'ọjọ́ 7'); - assert.equal(moment([2011, 0, 8]).format('DDDo'), 'ọjọ́ 8', 'ọjọ́ 8'); - assert.equal(moment([2011, 0, 9]).format('DDDo'), 'ọjọ́ 9', 'ọjọ́ 9'); - assert.equal(moment([2011, 0, 10]).format('DDDo'), 'ọjọ́ 10', 'ọjọ́ 10'); + assert.equal(moment([2016, 0, 1]).format('DDDo'), '1', '1'); + assert.equal(moment([2016, 0, 2]).format('DDDo'), '2', '2'); + assert.equal(moment([2016, 0, 3]).format('DDDo'), '3', '3'); + assert.equal(moment([2016, 0, 4]).format('DDDo'), '4', '4'); + assert.equal(moment([2016, 0, 5]).format('DDDo'), '5', '5'); + assert.equal(moment([2016, 0, 6]).format('DDDo'), '6', '6'); + assert.equal(moment([2016, 0, 7]).format('DDDo'), '7', '7'); + assert.equal(moment([2016, 0, 8]).format('DDDo'), '8', '8'); + assert.equal(moment([2016, 0, 9]).format('DDDo'), '9', '9'); + assert.equal(moment([2016, 0, 10]).format('DDDo'), '10', '10'); - assert.equal(moment([2011, 0, 11]).format('DDDo'), 'ọjọ́ 11', 'ọjọ́ 11'); - assert.equal(moment([2011, 0, 12]).format('DDDo'), 'ọjọ́ 12', 'ọjọ́ 12'); - assert.equal(moment([2011, 0, 13]).format('DDDo'), 'ọjọ́ 13', 'ọjọ́ 13'); - assert.equal(moment([2011, 0, 14]).format('DDDo'), 'ọjọ́ 14', 'ọjọ́ 14'); - assert.equal(moment([2011, 0, 15]).format('DDDo'), 'ọjọ́ 15', 'ọjọ́ 15'); - assert.equal(moment([2011, 0, 16]).format('DDDo'), 'ọjọ́ 16', 'ọjọ́ 16'); - assert.equal(moment([2011, 0, 17]).format('DDDo'), 'ọjọ́ 17', 'ọjọ́ 17'); - assert.equal(moment([2011, 0, 18]).format('DDDo'), 'ọjọ́ 18', 'ọjọ́ 18'); - assert.equal(moment([2011, 0, 19]).format('DDDo'), 'ọjọ́ 19', 'ọjọ́ 19'); - assert.equal(moment([2011, 0, 20]).format('DDDo'), 'ọjọ́ 20', 'ọjọ́ 20'); + assert.equal(moment([2016, 0, 11]).format('DDDo'), '11', '11'); + assert.equal(moment([2016, 0, 12]).format('DDDo'), '12', '12'); + assert.equal(moment([2016, 0, 13]).format('DDDo'), '13', '13'); + assert.equal(moment([2016, 0, 14]).format('DDDo'), '14', '14'); + assert.equal(moment([2016, 0, 15]).format('DDDo'), '15', '15'); + assert.equal(moment([2016, 0, 16]).format('DDDo'), '16', '16'); + assert.equal(moment([2016, 0, 17]).format('DDDo'), '17', '17'); + assert.equal(moment([2016, 0, 18]).format('DDDo'), '18', '18'); + assert.equal(moment([2016, 0, 19]).format('DDDo'), '19', '19'); + assert.equal(moment([2016, 0, 20]).format('DDDo'), '20', '20'); - assert.equal(moment([2011, 0, 21]).format('DDDo'), 'ọjọ́ 21', 'ọjọ́ 21'); - assert.equal(moment([2011, 0, 22]).format('DDDo'), 'ọjọ́ 22', 'ọjọ́ 22'); - assert.equal(moment([2011, 0, 23]).format('DDDo'), 'ọjọ́ 23', 'ọjọ́ 23'); - assert.equal(moment([2011, 0, 24]).format('DDDo'), 'ọjọ́ 24', 'ọjọ́ 24'); - assert.equal(moment([2011, 0, 25]).format('DDDo'), 'ọjọ́ 25', 'ọjọ́ 25'); - assert.equal(moment([2011, 0, 26]).format('DDDo'), 'ọjọ́ 26', 'ọjọ́ 26'); - assert.equal(moment([2011, 0, 27]).format('DDDo'), 'ọjọ́ 27', 'ọjọ́ 27'); - assert.equal(moment([2011, 0, 28]).format('DDDo'), 'ọjọ́ 28', 'ọjọ́ 28'); - assert.equal(moment([2011, 0, 29]).format('DDDo'), 'ọjọ́ 29', 'ọjọ́ 29'); - assert.equal(moment([2011, 0, 30]).format('DDDo'), 'ọjọ́ 30', 'ọjọ́ 30'); + assert.equal(moment([2016, 0, 21]).format('DDDo'), '21', '21'); + assert.equal(moment([2016, 0, 22]).format('DDDo'), '22', '22'); + assert.equal(moment([2016, 0, 23]).format('DDDo'), '23', '23'); + assert.equal(moment([2016, 0, 24]).format('DDDo'), '24', '24'); + assert.equal(moment([2016, 0, 25]).format('DDDo'), '25', '25'); + assert.equal(moment([2016, 0, 26]).format('DDDo'), '26', '26'); + assert.equal(moment([2016, 0, 27]).format('DDDo'), '27', '27'); + assert.equal(moment([2016, 0, 28]).format('DDDo'), '28', '28'); + assert.equal(moment([2016, 0, 29]).format('DDDo'), '29', '29'); + assert.equal(moment([2016, 0, 30]).format('DDDo'), '30', '30'); - assert.equal(moment([2011, 0, 31]).format('DDDo'), 'ọjọ́ 31', 'ọjọ́ 31'); + assert.equal(moment([2016, 0, 31]).format('DDDo'), '31', '31'); }); test('format month', function (assert) { - var expected = 'Sẹ́rẹ́ Sẹ́r_Èrèlè Èrl_Ẹrẹ̀nà Ẹrn_Ìgbé Ìgb_Èbibi Èbi_Òkùdu Òkù_Agẹmo Agẹ_Ògún Ògú_Owewe Owe_Ọ̀wàrà Ọ̀wà_Bélú Bél_Ọ̀pẹ̀̀ Ọ̀pẹ̀̀'.split('_'), + var expected = 'Yanvar Yan_Fevral Fev_Mart Mar_Aprel Apr_May May_Iyun Iyun_Iyul Iyul_Avgust Avg_Sentabr Sen_Oktabr Okt_Noyabr Noy_Dekabr Dek'.split( + '_' + ), i; for (i = 0; i < expected.length; i++) { - assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]); + assert.equal( + moment([2016, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = 'Àìkú Àìk Àì_Ajé Ajé Aj_Ìsẹ́gun Ìsẹ́ Ìs_Ọjọ́rú Ọjr Ọr_Ọjọ́bọ Ọjb Ọb_Ẹtì Ẹtì Ẹt_Àbámẹ́ta Àbá Àb'.split('_'), + var expected = 'Yakshanba Yak Ya_Dushanba Dush Du_Seshanba Sesh Se_Chorshanba Chor Cho_Payshanba Pay Pa_Juma Jum Ju_Shanba Shan Sha'.split( + '_' + ), i; 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([2016, 0, 3 + 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), 'ìsẹjú aayá die', '44 seconds = ìsẹjú aayá die'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), 'ìsẹjú kan', '45 seconds = ìsẹjú kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), 'ìsẹjú kan', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), 'ìsẹjú 2', '90 seconds = ìsẹjú 2'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44}), true), 'ìsẹjú 44', 'ìsẹjú 44 = ìsẹjú 44'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45}), true), 'wákati kan', 'ìsẹjú 45 = wákati kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), 'wákati kan', 'ìsẹjú 89 = wákati kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90}), true), 'wákati 2', 'ìsẹjú 90 = wákati 2'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5}), true), 'wákati 5', 'wákati 5 = wákati 5'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21}), true), 'wákati 21', 'wákati 21 = wákati 21'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22}), true), 'ọjọ́ kan', '22 wákati = ọjọ́ kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), 'ọjọ́ kan', '35 wákati = ọjọ́ kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36}), true), 'ọjọ́ 2', 'wákati 36 = ọjọ́ 2'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1}), true), 'ọjọ́ kan', '1 = ọjọ́ kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5}), true), 'ọjọ́ 5', 'ọjọ́ 5 = ọjọ́ 5'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25}), true), 'ọjọ́ 25', 'ọjọ́ 25 = ọjọ́ 25'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26}), true), 'osù kan', 'ọjọ́ 26 = osù kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), 'osù kan', 'ọjọ́ 30 = osù kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), 'osù kan', 'ọjọ́ 43 = osù kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46}), true), 'osù 2', 'ọjọ́ 46 = osù 2'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74}), true), 'osù 2', 'ọjọ́ 75 = osù 2'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76}), true), 'osù 3', 'ọjọ́ 76 = osù 3'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1}), true), 'osù kan', 'osù 1 = osù kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5}), true), 'osù 5', 'osù 5 = osù 5'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345}), true), 'ọdún kan', 'ọjọ 345 = ọdún kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548}), true), 'ọdún 2', 'ọjọ 548 = ọdún 2'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1}), true), 'ọdún kan', 'ọdún 1 = ọdún kan'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), 'ọdún 5', 'ọdún 5 = ọdún 5'); + var start = moment([2017, 1, 28]); + assert.equal( + start.from(moment([2017, 1, 28]).add({ s: 44 }), true), + 'soniya', + '44 soniya = soniya' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ s: 45 }), true), + 'bir daqiqa', + '45 soniya = bir daqiqa' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ s: 89 }), true), + 'bir daqiqa', + '89 soniya = bir daqiqa' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ s: 90 }), true), + '2 daqiqa', + '90 soniya = 2 daqiqa' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ m: 44 }), true), + '44 daqiqa', + '44 daqiqa = 44 daqiqa' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ m: 45 }), true), + 'bir soat', + '45 minut = bir soat' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ m: 89 }), true), + 'bir soat', + '89 minut = bir soat' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ m: 90 }), true), + '2 soat', + '90 minut = 2 soat' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ h: 5 }), true), + '5 soat', + '5 soat = 5 soat' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ h: 21 }), true), + '21 soat', + '21 soat = 21 soat' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ h: 22 }), true), + 'bir kun', + '22 soat = bir kun' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ h: 35 }), true), + 'bir kun', + '35 soat = bir kun' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ h: 36 }), true), + '2 kun', + '36 soat = 2 kun' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 1 }), true), + 'bir kun', + '1 kun = 1 kun' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 5 }), true), + '5 kun', + '5 kun = 5 kun' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 25 }), true), + '25 kun', + '25 kun = 25 kun' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 26 }), true), + 'bir oy', + '26 kun = bir oy' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 30 }), true), + 'bir oy', + '30 kun = bir oy' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 43 }), true), + 'bir oy', + '45 kun = bir oy' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 46 }), true), + '2 oy', + '46 kun = 2 oy' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 74 }), true), + '2 oy', + '75 kun = 2 oy' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 76 }), true), + '3 oy', + '76 kun = 3 oy' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ M: 1 }), true), + 'bir oy', + 'bir oy = bir oy' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ M: 5 }), true), + '5 oy', + '5 oy = 5 oy' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 345 }), true), + 'bir yil', + '345 kun = bir yil' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ d: 548 }), true), + '2 yil', + '548 kun = 2 yil' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ y: 1 }), true), + 'bir yil', + '1 yil = bir yil' + ); + assert.equal( + start.from(moment([2017, 1, 28]).add({ y: 5 }), true), + '5 yil', + '5 yil = 5 yil' + ); }); test('suffix', function (assert) { - assert.equal(moment(30000).from(0), 'ní ìsẹjú aayá die', 'prefix'); - assert.equal(moment(0).from(30000), 'ìsẹjú aayá die kọjá', 'suffix'); + assert.equal(moment(30000).from(0), 'Yaqin soniya ichida', 'prefix'); + assert.equal(moment(0).from(30000), 'Bir necha soniya oldin', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), 'ìsẹjú aayá die kọjá', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'Bir necha soniya oldin', + 'now from now should display as in the past' + ); }); test('fromNow', function (assert) { - assert.equal(moment().add({s: 30}).fromNow(), 'ní ìsẹjú aayá die', 'ní ìsẹjú aayá die'); - assert.equal(moment().add({d: 5}).fromNow(), 'ní ọjọ́ 5', 'ní ọjọ́ 5'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'Yaqin soniya ichida', + 'in a few seconds' + ); + assert.equal( + moment().add({ d: 5 }).fromNow(), + 'Yaqin 5 kun ichida', + 'in 5 days' + ); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment(a).calendar(), 'Ònì ni 12:00 PM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Ònì ni 12:25 PM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Ònì ni 1:00 PM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Ọ̀la ni 12:00 PM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Ònì ni 11:00 AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Àna ni 12:00 PM', 'yesterday at the same time'); + assert.equal( + moment(a).calendar(), + 'Bugun soat 12:00 da', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Bugun soat 12:25 da', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Bugun soat 13:00 da', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Ertaga 12:00 da', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Bugun soat 11:00 da', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Kecha soat 12:00 da', + '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 [Ọsẹ̀ tón\'bọ] [ni] LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [kuni soat] LT [da]'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tón\'bọ] [ni] LT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [kuni soat] LT [da]'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tón\'bọ] [ni] LT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [kuni soat] LT [da]'), + 'Today + ' + i + ' days end of day' + ); } }); @@ -63613,40 +109003,81 @@ var i, m; for (i = 2; i < 7; i++) { - m = moment().subtract({d: i}); - assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tólọ́] [ni] LT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format("[O'tgan] dddd [kuni soat] LT [da]"), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tólọ́] [ni] LT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format("[O'tgan] dddd [kuni soat] LT [da]"), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('dddd [Ọsẹ̀ tólọ́] [ni] LT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format("[O'tgan] dddd [kuni soat] LT [da]"), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + '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(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 ọjọ́ 52', 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).format('w ww wo'), '1 01 ọjọ́ 1', 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '1 01 ọjọ́ 1', 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).format('w ww wo'), '2 02 ọjọ́ 2', 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '2 02 ọjọ́ 2', 'Jan 15 2012 should be week 2'); + 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 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '2 02 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 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '3 03 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 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -63661,27 +109092,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -63691,8 +109127,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -63705,7 +109143,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -63714,16 +109155,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -63731,7 +109178,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -63739,12 +109188,21 @@ 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'); + 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' + ); } }); @@ -63752,12 +109210,27 @@ 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'); + 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' + ); } }); @@ -63766,7 +109239,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -63776,24 +109252,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -63812,19 +109292,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -63839,7 +109339,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -63849,7 +109355,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -63862,7 +109375,11 @@ 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'); + 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'); @@ -63877,65 +109394,102 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('zh-cn'); + localeModule('uz'); test('parse', function (assert) { - var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; - + var tests = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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++) { @@ -63948,172 +109502,422 @@ 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, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], - ['ddd, Ah', '周日, 下午3'], - ['M Mo MM MMMM MMM', '2 2月 02 二月 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', '6 6周 06'], - ['h hh', '3 03'], - ['H HH', '15 15'], - ['m mm', '25 25'], - ['s ss', '50 50'], - ['a A', '下午 下午'], - ['[这年的第] DDDo', '这年的第 45日'], - ['LTS', '15:25:50'], - ['L', '2010/02/14'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日下午3点25分'], - ['LLLL', '2010年2月14日星期日下午3点25分'], - ['l', '2010/2/14'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日 15:25'], - ['llll', '2010年2月14日星期日 15:25'] + ['dddd, Do-MMMM YYYY, h:mm:ss', 'Якшанба, 14-феврал 2010, 3:25:50'], + ['ddd, h:mm', 'Якш, 3:25'], + ['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'], ], 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 = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; + 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 = 'январ янв_феврал фев_март мар_апрел апр_май май_июн июн_июл июл_август авг_сентябр сен_октябр окт_ноябр ноя_декабр дек'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = '星期日 周日 日_星期一 周一 一_星期二 周二 二_星期三 周三 三_星期四 周四 四_星期五 周五 五_星期六 周六 六'.split('_'), i; - + var expected = 'Якшанба Якш Як_Душанба Душ Ду_Сешанба Сеш Се_Чоршанба Чор Чо_Пайшанба Пай Па_Жума Жум Жу_Шанба Шан Ша'.split( + '_' + ), + i; 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 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), '几秒', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 分钟', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 分钟', '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), '1 小时', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 小时', '89 minutes = an hour'); - assert.equal(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), '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), '1 天', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 天', '35 hours = a day'); - assert.equal(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), '1 天', '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), '1 个月', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 个月', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 个月', '43 days = a month'); - assert.equal(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), '2 个月', '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 个月', '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), '1 年', '345 days = a year'); - assert.equal(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), '1 年', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 年', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'фурсат', + '44 секунд = фурсат' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'бир дакика', + '45 секунд = бир дакика' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'бир дакика', + '89 секунд = бир дакика' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 дакика', + '90 секунд = 2 дакика' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 дакика', + '44 дакика = 44 дакика' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'бир соат', + '45 минут = бир соат' + ); + 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 соат', + '90 минут = 2 соат' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 соат', + '5 соат = 5 соат' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 соат', + '21 соат = 21 соат' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'бир кун', + '22 соат = бир кун' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'бир кун', + '35 соат = бир кун' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 кун', + '36 соат = 2 кун' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'бир кун', + '1 кун = 1 кун' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 кун', + '5 кун = 5 кун' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 кун', + '25 кун = 25 кун' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'бир ой', + '26 кун = бир ой' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'бир ой', + '30 кун = бир ой' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'бир ой', + '45 кун = бир ой' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 ой', + '46 кун = 2 ой' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 ой', + '75 кун = 2 ой' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 ой', + '76 кун = 3 ой' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'бир ой', + 'бир ой = бир ой' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 ой', + '5 ой = 5 ой' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'бир йил', + '345 кун = бир йил' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 йил', + '548 кун = 2 йил' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'бир йил', + '1 йил = бир йил' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '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'); + 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 天内', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'Якин фурсат ичида', + 'in a few seconds' + ); + 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', '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'); + 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' + ); }); 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('[下]ddddLT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [куни соат] LT [да]'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[下]ddddLT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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('[上]ddddLT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[Утган] dddd [куни соат] LT [да]'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + 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('[上]ddddLT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + 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}); - - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week'); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - weeksAgo = moment().subtract({w: 2}); - weeksFromNow = moment().add({w: 2}); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '凌晨', 'before dawn'); - assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning'); - assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); - assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); - assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '52 52 52周', 'Jan 1 2012 应该是第52周'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1周', 'Jan 7 2012 应该是第 1周'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2周', 'Jan 14 2012 应该是第 2周'); + 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 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '2 02 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 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '3 03 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 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -64128,27 +109932,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -64158,8 +109967,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -64172,7 +109983,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -64181,16 +109995,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -64198,7 +110018,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -64206,12 +110028,21 @@ 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'); + 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' + ); } }); @@ -64219,12 +110050,27 @@ 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'); + 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' + ); } }); @@ -64233,7 +110079,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -64243,24 +110092,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -64279,19 +110132,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -64306,7 +110179,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -64316,7 +110195,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -64329,7 +110215,11 @@ 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'); + 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'); @@ -64344,67 +110234,107 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('zh-hk'); + localeModule('vi'); test('parse', function (assert) { - var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; + var i, + tests = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split( + '_' + ); + function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + i + ); + } + + 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(' '); + tests[i] = tests[i].split(','); equalTest(tests[i][0], 'MMM', i); equalTest(tests[i][1], 'MMM', i); equalTest(tests[i][0], 'MMMM', i); @@ -64413,34 +110343,44 @@ 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, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], - ['ddd, Ah', '週日, 下午3'], - ['M Mo MM MMMM MMM', '2 2月 02 二月 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', '15:25:50'], - ['L', '2010/02/14'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日 15:25'], - ['LLLL', '2010年2月14日星期日 15:25'], - ['l', '2010/2/14'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日 15:25'], - ['llll', '2010年2月14日星期日 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'chủ nhật, tháng 2 14 2010, 3:25:50 ch', + ], + ['ddd, hA', 'CN, 3CH'], + ['M Mo MM MMMM MMM', '2 2 02 tháng 2 Th02'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14 14'], + ['d do dddd ddd dd', '0 0 chủ nhật CN CN'], + ['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', 'ch CH'], + ['[ngày thứ] DDDo [của năm]', 'ngày thứ 45 của năm'], + ['LTS', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '14 tháng 2 năm 2010'], + ['LLL', '14 tháng 2 năm 2010 15:25'], + ['LLLL', 'chủ nhật, 14 tháng 2 năm 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 Th02 2010'], + ['lll', '14 Th02 2010 15:25'], + ['llll', 'CN, 14 Th02 2010 15:25'], ], b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), i; @@ -64450,144 +110390,379 @@ } }); - test('format month', function (assert) { - var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.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 = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split('_'), i; + 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'); - 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, 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'); - 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), '1 分鐘', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 分鐘', '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), '1 小時', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 小時', '89 minutes = an hour'); - assert.equal(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), '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), '1 天', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 天', '35 hours = a day'); - assert.equal(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), '1 天', '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), '1 個月', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 個月', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 個月', '43 days = a month'); - assert.equal(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), '2 個月', '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 個月', '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), '1 年', '345 days = a year'); - assert.equal(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), '1 年', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 年', '5 years = 5 years'); - }); + 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 = 'tháng 1,Th01_tháng 2,Th02_tháng 3,Th03_tháng 4,Th04_tháng 5,Th05_tháng 6,Th06_tháng 7,Th07_tháng 8,Th08_tháng 9,Th09_tháng 10,Th10_tháng 11,Th11_tháng 12,Th12'.split( + '_' + ); + + 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 i, + expected = 'chủ nhật CN CN_thứ hai T2 T2_thứ ba T3 T3_thứ tư T4 T4_thứ năm T5 T5_thứ sáu T6 T6_thứ bảy T7 T7'.split( + '_' + ); + + 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), + 'vài giây', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'một phút', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'một phút', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 phút', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 phút', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'một giờ', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'một giờ', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 giờ', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 giờ', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 giờ', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'một ngày', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'một ngày', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 ngày', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'một ngày', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 ngày', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 ngày', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'một tháng', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'một tháng', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'một tháng', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 tháng', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 tháng', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 tháng', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'một tháng', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 tháng', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'một năm', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 năm', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'một năm', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 năm', + '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), 'vài giây tới', 'prefix'); + assert.equal(moment(0).from(30000), 'vài giây trước', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), '幾秒前', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'vài giây trước', + '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 天內', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'vài giây tới', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), '5 ngày tới', 'in 5 days'); }); test('calendar day', function (assert) { var a = moment().hours(12).minutes(0).seconds(0); - 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'); + assert.equal( + moment(a).calendar(), + 'Hôm nay lúc 12:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Hôm nay lúc 12:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Hôm nay lúc 13:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Ngày mai lúc 12:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Hôm nay lúc 11:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Hôm qua lúc 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('[下]ddddLT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [tuần tới lúc] LT'), + 'Today + ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [tuần tới lúc] LT'), + 'Today + ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[下]ddddLT'), 'Today + ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [tuần tới lúc] 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('[上]ddddLT'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [tuần trước lúc] LT'), + 'Today - ' + i + ' days current time' + ); m.hours(0).minutes(0).seconds(0).milliseconds(0); - assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days beginning of day'); + assert.equal( + m.calendar(), + m.format('dddd [tuần trước lúc] LT'), + 'Today - ' + i + ' days beginning of day' + ); m.hours(23).minutes(59).seconds(59).milliseconds(999); - assert.equal(m.calendar(), m.format('[上]ddddLT'), 'Today - ' + i + ' days end of day'); + assert.equal( + m.calendar(), + m.format('dddd [tuần trước lúc] 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'); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - 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'); - }); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), '凌晨', 'before dawn'); - assert.equal(moment([2011, 2, 23, 6, 0]).format('a'), '早上', 'morning'); - assert.equal(moment([2011, 2, 23, 9, 0]).format('a'), '上午', 'before noon'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), '中午', 'noon'); - assert.equal(moment([2011, 2, 23, 13, 0]).format('a'), '下午', 'after noon'); - assert.equal(moment([2011, 2, 23, 18, 0]).format('a'), '晚上', 'night'); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '凌晨', 'before dawn'); - assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning'); - assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); - assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); - assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1週', 'Jan 1 2012 應該是第 1週'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1週', 'Jan 7 2012 應該是第 1週'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2週', 'Jan 8 2012 應該是第 2週'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2週', 'Jan 14 2012 應該是第 2週'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3週', 'Jan 15 2012 應該是第 3週'); + 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' + ); + 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' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 2', + 'Jan 15 2012 should be week 2' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -64602,27 +110777,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -64632,8 +110812,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -64646,7 +110828,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -64655,16 +110840,22 @@ /*global QUnit:false*/ - var test = QUnit.test; + 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; + var res = [], + i; for (i in obj) { - if (obj.hasOwnProperty(i)) { + if (hasOwnProp(obj, i)) { res.push(i); } } @@ -64672,7 +110863,9 @@ } } - // Pick the first defined of two or three arguments. + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } function defineCommonLocaleTests(locale, options) { test('lenient day of month ordinal parsing', function (assert) { @@ -64680,12 +110873,21 @@ 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'); + 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' + ); } }); @@ -64693,12 +110895,27 @@ 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'); + 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' + ); } }); @@ -64707,7 +110924,10 @@ 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); + assert.ok( + testMoment.isValid(), + 'strict day of month ordinal parsing ' + i + ); } }); @@ -64717,24 +110937,28 @@ 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')); + assert.equal( + t2.format('HH:mm'), + t1.format('HH:mm'), + 'meridiem at ' + t1.format('HH:mm') + ); } } }); test('date format correctness', function (assert) { - var data, tokens; - data = moment.localeData()._longDateFormat; - tokens = objectKeys(data); - each(tokens, function (srchToken) { + 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. - each(tokens, function (baseToken) { + eachOwnProp(data, function (baseToken) { // strip escaped sequences var format = data[baseToken].replace(/(\[[^\]]*\])/g, ''); - assert.equal(false, !!~format.indexOf(srchToken), - 'contains ' + srchToken + ' in ' + baseToken); + assert.equal( + false, + !!~format.indexOf(srchToken), + 'contains ' + srchToken + ' in ' + baseToken + ); }); }); }); @@ -64753,19 +110977,39 @@ 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'); + 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'); + 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'); + 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'); + 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'); + assert.equal( + r.month(), + m.month(), + 'month ' + i + ' fmt ' + format + ' lower strict' + ); } for (i = 0; i < 12; ++i) { @@ -64780,7 +111024,13 @@ test('weekday parsing correctness', function (assert) { var i, m; - if (locale === 'tr' || locale === 'az' || locale === 'ro' || locale === 'mt' || locale === 'ga') { + 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 @@ -64790,7 +111040,14 @@ return; } function tester(format) { - var r, baseMsg = 'weekday ' + m.weekday() + ' fmt ' + format + ' ' + m.toISOString(); + 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') { @@ -64803,7 +111060,11 @@ 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'); + 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'); @@ -64818,65 +111079,104 @@ }); 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'); + 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(); - var weekdaysShort = moment().localeData().weekdaysShort(); - var weekdaysMin = moment().localeData().weekdaysMin(); - var shift = moment().localeData()._week.dow; + 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'); + 'weekdays should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysShort(true), weekdaysShort.slice(shift, 7).concat(weekdaysShort.slice(0, shift)), - 'weekdaysShort should localeSort'); + 'weekdaysShort should localeSort' + ); assert.deepEqual( moment().localeData().weekdaysMin(true), weekdaysMin.slice(shift, 7).concat(weekdaysMin.slice(0, shift)), - 'weekdaysMin should localeSort'); + 'weekdaysMin should localeSort' + ); }); } /*global QUnit:false*/ - function localeModule (name, lifecycle) { + function localeModule(name, lifecycle) { QUnit.module('locale:' + name, { - beforeEach : function () { + beforeEach: function () { moment.locale(name); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'locale'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { + afterEach: function () { moment.locale('en'); - teardownDeprecationHandler(test, moment, 'locale'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); - defineCommonLocaleTests(name, -1, -1); + defineCommonLocaleTests(name); } - localeModule('zh-tw'); + localeModule('x-pseudo'); test('parse', function (assert) { - var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; + var tests = 'J~áñúá~rý J~áñ_F~ébrú~árý ~Féb_~Márc~h ~Már_Áp~ríl ~Ápr_~Máý ~Máý_~Júñé~ ~Júñ_Júl~ý ~Júl_Áú~gúst~ ~Áúg_Sép~témb~ér ~Sép_Ó~ctób~ér ~Óct_Ñ~óvém~bér ~Ñóv_~Décé~mbér ~Déc'.split( + '_' + ), + i; function equalTest(input, mmm, i) { - assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1)); + 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); @@ -64887,181 +111187,421 @@ 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, a h:mm:ss', '星期日, 二月 14日 2010, 下午 3:25:50'], - ['ddd, Ah', '週日, 下午3'], - ['M Mo MM MMMM MMM', '2 2月 02 二月 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', '15:25:50'], - ['L', '2010/02/14'], - ['LL', '2010年2月14日'], - ['LLL', '2010年2月14日 15:25'], - ['LLLL', '2010年2月14日星期日 15:25'], - ['l', '2010/2/14'], - ['ll', '2010年2月14日'], - ['lll', '2010年2月14日 15:25'], - ['llll', '2010年2月14日星期日 15:25'] + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'S~úñdá~ý, F~ébrú~árý 14th 2010, 3:25:50 pm', + ], + ['ddd, hA', 'S~úñ, 3PM'], + ['M Mo MM MMMM MMM', '2 2nd 02 F~ébrú~árý ~Féb'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 14th 14'], + ['d do dddd ddd dd', '0 0th S~úñdá~ý S~úñ S~ú'], + ['DDD DDDo DDDD', '45 45th 045'], + ['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'], + ['LT', '15:25'], + ['L', '14/02/2010'], + ['LL', '14 F~ébrú~árý 2010'], + ['LLL', '14 F~ébrú~árý 2010 15:25'], + ['LLLL', 'S~úñdá~ý, 14 F~ébrú~árý 2010 15:25'], + ['l', '14/2/2010'], + ['ll', '14 ~Féb 2010'], + ['lll', '14 ~Féb 2010 15:25'], + ['llll', 'S~úñ, 14 ~Féb 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 expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split('_'), i; + 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, 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'), '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'), '31st', '31st'); + }); + test('format month', function (assert) { + var expected = 'J~áñúá~rý J~áñ_F~ébrú~árý ~Féb_~Márc~h ~Már_Áp~ríl ~Ápr_~Máý ~Máý_~Júñé~ ~Júñ_Júl~ý ~Júl_Áú~gúst~ ~Áúg_Sép~témb~ér ~Sép_Ó~ctób~ér ~Óct_Ñ~óvém~bér ~Ñóv_~Décé~mbér ~Déc'.split( + '_' + ), + i; 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 MMM'), + expected[i], + expected[i] + ); } }); test('format week', function (assert) { - var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split('_'), i; - + var expected = 'S~úñdá~ý S~úñ S~ú_Mó~ñdáý~ ~Móñ Mó~_Túé~sdáý~ ~Túé Tú_Wéd~ñésd~áý ~Wéd ~Wé_T~húrs~dáý ~Thú T~h_~Fríd~áý ~Frí Fr~_S~átúr~dáý ~Sát Sá'.split( + '_' + ), + i; 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 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), '幾秒', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45}), true), '1 分鐘', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89}), true), '1 分鐘', '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), '1 小時', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89}), true), '1 小時', '89 minutes = an hour'); - assert.equal(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), '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), '1 天', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35}), true), '1 天', '35 hours = a day'); - assert.equal(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), '1 天', '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), '1 個月', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30}), true), '1 個月', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43}), true), '1 個月', '43 days = a month'); - assert.equal(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), '2 個月', '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 個月', '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), '1 年', '345 days = a year'); - assert.equal(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), '1 年', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5}), true), '5 年', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 }), true), + 'á ~féw ~sécó~ñds', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'á ~míñ~úté', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'á ~míñ~úté', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '2 m~íñú~tés', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + '44 m~íñú~tés', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'á~ñ hó~úr', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'á~ñ hó~úr', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + '2 h~óúrs', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + '5 h~óúrs', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + '21 h~óúrs', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'á ~dáý', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'á ~dáý', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + '2 d~áýs', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'á ~dáý', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + '5 d~áýs', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + '25 d~áýs', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'á ~móñ~th', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'á ~móñ~th', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'á ~móñ~th', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + '2 m~óñt~hs', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + '2 m~óñt~hs', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + '3 m~óñt~hs', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'á ~móñ~th', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + '5 m~óñt~hs', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'á ~ýéár', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + '2 ý~éárs', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'á ~ýéár', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 ý~éárs', + '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), 'í~ñ á ~féw ~sécó~ñds', 'prefix'); + assert.equal(moment(0).from(30000), 'á ~féw ~sécó~ñds á~gó', 'suffix'); }); test('now from now', function (assert) { - assert.equal(moment().fromNow(), '幾秒前', 'now from now should display as in the past'); + assert.equal( + moment().fromNow(), + 'á ~féw ~sécó~ñds á~gó', + '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 天內', 'in 5 days'); + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'í~ñ á ~féw ~sécó~ñds', + 'in a few seconds' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'í~ñ 5 d~áýs', 'in 5 days'); }); test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); + var a = moment().hours(2).minutes(0).seconds(0); - 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'); + assert.equal( + moment(a).calendar(), + 'T~ódá~ý át 02:00', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'T~ódá~ý át 02:25', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'T~ódá~ý át 03:00', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'T~ómó~rró~w át 02:00', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'T~ódá~ý át 01:00', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Ý~ést~érdá~ý át 02: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 LT'), 'Today + ' + i + ' days current time'); + m = moment().add({ d: i }); + assert.equal( + m.calendar(), + m.format('dddd [át] 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'); + assert.equal( + m.calendar(), + m.format('dddd [át] 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'); + assert.equal( + m.calendar(), + m.format('dddd [át] 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'), 'Today - ' + i + ' days current time'); + m = moment().subtract({ d: i }); + assert.equal( + m.calendar(), + m.format('[L~ást] dddd [át] 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'); + assert.equal( + m.calendar(), + m.format('[L~ást] dddd [át] 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'); + assert.equal( + m.calendar(), + m.format('[L~ást] dddd [át] 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}); + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); - assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks'); - }); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - test('meridiem', function (assert) { - assert.equal(moment([2011, 2, 23, 0, 0]).format('a'), '凌晨', 'before dawn'); - assert.equal(moment([2011, 2, 23, 6, 0]).format('a'), '早上', 'morning'); - assert.equal(moment([2011, 2, 23, 9, 0]).format('a'), '上午', 'before noon'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), '中午', 'noon'); - assert.equal(moment([2011, 2, 23, 13, 0]).format('a'), '下午', 'after noon'); - assert.equal(moment([2011, 2, 23, 18, 0]).format('a'), '晚上', 'night'); + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - assert.equal(moment([2011, 2, 23, 0, 0]).format('A'), '凌晨', 'before dawn'); - assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning'); - assert.equal(moment([2011, 2, 23, 9, 0]).format('A'), '上午', 'before noon'); - assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); - assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); - assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('weeks year starting sunday format', function (assert) { - assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1週', 'Jan 1 2012 應該是第 1週'); - assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1週', 'Jan 7 2012 應該是第 1週'); - assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2週', 'Jan 8 2012 應該是第 2週'); - assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2週', 'Jan 14 2012 應該是第 2週'); - assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3週', 'Jan 15 2012 應該是第 3週'); + 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' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 1st', + 'Jan 2 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' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 2nd', + 'Jan 9 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' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -65076,27 +111616,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -65106,8 +111651,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -65120,7 +111667,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -65129,563 +111679,774 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); + 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; + } } - module$1('add and subtract'); - - test('add short reverse args', function (assert) { - var a = moment(), b, c, d; - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add({ms: 50}).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add({s: 1}).seconds(), 9, 'Add seconds'); - assert.equal(a.add({m: 1}).minutes(), 8, 'Add minutes'); - assert.equal(a.add({h: 1}).hours(), 7, 'Add hours'); - assert.equal(a.add({d: 1}).date(), 13, 'Add date'); - assert.equal(a.add({w: 1}).date(), 20, 'Add week'); - assert.equal(a.add({M: 1}).month(), 10, 'Add month'); - assert.equal(a.add({y: 1}).year(), 2012, 'Add year'); - assert.equal(a.add({Q: 1}).month(), 1, 'Add quarter'); + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } - b = moment([2010, 0, 31]).add({M: 1}); - c = moment([2010, 1, 28]).subtract({M: 1}); - d = moment([2010, 1, 28]).subtract({Q: 1}); + 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' + ); + } + }); - assert.equal(b.month(), 1, 'add month, jan 31st to feb 28th'); - assert.equal(b.date(), 28, 'add month, jan 31st to feb 28th'); - assert.equal(c.month(), 0, 'subtract month, feb 28th to jan 28th'); - assert.equal(c.date(), 28, 'subtract month, feb 28th to jan 28th'); - assert.equal(d.month(), 10, 'subtract quarter, feb 28th 2010 to nov 28th 2009'); - assert.equal(d.date(), 28, 'subtract quarter, feb 28th 2010 to nov 28th 2009'); - assert.equal(d.year(), 2009, 'subtract quarter, feb 28th 2010 to nov 28th 2009'); - }); - - test('add long reverse args', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add({milliseconds: 50}).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add({seconds: 1}).seconds(), 9, 'Add seconds'); - assert.equal(a.add({minutes: 1}).minutes(), 8, 'Add minutes'); - assert.equal(a.add({hours: 1}).hours(), 7, 'Add hours'); - assert.equal(a.add({days: 1}).date(), 13, 'Add date'); - assert.equal(a.add({weeks: 1}).date(), 20, 'Add week'); - assert.equal(a.add({months: 1}).month(), 10, 'Add month'); - assert.equal(a.add({years: 1}).year(), 2012, 'Add year'); - assert.equal(a.add({quarters: 1}).month(), 1, 'Add quarter'); - }); - - test('add long singular reverse args', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add({millisecond: 50}).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add({second: 1}).seconds(), 9, 'Add seconds'); - assert.equal(a.add({minute: 1}).minutes(), 8, 'Add minutes'); - assert.equal(a.add({hour: 1}).hours(), 7, 'Add hours'); - assert.equal(a.add({day: 1}).date(), 13, 'Add date'); - assert.equal(a.add({week: 1}).date(), 20, 'Add week'); - assert.equal(a.add({month: 1}).month(), 10, 'Add month'); - assert.equal(a.add({year: 1}).year(), 2012, 'Add year'); - assert.equal(a.add({quarter: 1}).month(), 1, 'Add quarter'); - }); - - test('add string long reverse args', function (assert) { - var a = moment(), b; - - test.expectedDeprecations('moment().add(period, number)'); - - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - b = a.clone(); - - assert.equal(a.add('millisecond', 50).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('second', 1).seconds(), 9, 'Add seconds'); - assert.equal(a.add('minute', 1).minutes(), 8, 'Add minutes'); - assert.equal(a.add('hour', 1).hours(), 7, 'Add hours'); - assert.equal(a.add('day', 1).date(), 13, 'Add date'); - assert.equal(a.add('week', 1).date(), 20, 'Add week'); - assert.equal(a.add('month', 1).month(), 10, 'Add month'); - assert.equal(a.add('year', 1).year(), 2012, 'Add year'); - assert.equal(b.add('day', '01').date(), 13, 'Add date'); - assert.equal(a.add('quarter', 1).month(), 1, 'Add quarter'); - }); - - test('add string long singular reverse args', function (assert) { - var a = moment(), b; - - test.expectedDeprecations('moment().add(period, number)'); - - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - b = a.clone(); - - assert.equal(a.add('milliseconds', 50).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('seconds', 1).seconds(), 9, 'Add seconds'); - assert.equal(a.add('minutes', 1).minutes(), 8, 'Add minutes'); - assert.equal(a.add('hours', 1).hours(), 7, 'Add hours'); - assert.equal(a.add('days', 1).date(), 13, 'Add date'); - assert.equal(a.add('weeks', 1).date(), 20, 'Add week'); - assert.equal(a.add('months', 1).month(), 10, 'Add month'); - assert.equal(a.add('years', 1).year(), 2012, 'Add year'); - assert.equal(b.add('days', '01').date(), 13, 'Add date'); - assert.equal(a.add('quarters', 1).month(), 1, 'Add quarter'); - }); - - test('add string short reverse args', function (assert) { - var a = moment(); - test.expectedDeprecations('moment().add(period, number)'); - - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add('ms', 50).milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('s', 1).seconds(), 9, 'Add seconds'); - assert.equal(a.add('m', 1).minutes(), 8, 'Add minutes'); - assert.equal(a.add('h', 1).hours(), 7, 'Add hours'); - assert.equal(a.add('d', 1).date(), 13, 'Add date'); - assert.equal(a.add('w', 1).date(), 20, 'Add week'); - assert.equal(a.add('M', 1).month(), 10, 'Add month'); - assert.equal(a.add('y', 1).year(), 2012, 'Add year'); - assert.equal(a.add('Q', 1).month(), 1, 'Add quarter'); - }); - - test('add string long', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add(50, 'millisecond').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add(1, 'second').seconds(), 9, 'Add seconds'); - assert.equal(a.add(1, 'minute').minutes(), 8, 'Add minutes'); - assert.equal(a.add(1, 'hour').hours(), 7, 'Add hours'); - assert.equal(a.add(1, 'day').date(), 13, 'Add date'); - assert.equal(a.add(1, 'week').date(), 20, 'Add week'); - assert.equal(a.add(1, 'month').month(), 10, 'Add month'); - assert.equal(a.add(1, 'year').year(), 2012, 'Add year'); - assert.equal(a.add(1, 'quarter').month(), 1, 'Add quarter'); - }); - - test('add string long singular', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add(50, 'milliseconds').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add(1, 'seconds').seconds(), 9, 'Add seconds'); - assert.equal(a.add(1, 'minutes').minutes(), 8, 'Add minutes'); - assert.equal(a.add(1, 'hours').hours(), 7, 'Add hours'); - assert.equal(a.add(1, 'days').date(), 13, 'Add date'); - assert.equal(a.add(1, 'weeks').date(), 20, 'Add week'); - assert.equal(a.add(1, 'months').month(), 10, 'Add month'); - assert.equal(a.add(1, 'years').year(), 2012, 'Add year'); - assert.equal(a.add(1, 'quarters').month(), 1, 'Add quarter'); - }); - - test('add string short', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add(50, 'ms').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add(1, 's').seconds(), 9, 'Add seconds'); - assert.equal(a.add(1, 'm').minutes(), 8, 'Add minutes'); - assert.equal(a.add(1, 'h').hours(), 7, 'Add hours'); - assert.equal(a.add(1, 'd').date(), 13, 'Add date'); - assert.equal(a.add(1, 'w').date(), 20, 'Add week'); - assert.equal(a.add(1, 'M').month(), 10, 'Add month'); - assert.equal(a.add(1, 'y').year(), 2012, 'Add year'); - assert.equal(a.add(1, 'Q').month(), 1, 'Add quarter'); - }); - - test('add strings string short reversed', function (assert) { - var a = moment(); - test.expectedDeprecations('moment().add(period, number)'); - - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add('ms', '50').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('s', '1').seconds(), 9, 'Add seconds'); - assert.equal(a.add('m', '1').minutes(), 8, 'Add minutes'); - assert.equal(a.add('h', '1').hours(), 7, 'Add hours'); - assert.equal(a.add('d', '1').date(), 13, 'Add date'); - assert.equal(a.add('w', '1').date(), 20, 'Add week'); - assert.equal(a.add('M', '1').month(), 10, 'Add month'); - assert.equal(a.add('y', '1').year(), 2012, 'Add year'); - assert.equal(a.add('Q', '1').month(), 1, 'Add quarter'); - }); - - test('subtract strings string short reversed', function (assert) { - var a = moment(); - test.expectedDeprecations('moment().subtract(period, number)'); - - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.subtract('ms', '50').milliseconds(), 450, 'Subtract milliseconds'); - assert.equal(a.subtract('s', '1').seconds(), 7, 'Subtract seconds'); - assert.equal(a.subtract('m', '1').minutes(), 6, 'Subtract minutes'); - assert.equal(a.subtract('h', '1').hours(), 5, 'Subtract hours'); - assert.equal(a.subtract('d', '1').date(), 11, 'Subtract date'); - assert.equal(a.subtract('w', '1').date(), 4, 'Subtract week'); - assert.equal(a.subtract('M', '1').month(), 8, 'Subtract month'); - assert.equal(a.subtract('y', '1').year(), 2010, 'Subtract year'); - assert.equal(a.subtract('Q', '1').month(), 5, 'Subtract quarter'); - }); - - test('add strings string short', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add('50', 'ms').milliseconds(), 550, 'Add milliseconds'); - assert.equal(a.add('1', 's').seconds(), 9, 'Add seconds'); - assert.equal(a.add('1', 'm').minutes(), 8, 'Add minutes'); - assert.equal(a.add('1', 'h').hours(), 7, 'Add hours'); - assert.equal(a.add('1', 'd').date(), 13, 'Add date'); - assert.equal(a.add('1', 'w').date(), 20, 'Add week'); - assert.equal(a.add('1', 'M').month(), 10, 'Add month'); - assert.equal(a.add('1', 'y').year(), 2012, 'Add year'); - assert.equal(a.add('1', 'Q').month(), 1, 'Add quarter'); - }); - - test('add no string with milliseconds default', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.add(50).milliseconds(), 550, 'Add milliseconds'); - }); - - test('subtract strings string short', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(500); - - assert.equal(a.subtract('50', 'ms').milliseconds(), 450, 'Subtract milliseconds'); - assert.equal(a.subtract('1', 's').seconds(), 7, 'Subtract seconds'); - assert.equal(a.subtract('1', 'm').minutes(), 6, 'Subtract minutes'); - assert.equal(a.subtract('1', 'h').hours(), 5, 'Subtract hours'); - assert.equal(a.subtract('1', 'd').date(), 11, 'Subtract date'); - assert.equal(a.subtract('1', 'w').date(), 4, 'Subtract week'); - assert.equal(a.subtract('1', 'M').month(), 8, 'Subtract month'); - assert.equal(a.subtract('1', 'y').year(), 2010, 'Subtract year'); - assert.equal(a.subtract('1', 'Q').month(), 5, 'Subtract quarter'); - }); - - test('add across DST', function (assert) { - // Detect Safari bug and bail. Hours on 13th March 2011 are shifted - // with 1 ahead. - if (new Date(2011, 2, 13, 5, 0, 0).getHours() !== 5) { - assert.expect(0); - return; - } - - var a = moment(new Date(2011, 2, 12, 5, 0, 0)), - b = moment(new Date(2011, 2, 12, 5, 0, 0)), - c = moment(new Date(2011, 2, 12, 5, 0, 0)), - d = moment(new Date(2011, 2, 12, 5, 0, 0)), - e = moment(new Date(2011, 2, 12, 5, 0, 0)); - a.add(1, 'days'); - b.add(24, 'hours'); - c.add(1, 'months'); - e.add(1, 'quarter'); - - assert.equal(a.hours(), 5, 'adding days over DST difference should result in the same hour'); - if (b.isDST() && !d.isDST()) { - assert.equal(b.hours(), 6, 'adding hours over DST difference should result in a different hour'); - } else if (!b.isDST() && d.isDST()) { - assert.equal(b.hours(), 4, 'adding hours over DST difference should result in a different hour'); - } else { - assert.equal(b.hours(), 5, 'adding hours over DST difference should result in a same hour if the timezone does not have daylight savings time'); - } - assert.equal(c.hours(), 5, 'adding months over DST difference should result in the same hour'); - assert.equal(e.hours(), 5, 'adding quarters over DST difference should result in the same hour'); - }); - - test('add decimal values of days and months', function (assert) { - assert.equal(moment([2016,3,3]).add(1.5, 'days').date(), 5, 'adding 1.5 days is rounded to adding 2 day'); - assert.equal(moment([2016,3,3]).add(-1.5, 'days').date(), 1, 'adding -1.5 days is rounded to adding -2 day'); - assert.equal(moment([2016,3,1]).add(-1.5, 'days').date(), 30, 'adding -1.5 days on first of month wraps around'); - assert.equal(moment([2016,3,3]).add(1.5, 'months').month(), 5, 'adding 1.5 months adds 2 months'); - assert.equal(moment([2016,3,3]).add(-1.5, 'months').month(), 1, 'adding -1.5 months adds -2 months'); - assert.equal(moment([2016,0,3]).add(-1.5, 'months').month(), 10, 'adding -1.5 months at start of year wraps back'); - assert.equal(moment([2016,3,3]).subtract(1.5, 'days').date(),1, 'subtract 1.5 days is rounded to subtract 2 day'); - assert.equal(moment([2016,3,2]).subtract(1.5, 'days').date(), 31, 'subtract 1.5 days subtracts 2 days'); - assert.equal(moment([2016,1,1]).subtract(1.1, 'days').date(), 31, 'subtract 1.1 days wraps to previous month'); - assert.equal(moment([2016,3,3]).subtract(-1.5, 'days').date(), 5, 'subtract -1.5 days is rounded to subtract -2 day'); - assert.equal(moment([2016,3,30]).subtract(-1.5, 'days').date(), 2, 'subtract -1.5 days on last of month wraps around'); - assert.equal(moment([2016,3,3]).subtract(1.5, 'months').month(), 1, 'subtract 1.5 months subtract 2 months'); - assert.equal(moment([2016,3,3]).subtract(-1.5, 'months').month(), 5, 'subtract -1.5 months subtract -2 month'); - assert.equal(moment([2016,11,31]).subtract(-1.5, 'months').month(),1, 'subtract -1.5 months at end of year wraps back'); - assert.equal(moment([2016, 0,1]).add(1.5, 'years').format('YYYY-MM-DD'), '2017-07-01', 'add 1.5 years adds 1 year six months'); - assert.equal(moment([2016, 0,1]).add(1.6, 'years').format('YYYY-MM-DD'), '2017-08-01', 'add 1.6 years becomes 1.6*12 = 19.2, round, 19 months'); - assert.equal(moment([2016,0,1]).add(1.1, 'quarters').format('YYYY-MM-DD'), '2016-04-01', 'add 1.1 quarters 1.1*3=3.3, round, 3 months'); - }); + 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('add/subtract ISO week', function (assert) { - assert.equal(moment([2016,3,15]).subtract(1, 'W').date(), 8, 'subtract 1 iso week short'); - assert.equal(moment([2016,3,15]).subtract(1, 'isoweek').date(), 8, 'subtract 1 iso week long singular'); - assert.equal(moment([2016,3,15]).subtract(1, 'isoweeks').date(), 8, 'subtract 1 iso weeks long'); + 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 + ); + } + }); - assert.equal(moment([2016,3,15]).add(1, 'W').date(), 22, 'add 1 iso week short'); - assert.equal(moment([2016,3,15]).add(1, 'isoweek').date(), 22, 'add 1 week long singular'); - assert.equal(moment([2016,3,15]).add(1, 'isoweeks').date(), 22, 'add 1 weeks long'); - }); + 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; -;(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'; + 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' + ); - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } + 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' + ); + } - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); - if (deprecationId === -1) { - throw new Error('Unexpected deprecation thrown name=' + - name + ' msg=' + msg); + for (i = 0; i < 12; ++i) { + m = moment([2015, i, 15, 18]); + tester('MMM'); + tester('MMM.'); + tester('MMMM'); + tester('MMMM.'); } - test._observedDeprecations[deprecationId] = 1; - }; - } + }); - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + test('weekday parsing correctness', function (assert) { + var i, m; - if (test._expectedDeprecations != null) { - var missedDeprecations = []; - each(test._expectedDeprecations, function (deprecationPattern, id) { - if (test._observedDeprecations[id] !== 1) { - missedDeprecations.push(deprecationPattern); + 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'); } - }); - if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + 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'); } - } - } - 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; + for (i = 0; i < 7; ++i) { + m = moment.utc([2015, 0, i + 1, 18]); + tester('dd'); + tester('ddd'); + tester('dddd'); } - } - return -1; + }); + + 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*/ - var test = QUnit.test; - - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); + 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, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + moment.locale('en'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); + defineCommonLocaleTests(name); } - // These tests are for locale independent features - - module$1('calendar'); + localeModule('yo'); - test('passing a function', function (assert) { - var a = moment().hours(13).minutes(0).seconds(0); - assert.equal(moment(a).calendar(null, { - 'sameDay': function () { - return 'h:mmA'; - } - }), '1:00PM', 'should equate'); - }); + test('parse', function (assert) { + var tests = 'Sẹ́rẹ́ Sẹ́r_Èrèlè Èrl_Ẹrẹ̀nà Ẹrn_Ìgbé Ìgb_Èbibi Èbi_Òkùdu Òkù_Agẹmo Agẹ_Ògún Ògú_Owewe Owe_Ọ̀wàrà Ọ̀wà_Bélú Bél_Ọ̀pẹ̀̀ Ọ̀pẹ̀̀'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); + } - test('extending calendar options', function (assert) { - var calendarFormat = moment.calendarFormat; + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } - moment.calendarFormat = function (myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - var nextMonth = now.clone().add(1, 'month'); - - var retVal = 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'; - return retVal; - }; + 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); - moment.updateLocale('en', { - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - thisMonth : '[This month on the] Do', - nextMonth : '[Next month on the] Do', - sameElse : 'L' - } - }); - var a = moment('2016-01-01').add(28, 'days'); - var b = moment('2016-01-01').add(1, 'month'); - try { - assert.equal(a.calendar('2016-01-01'), 'This month on the 29th', 'Ad hoc calendar format for this month'); - assert.equal(b.calendar('2016-01-01'), 'Next month on the 1st', 'Ad hoc calendar format for next month'); - assert.equal(a.locale('fr').calendar('2016-01-01'), a.locale('fr').format('L'), 'French falls back to default because thisMonth is not defined in that locale'); - } finally { - moment.calendarFormat = calendarFormat; - moment.updateLocale('en', null); + 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); } }); -}))); - - -;(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) + test('format', function (assert) { + var a = [ + [ + 'dddd, MMMM Do YYYY, h:mm:ss a', + 'Àìkú, Èrèlè ọjọ́ 14 2010, 3:25:50 pm', + ], + ['ddd, hA', 'Àìk, 3PM'], + ['M Mo MM MMMM MMM', '2 ọjọ́ 2 02 Èrèlè Èrl'], + ['YYYY YY', '2010 10'], + ['D Do DD', '14 ọjọ́ 14 14'], + ['d do dddd ddd dd', '0 ọjọ́ 0 Àìkú Àìk Àì'], + ['DDD DDDo DDDD', '45 ọjọ́ 45 045'], + ['w wo ww', '6 ọjọ́ 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 ọjọ́ 45 day of the year'], + ['LTS', '3:25:50 PM'], + ['L', '14/02/2010'], + ['LL', '14 Èrèlè 2010'], + ['LLL', '14 Èrèlè 2010 3:25 PM'], + ['LLLL', 'Àìkú, 14 Èrèlè 2010 3:25 PM'], + ['l', '14/2/2010'], + ['ll', '14 Èrl 2010'], + ['lll', '14 Èrl 2010 3:25 PM'], + ['llll', 'Àìk, 14 Èrl 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('format ordinal', function (assert) { + assert.equal(moment([2011, 0, 1]).format('DDDo'), 'ọjọ́ 1', 'ọjọ́ 1'); + assert.equal(moment([2011, 0, 2]).format('DDDo'), 'ọjọ́ 2', 'ọjọ́ 2'); + assert.equal(moment([2011, 0, 3]).format('DDDo'), 'ọjọ́ 3', 'ọjọ́ 3'); + assert.equal(moment([2011, 0, 4]).format('DDDo'), 'ọjọ́ 4', 'ọjọ́ 4'); + assert.equal(moment([2011, 0, 5]).format('DDDo'), 'ọjọ́ 5', 'ọjọ́ 5'); + assert.equal(moment([2011, 0, 6]).format('DDDo'), 'ọjọ́ 6', 'ọjọ́ 6'); + assert.equal(moment([2011, 0, 7]).format('DDDo'), 'ọjọ́ 7', 'ọjọ́ 7'); + assert.equal(moment([2011, 0, 8]).format('DDDo'), 'ọjọ́ 8', 'ọjọ́ 8'); + assert.equal(moment([2011, 0, 9]).format('DDDo'), 'ọjọ́ 9', 'ọjọ́ 9'); + assert.equal(moment([2011, 0, 10]).format('DDDo'), 'ọjọ́ 10', 'ọjọ́ 10'); + + assert.equal(moment([2011, 0, 11]).format('DDDo'), 'ọjọ́ 11', 'ọjọ́ 11'); + assert.equal(moment([2011, 0, 12]).format('DDDo'), 'ọjọ́ 12', 'ọjọ́ 12'); + assert.equal(moment([2011, 0, 13]).format('DDDo'), 'ọjọ́ 13', 'ọjọ́ 13'); + assert.equal(moment([2011, 0, 14]).format('DDDo'), 'ọjọ́ 14', 'ọjọ́ 14'); + assert.equal(moment([2011, 0, 15]).format('DDDo'), 'ọjọ́ 15', 'ọjọ́ 15'); + assert.equal(moment([2011, 0, 16]).format('DDDo'), 'ọjọ́ 16', 'ọjọ́ 16'); + assert.equal(moment([2011, 0, 17]).format('DDDo'), 'ọjọ́ 17', 'ọjọ́ 17'); + assert.equal(moment([2011, 0, 18]).format('DDDo'), 'ọjọ́ 18', 'ọjọ́ 18'); + assert.equal(moment([2011, 0, 19]).format('DDDo'), 'ọjọ́ 19', 'ọjọ́ 19'); + assert.equal(moment([2011, 0, 20]).format('DDDo'), 'ọjọ́ 20', 'ọjọ́ 20'); + + assert.equal(moment([2011, 0, 21]).format('DDDo'), 'ọjọ́ 21', 'ọjọ́ 21'); + assert.equal(moment([2011, 0, 22]).format('DDDo'), 'ọjọ́ 22', 'ọjọ́ 22'); + assert.equal(moment([2011, 0, 23]).format('DDDo'), 'ọjọ́ 23', 'ọjọ́ 23'); + assert.equal(moment([2011, 0, 24]).format('DDDo'), 'ọjọ́ 24', 'ọjọ́ 24'); + assert.equal(moment([2011, 0, 25]).format('DDDo'), 'ọjọ́ 25', 'ọjọ́ 25'); + assert.equal(moment([2011, 0, 26]).format('DDDo'), 'ọjọ́ 26', 'ọjọ́ 26'); + assert.equal(moment([2011, 0, 27]).format('DDDo'), 'ọjọ́ 27', 'ọjọ́ 27'); + assert.equal(moment([2011, 0, 28]).format('DDDo'), 'ọjọ́ 28', 'ọjọ́ 28'); + assert.equal(moment([2011, 0, 29]).format('DDDo'), 'ọjọ́ 29', 'ọjọ́ 29'); + assert.equal(moment([2011, 0, 30]).format('DDDo'), 'ọjọ́ 30', 'ọjọ́ 30'); + + assert.equal(moment([2011, 0, 31]).format('DDDo'), 'ọjọ́ 31', 'ọjọ́ 31'); + }); + + test('format month', function (assert) { + var expected = 'Sẹ́rẹ́ Sẹ́r_Èrèlè Èrl_Ẹrẹ̀nà Ẹrn_Ìgbé Ìgb_Èbibi Èbi_Òkùdu Òkù_Agẹmo Agẹ_Ògún Ògú_Owewe Owe_Ọ̀wàrà Ọ̀wà_Bélú Bél_Ọ̀pẹ̀̀ Ọ̀pẹ̀̀'.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 = 'Àìkú Àìk Àì_Ajé Ajé Aj_Ìsẹ́gun Ìsẹ́ Ìs_Ọjọ́rú Ọjr Ọr_Ọjọ́bọ Ọjb Ọb_Ẹtì Ẹtì Ẹt_Àbámẹ́ta Àbá Àb'.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), + 'ìsẹjú aayá die', + '44 seconds = ìsẹjú aayá die' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 }), true), + 'ìsẹjú kan', + '45 seconds = ìsẹjú kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + 'ìsẹjú kan', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + 'ìsẹjú 2', + '90 seconds = ìsẹjú 2' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 }), true), + 'ìsẹjú 44', + 'ìsẹjú 44 = ìsẹjú 44' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 }), true), + 'wákati kan', + 'ìsẹjú 45 = wákati kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + 'wákati kan', + 'ìsẹjú 89 = wákati kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 }), true), + 'wákati 2', + 'ìsẹjú 90 = wákati 2' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 }), true), + 'wákati 5', + 'wákati 5 = wákati 5' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 }), true), + 'wákati 21', + 'wákati 21 = wákati 21' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 }), true), + 'ọjọ́ kan', + '22 wákati = ọjọ́ kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + 'ọjọ́ kan', + '35 wákati = ọjọ́ kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 }), true), + 'ọjọ́ 2', + 'wákati 36 = ọjọ́ 2' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 }), true), + 'ọjọ́ kan', + '1 = ọjọ́ kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 }), true), + 'ọjọ́ 5', + 'ọjọ́ 5 = ọjọ́ 5' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 }), true), + 'ọjọ́ 25', + 'ọjọ́ 25 = ọjọ́ 25' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 }), true), + 'osù kan', + 'ọjọ́ 26 = osù kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + 'osù kan', + 'ọjọ́ 30 = osù kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + 'osù kan', + 'ọjọ́ 43 = osù kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 }), true), + 'osù 2', + 'ọjọ́ 46 = osù 2' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 }), true), + 'osù 2', + 'ọjọ́ 75 = osù 2' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 }), true), + 'osù 3', + 'ọjọ́ 76 = osù 3' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 }), true), + 'osù kan', + 'osù 1 = osù kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 }), true), + 'osù 5', + 'osù 5 = osù 5' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 }), true), + 'ọdún kan', + 'ọjọ 345 = ọdún kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 }), true), + 'ọdún 2', + 'ọjọ 548 = ọdún 2' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 }), true), + 'ọdún kan', + 'ọdún 1 = ọdún kan' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + 'ọdún 5', + 'ọdún 5 = ọdún 5' + ); + }); + + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), 'ní ìsẹjú aayá die', 'prefix'); + assert.equal(moment(0).from(30000), 'ìsẹjú aayá die kọjá', 'suffix'); + }); + + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + 'ìsẹjú aayá die kọjá', + 'now from now should display as in the past' + ); + }); + + test('fromNow', function (assert) { + assert.equal( + moment().add({ s: 30 }).fromNow(), + 'ní ìsẹjú aayá die', + 'ní ìsẹjú aayá die' + ); + assert.equal(moment().add({ d: 5 }).fromNow(), 'ní ọjọ́ 5', 'ní ọjọ́ 5'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + assert.equal( + moment(a).calendar(), + 'Ònì ni 12:00 PM', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Ònì ni 12:25 PM', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Ònì ni 1:00 PM', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Ọ̀la ni 12:00 PM', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Ònì ni 11:00 AM', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Àna ni 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( + m.calendar(), + m.format("dddd [Ọsẹ̀ tón'bọ] [ni] LT"), + 'Today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format("dddd [Ọsẹ̀ tón'bọ] [ni] LT"), + 'Today + ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format("dddd [Ọsẹ̀ tón'bọ] [ni] 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 [Ọsẹ̀ tólọ́] [ni] LT'), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('dddd [Ọsẹ̀ tólọ́] [ni] LT'), + 'Today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('dddd [Ọsẹ̀ tólọ́] [ni] 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' + ); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 ọjọ́ 52', + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('w ww wo'), + '1 01 ọjọ́ 1', + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '1 01 ọjọ́ 1', + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('w ww wo'), + '2 02 ọjọ́ 2', + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '2 02 ọjọ́ 2', + 'Jan 15 2012 should be week 2' + ); + }); + +}))); + + + +;(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) { @@ -65695,27 +112456,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -65725,8 +112491,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -65739,7 +112507,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -65748,1277 +112519,1573 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); + 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; + } } - module$1('create'); - - test('array', function (assert) { - assert.ok(moment([2010]).toDate() instanceof Date, '[2010]'); - assert.ok(moment([2010, 1]).toDate() instanceof Date, '[2010, 1]'); - assert.ok(moment([2010, 1, 12]).toDate() instanceof Date, '[2010, 1, 12]'); - assert.ok(moment([2010, 1, 12, 1]).toDate() instanceof Date, '[2010, 1, 12, 1]'); - assert.ok(moment([2010, 1, 12, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1]'); - assert.ok(moment([2010, 1, 12, 1, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1, 1]'); - assert.ok(moment([2010, 1, 12, 1, 1, 1, 1]).toDate() instanceof Date, '[2010, 1, 12, 1, 1, 1, 1]'); - assert.equal(+moment(new Date(2010, 1, 14, 15, 25, 50, 125)), +moment([2010, 1, 14, 15, 25, 50, 125]), 'constructing with array === constructing with new Date()'); - }); - - test('array with invalid arguments', function (assert) { - assert.ok(!moment([2010, null, null]).isValid(), '[2010, null, null]'); - assert.ok(!moment([1945, null, null]).isValid(), '[1945, null, null] (pre-1970)'); - }); - - test('array copying', function (assert) { - var importantArray = [2009, 11]; - moment(importantArray); - assert.deepEqual(importantArray, [2009, 11], 'initializer should not mutate the original array'); - }); + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } - test('object', function (assert) { - var fmt = 'YYYY-MM-DD HH:mm:ss.SSS', - tests = [ - [{year: 2010}, '2010-01-01 00:00:00.000'], - [{year: 2010, month: 1}, '2010-02-01 00:00:00.000'], - [{year: 2010, month: 1, day: 12}, '2010-02-12 00:00:00.000'], - [{year: 2010, month: 1, date: 12}, '2010-02-12 00:00:00.000'], - [{year: 2010, month: 1, day: 12, hours: 1}, '2010-02-12 01:00:00.000'], - [{year: 2010, month: 1, date: 12, hours: 1}, '2010-02-12 01:00:00.000'], - [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1}, '2010-02-12 01:01:00.000'], - [{year: 2010, month: 1, date: 12, hours: 1, minutes: 1}, '2010-02-12 01:01:00.000'], - [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1}, '2010-02-12 01:01:01.000'], - [{year: 2010, month: 1, day: 12, hours: 1, minutes: 1, seconds: 1, milliseconds: 1}, '2010-02-12 01:01:01.001'], - [{years: 2010, months: 1, days: 14, hours: 15, minutes: 25, seconds: 50, milliseconds: 125}, '2010-02-14 15:25:50.125'], - [{year: 2010, month: 1, day: 14, hour: 15, minute: 25, second: 50, millisecond: 125}, '2010-02-14 15:25:50.125'], - [{y: 2010, M: 1, d: 14, h: 15, m: 25, s: 50, ms: 125}, '2010-02-14 15:25:50.125'] - ], i; - for (i = 0; i < tests.length; ++i) { - assert.equal(moment(tests[i][0]).format(fmt), tests[i][1]); - } - }); + 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('multi format array copying', function (assert) { - var importantArray = ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY']; - moment('1999-02-13', importantArray); - assert.deepEqual(importantArray, ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'], 'initializer should not mutate the original array'); - }); + 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('number', function (assert) { - assert.ok(moment(1000).toDate() instanceof Date, '1000'); - assert.equal(moment(1000).valueOf(), 1000, 'asserting valueOf'); - assert.equal(moment.utc(1000).valueOf(), 1000, 'asserting valueOf'); - }); + 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('unix', function (assert) { - assert.equal(moment.unix(1).valueOf(), 1000, '1 unix timestamp == 1000 Date.valueOf'); - assert.equal(moment(1000).unix(), 1, '1000 Date.valueOf == 1 unix timestamp'); - assert.equal(moment.unix(1000).valueOf(), 1000000, '1000 unix timestamp == 1000000 Date.valueOf'); - assert.equal(moment(1500).unix(), 1, '1500 Date.valueOf == 1 unix timestamp'); - assert.equal(moment(1900).unix(), 1, '1900 Date.valueOf == 1 unix timestamp'); - assert.equal(moment(2100).unix(), 2, '2100 Date.valueOf == 2 unix timestamp'); - assert.equal(moment(1333129333524).unix(), 1333129333, '1333129333524 Date.valueOf == 1333129333 unix timestamp'); - assert.equal(moment(1333129333524000).unix(), 1333129333524, '1333129333524000 Date.valueOf == 1333129333524 unix timestamp'); - }); + 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', function (assert) { - assert.ok(moment(new Date()).toDate() instanceof Date, 'new Date()'); - assert.equal(moment(new Date(2016,0,1), 'YYYY-MM-DD').format('YYYY-MM-DD'), '2016-01-01', 'If date is provided, format string is ignored'); - }); + 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('date with a format as an array', function (assert) { - var tests = [ - new Date(2016, 9, 27), - new Date(2016, 9, 28), - new Date(2016, 9, 29), - new Date(2016, 9, 30), - new Date(2016, 9, 31) - ], i; + test('month parsing correctness', function (assert) { + var i, m; - for (i = 0; i < tests.length; i++) { - assert.equal(moment(tests[i]).format(), moment(tests[i], ['MM/DD/YYYY'], false).format(), 'Passing date with a format array should still return the correct date'); - } - }); + 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' + ); - test('date mutation', function (assert) { - var a = new Date(); - assert.ok(moment(a).toDate() !== a, 'the date moment uses should not be the date passed in'); - }); + 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' + ); + } - test('moment', function (assert) { - assert.ok(moment(moment()).toDate() instanceof Date, 'moment(moment())'); - assert.ok(moment(moment(moment())).toDate() instanceof Date, 'moment(moment(moment()))'); - }); + for (i = 0; i < 12; ++i) { + m = moment([2015, i, 15, 18]); + tester('MMM'); + tester('MMM.'); + tester('MMMM'); + tester('MMMM.'); + } + }); - test('cloning moment should only copy own properties', function (assert) { - assert.ok(!moment().clone().hasOwnProperty('month'), 'Should not clone prototype methods'); - }); + test('weekday parsing correctness', function (assert) { + var i, m; - test('cloning moment works with weird clones', function (assert) { - var extend = function (a, b) { - var i; - for (i in b) { - a[i] = b[i]; + 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'); } - return a; - }, - now = moment(), - nowu = moment.utc(); - assert.equal(+extend({}, now).clone(), +now, 'cloning extend-ed now is now'); - assert.equal(+extend({}, nowu).clone(), +nowu, 'cloning extend-ed utc now is utc now'); - }); + for (i = 0; i < 7; ++i) { + m = moment.utc([2015, 0, i + 1, 18]); + tester('dd'); + tester('ddd'); + tester('dddd'); + } + }); - test('cloning respects moment.momentProperties', function (assert) { - var m = moment(); + 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' + ); + }); - assert.equal(m.clone()._special, undefined, 'cloning ignores extra properties'); - m._special = 'bacon'; - moment.momentProperties.push('_special'); - assert.equal(m.clone()._special, 'bacon', 'cloning respects momentProperties'); - moment.momentProperties.pop(); - }); + 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' + ); + }); + } - test('undefined', function (assert) { - assert.ok(moment().toDate() instanceof Date, 'undefined'); - }); + /*global QUnit:false*/ - test('iso with bad input', function (assert) { - assert.ok(!moment('a', moment.ISO_8601).isValid(), 'iso parsing with invalid string'); - assert.ok(!moment('a', moment.ISO_8601, true).isValid(), 'iso parsing with invalid string, strict'); - }); - - test('iso format 24hrs', function (assert) { - assert.equal(moment('2014-01-01T24:00:00.000').format('YYYY-MM-DD[T]HH:mm:ss.SSS'), - '2014-01-02T00:00:00.000', 'iso format with 24:00 localtime'); - assert.equal(moment.utc('2014-01-01T24:00:00.000').format('YYYY-MM-DD[T]HH:mm:ss.SSS'), - '2014-01-02T00:00:00.000', 'iso format with 24:00 utc'); - }); - - test('string without format - json', function (assert) { - assert.equal(moment('Date(1325132654000)').valueOf(), 1325132654000, 'Date(1325132654000)'); - assert.equal(moment('Date(-1325132654000)').valueOf(), -1325132654000, 'Date(-1325132654000)'); - assert.equal(moment('/Date(1325132654000)/').valueOf(), 1325132654000, '/Date(1325132654000)/'); - assert.equal(moment('/Date(1325132654000+0700)/').valueOf(), 1325132654000, '/Date(1325132654000+0700)/'); - assert.equal(moment('/Date(1325132654000-0700)/').valueOf(), 1325132654000, '/Date(1325132654000-0700)/'); - }); - - test('string with format dropped am/pm bug', function (assert) { - moment.locale('en'); - - assert.equal(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); - assert.equal(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); - assert.equal(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), '05/01/2012', 'should not break if am/pm is left off from the parsing tokens'); - - assert.ok(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').isValid()); - assert.ok(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').isValid()); - assert.ok(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').isValid()); - }); - - test('empty string with formats', function (assert) { - assert.equal(moment('', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - assert.equal(moment(' ', 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - assert.equal(moment(' ', 'DD').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - assert.equal(moment(' ', ['MM', 'DD']).format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - - assert.ok(!moment('', 'MM').isValid()); - assert.ok(!moment(' ', 'MM').isValid()); - assert.ok(!moment(' ', 'DD').isValid()); - assert.ok(!moment(' ', ['MM', 'DD']).isValid()); - }); + 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); + } - test('undefined argument with formats', function (assert) { - assert.equal(moment(undefined, 'MM').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - assert.equal(moment(undefined, 'DD').format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); - assert.equal(moment(undefined, ['MM', 'DD']).format('YYYY-MM-DD HH:mm:ss'), 'Invalid date'); + localeModule('zh-cn'); - assert.ok(!moment(undefined, 'MM').isValid()); - assert.ok(!moment(undefined, 'MM').isValid()); - assert.ok(!moment(undefined, 'DD').isValid()); - assert.ok(!moment(undefined, ['MM', 'DD']).isValid()); - }); + test('parse', function (assert) { + var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split( + '_' + ), + i; - test('defaulting to current date', function (assert) { - var now = moment(); - assert.equal(moment('12:13:14', 'hh:mm:ss').format('YYYY-MM-DD hh:mm:ss'), - now.clone().hour(12).minute(13).second(14).format('YYYY-MM-DD hh:mm:ss'), - 'given only time default to current date'); - assert.equal(moment('05', 'DD').format('YYYY-MM-DD'), - now.clone().date(5).format('YYYY-MM-DD'), - 'given day of month default to current month, year'); - assert.equal(moment('05', 'MM').format('YYYY-MM-DD'), - now.clone().month(4).date(1).format('YYYY-MM-DD'), - 'given month default to current year'); - assert.equal(moment('1996', 'YYYY').format('YYYY-MM-DD'), - now.clone().year(1996).month(0).date(1).format('YYYY-MM-DD'), - 'given year do not default'); - }); + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); + } - test('matching am/pm', function (assert) { - assert.equal(moment('2012-09-03T03:00PM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for PM'); - assert.equal(moment('2012-09-03T03:00P.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P.M.'); - assert.equal(moment('2012-09-03T03:00P', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for P'); - assert.equal(moment('2012-09-03T03:00pm', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for pm'); - assert.equal(moment('2012-09-03T03:00p.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p.m.'); - assert.equal(moment('2012-09-03T03:00p', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00PM', 'am/pm should parse correctly for p'); + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } - assert.equal(moment('2012-09-03T03:00AM', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for AM'); - assert.equal(moment('2012-09-03T03:00A.M.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A.M.'); - assert.equal(moment('2012-09-03T03:00A', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for A'); - assert.equal(moment('2012-09-03T03:00am', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for am'); - assert.equal(moment('2012-09-03T03:00a.m.', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a.m.'); - assert.equal(moment('2012-09-03T03:00a', 'YYYY-MM-DDThh:mmA').format('YYYY-MM-DDThh:mmA'), '2012-09-03T03:00AM', 'am/pm should parse correctly for a'); + 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); - assert.equal(moment('5:00p.m.March 4 2012', 'h:mmAMMMM D YYYY').format('YYYY-MM-DDThh:mmA'), '2012-03-04T05:00PM', 'am/pm should parse correctly before month names'); + 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('string with format', function (assert) { - moment.locale('en'); + test('format', function (assert) { var a = [ - ['YYYY-Q', '2014-4'], - ['MM-DD-YYYY', '12-02-1999'], - ['DD-MM-YYYY', '12-02-1999'], - ['DD/MM/YYYY', '12/02/1999'], - ['DD_MM_YYYY', '12_02_1999'], - ['DD:MM:YYYY', '12:02:1999'], - ['D-M-YY', '2-2-99'], - ['YY', '99'], - ['DDD-YYYY', '300-1999'], - ['DD-MM-YYYY h:m:s', '12-02-1999 2:45:10'], - ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 am'], - ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 pm'], - ['h:mm a', '12:00 pm'], - ['h:mm a', '12:30 pm'], - ['h:mm a', '12:00 am'], - ['h:mm a', '12:30 am'], - ['HH:mm', '12:00'], - ['kk:mm', '12:00'], - ['YYYY-MM-DDTHH:mm:ss', '2011-11-11T11:11:11'], - ['MM-DD-YYYY [M]', '12-02-1999 M'], - ['ddd MMM DD HH:mm:ss YYYY', 'Tue Apr 07 22:52:51 2009'], - ['HH:mm:ss', '12:00:00'], - ['HH:mm:ss', '12:30:00'], - ['HH:mm:ss', '00:00:00'], - ['HH:mm:ss S', '00:30:00 1'], - ['HH:mm:ss SS', '00:30:00 12'], - ['HH:mm:ss SSS', '00:30:00 123'], - ['HH:mm:ss S', '00:30:00 7'], - ['HH:mm:ss SS', '00:30:00 78'], - ['HH:mm:ss SSS', '00:30:00 789'], - ['kk:mm:ss', '12:00:00'], - ['kk:mm:ss', '12:30:00'], - ['kk:mm:ss', '24:00:00'], - ['kk:mm:ss S', '24:30:00 1'], - ['kk:mm:ss SS', '24:30:00 12'], - ['kk:mm:ss SSS', '24:30:00 123'], - ['kk:mm:ss S', '24:30:00 7'], - ['kk:mm:ss SS', '24:30:00 78'], - ['kk:mm:ss SSS', '24:30:00 789'], - ['X', '1234567890'], - ['x', '1234567890123'], - ['LT', '12:30 AM'], - ['LTS', '12:30:29 AM'], - ['L', '09/02/1999'], - ['l', '9/2/1999'], - ['LL', 'September 2, 1999'], - ['ll', 'Sep 2, 1999'], - ['LLL', 'September 2, 1999 12:30 AM'], - ['lll', 'Sep 2, 1999 12:30 AM'], - ['LLLL', 'Thursday, September 2, 1999 12:30 AM'], - ['llll', 'Thu, Sep 2, 1999 12:30 AM'] - ], - m, - i; + [ + 'dddd, MMMM Do YYYY, a h:mm:ss', + '星期日, 二月 14日 2010, 下午 3:25:50', + ], + ['ddd, Ah', '周日, 下午3'], + ['M Mo MM MMMM MMM', '2 2月 02 二月 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', '6 6周 06'], + ['h hh', '3 03'], + ['H HH', '15 15'], + ['m mm', '25 25'], + ['s ss', '50 50'], + ['a A', '下午 下午'], + ['[这年的第] DDDo', '这年的第 45日'], + ['LTS', '15:25:50'], + ['L', '2010/02/14'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日下午3点25分'], + ['LLLL', '2010年2月14日星期日下午3点25分'], + ['l', '2010/2/14'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日 15:25'], + ['llll', '2010年2月14日星期日 15:25'], + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; for (i = 0; i < a.length; i++) { - m = moment(a[i][1], a[i][0]); - assert.ok(m.isValid()); - assert.equal(m.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } }); - test('2 digit year with YYYY format', function (assert) { - assert.equal(moment('9/2/99', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1999', 'D/M/YYYY ---> 9/2/99'); - assert.equal(moment('9/2/1999', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1999', 'D/M/YYYY ---> 9/2/1999'); - assert.equal(moment('9/2/68', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/2068', 'D/M/YYYY ---> 9/2/68'); - assert.equal(moment('9/2/69', 'D/M/YYYY').format('DD/MM/YYYY'), '09/02/1969', 'D/M/YYYY ---> 9/2/69'); - }); - - test('unix timestamp format', function (assert) { - var formats = ['X', 'X.S', 'X.SS', 'X.SSS'], i, format; + test('format month', function (assert) { + var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split( + '_' + ), + i; - for (i = 0; i < formats.length; i++) { - format = formats[i]; - assert.equal(moment('1234567890', format).valueOf(), 1234567890 * 1000, format + ' matches timestamp without milliseconds'); - assert.equal(moment('1234567890.1', format).valueOf(), 1234567890 * 1000 + 100, format + ' matches timestamp with deciseconds'); - assert.equal(moment('1234567890.12', format).valueOf(), 1234567890 * 1000 + 120, format + ' matches timestamp with centiseconds'); - assert.equal(moment('1234567890.123', format).valueOf(), 1234567890 * 1000 + 123, format + ' matches timestamp with milliseconds'); + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); - test('unix offset milliseconds', function (assert) { - assert.equal(moment('1234567890123', 'x').valueOf(), 1234567890123, 'x matches unix offset in milliseconds'); - }); - - test('milliseconds format', function (assert) { - assert.equal(moment('1', 'S').get('ms'), 100, 'deciseconds'); - // assert.equal(moment('10', 'S', true).isValid(), false, 'deciseconds with two digits'); - // assert.equal(moment('1', 'SS', true).isValid(), false, 'centiseconds with one digits'); - assert.equal(moment('12', 'SS').get('ms'), 120, 'centiseconds'); - // assert.equal(moment('123', 'SS', true).isValid(), false, 'centiseconds with three digits'); - assert.equal(moment('123', 'SSS').get('ms'), 123, 'milliseconds'); - assert.equal(moment('1234', 'SSSS').get('ms'), 123, 'milliseconds with SSSS'); - assert.equal(moment('123456789101112', 'SSSS').get('ms'), 123, 'milliseconds with SSSS'); - }); - - test('string with format no separators', function (assert) { - moment.locale('en'); - var a = [ - ['MMDDYYYY', '12021999'], - ['DDMMYYYY', '12021999'], - ['YYYYMMDD', '19991202'], - ['DDMMMYYYY', '10Sep2001'] - ], i; + test('format week', function (assert) { + var expected = '星期日 周日 日_星期一 周一 一_星期二 周二 二_星期三 周三 三_星期四 周四 四_星期五 周五 五_星期六 周六 六'.split( + '_' + ), + i; - for (i = 0; i < a.length; i++) { - assert.equal(moment(a[i][1], a[i][0]).format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd dd'), + expected[i], + expected[i] + ); } }); - test('string with format (timezone)', function (assert) { - assert.equal(moment('5 -0700', 'H ZZ').toDate().getUTCHours(), 12, 'parse hours \'5 -0700\' ---> \'H ZZ\''); - assert.equal(moment('5 -07:00', 'H Z').toDate().getUTCHours(), 12, 'parse hours \'5 -07:00\' ---> \'H Z\''); - assert.equal(moment('5 -0730', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours \'5 -0730\' ---> \'H ZZ\''); - assert.equal(moment('5 -07:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours \'5 -07:0\' ---> \'H Z\''); - assert.equal(moment('5 +0100', 'H ZZ').toDate().getUTCHours(), 4, 'parse hours \'5 +0100\' ---> \'H ZZ\''); - assert.equal(moment('5 +01:00', 'H Z').toDate().getUTCHours(), 4, 'parse hours \'5 +01:00\' ---> \'H Z\''); - assert.equal(moment('5 +0130', 'H ZZ').toDate().getUTCMinutes(), 30, 'parse hours \'5 +0130\' ---> \'H ZZ\''); - assert.equal(moment('5 +01:30', 'H Z').toDate().getUTCMinutes(), 30, 'parse hours \'5 +01:30\' ---> \'H Z\''); + 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), + '1 分钟', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + '1 分钟', + '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), + '1 小时', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + '1 小时', + '89 minutes = an hour' + ); + assert.equal( + 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), + '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), + '1 天', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '1 天', + '35 hours = a day' + ); + assert.equal( + 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), + '1 天', + '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), + '1 个月', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '1 个月', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + '1 个月', + '43 days = a month' + ); + assert.equal( + 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), + '2 个月', + '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 个月', + '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), + '1 年', + '345 days = a year' + ); + assert.equal( + 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), + '1 年', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 年', + '5 years = 5 years' + ); }); - test('string with format (timezone offset)', function (assert) { - var a, b, c, d, e, f; - a = new Date(Date.UTC(2011, 0, 1, 1)); - b = moment('2011 1 1 0 -01:00', 'YYYY MM DD HH Z'); - assert.equal(a.getHours(), b.hours(), 'date created with utc == parsed string with timezone offset'); - assert.equal(+a, +b, 'date created with utc == parsed string with timezone offset'); - c = moment('2011 2 1 10 -05:00', 'YYYY MM DD HH Z'); - d = moment('2011 2 1 8 -07:00', 'YYYY MM DD HH Z'); - assert.equal(c.hours(), d.hours(), '10 am central time == 8 am pacific time'); - e = moment.utc('20 07 2012 17:15:00', 'DD MM YYYY HH:mm:ss'); - f = moment.utc('20 07 2012 10:15:00 -0700', 'DD MM YYYY HH:mm:ss ZZ'); - assert.equal(e.hours(), f.hours(), 'parse timezone offset in utc'); + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), '几秒后', 'prefix'); + assert.equal(moment(0).from(30000), '几秒前', 'suffix'); }); - test('string with timezone around start of year', function (assert) { - assert.equal(moment('2000-01-01T00:00:00.000+01:00').toISOString(), '1999-12-31T23:00:00.000Z', '+1:00 around 2000'); - assert.equal(moment('2000-01-01T00:00:00.000-01:00').toISOString(), '2000-01-01T01:00:00.000Z', '-1:00 around 2000'); - assert.equal(moment('1970-01-01T00:00:00.000+01:00').toISOString(), '1969-12-31T23:00:00.000Z', '+1:00 around 1970'); - assert.equal(moment('1970-01-01T00:00:00.000-01:00').toISOString(), '1970-01-01T01:00:00.000Z', '-1:00 around 1970'); - assert.equal(moment('1200-01-01T00:00:00.000+01:00').toISOString(), '1199-12-31T23:00:00.000Z', '+1:00 around 1200'); - assert.equal(moment('1200-01-01T00:00:00.000-01:00').toISOString(), '1200-01-01T01:00:00.000Z', '-1:00 around 1200'); + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + '几秒前', + 'now from now should display as in the past' + ); }); - test('string with array of formats', function (assert) { - var thursdayForCurrentWeek = moment() - .day(4) - .format('YYYY MM DD'); - - assert.equal(moment('11-02-1999', ['MM-DD-YYYY', 'DD-MM-YYYY']).format('MM DD YYYY'), '11 02 1999', 'switching month and day'); - assert.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); - assert.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); - - assert.equal(moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year last'); - assert.equal(moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), '02 11 1999', 'year first'); - assert.equal(moment('02-11-1999', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year last'); - assert.equal(moment('1999-02-11', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), '02 11 1999', 'year first'); - - assert.equal(moment('13-11-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'second must be month'); - assert.equal(moment('11-13-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '11 13 1999', 'first must be month'); - assert.equal(moment('01-02-2000', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, month first format'); - assert.equal(moment('02-01-2000', ['DD/MM/YYYY', 'MM/DD/YYYY']).format('MM DD YYYY'), '01 02 2000', 'either can be a month, day first format'); - - assert.equal(moment('11-02-10', ['MM/DD/YY', 'YY MM DD', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'all unparsed substrings have influence on format penalty'); - assert.equal(moment('11-02-10', ['MM-DD-YY HH:mm', 'YY MM DD']).format('MM DD YYYY'), '02 10 2011', 'prefer formats without extra tokens'); - assert.equal(moment('11-02-10 junk', ['MM-DD-YY', 'YY.MM.DD [junk]']).format('MM DD YYYY'), '02 10 2011', 'prefer formats that dont result in extra characters'); - assert.equal(moment('11-22-10', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), '10 22 2011', 'prefer valid results'); - - assert.equal(moment('gibberish', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), 'Invalid date', 'doest throw for invalid strings'); - assert.equal(moment('gibberish', []).format('MM DD YYYY'), 'Invalid date', 'doest throw for an empty array'); - - // https://github.com/moment/moment/issues/1143 - assert.equal(moment( - 'System Administrator and Database Assistant (7/1/2011), System Administrator and Database Assistant (7/1/2011), Database Coordinator (7/1/2011), Vice President (7/1/2011), System Administrator and Database Assistant (5/31/2012), Database Coordinator (7/1/2012), System Administrator and Database Assistant (7/1/2013)', - ['MM/DD/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm:ssZ']) - .format('YYYY-MM-DD'), '2011-07-01', 'Works for long strings'); - - assert.equal(moment('11-02-10', ['MM.DD.YY', 'DD-MM-YY']).format('MM DD YYYY'), '02 11 2010', 'escape RegExp special characters on comparing'); - - assert.equal(moment('13-10-98', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YY', 'use two digit year'); - assert.equal(moment('13-10-1998', ['DD MM YY', 'DD MM YYYY'])._f, 'DD MM YYYY', 'use four digit year'); + 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('01', ['MM', 'DD'])._f, 'MM', 'Should use first valid format'); + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment('Thursday 8:30pm', ['dddd h:mma']).format('YYYY MM DD dddd h:mma'), thursdayForCurrentWeek + ' Thursday 8:30pm', 'Default to current week'); + 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' + ); }); - test('string with array of formats + ISO', function (assert) { - assert.equal(moment('1994', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).year(), 1994, 'iso: assert parse YYYY'); - assert.equal(moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).hour(), 17, 'iso: assert parse HH:mm (1)'); - assert.equal(moment('24:15', [moment.ISO_8601, 'MM', 'kk:mm', 'YYYY']).hour(), 0, 'iso: assert parse kk:mm'); - assert.equal(moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).minutes(), 15, 'iso: assert parse HH:mm (2)'); - assert.equal(moment('06', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).month(), 6 - 1, 'iso: assert parse MM'); - assert.equal(moment('2012-06-01', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).parsingFlags().iso, true, 'iso: assert parse iso'); - assert.equal(moment('2014-05-05', [moment.ISO_8601, 'YYYY-MM-DD']).parsingFlags().iso, true, 'iso: edge case array precedence iso'); - assert.equal(moment('2014-05-05', ['YYYY-MM-DD', moment.ISO_8601]).parsingFlags().iso, false, 'iso: edge case array precedence not iso'); + 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('[下]ddddLT'), + 'Today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('[下]ddddLT'), + 'Today + ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[下]ddddLT'), + 'Today + ' + i + ' days end of day' + ); + } }); - test('string with format - years', function (assert) { - assert.equal(moment('67', 'YY').format('YYYY'), '2067', '67 > 2067'); - assert.equal(moment('68', 'YY').format('YYYY'), '2068', '68 > 2068'); - assert.equal(moment('69', 'YY').format('YYYY'), '1969', '69 > 1969'); - assert.equal(moment('70', 'YY').format('YYYY'), '1970', '70 > 1970'); + 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('[上]ddddLT'), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('[上]ddddLT'), + 'Today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[上]ddddLT'), + 'Today - ' + i + ' days end of day' + ); + } }); - test('implicit cloning', function (assert) { - var momentA = moment([2011, 10, 10]), - momentB = moment(momentA); - momentA.month(5); - assert.notEqual(momentA.month(), momentB.month(), 'Calling moment() on a moment will create a clone'); + 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' + ); }); - test('explicit cloning', function (assert) { - var momentA = moment([2011, 10, 10]), - momentB = momentA.clone(); - momentA.month(5); - assert.notEqual(momentA.month(), momentB.month(), 'Calling clone() on a moment will create a clone'); + test('meridiem', function (assert) { + assert.equal( + moment([2011, 2, 23, 0, 0]).format('A'), + '凌晨', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning'); + assert.equal( + moment([2011, 2, 23, 9, 0]).format('A'), + '上午', + 'before noon' + ); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); + assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); + assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); }); - test('cloning carrying over utc mode', function (assert) { - assert.equal(moment().local().clone()._isUTC, false, 'An explicit cloned local moment should have _isUTC == false'); - assert.equal(moment().utc().clone()._isUTC, true, 'An cloned utc moment should have _isUTC == true'); - assert.equal(moment().clone()._isUTC, false, 'An explicit cloned local moment should have _isUTC == false'); - assert.equal(moment.utc().clone()._isUTC, true, 'An explicit cloned utc moment should have _isUTC == true'); - assert.equal(moment(moment().local())._isUTC, false, 'An implicit cloned local moment should have _isUTC == false'); - assert.equal(moment(moment().utc())._isUTC, true, 'An implicit cloned utc moment should have _isUTC == true'); - assert.equal(moment(moment())._isUTC, false, 'An implicit cloned local moment should have _isUTC == false'); - assert.equal(moment(moment.utc())._isUTC, true, 'An implicit cloned utc moment should have _isUTC == true'); + test('weeks year starting sunday format', function (assert) { + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '52 52 52周', + 'Jan 1 2012 应该是第52周' + ); + assert.equal( + moment([2012, 0, 7]).format('w ww wo'), + '1 01 1周', + 'Jan 7 2012 应该是第 1周' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '2 02 2周', + 'Jan 14 2012 应该是第 2周' + ); }); - test('parsing RFC 2822', function (assert) { - var testCases = { - 'Tue, 01 Nov 2016 01:23:45 UT': [2016, 10, 1, 1, 23, 45, 0], - 'Sun, 12 Apr 2015 05:06:07 GMT': [2015, 3, 12, 5, 6, 7, 0], - 'Tue, 01 Nov 2016 01:23:45 +0000': [2016, 10, 1, 1, 23, 45, 0], - 'Tue, 01 Nov 16 04:23:45 Z': [2016, 10, 1, 4, 23, 45, 0], - '01 Nov 2016 05:23:45 z': [2016, 10, 1, 5, 23, 45, 0], - '(Init Comment) Tue,\n 1 Nov 2016 (Split\n Comment) 07:23:45 +0000 (GMT)': [2016, 10, 1, 7, 23, 45, 0], - 'Mon, 02 Jan 2017 06:00:00 -0800': [2017, 0, 2, 6, 0, 0, -8 * 60], - 'Mon, 02 Jan 2017 06:00:00 +0800': [2017, 0, 2, 6, 0, 0, +8 * 60], - 'Mon, 02 Jan 2017 06:00:00 +0330': [2017, 0, 2, 6, 0, 0, +(3 * 60 + 30)], - 'Mon, 02 Jan 2017 06:00:00 -0330': [2017, 0, 2, 6, 0, 0, -(3 * 60 + 30)], - 'Mon, 02 Jan 2017 06:00:00 PST': [2017, 0, 2, 6, 0, 0, -8 * 60], - 'Mon, 02 Jan 2017 06:00:00 PDT': [2017, 0, 2, 6, 0, 0, -7 * 60], - 'Mon, 02 Jan 2017 06:00:00 MST': [2017, 0, 2, 6, 0, 0, -7 * 60], - 'Mon, 02 Jan 2017 06:00:00 MDT': [2017, 0, 2, 6, 0, 0, -6 * 60], - 'Mon, 02 Jan 2017 06:00:00 CST': [2017, 0, 2, 6, 0, 0, -6 * 60], - 'Mon, 02 Jan 2017 06:00:00 CDT': [2017, 0, 2, 6, 0, 0, -5 * 60], - 'Mon, 02 Jan 2017 06:00:00 EST': [2017, 0, 2, 6, 0, 0, -5 * 60], - 'Mon, 02 Jan 2017 06:00:00 EDT': [2017, 0, 2, 6, 0, 0, -4 * 60] - }; +}))); - var inp, tokens, parseResult, expResult; - for (inp in testCases) { - tokens = testCases[inp]; - parseResult = moment(inp, moment.RFC_2822, true).parseZone(); - expResult = moment.utc(tokens.slice(0, 6)).utcOffset(tokens[6], true); - assert.ok(parseResult.isValid(), inp); - assert.ok(parseResult.parsingFlags().rfc2822, inp + ' - rfc2822 parsingFlag'); - assert.equal(parseResult.utcOffset(), expResult.utcOffset(), inp + ' - zone'); - assert.equal(parseResult.valueOf(), expResult.valueOf(), inp + ' - correctness'); - } - }); - test('non RFC 2822 strings', function (assert) { - var testCases = { - 'RFC2822 datetime with all options but invalid day delimiter': 'Tue. 01 Nov 2016 01:23:45 GMT', - 'RFC2822 datetime with mismatching Day (weekday v date)': 'Mon, 01 Nov 2016 01:23:45 GMT' - }; - var testCase; +;(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'; - for (testCase in testCases) { - var testResult = moment(testCases[testCase], moment.RFC_2822, true); - assert.ok(!testResult.isValid(), testCase + ': ' + testResult + ' - is invalid rfc2822'); - assert.ok(!testResult.parsingFlags().rfc2822, testCase + ': ' + testResult + ' - rfc2822 parsingFlag'); + function each(array, callback) { + var i; + for (i = 0; i < array.length; i++) { + callback(array[i], i, array); } - }); + } - test('parsing RFC 2822 in a different locale', function (assert) { - var testCases = { - 'clean RFC2822 datetime with all options': 'Tue, 01 Nov 2016 01:23:45 UT', - 'clean RFC2822 datetime without comma': 'Tue 01 Nov 2016 02:23:45 GMT', - 'clean RFC2822 datetime without seconds': 'Tue, 01 Nov 2016 03:23 +0000', - 'clean RFC2822 datetime without century': 'Tue, 01 Nov 16 04:23:45 Z', - 'clean RFC2822 datetime without day': '01 Nov 2016 05:23:45 z', - 'clean RFC2822 datetime with single-digit day-of-month': 'Tue, 1 Nov 2016 06:23:45 GMT', - 'RFC2822 datetime with CFWSs': '(Init Comment) Tue,\n 1 Nov 2016 (Split\n Comment) 07:23:45 +0000 (GMT)' + 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 = []; }; - var testCase; - - try { - moment.locale('ru'); - for (testCase in testCases) { - var testResult = moment(testCases[testCase], moment.RFC_2822, true); - assert.ok(testResult.isValid(), testResult); - assert.ok(testResult.parsingFlags().rfc2822, testResult + ' - rfc2822 parsingFlag'); + 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 + ); } - } - finally { - moment.locale('en'); - } - }); - - test('non RFC 2822 strings in a different locale', function (assert) { - var testCases = { - 'RFC2822 datetime with all options but invalid day delimiter': 'Tue. 01 Nov 2016 01:23:45 GMT', - 'RFC2822 datetime with mismatching Day (week v date)': 'Mon, 01 Nov 2016 01:23:45 GMT' + test._observedDeprecations[deprecationId] = 1; }; - var testCase; + } - try { - moment.locale('ru'); - for (testCase in testCases) { - var testResult = moment(testCases[testCase], moment.RFC_2822, true); - assert.ok(!testResult.isValid(), testResult); - assert.ok(!testResult.parsingFlags().rfc2822, testResult + ' - rfc2822 parsingFlag'); + 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(' ') + ); } } - finally { - moment.locale('en'); - } - }); + } - test('parsing iso', function (assert) { - var offset = moment([2011, 9, 8]).utcOffset(), - pad = function (input) { - if (input < 10) { - return '0' + input; + 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 '' + input; - }, - hourOffset = (offset > 0 ? Math.floor(offset / 60) : Math.ceil(offset / 60)), - minOffset = offset - (hourOffset * 60), - tz = (offset >= 0) ? - '+' + pad(hourOffset) + ':' + pad(minOffset) : - '-' + pad(-hourOffset) + ':' + pad(-minOffset), - tz2 = tz.replace(':', ''), - tz3 = tz2.slice(0, 3), - //Tz3 removes minutes digit so will break the tests when parsed if they all use the same minutes digit - minutesForTz3 = pad((4 + minOffset) % 60), - formats = [ - ['2011-10-08', '2011-10-08T00:00:00.000' + tz], - ['2011-10-08T18', '2011-10-08T18:00:00.000' + tz], - ['2011-10-08T18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08T18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011-10-08T18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011-10-08T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-10-08T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-10-08 18', '2011-10-08T18:00:00.000' + tz], - ['2011-10-08 18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-10-08 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-10-08 18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011-10-08 18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011-10-08 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-10-08 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-W40', '2011-10-03T00:00:00.000' + tz], - ['2011-W40-6', '2011-10-08T00:00:00.000' + tz], - ['2011-W40-6T18', '2011-10-08T18:00:00.000' + tz], - ['2011-W40-6T18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6T18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6T18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011-W40-6T18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011-W40-6T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-W40-6T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-W40-6T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-W40-6 18', '2011-10-08T18:00:00.000' + tz], - ['2011-W40-6 18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6 18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6 18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-W40-6 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-W40-6 18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011-W40-6 18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011-W40-6 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-W40-6 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-W40-6 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-281', '2011-10-08T00:00:00.000' + tz], - ['2011-281T18', '2011-10-08T18:00:00.000' + tz], - ['2011-281T18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-281T18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-281T18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-281T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-281T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-281T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-281T18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011-281T18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011-281T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-281T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-281T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011-281 18', '2011-10-08T18:00:00.000' + tz], - ['2011-281 18:04', '2011-10-08T18:04:00.000' + tz], - ['2011-281 18:04:20', '2011-10-08T18:04:20.000' + tz], - ['2011-281 18:04' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011-281 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011-281 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011-281 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011-281 18:04' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011-281 18:04:20' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011-281 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011-281 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011-281 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['20111008T18', '2011-10-08T18:00:00.000' + tz], - ['20111008T1804', '2011-10-08T18:04:00.000' + tz], - ['20111008T180420', '2011-10-08T18:04:20.000' + tz], - ['20111008T1804' + tz, '2011-10-08T18:04:00.000' + tz], - ['20111008T180420' + tz, '2011-10-08T18:04:20.000' + tz], - ['20111008T1804' + tz2, '2011-10-08T18:04:00.000' + tz], - ['20111008T180420' + tz2, '2011-10-08T18:04:20.000' + tz], - ['20111008T1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['20111008T180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['20111008T180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['20111008T180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['20111008T180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['20111008 18', '2011-10-08T18:00:00.000' + tz], - ['20111008 1804', '2011-10-08T18:04:00.000' + tz], - ['20111008 180420', '2011-10-08T18:04:20.000' + tz], - ['20111008 1804' + tz, '2011-10-08T18:04:00.000' + tz], - ['20111008 180420' + tz, '2011-10-08T18:04:20.000' + tz], - ['20111008 1804' + tz2, '2011-10-08T18:04:00.000' + tz], - ['20111008 180420' + tz2, '2011-10-08T18:04:20.000' + tz], - ['20111008 1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['20111008 180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['20111008 180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['20111008 180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['20111008 180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011W40', '2011-10-03T00:00:00.000' + tz], - ['2011W406', '2011-10-08T00:00:00.000' + tz], - ['2011W406T18', '2011-10-08T18:00:00.000' + tz], - ['2011W406T1804', '2011-10-08T18:04:00.000' + tz], - ['2011W406T180420', '2011-10-08T18:04:20.000' + tz], - ['2011W406 1804' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011W406T1804' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011W406T180420' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011W406T1804' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011W406T180420' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011W406T1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011W406T180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011W406T180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011W406T180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011W406T180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011W406 18', '2011-10-08T18:00:00.000' + tz], - ['2011W406 1804', '2011-10-08T18:04:00.000' + tz], - ['2011W406 180420', '2011-10-08T18:04:20.000' + tz], - ['2011W406 1804' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011W406 180420' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011W406 180420' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011W406 1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011W406 180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011W406 180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011W406 180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011W406 180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011281', '2011-10-08T00:00:00.000' + tz], - ['2011281T18', '2011-10-08T18:00:00.000' + tz], - ['2011281T1804', '2011-10-08T18:04:00.000' + tz], - ['2011281T180420', '2011-10-08T18:04:20.000' + tz], - ['2011281T1804' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011281T180420' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011281T1804' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011281T180420' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011281T1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011281T180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011281T180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011281T180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011281T180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], - ['2011281 18', '2011-10-08T18:00:00.000' + tz], - ['2011281 1804', '2011-10-08T18:04:00.000' + tz], - ['2011281 180420', '2011-10-08T18:04:20.000' + tz], - ['2011281 1804' + tz, '2011-10-08T18:04:00.000' + tz], - ['2011281 180420' + tz, '2011-10-08T18:04:20.000' + tz], - ['2011281 1804' + tz2, '2011-10-08T18:04:00.000' + tz], - ['2011281 180420' + tz2, '2011-10-08T18:04:20.000' + tz], - ['2011281 1804' + tz3, '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz], - ['2011281 180420' + tz3, '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz], - ['2011281 180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], - ['2011281 180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], - ['2011281 180420,111' + tz2, '2011-10-08T18:04:20.111' + tz] - ], i; - for (i = 0; i < formats.length; i++) { - assert.equal(moment(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), - formats[i][1], 'moment should be able to parse ISO ' + formats[i][0]); - assert.equal(moment(formats[i][0], moment.ISO_8601).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), - formats[i][1], 'moment should be able to parse specified ISO ' + formats[i][0]); - assert.equal(moment(formats[i][0], moment.ISO_8601, true).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), - formats[i][1], 'moment should be able to parse specified strict ISO ' + formats[i][0]); } - }); - - test('non iso 8601 strings', function (assert) { - assert.ok(!moment('2015-10T10:15', moment.ISO_8601, true).isValid(), 'incomplete date with time'); - assert.ok(!moment('2015-W10T10:15', moment.ISO_8601, true).isValid(), 'incomplete week date with time'); - assert.ok(!moment('201510', moment.ISO_8601, true).isValid(), 'basic YYYYMM is not allowed'); - assert.ok(!moment('2015W10T1015', moment.ISO_8601, true).isValid(), 'incomplete week date with time (basic)'); - assert.ok(!moment('2015-10-08T1015', moment.ISO_8601, true).isValid(), 'mixing extended and basic format'); - assert.ok(!moment('20151008T10:15', moment.ISO_8601, true).isValid(), 'mixing basic and extended format'); - assert.ok(!moment('2015-10-1', moment.ISO_8601, true).isValid(), 'missing zero padding for day'); - }); + return -1; + } - test('parsing iso week year/week/weekday', function (assert) { - assert.equal(moment.utc('2007-W01').format(), '2007-01-01T00:00:00Z', '2008 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-W01').format(), '2007-12-31T00:00:00Z', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-W01').format(), '2002-12-30T00:00:00Z', '2008 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-W01').format(), '2008-12-29T00:00:00Z', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-W01').format(), '2010-01-04T00:00:00Z', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-W01').format(), '2011-01-03T00:00:00Z', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-W01').format(), '2012-01-02T00:00:00Z', '2012 week 1 (1st Jan Sun)'); - }); + /*global QUnit:false*/ - test('parsing weekdays verifies the day', function (assert) { - // string with format - assert.ok(!moment('Wed 08-10-2017', 'ddd MM-DD-YYYY').isValid(), 'because day of week is incorrect for the date'); - assert.ok(moment('Thu 08-10-2017', 'ddd MM-DD-YYYY').isValid(), 'because day of week is correct for the date'); - }); + var test = QUnit.test, + only = QUnit.only; - test('parsing weekday on utc dates verifies day acccording to utc time', function (assert) { - assert.ok(moment.utc('Mon 03:59', 'ddd HH:mm').isValid(), 'Monday 03:59'); - }); + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } - test('parsing weekday on local dates verifies day acccording to local time', function (assert) { - // this doesn't do much useful if you're not in the US or at least close to it - assert.ok(moment('Mon 03:59', 'ddd HH:mm').isValid(), 'Monday 03:59'); - }); + 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; + } + } - test('parsing weekday on utc dates with specified offsets verifies day acccording to that offset', function (assert) { - assert.ok(moment.utc('Mon 03:59 +12:00', 'ddd HH:mm Z', true).isValid(), 'Monday 03:59'); - }); + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } - test('parsing weekday on local dates with specified offsets verifies day acccording to that offset', function (assert) { - // if you're in the US, these times will all be sometime Sunday, but they shoud parse as Monday - assert.ok(moment('Mon 03:59 +12:00', 'ddd HH:mm Z', true).isValid(), 'Monday 03:59'); - }); + 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('parsing week year/week/weekday (dow 1, doy 4)', function (assert) { - moment.locale('dow:1,doy:4', {week: {dow: 1, doy: 4}}); + 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' + ); + } + }); - assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2007-01-01T00:00:00Z', '2007 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-31T00:00:00Z', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-30T00:00:00Z', '2003 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-29T00:00:00Z', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2010-01-04T00:00:00Z', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2011-01-03T00:00:00Z', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2012-01-02T00:00:00Z', '2012 week 1 (1st Jan Sun)'); + 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 + ); + } + }); - moment.defineLocale('dow:1,doy:4', null); - }); + 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('parsing week year/week/weekday (dow 1, doy 7)', function (assert) { - moment.locale('dow:1,doy:7', {week: {dow: 1, doy: 7}}); - - assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2007-01-01T00:00:00Z', '2007 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-31T00:00:00Z', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-30T00:00:00Z', '2003 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-29T00:00:00Z', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-28T00:00:00Z', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2010-12-27T00:00:00Z', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2011-12-26T00:00:00Z', '2012 week 1 (1st Jan Sun)'); - moment.defineLocale('dow:1,doy:7', null); - }); + 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('parsing week year/week/weekday (dow 0, doy 6)', function (assert) { - moment.locale('dow:0,doy:6', {week: {dow: 0, doy: 6}}); - - assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2006-12-31T00:00:00Z', '2007 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-30T00:00:00Z', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-29T00:00:00Z', '2003 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-28T00:00:00Z', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-27T00:00:00Z', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2010-12-26T00:00:00Z', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2012-01-01T00:00:00Z', '2012 week 1 (1st Jan Sun)'); - moment.defineLocale('dow:0,doy:6', null); - }); + test('month parsing correctness', function (assert) { + var i, m; - test('parsing week year/week/weekday (dow 6, doy 12)', function (assert) { - moment.locale('dow:6,doy:12', {week: {dow: 6, doy: 12}}); - - assert.equal(moment.utc('2007-01', 'gggg-ww').format(), '2006-12-30T00:00:00Z', '2007 week 1 (1st Jan Mon)'); - assert.equal(moment.utc('2008-01', 'gggg-ww').format(), '2007-12-29T00:00:00Z', '2008 week 1 (1st Jan Tue)'); - assert.equal(moment.utc('2003-01', 'gggg-ww').format(), '2002-12-28T00:00:00Z', '2003 week 1 (1st Jan Wed)'); - assert.equal(moment.utc('2009-01', 'gggg-ww').format(), '2008-12-27T00:00:00Z', '2009 week 1 (1st Jan Thu)'); - assert.equal(moment.utc('2010-01', 'gggg-ww').format(), '2009-12-26T00:00:00Z', '2010 week 1 (1st Jan Fri)'); - assert.equal(moment.utc('2011-01', 'gggg-ww').format(), '2011-01-01T00:00:00Z', '2011 week 1 (1st Jan Sat)'); - assert.equal(moment.utc('2012-01', 'gggg-ww').format(), '2011-12-31T00:00:00Z', '2012 week 1 (1st Jan Sun)'); - moment.defineLocale('dow:6,doy:12', null); - }); - - test('parsing ISO with Z', function (assert) { - var i, mom, formats = [ - ['2011-10-08T18:04', '2011-10-08T18:04:00.000'], - ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000'], - ['2011-10-08T18:04:20.1', '2011-10-08T18:04:20.100'], - ['2011-10-08T18:04:20.11', '2011-10-08T18:04:20.110'], - ['2011-10-08T18:04:20.111', '2011-10-08T18:04:20.111'], - ['2011-W40-6T18', '2011-10-08T18:00:00.000'], - ['2011-W40-6T18:04', '2011-10-08T18:04:00.000'], - ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000'], - ['2011-W40-6T18:04:20.1', '2011-10-08T18:04:20.100'], - ['2011-W40-6T18:04:20.11', '2011-10-08T18:04:20.110'], - ['2011-W40-6T18:04:20.111', '2011-10-08T18:04:20.111'], - ['2011-281T18', '2011-10-08T18:00:00.000'], - ['2011-281T18:04', '2011-10-08T18:04:00.000'], - ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], - ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], - ['2011-281T18:04:20.1', '2011-10-08T18:04:20.100'], - ['2011-281T18:04:20.11', '2011-10-08T18:04:20.110'], - ['2011-281T18:04:20.111', '2011-10-08T18:04:20.111'] - ]; - - for (i = 0; i < formats.length; i++) { - mom = moment(formats[i][0] + 'Z').utc(); - assert.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], 'moment should be able to parse ISO in UTC ' + formats[i][0] + 'Z'); - - mom = moment(formats[i][0] + ' Z').utc(); - assert.equal(mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), formats[i][1], 'moment should be able to parse ISO in UTC ' + formats[i][0] + ' Z'); - } - }); - - test('parsing iso with T', function (assert) { - assert.equal(moment('2011-10-08T18')._f, 'YYYY-MM-DDTHH', 'should include \'T\' in the format'); - assert.equal(moment('2011-10-08T18:20')._f, 'YYYY-MM-DDTHH:mm', 'should include \'T\' in the format'); - assert.equal(moment('2011-10-08T18:20:13')._f, 'YYYY-MM-DDTHH:mm:ss', 'should include \'T\' in the format'); - assert.equal(moment('2011-10-08T18:20:13.321')._f, 'YYYY-MM-DDTHH:mm:ss.SSSS', 'should include \'T\' in the format'); - - assert.equal(moment('2011-10-08 18')._f, 'YYYY-MM-DD HH', 'should not include \'T\' in the format'); - assert.equal(moment('2011-10-08 18:20')._f, 'YYYY-MM-DD HH:mm', 'should not include \'T\' in the format'); - assert.equal(moment('2011-10-08 18:20:13')._f, 'YYYY-MM-DD HH:mm:ss', 'should not include \'T\' in the format'); - assert.equal(moment('2011-10-08 18:20:13.321')._f, 'YYYY-MM-DD HH:mm:ss.SSSS', 'should not include \'T\' in the format'); - }); - - test('parsing iso Z timezone', function (assert) { - var i, - formats = [ - ['2011-10-08T18:04Z', '2011-10-08T18:04:00.000+00:00'], - ['2011-10-08T18:04:20Z', '2011-10-08T18:04:20.000+00:00'], - ['2011-10-08T18:04:20.111Z', '2011-10-08T18:04:20.111+00:00'] - ]; - for (i = 0; i < formats.length; i++) { - assert.equal(moment.utc(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), formats[i][1], 'moment should be able to parse ISO ' + formats[i][0]); - } - }); - - test('parsing iso Z timezone into local', function (assert) { - var m = moment('2011-10-08T18:04:20.111Z'); - - assert.equal(m.utc().format('YYYY-MM-DDTHH:mm:ss.SSS'), '2011-10-08T18:04:20.111', 'moment should be able to parse ISO 2011-10-08T18:04:20.111Z'); - }); - - test('parsing iso with more subsecond precision digits', function (assert) { - assert.equal(moment.utc('2013-07-31T22:00:00.0000000Z').format(), '2013-07-31T22:00:00Z', 'more than 3 subsecond digits'); - }); - - test('null or empty', function (assert) { - assert.equal(moment('').isValid(), false, 'moment(\'\') is not valid'); - assert.equal(moment(null).isValid(), false, 'moment(null) is not valid'); - assert.equal(moment(null, 'YYYY-MM-DD').isValid(), false, 'moment(\'\', \'format\') is not valid'); - assert.equal(moment('', 'YYYY-MM-DD').isValid(), false, 'moment(\'\', \'format\') is not valid'); - assert.equal(moment.utc('').isValid(), false, 'moment.utc(\'\') is not valid'); - assert.equal(moment.utc(null).isValid(), false, 'moment.utc(null) is not valid'); - assert.equal(moment.utc(null, 'YYYY-MM-DD').isValid(), false, 'moment.utc(null) is not valid'); - assert.equal(moment.utc('', 'YYYY-MM-DD').isValid(), false, 'moment.utc(\'\', \'YYYY-MM-DD\') is not valid'); - }); - - test('first century', function (assert) { - assert.equal(moment([0, 0, 1]).format('YYYY-MM-DD'), '0000-01-01', 'Year AD 0'); - assert.equal(moment([99, 0, 1]).format('YYYY-MM-DD'), '0099-01-01', 'Year AD 99'); - assert.equal(moment([999, 0, 1]).format('YYYY-MM-DD'), '0999-01-01', 'Year AD 999'); - assert.equal(moment('0 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), '0000-01-01', 'Year AD 0'); - assert.equal(moment('999 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), '0999-01-01', 'Year AD 999'); - assert.equal(moment('0 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00000-01-01', 'Year AD 0'); - assert.equal(moment('99 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00099-01-01', 'Year AD 99'); - assert.equal(moment('999 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), '00999-01-01', 'Year AD 999'); - }); - - test('six digit years', function (assert) { - assert.equal(moment([-270000, 0, 1]).format('YYYYY-MM-DD'), '-270000-01-01', 'format BC 270,001'); - assert.equal(moment([270000, 0, 1]).format('YYYYY-MM-DD'), '270000-01-01', 'format AD 270,000'); - assert.equal(moment('-270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), -270000, 'parse BC 270,001'); - assert.equal(moment('270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), 270000, 'parse AD 270,000'); - assert.equal(moment('+270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), 270000, 'parse AD +270,000'); - assert.equal(moment.utc('-270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), -270000, 'parse utc BC 270,001'); - assert.equal(moment.utc('270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), 270000, 'parse utc AD 270,000'); - assert.equal(moment.utc('+270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), 270000, 'parse utc AD +270,000'); - }); - - test('negative four digit years', function (assert) { - assert.equal(moment('-1000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), -1000, 'parse BC 1,001'); - assert.equal(moment.utc('-1000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), -1000, 'parse utc BC 1,001'); - }); - - test('strict parsing', function (assert) { - assert.equal(moment('2014-', 'YYYY-Q', true).isValid(), false, 'fail missing quarter'); - - assert.equal(moment('2012-05', 'YYYY-MM', true).format('YYYY-MM'), '2012-05', 'parse correct string'); - assert.equal(moment(' 2012-05', 'YYYY-MM', true).isValid(), false, 'fail on extra whitespace'); - assert.equal(moment('foo 2012-05', '[foo] YYYY-MM', true).format('YYYY-MM'), '2012-05', 'handle fixed text'); - assert.equal(moment('2012 05', 'YYYY-MM', true).isValid(), false, 'fail on different separator'); - assert.equal(moment('2012 05', 'YYYY MM DD', true).isValid(), false, 'fail on too many tokens'); - - assert.equal(moment('05 30 2010', ['DD MM YYYY', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with bad date'); - assert.equal(moment('05 30 2010', ['', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with invalid format'); - assert.equal(moment('05 30 2010', [' DD MM YYYY', 'MM DD YYYY'], true).format('MM DD YYYY'), '05 30 2010', 'array with non-matching format'); - - assert.equal(moment('2010.*...', 'YYYY.*', true).isValid(), false, 'invalid format with regex chars'); - assert.equal(moment('2010.*', 'YYYY.*', true).year(), 2010, 'valid format with regex chars'); - assert.equal(moment('.*2010.*', '.*YYYY.*', true).year(), 2010, 'valid format with regex chars on both sides'); - - //strict tokens - assert.equal(moment('-5-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid negative year'); - assert.equal(moment('2-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit year'); - assert.equal(moment('20-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid two-digit year'); - assert.equal(moment('201-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid three-digit year'); - assert.equal(moment('2010-05-25', 'YYYY-MM-DD', true).isValid(), true, 'valid four-digit year'); - assert.equal(moment('22010-05-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid five-digit year'); - - assert.equal(moment('12-05-25', 'YY-MM-DD', true).isValid(), true, 'valid two-digit year'); - assert.equal(moment('2012-05-25', 'YY-MM-DD', true).isValid(), false, 'invalid four-digit year'); - - assert.equal(moment('-5-05-25', 'Y-MM-DD', true).isValid(), true, 'valid negative year'); - assert.equal(moment('2-05-25', 'Y-MM-DD', true).isValid(), true, 'valid one-digit year'); - assert.equal(moment('20-05-25', 'Y-MM-DD', true).isValid(), true, 'valid two-digit year'); - assert.equal(moment('201-05-25', 'Y-MM-DD', true).isValid(), true, 'valid three-digit year'); - - assert.equal(moment('2012-5-25', 'YYYY-M-DD', true).isValid(), true, 'valid one-digit month'); - assert.equal(moment('2012-5-25', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit month'); - assert.equal(moment('2012-05-25', 'YYYY-M-DD', true).isValid(), true, 'valid one-digit month'); - assert.equal(moment('2012-05-25', 'YYYY-MM-DD', true).isValid(), true, 'valid one-digit month'); - - assert.equal(moment('2012-05-2', 'YYYY-MM-D', true).isValid(), true, 'valid one-digit day'); - assert.equal(moment('2012-05-2', 'YYYY-MM-DD', true).isValid(), false, 'invalid one-digit day'); - assert.equal(moment('2012-05-02', 'YYYY-MM-D', true).isValid(), true, 'valid two-digit day'); - assert.equal(moment('2012-05-02', 'YYYY-MM-DD', true).isValid(), true, 'valid two-digit day'); - - assert.equal(moment('+002012-05-25', 'YYYYY-MM-DD', true).isValid(), true, 'valid six-digit year'); - assert.equal(moment('+2012-05-25', 'YYYYY-MM-DD', true).isValid(), false, 'invalid four-digit year'); - - //thse are kinda pointless, but they should work as expected - assert.equal(moment('1', 'S', true).isValid(), true, 'valid one-digit milisecond'); - assert.equal(moment('12', 'S', true).isValid(), false, 'invalid two-digit milisecond'); - assert.equal(moment('123', 'S', true).isValid(), false, 'invalid three-digit milisecond'); - - assert.equal(moment('1', 'SS', true).isValid(), false, 'invalid one-digit milisecond'); - assert.equal(moment('12', 'SS', true).isValid(), true, 'valid two-digit milisecond'); - assert.equal(moment('123', 'SS', true).isValid(), false, 'invalid three-digit milisecond'); - - assert.equal(moment('1', 'SSS', true).isValid(), false, 'invalid one-digit milisecond'); - assert.equal(moment('12', 'SSS', true).isValid(), false, 'invalid two-digit milisecond'); - assert.equal(moment('123', 'SSS', true).isValid(), true, 'valid three-digit milisecond'); + 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' + ); - // strict parsing respects month length - assert.ok(moment('1 January 2000', 'D MMMM YYYY', true).isValid(), 'capital long-month + MMMM'); - assert.ok(!moment('1 January 2000', 'D MMM YYYY', true).isValid(), 'capital long-month + MMM'); - assert.ok(!moment('1 Jan 2000', 'D MMMM YYYY', true).isValid(), 'capital short-month + MMMM'); - assert.ok(moment('1 Jan 2000', 'D MMM YYYY', true).isValid(), 'capital short-month + MMM'); - assert.ok(moment('1 january 2000', 'D MMMM YYYY', true).isValid(), 'lower long-month + MMMM'); - assert.ok(!moment('1 january 2000', 'D MMM YYYY', true).isValid(), 'lower long-month + MMM'); - assert.ok(!moment('1 jan 2000', 'D MMMM YYYY', true).isValid(), 'lower short-month + MMMM'); - assert.ok(moment('1 jan 2000', 'D MMM YYYY', true).isValid(), 'lower short-month + MMM'); - }); + 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' + ); + } - test('parsing into a locale', function (assert) { - moment.defineLocale('parselocale', { - months : 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), - monthsShort : 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_') + for (i = 0; i < 12; ++i) { + m = moment([2015, i, 15, 18]); + tester('MMM'); + tester('MMM.'); + tester('MMMM'); + tester('MMMM.'); + } }); - moment.locale('en'); - - assert.equal(moment('2012 seven', 'YYYY MMM', 'parselocale').month(), 6, 'should be able to parse in a specific locale'); - - moment.locale('parselocale'); - - assert.equal(moment('2012 july', 'YYYY MMM', 'en').month(), 6, 'should be able to parse in a specific locale'); - - moment.defineLocale('parselocale', null); - }); - - function getVerifier(test$$1) { - return function (input, format, expected, description, asymetrical) { - var m = moment(input, format); - test$$1.equal(m.format('YYYY MM DD'), expected, 'compare: ' + description); + test('weekday parsing correctness', function (assert) { + var i, m; - //test round trip - if (!asymetrical) { - test$$1.equal(m.format(format), input, 'round trip: ' + description); + 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'); } - }; - } - - test('parsing week and weekday information', function (assert) { - var ver = getVerifier(assert); - var currentWeekOfYear = moment().weeks(); - var expectedDate2012 = moment([2012, 0, 1]) - .day(0) - .add((currentWeekOfYear - 1), 'weeks') - .format('YYYY MM DD'); - var expectedDate1999 = moment([1999, 0, 1]) - .day(0) - .add((currentWeekOfYear - 1), 'weeks') - .format('YYYY MM DD'); - - // year - ver('12', 'gg', expectedDate2012, 'week-year two digits'); - ver('2012', 'gggg', expectedDate2012, 'week-year four digits'); - ver('99', 'gg', expectedDate1999, 'week-year two digits previous year'); - ver('1999', 'gggg', expectedDate1999, 'week-year four digits previous year'); - - ver('99', 'GG', '1999 01 04', 'iso week-year two digits'); - ver('1999', 'GGGG', '1999 01 04', 'iso week-year four digits'); - ver('13', 'GG', '2012 12 31', 'iso week-year two digits previous year'); - ver('2013', 'GGGG', '2012 12 31', 'iso week-year four digits previous year'); + for (i = 0; i < 7; ++i) { + m = moment.utc([2015, 0, i + 1, 18]); + tester('dd'); + tester('ddd'); + tester('dddd'); + } + }); - // year + week - ver('1999 37', 'gggg w', '1999 09 05', 'week'); - ver('1999 37', 'gggg ww', '1999 09 05', 'week double'); - ver('1999 37', 'GGGG W', '1999 09 13', 'iso week'); - ver('1999 37', 'GGGG WW', '1999 09 13', 'iso week double'); + 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' + ); + }); - ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso day'); - ver('1999 37 04', 'GGGG WW E', '1999 09 16', 'iso day wide', true); + 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' + ); + }); + } - ver('1999 37 4', 'gggg ww e', '1999 09 09', 'day'); - ver('1999 37 04', 'gggg ww e', '1999 09 09', 'day wide', true); + /*global QUnit:false*/ - // year + week + day - ver('1999 37 4', 'gggg ww d', '1999 09 09', 'd'); - ver('1999 37 Th', 'gggg ww dd', '1999 09 09', 'dd'); - ver('1999 37 Thu', 'gggg ww ddd', '1999 09 09', 'ddd'); - ver('1999 37 Thursday', 'gggg ww dddd', '1999 09 09', 'dddd'); + 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); + } - // lower-order only - assert.equal(moment('22', 'ww').week(), 22, 'week sets the week by itself'); - assert.equal(moment('22', 'ww').weekYear(), moment().weekYear(), 'week keeps this year'); - assert.equal(moment('2012 22', 'YYYY ww').weekYear(), 2012, 'week keeps parsed year'); + localeModule('zh-hk'); - assert.equal(moment('22', 'WW').isoWeek(), 22, 'iso week sets the week by itself'); - assert.equal(moment('2012 22', 'YYYY WW').weekYear(), 2012, 'iso week keeps parsed year'); - assert.equal(moment('22', 'WW').isoWeekYear(), moment().isoWeekYear(), 'iso week keeps this year'); + test('parse', function (assert) { + var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); + } - // order - ver('6 2013 2', 'e gggg w', '2013 01 12', 'order doesn\'t matter'); - ver('6 2013 2', 'E GGGG W', '2013 01 12', 'iso order doesn\'t matter'); + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); + } - //can parse other stuff too - assert.equal(moment('1999-W37-4 3:30', 'GGGG-[W]WW-E HH:mm').format('YYYY MM DD HH:mm'), '1999 09 16 03:30', 'parsing weeks and hours'); + 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); - // In safari, all years before 1300 are shifted back with one day. - // http://stackoverflow.com/questions/20768975/safari-subtracts-1-day-from-dates-before-1300 - if (new Date('1300-01-01').getUTCFullYear() === 1300) { - // Years less than 100 - ver('0098-06', 'GGGG-WW', '0098 02 03', 'small years work', true); + 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('parsing localized weekdays', function (assert) { - var ver = getVerifier(assert); - try { - moment.locale('dow:1,doy:4', { - weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), - weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), - weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), - week: {dow: 1, doy: 4} - }); - ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso ignores locale'); - ver('1999 37 7', 'GGGG WW E', '1999 09 19', 'iso ignores locale'); + test('format', function (assert) { + var a = [ + [ + 'dddd, MMMM Do YYYY, a h:mm:ss', + '星期日, 二月 14日 2010, 下午 3:25:50', + ], + ['ddd, Ah', '週日, 下午3'], + ['M Mo MM MMMM MMM', '2 2月 02 二月 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', '15:25:50'], + ['L', '2010/02/14'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日 15:25'], + ['LLLL', '2010年2月14日星期日 15:25'], + ['l', '2010/2/14'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日 15:25'], + ['llll', '2010年2月14日星期日 15:25'], + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; - ver('1999 37 0', 'gggg ww e', '1999 09 13', 'localized e uses local doy and dow: 0 = monday'); - ver('1999 37 4', 'gggg ww e', '1999 09 17', 'localized e uses local doy and dow: 4 = friday'); + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } + }); - ver('1999 37 1', 'gggg ww d', '1999 09 13', 'localized d uses 0-indexed days: 1 = monday'); - ver('1999 37 Lu', 'gggg ww dd', '1999 09 13', 'localized d uses 0-indexed days: Mo'); - ver('1999 37 lun.', 'gggg ww ddd', '1999 09 13', 'localized d uses 0-indexed days: Mon'); - ver('1999 37 lundi', 'gggg ww dddd', '1999 09 13', 'localized d uses 0-indexed days: Monday'); - ver('1999 37 4', 'gggg ww d', '1999 09 16', 'localized d uses 0-indexed days: 4'); + test('format month', function (assert) { + var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split( + '_' + ), + i; - //sunday goes at the end of the week - ver('1999 37 0', 'gggg ww d', '1999 09 19', 'localized d uses 0-indexed days: 0 = sund'); - ver('1999 37 Di', 'gggg ww dd', '1999 09 19', 'localized d uses 0-indexed days: 0 = sund'); - } - finally { - moment.defineLocale('dow:1,doy:4', null); - moment.locale('en'); + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); } }); - test('parsing with customized two-digit year', function (assert) { - var original = moment.parseTwoDigitYear; - try { - assert.equal(moment('68', 'YY').year(), 2068); - assert.equal(moment('69', 'YY').year(), 1969); - moment.parseTwoDigitYear = function (input) { - return +input + (+input > 30 ? 1900 : 2000); - }; - assert.equal(moment('68', 'YY').year(), 1968); - assert.equal(moment('67', 'YY').year(), 1967); - assert.equal(moment('31', 'YY').year(), 1931); - assert.equal(moment('30', 'YY').year(), 2030); - } - finally { - moment.parseTwoDigitYear = original; + test('format week', function (assert) { + var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.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('array with strings', function (assert) { - assert.equal(moment(['2014', '7', '31']).isValid(), true, 'string array + isValid'); + 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), + '1 分鐘', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + '1 分鐘', + '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), + '1 小時', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + '1 小時', + '89 minutes = an hour' + ); + assert.equal( + 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), + '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), + '1 天', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '1 天', + '35 hours = a day' + ); + assert.equal( + 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), + '1 天', + '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), + '1 個月', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '1 個月', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + '1 個月', + '43 days = a month' + ); + assert.equal( + 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), + '2 個月', + '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 個月', + '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), + '1 年', + '345 days = a year' + ); + assert.equal( + 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), + '1 年', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 年', + '5 years = 5 years' + ); }); - test('object with strings', function (assert) { - assert.equal(moment({year: '2014', month: '7', day: '31'}).isValid(), true, 'string object + isValid'); + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), '幾秒後', 'prefix'); + assert.equal(moment(0).from(30000), '幾秒前', 'suffix'); }); - test('utc with array of formats', function (assert) { - assert.equal(moment.utc('2014-01-01', ['YYYY-MM-DD', 'YYYY-MM']).format(), '2014-01-01T00:00:00Z', 'moment.utc works with array of formats'); + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + '幾秒前', + 'now from now should display as in the past' + ); }); - test('parsing invalid string weekdays', function (assert) { - assert.equal(false, moment('a', 'dd').isValid(), - 'dd with invalid weekday, non-strict'); - assert.equal(false, moment('a', 'dd', true).isValid(), - 'dd with invalid weekday, strict'); - assert.equal(false, moment('a', 'ddd').isValid(), - 'ddd with invalid weekday, non-strict'); - assert.equal(false, moment('a', 'ddd', true).isValid(), - 'ddd with invalid weekday, strict'); - assert.equal(false, moment('a', 'dddd').isValid(), - 'dddd with invalid weekday, non-strict'); - assert.equal(false, moment('a', 'dddd', true).isValid(), - 'dddd with invalid weekday, strict'); + 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('milliseconds', function (assert) { - assert.equal(moment('1', 'S').millisecond(), 100); - assert.equal(moment('12', 'SS').millisecond(), 120); - assert.equal(moment('123', 'SSS').millisecond(), 123); - assert.equal(moment('1234', 'SSSS').millisecond(), 123); - assert.equal(moment('12345', 'SSSSS').millisecond(), 123); - assert.equal(moment('123456', 'SSSSSS').millisecond(), 123); - assert.equal(moment('1234567', 'SSSSSSS').millisecond(), 123); - assert.equal(moment('12345678', 'SSSSSSSS').millisecond(), 123); - assert.equal(moment('123456789', 'SSSSSSSSS').millisecond(), 123); - }); + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); - test('hmm', function (assert) { - assert.equal(moment('123', 'hmm', true).format('HH:mm:ss'), '01:23:00', '123 with hmm'); - assert.equal(moment('123a', 'hmmA', true).format('HH:mm:ss'), '01:23:00', '123a with hmmA'); - assert.equal(moment('123p', 'hmmA', true).format('HH:mm:ss'), '13:23:00', '123p with hmmA'); - - assert.equal(moment('1234', 'hmm', true).format('HH:mm:ss'), '12:34:00', '1234 with hmm'); - assert.equal(moment('1234a', 'hmmA', true).format('HH:mm:ss'), '00:34:00', '1234a with hmmA'); - assert.equal(moment('1234p', 'hmmA', true).format('HH:mm:ss'), '12:34:00', '1234p with hmmA'); - - assert.equal(moment('12345', 'hmmss', true).format('HH:mm:ss'), '01:23:45', '12345 with hmmss'); - assert.equal(moment('12345a', 'hmmssA', true).format('HH:mm:ss'), '01:23:45', '12345a with hmmssA'); - assert.equal(moment('12345p', 'hmmssA', true).format('HH:mm:ss'), '13:23:45', '12345p with hmmssA'); - assert.equal(moment('112345', 'hmmss', true).format('HH:mm:ss'), '11:23:45', '112345 with hmmss'); - assert.equal(moment('112345a', 'hmmssA', true).format('HH:mm:ss'), '11:23:45', '112345a with hmmssA'); - assert.equal(moment('112345p', 'hmmssA', true).format('HH:mm:ss'), '23:23:45', '112345p with hmmssA'); - - assert.equal(moment('023', 'Hmm', true).format('HH:mm:ss'), '00:23:00', '023 with Hmm'); - assert.equal(moment('123', 'Hmm', true).format('HH:mm:ss'), '01:23:00', '123 with Hmm'); - assert.equal(moment('1234', 'Hmm', true).format('HH:mm:ss'), '12:34:00', '1234 with Hmm'); - assert.equal(moment('1534', 'Hmm', true).format('HH:mm:ss'), '15:34:00', '1234 with Hmm'); - assert.equal(moment('12345', 'Hmmss', true).format('HH:mm:ss'), '01:23:45', '12345 with Hmmss'); - assert.equal(moment('112345', 'Hmmss', true).format('HH:mm:ss'), '11:23:45', '112345 with Hmmss'); - assert.equal(moment('172345', 'Hmmss', true).format('HH:mm:ss'), '17:23:45', '112345 with Hmmss'); + 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' + ); }); - test('Y token', function (assert) { - assert.equal(moment('1-1-2010', 'M-D-Y', true).year(), 2010, 'parsing Y'); + 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('[下]ddddLT'), + 'Today + ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('[下]ddddLT'), + 'Today + ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[下]ddddLT'), + 'Today + ' + i + ' days end of day' + ); + } }); - test('parsing flags retain parsed date parts', function (assert) { - var a = moment('10 p', 'hh:mm a'); - assert.equal(a.parsingFlags().parsedDateParts[3], 10, 'parsed 10 as the hour'); - assert.equal(a.parsingFlags().parsedDateParts[0], undefined, 'year was not parsed'); - assert.equal(a.parsingFlags().meridiem, 'p', 'meridiem flag was added'); - var b = moment('10:30', ['MMDDYY', 'HH:mm']); - assert.equal(b.parsingFlags().parsedDateParts[3], 10, 'multiple format parshing matched hour'); - assert.equal(b.parsingFlags().parsedDateParts[0], undefined, 'array is properly copied, no residual data from first token parse'); + 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('[上]ddddLT'), + 'Today - ' + i + ' days current time' + ); + m.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + m.format('[上]ddddLT'), + 'Today - ' + i + ' days beginning of day' + ); + m.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[上]ddddLT'), + 'Today - ' + i + ' days end of day' + ); + } }); - test('parsing only meridiem results in invalid date', function (assert) { - assert.ok(!moment('alkj', 'hh:mm a').isValid(), 'because an a token is used, a meridiem will be parsed but nothing else was so invalid'); - assert.ok(moment('02:30 p more extra stuff', 'hh:mm a').isValid(), 'because other tokens were parsed, date is valid'); - assert.ok(moment('1/1/2016 extra data', ['a', 'M/D/YYYY']).isValid(), 'took second format, does not pick up on meridiem parsed from first format (good copy)'); + 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' + ); }); - test('invalid dates return invalid for methods that access the _d prop', function (assert) { - var momentAsDate = moment(['2015', '12', '1']).toDate(); - assert.ok(momentAsDate instanceof Date, 'toDate returns a Date object'); - assert.ok(isNaN(momentAsDate.getTime()), 'toDate returns an invalid Date invalid'); + test('meridiem', function (assert) { + assert.equal( + moment([2011, 2, 23, 0, 0]).format('a'), + '凌晨', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 6, 0]).format('a'), '早上', 'morning'); + assert.equal( + moment([2011, 2, 23, 11, 59]).format('a'), + '上午', + 'before noon' + ); + assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), '中午', 'noon'); + assert.equal( + moment([2011, 2, 23, 12, 1]).format('a'), + '下午', + 'after noon' + ); + assert.equal(moment([2011, 2, 23, 18, 0]).format('a'), '晚上', 'night'); + + assert.equal( + moment([2011, 2, 23, 0, 0]).format('A'), + '凌晨', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning'); + assert.equal( + moment([2011, 2, 23, 11, 59]).format('A'), + '上午', + 'before noon' + ); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); + assert.equal(moment([2011, 2, 23, 12, 1]).format('A'), '下午', 'afternoon'); + assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); }); - test('k, kk', function (assert) { - for (var i = -1; i <= 24; i++) { - var kVal = i + ':15:59'; - var kkVal = (i < 10 ? '0' : '') + i + ':15:59'; - if (i !== 24) { - assert.ok(moment(kVal, 'k:mm:ss').isSame(moment(kVal, 'H:mm:ss')), kVal + ' k parsing'); - assert.ok(moment(kkVal, 'kk:mm:ss').isSame(moment(kkVal, 'HH:mm:ss')), kkVal + ' kk parsing'); - } else { - assert.equal(moment(kVal, 'k:mm:ss').format('k:mm:ss'), kVal, kVal + ' k parsing'); - assert.equal(moment(kkVal, 'kk:mm:ss').format('kk:mm:ss'), kkVal, kkVal + ' skk parsing'); - } - } + test('weeks year starting sunday format', function (assert) { + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '1 01 1週', + 'Jan 1 2012 應該是第 1週' + ); + assert.equal( + moment([2012, 0, 7]).format('w ww wo'), + '1 01 1週', + 'Jan 7 2012 應該是第 1週' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '2 02 2週', + 'Jan 8 2012 應該是第 2週' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '2 02 2週', + 'Jan 14 2012 應該是第 2週' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3週', + 'Jan 15 2012 應該是第 3週' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -67033,27 +114100,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -67063,8 +114135,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -67077,7 +114151,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -67086,64 +114163,749 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); + 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 () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + moment.locale('en'); + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); + defineCommonLocaleTests(name); } - module$1('creation data'); + localeModule('zh-mo'); - test('valid date', function (assert) { - var dat = moment('1992-10-22'); - var orig = dat.creationData(); + test('parse', function (assert) { + var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 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); + } + }); - assert.equal(dat.isValid(), true, '1992-10-22 is valid'); - assert.equal(orig.input, '1992-10-22', 'original input is not correct.'); - assert.equal(orig.format, 'YYYY-MM-DD', 'original format is defined.'); - assert.equal(orig.locale._abbr, 'en', 'default locale is en'); - assert.equal(orig.isUTC, false, 'not a UTC date'); + test('format', function (assert) { + var a = [ + [ + 'dddd, MMMM Do YYYY, a h:mm:ss', + '星期日, 二月 14日 2010, 下午 3:25:50', + ], + ['ddd, Ah', '週日, 下午3'], + ['M Mo MM MMMM MMM', '2 2月 02 二月 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', '15:25:50'], + ['L', '14/02/2010'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日 15:25'], + ['LLLL', '2010年2月14日星期日 15:25'], + ['l', '14/2/2010'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日 15:25'], + ['llll', '2010年2月14日星期日 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('valid date at fr locale', function (assert) { - var dat = moment('1992-10-22', 'YYYY-MM-DD', 'fr'); - var orig = dat.creationData(); + test('format month', function (assert) { + var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split( + '_' + ), + i; - assert.equal(orig.locale._abbr, 'fr', 'locale is fr'); + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); + } }); - test('valid date with formats', function (assert) { - var dat = moment('29-06-1995', ['MM-DD-YYYY', 'DD-MM', 'DD-MM-YYYY']); - var orig = dat.creationData(); + test('format week', function (assert) { + var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split( + '_' + ), + i; - assert.equal(orig.format, 'DD-MM-YYYY', 'DD-MM-YYYY format is defined.'); + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd dd'), + expected[i], + expected[i] + ); + } }); - test('strict', function (assert) { - assert.ok(moment('2015-01-02', 'YYYY-MM-DD', true).creationData().strict, 'strict is true'); - assert.ok(!moment('2015-01-02', 'YYYY-MM-DD').creationData().strict, 'strict is true'); + 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), + '1 分鐘', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + '1 分鐘', + '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), + '1 小時', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + '1 小時', + '89 minutes = an hour' + ); + assert.equal( + 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), + '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), + '1 天', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '1 天', + '35 hours = a day' + ); + assert.equal( + 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), + '1 天', + '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), + '1 個月', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '1 個月', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + '1 個月', + '43 days = a month' + ); + assert.equal( + 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), + '2 個月', + '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 個月', + '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), + '1 年', + '345 days = a year' + ); + assert.equal( + 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), + '1 年', + '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'); + }); + + 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 天內', 'in 5 days'); + }); + + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); + + 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' + ); + }); + + 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.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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'), + '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'), + '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.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + 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 }); + + 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' + ); + }); + + test('meridiem', function (assert) { + assert.equal( + moment([2011, 2, 23, 0, 0]).format('a'), + '凌晨', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 6, 0]).format('a'), '早上', 'morning'); + assert.equal( + moment([2011, 2, 23, 9, 0]).format('a'), + '上午', + 'before noon' + ); + assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), '中午', 'noon'); + assert.equal( + moment([2011, 2, 23, 13, 0]).format('a'), + '下午', + 'after noon' + ); + assert.equal(moment([2011, 2, 23, 18, 0]).format('a'), '晚上', 'night'); + + assert.equal( + moment([2011, 2, 23, 0, 0]).format('A'), + '凌晨', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning'); + assert.equal( + moment([2011, 2, 23, 9, 0]).format('A'), + '上午', + 'before noon' + ); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); + assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); + assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); + }); + + test('weeks year starting sunday format', function (assert) { + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '1 01 1週', + 'Jan 1 2012 應該是第 1週' + ); + assert.equal( + moment([2012, 0, 7]).format('w ww wo'), + '1 01 1週', + 'Jan 7 2012 應該是第 1週' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '2 02 2週', + 'Jan 8 2012 應該是第 2週' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '2 02 2週', + 'Jan 14 2012 應該是第 2週' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3週', + 'Jan 15 2012 應該是第 3週' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -67158,27 +114920,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -67188,8 +114955,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -67202,7 +114971,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -67211,590 +114983,765 @@ /*global QUnit:false*/ - var test = QUnit.test; - - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } + var test = QUnit.test, + only = QUnit.only; function hasOwnProp(a, b) { return Object.prototype.hasOwnProperty.call(a, b); } - function addUnitAlias (unit, shorthand) { - var lowerCase = unit.toLowerCase(); + 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; + } } - var hookCallback; - - function hooks () { - return hookCallback.apply(null, arguments); + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); } - function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; - } + 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' + ); + } + }); - function zeroFill(number, targetLength, forceSign) { - var absNumber = '' + Math.abs(number), - zerosToFill = targetLength - absNumber.length, - sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; - } + 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' + ); + } + }); - var formatTokenFunctions = {}; + 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 + ); + } + }); - // token: 'M' - // padded: ['MM', 2] - // ordinal: 'Mo' - // callback: function () { this.month() + 1 } - function addFormatToken (token, padded, ordinal, callback) { - var func = callback; - if (typeof callback === 'string') { - func = function () { - return this[callback](); - }; - } - if (token) { - formatTokenFunctions[token] = func; - } - if (padded) { - formatTokenFunctions[padded[0]] = function () { - return zeroFill(func.apply(this, arguments), padded[1], padded[2]); - }; - } - if (ordinal) { - formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); - }; - } - } - - var match2 = /\d\d/; // 00 - 99 - var match4 = /\d{4}/; // 0000 - 9999 - var match6 = /[+-]?\d{6}/; // -999999 - 999999 - var match1to2 = /\d\d?/; // 0 - 99 - var match3to4 = /\d\d\d\d?/; // 999 - 9999 - var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 - var match1to4 = /\d{1,4}/; // 0 - 9999 - var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - var matchSigned = /[+-]?\d+/; // -inf - inf - - var regexes = {}; - - function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; - } - - function isNumber(input) { - return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; - } - - 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) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } - } - - function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); + 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') + ); + } + } }); - } - var YEAR = 0; - var MONTH = 1; - var HOUR = 3; - var MINUTE = 4; - var SECOND = 5; - - // FORMATTING + 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 + ); + }); + }); + }); - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? '' + y : '+' + y; - }); + test('month parsing correctness', function (assert) { + var i, m; - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); + 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' + ); - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + 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' + ); + } - // ALIASES + for (i = 0; i < 12; ++i) { + m = moment([2015, i, 15, 18]); + tester('MMM'); + tester('MMM.'); + tester('MMMM'); + tester('MMMM.'); + } + }); - addUnitAlias('year', 'y'); + test('weekday parsing correctness', function (assert) { + var i, m; - // PARSING + 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'); + } - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); + for (i = 0; i < 7; ++i) { + m = moment.utc([2015, 0, i + 1, 18]); + tester('dd'); + tester('ddd'); + tester('dddd'); + } + }); - 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); - }); + 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' + ); + }); - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + 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' + ); + }); } - // HOOKS - - hooks.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + /*global QUnit:false*/ - function mod(n, x) { - return ((n % x) + x) % x; + 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); } - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } + localeModule('zh-tw'); - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; + test('parse', function (assert) { + var tests = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split( + '_' + ), + i; + function equalTest(input, mmm, i) { + assert.equal( + moment(input, mmm).month(), + i, + input + ' should be month ' + (i + 1) + ); } - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; + function equalTestStrict(input, mmm, monthIndex) { + assert.equal( + moment(input, mmm, true).month(), + monthIndex, + input + ' ' + mmm + ' should be strict month ' + (monthIndex + 1) + ); } - return a; - } - - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false, - parsedDateParts : [], - meridiem : null, - rfc2822 : false, - weekdayMismatch : false - }; - } + 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); - function getParsingFlags(m) { - if (m._pf == null) { - m._pf = defaultParsingFlags(); + 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); } - return m._pf; - } + }); - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - var momentProperties = hooks.momentProperties = []; + test('format', function (assert) { + var a = [ + [ + 'dddd, MMMM Do YYYY, a h:mm:ss', + '星期日, 二月 14日 2010, 下午 3:25:50', + ], + ['ddd, Ah', '週日, 下午3'], + ['M Mo MM MMMM MMM', '2 2月 02 二月 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', '15:25:50'], + ['L', '2010/02/14'], + ['LL', '2010年2月14日'], + ['LLL', '2010年2月14日 15:25'], + ['LLLL', '2010年2月14日星期日 15:25'], + ['l', '2010/2/14'], + ['ll', '2010年2月14日'], + ['lll', '2010年2月14日 15:25'], + ['llll', '2010年2月14日星期日 15:25'], + ], + b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + i; - function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && - (typeof console !== 'undefined') && console.warn) { - console.warn('Deprecation warning: ' + msg); + for (i = 0; i < a.length; i++) { + assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); } - } - - function deprecate(msg, fn) { - var firstTime = true; - - return extend(function () { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); - } - if (firstTime) { - var args = []; - var arg; - for (var i = 0; i < arguments.length; i++) { - arg = ''; - if (typeof arguments[i] === 'object') { - arg += '\n[' + i + '] '; - for (var key in arguments[0]) { - arg += key + ': ' + arguments[0][key] + ', '; - } - arg = arg.slice(0, -2); // Remove trailing comma and space - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } - - hooks.suppressDeprecationWarnings = false; - hooks.deprecationHandler = null; - - // FORMATTING - - addFormatToken('w', ['ww', 2], 'wo', 'week'); - addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - - // ALIASES - - addUnitAlias('week', 'w'); - addUnitAlias('isoWeek', 'W'); - - // PARSING + }); - addRegexToken('w', match1to2); - addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); - addRegexToken('WW', match1to2, match2); + test('format month', function (assert) { + var expected = '一月 1月_二月 2月_三月 3月_四月 4月_五月 5月_六月 6月_七月 7月_八月 8月_九月 9月_十月 10月_十一月 11月_十二月 12月'.split( + '_' + ), + i; - addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { - week[token.substr(0, 1)] = toInt(input); + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, i, 1]).format('MMMM MMM'), + expected[i], + expected[i] + ); + } }); - // FORMATTING - - addFormatToken('d', 0, 'do', 'day'); + test('format week', function (assert) { + var expected = '星期日 週日 日_星期一 週一 一_星期二 週二 二_星期三 週三 三_星期四 週四 四_星期五 週五 五_星期六 週六 六'.split( + '_' + ), + i; - addFormatToken('dd', 0, 0, function (format) { - return this.localeData().weekdaysMin(this, format); + for (i = 0; i < expected.length; i++) { + assert.equal( + moment([2011, 0, 2 + i]).format('dddd ddd dd'), + expected[i], + expected[i] + ); + } }); - addFormatToken('ddd', 0, 0, function (format) { - return this.localeData().weekdaysShort(this, format); + 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), + '1 分鐘', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 }), true), + '1 分鐘', + '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), + '1 小時', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 }), true), + '1 小時', + '89 minutes = an hour' + ); + assert.equal( + 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), + '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), + '1 天', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 }), true), + '1 天', + '35 hours = a day' + ); + assert.equal( + 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), + '1 天', + '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), + '1 個月', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 }), true), + '1 個月', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 }), true), + '1 個月', + '43 days = a month' + ); + assert.equal( + 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), + '2 個月', + '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 個月', + '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), + '1 年', + '345 days = a year' + ); + assert.equal( + 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), + '1 年', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 }), true), + '5 年', + '5 years = 5 years' + ); }); - addFormatToken('dddd', 0, 0, function (format) { - return this.localeData().weekdays(this, format); + test('suffix', function (assert) { + assert.equal(moment(30000).from(0), '幾秒後', 'prefix'); + assert.equal(moment(0).from(30000), '幾秒前', 'suffix'); }); - addFormatToken('e', 0, 0, 'weekday'); - addFormatToken('E', 0, 0, 'isoWeekday'); - - // ALIASES + test('now from now', function (assert) { + assert.equal( + moment().fromNow(), + '幾秒前', + 'now from now should display as in the past' + ); + }); - addUnitAlias('day', 'd'); - addUnitAlias('weekday', 'e'); - addUnitAlias('isoWeekday', 'E'); + 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'); + }); - // PARSING + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', function (isStrict, locale) { - return locale.weekdaysMinRegex(isStrict); - }); - addRegexToken('ddd', function (isStrict, locale) { - return locale.weekdaysShortRegex(isStrict); - }); - addRegexToken('dddd', function (isStrict, locale) { - return locale.weekdaysRegex(isStrict); + 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' + ); }); - addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { - var weekday = config._locale.weekdaysParse(input, token, config._strict); - // if we didn't get a weekday name, mark the date as invalid - if (weekday != null) { - week.d = weekday; - } else { - getParsingFlags(config).invalidWeekday = input; + 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.hours(0).minutes(0).seconds(0).milliseconds(0); + assert.equal( + m.calendar(), + 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'), + 'Today + ' + i + ' days end of day' + ); } }); - addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { - week[token] = toInt(input); + 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'), + '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.hours(23).minutes(59).seconds(59).milliseconds(999); + assert.equal( + m.calendar(), + m.format('[上]dddd LT'), + 'Today - ' + i + ' days end of day' + ); + } }); - // FORMATTING + test('calendar all else', function (assert) { + var weeksAgo = moment().subtract({ w: 1 }), + weeksFromNow = moment().add({ w: 1 }); - function hFormat() { - return this.hours() % 12 || 12; - } + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 1 week' + ); - function kFormat() { - return this.hours() || 24; - } + weeksAgo = moment().subtract({ w: 2 }); + weeksFromNow = moment().add({ w: 2 }); - addFormatToken('H', ['HH', 2], 0, 'hour'); - addFormatToken('h', ['hh', 2], 0, hFormat); - addFormatToken('k', ['kk', 2], 0, kFormat); - - addFormatToken('hmm', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); - }); - - addFormatToken('hmmss', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); - }); - - addFormatToken('Hmm', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2); - }); - - addFormatToken('Hmmss', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); - }); - - function meridiem (token, lowercase) { - addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); - }); - } - - meridiem('a', true); - meridiem('A', false); - - // ALIASES - - addUnitAlias('hour', 'h'); - - // PARSING - - function matchMeridiem (isStrict, locale) { - return locale._meridiemParse; - } - - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); - addRegexToken('HH', match1to2, match2); - addRegexToken('hh', match1to2, match2); - addRegexToken('kk', match1to2, match2); - - addRegexToken('hmm', match3to4); - addRegexToken('hmmss', match5to6); - addRegexToken('Hmm', match3to4); - addRegexToken('Hmmss', match5to6); - - addParseToken(['H', 'HH'], HOUR); - addParseToken(['k', 'kk'], function (input, array, config) { - var kInput = toInt(input); - array[HOUR] = kInput === 24 ? 0 : kInput; - }); - addParseToken(['a', 'A'], function (input, array, config) { - config._isPm = config._locale.isPM(input); - config._meridiem = input; - }); - addParseToken(['h', 'hh'], function (input, array, config) { - array[HOUR] = toInt(input); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - getParsingFlags(config).bigHour = true; - }); - addParseToken('Hmm', function (input, array, config) { - var pos = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos)); - array[MINUTE] = toInt(input.substr(pos)); - }); - addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; - array[HOUR] = toInt(input.substr(0, pos1)); - array[MINUTE] = toInt(input.substr(pos1, 2)); - array[SECOND] = toInt(input.substr(pos2)); - }); - - // Pick the first defined of two or three arguments. - - hooks.createFromInputFallback = deprecate( - 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - - // constant that refers to the ISO standard - hooks.ISO_8601 = function () {}; - - // constant that refers to the RFC 2822 form - hooks.RFC_2822 = function () {}; - - function daysInMonth(year, month) { - if (isNaN(year) || isNaN(month)) { - return NaN; - } - var modMonth = mod(month, 12); - year += (month - modMonth) / 12; - return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); - } - - // FORMATTING - - addFormatToken('M', ['MM', 2], 'Mo', function () { - return this.month() + 1; - }); - - addFormatToken('MMM', 0, 0, function (format) { - return this.localeData().monthsShort(this, format); - }); - - addFormatToken('MMMM', 0, 0, function (format) { - return this.localeData().months(this, format); - }); - - // ALIASES - - addUnitAlias('month', 'M'); - - // PARSING - - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', function (isStrict, locale) { - return locale.monthsShortRegex(isStrict); - }); - addRegexToken('MMMM', function (isStrict, locale) { - return locale.monthsRegex(isStrict); - }); - - addParseToken(['M', 'MM'], function (input, array) { - array[MONTH] = toInt(input) - 1; - }); - - addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { - var month = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (month != null) { - array[MONTH] = month; - } else { - getParsingFlags(config).invalidMonth = input; - } - }); - - module$1('days in month'); - - test('days in month', function (assert) { - each([31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], function (days, i) { - var firstDay = moment([2012, i]), - lastDay = moment([2012, i, days]); - assert.equal(firstDay.daysInMonth(), days, firstDay.format('L') + ' should have ' + days + ' days.'); - assert.equal(lastDay.daysInMonth(), days, lastDay.format('L') + ' should have ' + days + ' days.'); - }); - }); - - test('days in month leap years', function (assert) { - assert.equal(moment([2010, 1]).daysInMonth(), 28, 'Feb 2010 should have 28 days'); - assert.equal(moment([2100, 1]).daysInMonth(), 28, 'Feb 2100 should have 28 days'); - assert.equal(moment([2008, 1]).daysInMonth(), 29, 'Feb 2008 should have 29 days'); - assert.equal(moment([2000, 1]).daysInMonth(), 29, 'Feb 2000 should have 29 days'); + assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago'); + assert.equal( + weeksFromNow.calendar(), + weeksFromNow.format('L'), + 'in 2 weeks' + ); }); - test('days in month with NaN inputs', function (assert) { - assert.ok(isNaN(daysInMonth(2, NaN)), 'month NaN inputs should return NaN'); - assert.ok(isNaN(daysInMonth(NaN, 0)), 'year NaN inputs should return NaN'); - assert.ok(!moment([2010, null, null]).isValid(), 'Invalid date because month is NaN'); - }); + test('meridiem', function (assert) { + assert.equal( + moment([2011, 2, 23, 0, 0]).format('a'), + '凌晨', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 6, 0]).format('a'), '早上', 'morning'); + assert.equal( + moment([2011, 2, 23, 9, 0]).format('a'), + '上午', + 'before noon' + ); + assert.equal(moment([2011, 2, 23, 12, 0]).format('a'), '中午', 'noon'); + assert.equal( + moment([2011, 2, 23, 13, 0]).format('a'), + '下午', + 'after noon' + ); + assert.equal(moment([2011, 2, 23, 18, 0]).format('a'), '晚上', 'night'); - test('days in month with overflow', function (assert) { - assert.equal(daysInMonth(14, 22), daysInMonth(15, 10), 'positive overflow by 1'); - assert.equal(daysInMonth(14, 122), daysInMonth(24, 2), 'positive overflow by 10'); - assert.equal(daysInMonth(8, -2), daysInMonth(7, 10), 'negative overflow by 1'); - assert.equal(daysInMonth(-2380, -25), daysInMonth(-2383, 11), 'negative overflow by 3'); + assert.equal( + moment([2011, 2, 23, 0, 0]).format('A'), + '凌晨', + 'before dawn' + ); + assert.equal(moment([2011, 2, 23, 6, 0]).format('A'), '早上', 'morning'); + assert.equal( + moment([2011, 2, 23, 9, 0]).format('A'), + '上午', + 'before noon' + ); + assert.equal(moment([2011, 2, 23, 12, 0]).format('A'), '中午', 'noon'); + assert.equal(moment([2011, 2, 23, 13, 0]).format('A'), '下午', 'afternoon'); + assert.equal(moment([2011, 2, 23, 18, 0]).format('A'), '晚上', 'night'); }); - test('days in month consistent with Date()', function (assert) { - var oldMethod = function (year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); - }; - assert.equal(daysInMonth(14, 22), oldMethod(14, 22), 'positive overflow by 1'); - assert.equal(daysInMonth(14, 122), oldMethod(14, 122), 'positive overflow by 10'); - assert.equal(daysInMonth(8, -2), oldMethod(8, -2), 'negative overflow by 1'); - assert.equal(daysInMonth(-2380, -25), oldMethod(-2380, -25), 'negative overflow by 3'); + test('weeks year starting sunday format', function (assert) { + assert.equal( + moment([2012, 0, 1]).format('w ww wo'), + '1 01 1週', + 'Jan 1 2012 應該是第 1週' + ); + assert.equal( + moment([2012, 0, 7]).format('w ww wo'), + '1 01 1週', + 'Jan 7 2012 應該是第 1週' + ); + assert.equal( + moment([2012, 0, 8]).format('w ww wo'), + '2 02 2週', + 'Jan 8 2012 應該是第 2週' + ); + assert.equal( + moment([2012, 0, 14]).format('w ww wo'), + '2 02 2週', + 'Jan 14 2012 應該是第 2週' + ); + assert.equal( + moment([2012, 0, 15]).format('w ww wo'), + '3 03 3週', + 'Jan 15 2012 應該是第 3週' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -67809,27 +115756,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -67839,8 +115791,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -67853,7 +115807,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -67862,249 +115819,617 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('days in year'); - - // https://github.com/moment/moment/issues/3717 - test('YYYYDDD should not parse DDD=000', function (assert) { - assert.equal(moment(7000000, moment.ISO_8601, true).isValid(), false); - assert.equal(moment('7000000', moment.ISO_8601, true).isValid(), false); - assert.equal(moment(7000000, moment.ISO_8601, false).isValid(), false); - }); + module('add and subtract'); -}))); + test('add short reverse args', function (assert) { + var a = moment(), + b, + c, + d; + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + assert.equal(a.add({ ms: 50 }).milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add({ s: 1 }).seconds(), 9, 'Add seconds'); + assert.equal(a.add({ m: 1 }).minutes(), 8, 'Add minutes'); + assert.equal(a.add({ h: 1 }).hours(), 7, 'Add hours'); + assert.equal(a.add({ d: 1 }).date(), 13, 'Add date'); + assert.equal(a.add({ w: 1 }).date(), 20, 'Add week'); + assert.equal(a.add({ M: 1 }).month(), 10, 'Add month'); + assert.equal(a.add({ y: 1 }).year(), 2012, 'Add year'); + assert.equal(a.add({ Q: 1 }).month(), 1, 'Add quarter'); -;(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'; + b = moment([2010, 0, 31]).add({ M: 1 }); + c = moment([2010, 1, 28]).subtract({ M: 1 }); + d = moment([2010, 1, 28]).subtract({ Q: 1 }); - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } + assert.equal(b.month(), 1, 'add month, jan 31st to feb 28th'); + assert.equal(b.date(), 28, 'add month, jan 31st to feb 28th'); + assert.equal(c.month(), 0, 'subtract month, feb 28th to jan 28th'); + assert.equal(c.date(), 28, 'subtract month, feb 28th to jan 28th'); + assert.equal( + d.month(), + 10, + 'subtract quarter, feb 28th 2010 to nov 28th 2009' + ); + assert.equal( + d.date(), + 28, + 'subtract quarter, feb 28th 2010 to nov 28th 2009' + ); + assert.equal( + d.year(), + 2009, + 'subtract quarter, feb 28th 2010 to nov 28th 2009' + ); + }); - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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; - }; - } + test('add long reverse args', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + assert.equal( + a.add({ milliseconds: 50 }).milliseconds(), + 550, + 'Add milliseconds' + ); + assert.equal(a.add({ seconds: 1 }).seconds(), 9, 'Add seconds'); + assert.equal(a.add({ minutes: 1 }).minutes(), 8, 'Add minutes'); + assert.equal(a.add({ hours: 1 }).hours(), 7, 'Add hours'); + assert.equal(a.add({ days: 1 }).date(), 13, 'Add date'); + assert.equal(a.add({ weeks: 1 }).date(), 20, 'Add week'); + assert.equal(a.add({ months: 1 }).month(), 10, 'Add month'); + assert.equal(a.add({ years: 1 }).year(), 2012, 'Add year'); + assert.equal(a.add({ quarters: 1 }).month(), 1, 'Add quarter'); + }); - 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(' ')); - } - } - } + test('add long singular reverse args', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); - 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; - } + assert.equal( + a.add({ millisecond: 50 }).milliseconds(), + 550, + 'Add milliseconds' + ); + assert.equal(a.add({ second: 1 }).seconds(), 9, 'Add seconds'); + assert.equal(a.add({ minute: 1 }).minutes(), 8, 'Add minutes'); + assert.equal(a.add({ hour: 1 }).hours(), 7, 'Add hours'); + assert.equal(a.add({ day: 1 }).date(), 13, 'Add date'); + assert.equal(a.add({ week: 1 }).date(), 20, 'Add week'); + assert.equal(a.add({ month: 1 }).month(), 10, 'Add month'); + assert.equal(a.add({ year: 1 }).year(), 2012, 'Add year'); + assert.equal(a.add({ quarter: 1 }).month(), 1, 'Add quarter'); + }); - /*global QUnit:false*/ + test('add string long reverse args', function (assert) { + var a = moment(), + b; - var test = QUnit.test; + test.expectedDeprecations('moment().add(period, number)'); - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } + b = a.clone(); - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; - } - } + assert.equal( + a.add('millisecond', 50).milliseconds(), + 550, + 'Add milliseconds' + ); + assert.equal(a.add('second', 1).seconds(), 9, 'Add seconds'); + assert.equal(a.add('minute', 1).minutes(), 8, 'Add minutes'); + assert.equal(a.add('hour', 1).hours(), 7, 'Add hours'); + assert.equal(a.add('day', 1).date(), 13, 'Add date'); + assert.equal(a.add('week', 1).date(), 20, 'Add week'); + assert.equal(a.add('month', 1).month(), 10, 'Add month'); + assert.equal(a.add('year', 1).year(), 2012, 'Add year'); + assert.equal(b.add('day', '01').date(), 13, 'Add date'); + assert.equal(a.add('quarter', 1).month(), 1, 'Add quarter'); + }); - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; - } + test('add string long singular reverse args', function (assert) { + var a = moment(), + b; - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; - } + test.expectedDeprecations('moment().add(period, number)'); - return a; - } + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); - var hookCallback; + b = a.clone(); - function hooks () { - return hookCallback.apply(null, arguments); - } + assert.equal( + a.add('milliseconds', 50).milliseconds(), + 550, + 'Add milliseconds' + ); + assert.equal(a.add('seconds', 1).seconds(), 9, 'Add seconds'); + assert.equal(a.add('minutes', 1).minutes(), 8, 'Add minutes'); + assert.equal(a.add('hours', 1).hours(), 7, 'Add hours'); + assert.equal(a.add('days', 1).date(), 13, 'Add date'); + assert.equal(a.add('weeks', 1).date(), 20, 'Add week'); + assert.equal(a.add('months', 1).month(), 10, 'Add month'); + assert.equal(a.add('years', 1).year(), 2012, 'Add year'); + assert.equal(b.add('days', '01').date(), 13, 'Add date'); + assert.equal(a.add('quarters', 1).month(), 1, 'Add quarter'); + }); - function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && - (typeof console !== 'undefined') && console.warn) { - console.warn('Deprecation warning: ' + msg); - } - } + test('add string short reverse args', function (assert) { + var a = moment(); + test.expectedDeprecations('moment().add(period, number)'); - function deprecate(msg, fn) { - var firstTime = true; + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); - return extend(function () { - if (hooks.deprecationHandler != null) { - hooks.deprecationHandler(null, msg); - } - if (firstTime) { - var args = []; - var arg; - for (var i = 0; i < arguments.length; i++) { - arg = ''; - if (typeof arguments[i] === 'object') { - arg += '\n[' + i + '] '; - for (var key in arguments[0]) { - arg += key + ': ' + arguments[0][key] + ', '; - } - arg = arg.slice(0, -2); // Remove trailing comma and space - } else { - arg = arguments[i]; - } - args.push(arg); - } - warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); - } + assert.equal(a.add('ms', 50).milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add('s', 1).seconds(), 9, 'Add seconds'); + assert.equal(a.add('m', 1).minutes(), 8, 'Add minutes'); + assert.equal(a.add('h', 1).hours(), 7, 'Add hours'); + assert.equal(a.add('d', 1).date(), 13, 'Add date'); + assert.equal(a.add('w', 1).date(), 20, 'Add week'); + assert.equal(a.add('M', 1).month(), 10, 'Add month'); + assert.equal(a.add('y', 1).year(), 2012, 'Add year'); + assert.equal(a.add('Q', 1).month(), 1, 'Add quarter'); + }); - hooks.suppressDeprecationWarnings = false; - hooks.deprecationHandler = null; + test('add string long', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); - module$1('deprecate'); + assert.equal( + a.add(50, 'millisecond').milliseconds(), + 550, + 'Add milliseconds' + ); + assert.equal(a.add(1, 'second').seconds(), 9, 'Add seconds'); + assert.equal(a.add(1, 'minute').minutes(), 8, 'Add minutes'); + assert.equal(a.add(1, 'hour').hours(), 7, 'Add hours'); + assert.equal(a.add(1, 'day').date(), 13, 'Add date'); + assert.equal(a.add(1, 'week').date(), 20, 'Add week'); + assert.equal(a.add(1, 'month').month(), 10, 'Add month'); + assert.equal(a.add(1, 'year').year(), 2012, 'Add year'); + assert.equal(a.add(1, 'quarter').month(), 1, 'Add quarter'); + }); - test('deprecate', function (assert) { - // NOTE: hooks inside deprecate.js and moment are different, so this is can - // not be test.expectedDeprecations(...) - var fn = function () {}; - var deprecatedFn = deprecate('testing deprecation', fn); - deprecatedFn(); + test('add string long singular', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); - assert.expect(0); + assert.equal( + a.add(50, 'milliseconds').milliseconds(), + 550, + 'Add milliseconds' + ); + assert.equal(a.add(1, 'seconds').seconds(), 9, 'Add seconds'); + assert.equal(a.add(1, 'minutes').minutes(), 8, 'Add minutes'); + assert.equal(a.add(1, 'hours').hours(), 7, 'Add hours'); + assert.equal(a.add(1, 'days').date(), 13, 'Add date'); + assert.equal(a.add(1, 'weeks').date(), 20, 'Add week'); + assert.equal(a.add(1, 'months').month(), 10, 'Add month'); + assert.equal(a.add(1, 'years').year(), 2012, 'Add year'); + assert.equal(a.add(1, 'quarters').month(), 1, 'Add quarter'); }); -}))); + test('add string short', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + assert.equal(a.add(50, 'ms').milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add(1, 's').seconds(), 9, 'Add seconds'); + assert.equal(a.add(1, 'm').minutes(), 8, 'Add minutes'); + assert.equal(a.add(1, 'h').hours(), 7, 'Add hours'); + assert.equal(a.add(1, 'd').date(), 13, 'Add date'); + assert.equal(a.add(1, 'w').date(), 20, 'Add week'); + assert.equal(a.add(1, 'M').month(), 10, 'Add month'); + assert.equal(a.add(1, 'y').year(), 2012, 'Add year'); + assert.equal(a.add(1, 'Q').month(), 1, 'Add quarter'); + }); -;(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'; + test('add strings string short reversed', function (assert) { + var a = moment(); + test.expectedDeprecations('moment().add(period, number)'); - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); - if (deprecationId === -1) { - throw new Error('Unexpected deprecation thrown name=' + - name + ' msg=' + msg); + assert.equal(a.add('ms', '50').milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add('s', '1').seconds(), 9, 'Add seconds'); + assert.equal(a.add('m', '1').minutes(), 8, 'Add minutes'); + assert.equal(a.add('h', '1').hours(), 7, 'Add hours'); + assert.equal(a.add('d', '1').date(), 13, 'Add date'); + assert.equal(a.add('w', '1').date(), 20, 'Add week'); + assert.equal(a.add('M', '1').month(), 10, 'Add month'); + assert.equal(a.add('y', '1').year(), 2012, 'Add year'); + assert.equal(a.add('Q', '1').month(), 1, 'Add quarter'); + }); + + test('subtract strings string short reversed', function (assert) { + var a = moment(); + test.expectedDeprecations('moment().subtract(period, number)'); + + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal( + a.subtract('ms', '50').milliseconds(), + 450, + 'Subtract milliseconds' + ); + assert.equal(a.subtract('s', '1').seconds(), 7, 'Subtract seconds'); + assert.equal(a.subtract('m', '1').minutes(), 6, 'Subtract minutes'); + assert.equal(a.subtract('h', '1').hours(), 5, 'Subtract hours'); + assert.equal(a.subtract('d', '1').date(), 11, 'Subtract date'); + assert.equal(a.subtract('w', '1').date(), 4, 'Subtract week'); + assert.equal(a.subtract('M', '1').month(), 8, 'Subtract month'); + assert.equal(a.subtract('y', '1').year(), 2010, 'Subtract year'); + assert.equal(a.subtract('Q', '1').month(), 5, 'Subtract quarter'); + }); + + test('add strings string short', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add('50', 'ms').milliseconds(), 550, 'Add milliseconds'); + assert.equal(a.add('1', 's').seconds(), 9, 'Add seconds'); + assert.equal(a.add('1', 'm').minutes(), 8, 'Add minutes'); + assert.equal(a.add('1', 'h').hours(), 7, 'Add hours'); + assert.equal(a.add('1', 'd').date(), 13, 'Add date'); + assert.equal(a.add('1', 'w').date(), 20, 'Add week'); + assert.equal(a.add('1', 'M').month(), 10, 'Add month'); + assert.equal(a.add('1', 'y').year(), 2012, 'Add year'); + assert.equal(a.add('1', 'Q').month(), 1, 'Add quarter'); + }); + + test('add no string with milliseconds default', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal(a.add(50).milliseconds(), 550, 'Add milliseconds'); + }); + + test('subtract strings string short', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(500); + + assert.equal( + a.subtract('50', 'ms').milliseconds(), + 450, + 'Subtract milliseconds' + ); + assert.equal(a.subtract('1', 's').seconds(), 7, 'Subtract seconds'); + assert.equal(a.subtract('1', 'm').minutes(), 6, 'Subtract minutes'); + assert.equal(a.subtract('1', 'h').hours(), 5, 'Subtract hours'); + assert.equal(a.subtract('1', 'd').date(), 11, 'Subtract date'); + assert.equal(a.subtract('1', 'w').date(), 4, 'Subtract week'); + assert.equal(a.subtract('1', 'M').month(), 8, 'Subtract month'); + assert.equal(a.subtract('1', 'y').year(), 2010, 'Subtract year'); + assert.equal(a.subtract('1', 'Q').month(), 5, 'Subtract quarter'); + }); + + test('add across DST', function (assert) { + // Detect Safari bug and bail. Hours on 13th March 2011 are shifted + // with 1 ahead. + if (new Date(2011, 2, 13, 5, 0, 0).getHours() !== 5) { + assert.expect(0); + return; + } + + var a = moment(new Date(2011, 2, 12, 5, 0, 0)), + b = moment(new Date(2011, 2, 12, 5, 0, 0)), + c = moment(new Date(2011, 2, 12, 5, 0, 0)), + d = moment(new Date(2011, 2, 12, 5, 0, 0)), + e = moment(new Date(2011, 2, 12, 5, 0, 0)); + a.add(1, 'days'); + b.add(24, 'hours'); + c.add(1, 'months'); + e.add(1, 'quarter'); + + assert.equal( + a.hours(), + 5, + 'adding days over DST difference should result in the same hour' + ); + if (b.isDST() && !d.isDST()) { + assert.equal( + b.hours(), + 6, + 'adding hours over DST difference should result in a different hour' + ); + } else if (!b.isDST() && d.isDST()) { + assert.equal( + b.hours(), + 4, + 'adding hours over DST difference should result in a different hour' + ); + } else { + assert.equal( + b.hours(), + 5, + 'adding hours over DST difference should result in a same hour if the timezone does not have daylight savings time' + ); + } + assert.equal( + c.hours(), + 5, + 'adding months over DST difference should result in the same hour' + ); + assert.equal( + e.hours(), + 5, + 'adding quarters over DST difference should result in the same hour' + ); + }); + + test('add decimal values of days and months', function (assert) { + assert.equal( + moment([2016, 3, 3]).add(1.5, 'days').date(), + 5, + 'adding 1.5 days is rounded to adding 2 day' + ); + assert.equal( + moment([2016, 3, 3]).add(-1.5, 'days').date(), + 1, + 'adding -1.5 days is rounded to adding -2 day' + ); + assert.equal( + moment([2016, 3, 1]).add(-1.5, 'days').date(), + 30, + 'adding -1.5 days on first of month wraps around' + ); + assert.equal( + moment([2016, 3, 3]).add(1.5, 'months').month(), + 5, + 'adding 1.5 months adds 2 months' + ); + assert.equal( + moment([2016, 3, 3]).add(-1.5, 'months').month(), + 1, + 'adding -1.5 months adds -2 months' + ); + assert.equal( + moment([2016, 0, 3]).add(-1.5, 'months').month(), + 10, + 'adding -1.5 months at start of year wraps back' + ); + assert.equal( + moment([2016, 3, 3]).subtract(1.5, 'days').date(), + 1, + 'subtract 1.5 days is rounded to subtract 2 day' + ); + assert.equal( + moment([2016, 3, 2]).subtract(1.5, 'days').date(), + 31, + 'subtract 1.5 days subtracts 2 days' + ); + assert.equal( + moment([2016, 1, 1]).subtract(1.1, 'days').date(), + 31, + 'subtract 1.1 days wraps to previous month' + ); + assert.equal( + moment([2016, 3, 3]).subtract(-1.5, 'days').date(), + 5, + 'subtract -1.5 days is rounded to subtract -2 day' + ); + assert.equal( + moment([2016, 3, 30]).subtract(-1.5, 'days').date(), + 2, + 'subtract -1.5 days on last of month wraps around' + ); + assert.equal( + moment([2016, 3, 3]).subtract(1.5, 'months').month(), + 1, + 'subtract 1.5 months subtract 2 months' + ); + assert.equal( + moment([2016, 3, 3]).subtract(-1.5, 'months').month(), + 5, + 'subtract -1.5 months subtract -2 month' + ); + assert.equal( + moment([2016, 11, 31]).subtract(-1.5, 'months').month(), + 1, + 'subtract -1.5 months at end of year wraps back' + ); + assert.equal( + moment([2016, 0, 1]).add(1.5, 'years').format('YYYY-MM-DD'), + '2017-07-01', + 'add 1.5 years adds 1 year six months' + ); + assert.equal( + moment([2016, 0, 1]).add(1.6, 'years').format('YYYY-MM-DD'), + '2017-08-01', + 'add 1.6 years becomes 1.6*12 = 19.2, round, 19 months' + ); + assert.equal( + moment([2016, 0, 1]).add(1.1, 'quarters').format('YYYY-MM-DD'), + '2016-04-01', + 'add 1.1 quarters 1.1*3=3.3, round, 3 months' + ); + }); + + test('add/subtract ISO week', function (assert) { + assert.equal( + moment([2016, 3, 15]).subtract(1, 'W').date(), + 8, + 'subtract 1 iso week short' + ); + assert.equal( + moment([2016, 3, 15]).subtract(1, 'isoweek').date(), + 8, + 'subtract 1 iso week long singular' + ); + assert.equal( + moment([2016, 3, 15]).subtract(1, 'isoweeks').date(), + 8, + 'subtract 1 iso weeks long' + ); + + assert.equal( + moment([2016, 3, 15]).add(1, 'W').date(), + 22, + 'add 1 iso week short' + ); + assert.equal( + moment([2016, 3, 15]).add(1, 'isoweek').date(), + 22, + 'add 1 week long singular' + ); + assert.equal( + moment([2016, 3, 15]).add(1, 'isoweeks').date(), + 22, + 'add 1 weeks long' + ); + }); + +}))); + + + +;(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$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -68114,8 +116439,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -68128,7 +116455,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -68137,277 +116467,218 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - function equal(assert, a, b, message) { - assert.ok(Math.abs(a - b) < 0.00000001, '(' + a + ' === ' + b + ') ' + message); - } - - function dstForYear(year) { - var start = moment([year]), - end = moment([year + 1]), - current = start.clone(), - last; + // These tests are for locale independent features - while (current < end) { - last = current.clone(); - current.add(24, 'hour'); - if (last.utcOffset() !== current.utcOffset()) { - end = current.clone(); - current = last.clone(); - break; - } - } + module('calendar'); - while (current < end) { - last = current.clone(); - current.add(1, 'hour'); - if (last.utcOffset() !== current.utcOffset()) { - return { - moment : last, - diff : -(current.utcOffset() - last.utcOffset()) / 60 - }; - } - } - } + test('passing a function', function (assert) { + var a = moment().hours(13).minutes(0).seconds(0); + assert.equal( + moment(a).calendar(null, { + sameDay: function () { + return 'h:mmA'; + }, + }), + '1:00PM', + 'should equate' + ); + }); - module$1('diff'); + test('extending calendar options', function (assert) { + var calendarFormat = moment.calendarFormat, + a, + b; - test('diff', function (assert) { - assert.equal(moment(1000).diff(0), 1000, '1 second - 0 = 1000'); - assert.equal(moment(1000).diff(500), 500, '1 second - 0.5 seconds = 500'); - assert.equal(moment(0).diff(1000), -1000, '0 - 1 second = -1000'); - assert.equal(moment(new Date(1000)).diff(1000), 0, '1 second - 1 second = 0'); - var oneHourDate = new Date(2015, 5, 21), - nowDate = new Date(+oneHourDate); - oneHourDate.setHours(oneHourDate.getHours() + 1); - assert.equal(moment(oneHourDate).diff(nowDate), 60 * 60 * 1000, '1 hour from now = 3600000'); - }); + moment.calendarFormat = function (myMoment, now) { + var diff = myMoment.diff(now, 'days', true), + nextMonth = now.clone().add(1, 'month'), + retVal = + 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'; + return retVal; + }; - test('diff key after', function (assert) { - assert.equal(moment([2010]).diff([2011], 'years'), -1, 'year diff'); - assert.equal(moment([2010]).diff([2010, 2], 'months'), -2, 'month diff'); - assert.equal(moment([2010]).diff([2010, 0, 7], 'weeks'), 0, 'week diff'); - assert.equal(moment([2010]).diff([2010, 0, 8], 'weeks'), -1, 'week diff'); - assert.equal(moment([2010]).diff([2010, 0, 21], 'weeks'), -2, 'week diff'); - assert.equal(moment([2010]).diff([2010, 0, 22], 'weeks'), -3, 'week diff'); - assert.equal(moment([2010]).diff([2010, 0, 4], 'days'), -3, 'day diff'); - assert.equal(moment([2010]).diff([2010, 0, 1, 4], 'hours'), -4, 'hour diff'); - assert.equal(moment([2010]).diff([2010, 0, 1, 0, 5], 'minutes'), -5, 'minute diff'); - assert.equal(moment([2010]).diff([2010, 0, 1, 0, 0, 6], 'seconds'), -6, 'second diff'); - }); + moment.updateLocale('en', { + calendar: { + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + thisMonth: '[This month on the] Do', + nextMonth: '[Next month on the] Do', + sameElse: 'L', + }, + }); - test('diff key before', function (assert) { - assert.equal(moment([2011]).diff([2010], 'years'), 1, 'year diff'); - assert.equal(moment([2010, 2]).diff([2010], 'months'), 2, 'month diff'); - assert.equal(moment([2010, 0, 4]).diff([2010], 'days'), 3, 'day diff'); - assert.equal(moment([2010, 0, 7]).diff([2010], 'weeks'), 0, 'week diff'); - assert.equal(moment([2010, 0, 8]).diff([2010], 'weeks'), 1, 'week diff'); - assert.equal(moment([2010, 0, 21]).diff([2010], 'weeks'), 2, 'week diff'); - assert.equal(moment([2010, 0, 22]).diff([2010], 'weeks'), 3, 'week diff'); - assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'hours'), 4, 'hour diff'); - assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minutes'), 5, 'minute diff'); - assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'seconds'), 6, 'second diff'); - }); + a = moment('2016-01-01').add(28, 'days'); + b = moment('2016-01-01').add(1, 'month'); - test('diff key before singular', function (assert) { - assert.equal(moment([2011]).diff([2010], 'year'), 1, 'year diff singular'); - assert.equal(moment([2010, 2]).diff([2010], 'month'), 2, 'month diff singular'); - assert.equal(moment([2010, 0, 4]).diff([2010], 'day'), 3, 'day diff singular'); - assert.equal(moment([2010, 0, 7]).diff([2010], 'week'), 0, 'week diff singular'); - assert.equal(moment([2010, 0, 8]).diff([2010], 'week'), 1, 'week diff singular'); - assert.equal(moment([2010, 0, 21]).diff([2010], 'week'), 2, 'week diff singular'); - assert.equal(moment([2010, 0, 22]).diff([2010], 'week'), 3, 'week diff singular'); - assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'hour'), 4, 'hour diff singular'); - assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'minute'), 5, 'minute diff singular'); - assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'second'), 6, 'second diff singular'); + try { + assert.equal( + a.calendar('2016-01-01'), + 'This month on the 29th', + 'Ad hoc calendar format for this month' + ); + assert.equal( + b.calendar('2016-01-01'), + 'Next month on the 1st', + 'Ad hoc calendar format for next month' + ); + assert.equal( + a.locale('fr').calendar('2016-01-01'), + a.locale('fr').format('L'), + 'French falls back to default because thisMonth is not defined in that locale' + ); + } finally { + moment.calendarFormat = calendarFormat; + moment.updateLocale('en', null); + } }); - test('diff key before abbreviated', function (assert) { - assert.equal(moment([2011]).diff([2010], 'y'), 1, 'year diff abbreviated'); - assert.equal(moment([2010, 2]).diff([2010], 'M'), 2, 'month diff abbreviated'); - assert.equal(moment([2010, 0, 4]).diff([2010], 'd'), 3, 'day diff abbreviated'); - assert.equal(moment([2010, 0, 7]).diff([2010], 'w'), 0, 'week diff abbreviated'); - assert.equal(moment([2010, 0, 8]).diff([2010], 'w'), 1, 'week diff abbreviated'); - assert.equal(moment([2010, 0, 21]).diff([2010], 'w'), 2, 'week diff abbreviated'); - assert.equal(moment([2010, 0, 22]).diff([2010], 'w'), 3, 'week diff abbreviated'); - assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'h'), 4, 'hour diff abbreviated'); - assert.equal(moment([2010, 0, 1, 0, 5]).diff([2010], 'm'), 5, 'minute diff abbreviated'); - assert.equal(moment([2010, 0, 1, 0, 0, 6]).diff([2010], 's'), 6, 'second diff abbreviated'); + test('calendar overload time - passing one parameter - a Moment', function (assert) { + var a = moment().hours(13).minutes(23).seconds(45), + b = moment().add(1, 'd'); + assert.equal(a.calendar(b), 'Yesterday at 1:23 PM', 'should equate'); }); - test('diff month', function (assert) { - assert.equal(moment([2011, 0, 31]).diff([2011, 2, 1], 'months'), -1, 'month diff'); + test('calendar overload time - passing one parameter - a Date', function (assert) { + var a = moment().hours(13).minutes(23).seconds(45).subtract(1, 'd'), + d = new Date(); + assert.equal(a.calendar(d), 'Yesterday at 1:23 PM', 'should equate'); }); - test('diff across DST', function (assert) { - var dst = dstForYear(2012), a, b, daysInMonth; - if (!dst) { - assert.equal(42, 42, 'at least one assertion'); - return; - } - - a = dst.moment; - b = a.clone().utc().add(12, 'hours').local(); - daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; - assert.equal(b.diff(a, 'milliseconds', true), 12 * 60 * 60 * 1000, - 'ms diff across DST'); - assert.equal(b.diff(a, 'seconds', true), 12 * 60 * 60, - 'second diff across DST'); - assert.equal(b.diff(a, 'minutes', true), 12 * 60, - 'minute diff across DST'); - assert.equal(b.diff(a, 'hours', true), 12, - 'hour diff across DST'); - assert.equal(b.diff(a, 'days', true), (12 - dst.diff) / 24, - 'day diff across DST'); - equal(assert, b.diff(a, 'weeks', true), (12 - dst.diff) / 24 / 7, - 'week diff across DST'); - assert.ok(0.95 / (2 * 31) < b.diff(a, 'months', true), - 'month diff across DST, lower bound'); - assert.ok(b.diff(a, 'month', true) < 1.05 / (2 * 28), - 'month diff across DST, upper bound'); - assert.ok(0.95 / (2 * 31 * 12) < b.diff(a, 'years', true), - 'year diff across DST, lower bound'); - assert.ok(b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12), - 'year diff across DST, upper bound'); - - a = dst.moment; - b = a.clone().utc().add(12 + dst.diff, 'hours').local(); - daysInMonth = (a.daysInMonth() + b.daysInMonth()) / 2; - - assert.equal(b.diff(a, 'milliseconds', true), - (12 + dst.diff) * 60 * 60 * 1000, - 'ms diff across DST'); - assert.equal(b.diff(a, 'seconds', true), (12 + dst.diff) * 60 * 60, - 'second diff across DST'); - assert.equal(b.diff(a, 'minutes', true), (12 + dst.diff) * 60, - 'minute diff across DST'); - assert.equal(b.diff(a, 'hours', true), (12 + dst.diff), - 'hour diff across DST'); - assert.equal(b.diff(a, 'days', true), 12 / 24, 'day diff across DST'); - equal(assert, b.diff(a, 'weeks', true), 12 / 24 / 7, - 'week diff across DST'); - assert.ok(0.95 / (2 * 31) < b.diff(a, 'months', true), - 'month diff across DST, lower bound'); - assert.ok(b.diff(a, 'month', true) < 1.05 / (2 * 28), - 'month diff across DST, upper bound'); - assert.ok(0.95 / (2 * 31 * 12) < b.diff(a, 'years', true), - 'year diff across DST, lower bound'); - assert.ok(b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12), - 'year diff across DST, upper bound'); + test('calendar overload time - passing one parameter - a string', function (assert) { + var a = moment([2808, 11, 1]); + assert.equal(a.calendar('1999-12-31'), '12/01/2808', 'should equate'); }); - test('diff overflow', function (assert) { - assert.equal(moment([2011]).diff([2010], 'months'), 12, 'month diff'); - assert.equal(moment([2010, 0, 2]).diff([2010], 'hours'), 24, 'hour diff'); - assert.equal(moment([2010, 0, 1, 2]).diff([2010], 'minutes'), 120, 'minute diff'); - assert.equal(moment([2010, 0, 1, 0, 4]).diff([2010], 'seconds'), 240, 'second diff'); + test('calendar overload time - passing one parameter - a number', function (assert) { + var a = moment([2808, 11, 1]); + assert.equal(a.calendar(Date.now()), '12/01/2808', 'should equate'); }); - test('diff between utc and local', function (assert) { - if (moment([2012]).utcOffset() === moment([2011]).utcOffset()) { - // Russia's utc offset on 1st of Jan 2012 vs 2011 is different - assert.equal(moment([2012]).utc().diff([2011], 'years'), 1, 'year diff'); - } - assert.equal(moment([2010, 2, 2]).utc().diff([2010, 0, 2], 'months'), 2, 'month diff'); - assert.equal(moment([2010, 0, 4]).utc().diff([2010], 'days'), 3, 'day diff'); - assert.equal(moment([2010, 0, 22]).utc().diff([2010], 'weeks'), 3, 'week diff'); - assert.equal(moment([2010, 0, 1, 4]).utc().diff([2010], 'hours'), 4, 'hour diff'); - assert.equal(moment([2010, 0, 1, 0, 5]).utc().diff([2010], 'minutes'), 5, 'minute diff'); - assert.equal(moment([2010, 0, 1, 0, 0, 6]).utc().diff([2010], 'seconds'), 6, 'second diff'); + test('calendar overload time - passing one parameter - an array of numbers', function (assert) { + var a = moment() + .year(2808) + .month(11) + .date(1) + .hours(13) + .minutes(23) + .seconds(45); + assert.equal( + a.calendar([2808, 11, 1, 13, 23, 45]), + 'Today at 1:23 PM', + 'should equate' + ); }); - test('diff floored', function (assert) { - assert.equal(moment([2010, 0, 1, 23]).diff([2010], 'day'), 0, '23 hours = 0 days'); - assert.equal(moment([2010, 0, 1, 23, 59]).diff([2010], 'day'), 0, '23:59 hours = 0 days'); - assert.equal(moment([2010, 0, 1, 24]).diff([2010], 'day'), 1, '24 hours = 1 day'); - assert.equal(moment([2010, 0, 2]).diff([2011, 0, 1], 'year'), 0, 'year rounded down'); - assert.equal(moment([2011, 0, 1]).diff([2010, 0, 2], 'year'), 0, 'year rounded down'); - assert.equal(moment([2010, 0, 2]).diff([2011, 0, 2], 'year'), -1, 'year rounded down'); - assert.equal(moment([2011, 0, 2]).diff([2010, 0, 2], 'year'), 1, 'year rounded down'); + test('calendar overload time - passing one parameter - an array of strings', function (assert) { + var a = moment() + .year(2808) + .month(11) + .date(1) + .hours(13) + .minutes(23) + .seconds(45); + assert.equal( + a.calendar(['2808', '11', '1', '13', '23', '45']), + 'Today at 1:23 PM', + 'should equate' + ); }); - test('year diffs include dates', function (assert) { - assert.ok(moment([2012, 1, 19]).diff(moment([2002, 1, 20]), 'years', true) < 10, 'year diff should include date of month'); - }); + test('calendar overload time - passing one parameter - a moment input object', function (assert) { + var a = moment(), + todayTime = new Date(), + month = todayTime.getMonth() + 1, + day = todayTime.getDate(), + year = todayTime.getFullYear(), + expectedString; - test('month diffs', function (assert) { - // due to floating point math errors, these tests just need to be accurate within 0.00000001 - assert.equal(moment([2012, 0, 1]).diff([2012, 1, 1], 'months', true), -1, 'Jan 1 to Feb 1 should be 1 month'); - equal(assert, moment([2012, 0, 1]).diff([2012, 0, 1, 12], 'months', true), -0.5 / 31, 'Jan 1 to Jan 1 noon should be 0.5 / 31 months'); - assert.equal(moment([2012, 0, 15]).diff([2012, 1, 15], 'months', true), -1, 'Jan 15 to Feb 15 should be 1 month'); - assert.equal(moment([2012, 0, 28]).diff([2012, 1, 28], 'months', true), -1, 'Jan 28 to Feb 28 should be 1 month'); - assert.ok(moment([2012, 0, 31]).diff([2012, 1, 29], 'months', true), -1, 'Jan 31 to Feb 29 should be 1 month'); - assert.ok(-1 > moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), 'Jan 31 to Mar 1 should be more than 1 month'); - assert.ok(-30 / 28 < moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), 'Jan 31 to Mar 1 should be less than 1 month and 1 day'); - equal(assert, moment([2012, 0, 1]).diff([2012, 0, 31], 'months', true), -(30 / 31), 'Jan 1 to Jan 31 should be 30 / 31 months'); - assert.ok(0 < moment('2014-02-01').diff(moment('2014-01-31'), 'months', true), 'jan-31 to feb-1 diff is positive'); - }); + month = month < 10 ? '0' + month.toString() : month; + day = day < 10 ? '0' + day.toString() : day; - test('exact month diffs', function (assert) { - // generate all pairs of months and compute month diff, with fixed day - // of month = 15. + expectedString = month + '/' + day + '/' + year; - var m1, m2; - for (m1 = 0; m1 < 12; ++m1) { - for (m2 = m1; m2 < 12; ++m2) { - assert.equal(moment([2013, m2, 15]).diff(moment([2013, m1, 15]), 'months', true), m2 - m1, - 'month diff from 2013-' + m1 + '-15 to 2013-' + m2 + '-15'); - } - } + assert.equal( + a.calendar({ + month: 12, + day: 1, + year: 2808, + }), + expectedString, + 'should equate' + ); }); - test('year diffs', function (assert) { - // due to floating point math errors, these tests just need to be accurate within 0.00000001 - equal(assert, moment([2012, 0, 1]).diff([2013, 0, 1], 'years', true), -1, 'Jan 1 2012 to Jan 1 2013 should be 1 year'); - equal(assert, moment([2012, 1, 28]).diff([2013, 1, 28], 'years', true), -1, 'Feb 28 2012 to Feb 28 2013 should be 1 year'); - equal(assert, moment([2012, 2, 1]).diff([2013, 2, 1], 'years', true), -1, 'Mar 1 2012 to Mar 1 2013 should be 1 year'); - equal(assert, moment([2012, 11, 1]).diff([2013, 11, 1], 'years', true), -1, 'Dec 1 2012 to Dec 1 2013 should be 1 year'); - equal(assert, moment([2012, 11, 31]).diff([2013, 11, 31], 'years', true), -1, 'Dec 31 2012 to Dec 31 2013 should be 1 year'); - equal(assert, moment([2012, 0, 1]).diff([2013, 6, 1], 'years', true), -1.5, 'Jan 1 2012 to Jul 1 2013 should be 1.5 years'); - equal(assert, moment([2012, 0, 31]).diff([2013, 6, 31], 'years', true), -1.5, 'Jan 31 2012 to Jul 31 2013 should be 1.5 years'); - equal(assert, moment([2012, 0, 1]).diff([2013, 0, 1, 12], 'years', true), -1 - (0.5 / 31) / 12, 'Jan 1 2012 to Jan 1 2013 noon should be 1+(0.5 / 31) / 12 years'); - equal(assert, moment([2012, 0, 1]).diff([2013, 6, 1, 12], 'years', true), -1.5 - (0.5 / 31) / 12, 'Jan 1 2012 to Jul 1 2013 noon should be 1.5+(0.5 / 31) / 12 years'); - equal(assert, moment([2012, 1, 29]).diff([2013, 1, 28], 'years', true), -1, 'Feb 29 2012 to Feb 28 2013 should be 1-(1 / 28.5) / 12 years'); + test('calendar overload format - passing one parameter - object w/ sameDay as a string', function (assert) { + var a = moment().hours(13).minutes(23).seconds(45); + assert.equal( + a.calendar({ sameDay: 'h:mm:ssA' }), + '1:23:45PM', + 'should equate' + ); }); - test('negative zero', function (assert) { - function isNegative (n) { - return (1 / n) < 0; - } - assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'months')), 'month diff on same date is zero, not -0'); - assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'years')), 'year diff on same date is zero, not -0'); - assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'quarters')), 'quarter diff on same date is zero, not -0'); - assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 1]), 'days')), 'days diff on same date is zero, not -0'); - assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 1]), 'hours')), 'hour diff on same hour is zero, not -0'); - assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 0, 1]), 'minutes')), 'minute diff on same minute is zero, not -0'); - assert.ok(!isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 0, 0, 1]), 'seconds')), 'second diff on same second is zero, not -0'); + test('calendar overload format - passing one parameter - object w/ sameDay as function returning a string', function (assert) { + var a = moment().hours(13).minutes(23).seconds(45); + assert.equal( + a.calendar({ + sameDay: function () { + return 'h:mm:ssA'; + }, + }), + '1:23:45PM', + 'should equate' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -68422,27 +116693,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -68452,8 +116728,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -68466,7 +116744,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -68475,1131 +116756,2870 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('duration'); + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } - test('object instantiation', function (assert) { - var d = moment.duration({ - years: 2, - months: 3, - weeks: 2, - days: 1, - hours: 8, - minutes: 9, - seconds: 20, - milliseconds: 12 - }); + 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; + } + } - assert.equal(d.years(), 2, 'years'); - assert.equal(d.months(), 3, 'months'); - assert.equal(d.weeks(), 2, 'weeks'); - assert.equal(d.days(), 15, 'days'); // two weeks + 1 day - assert.equal(d.hours(), 8, 'hours'); - assert.equal(d.minutes(), 9, 'minutes'); - assert.equal(d.seconds(), 20, 'seconds'); - assert.equal(d.milliseconds(), 12, 'milliseconds'); - }); + function eachOwnProp(object, callback) { + each(objectKeys(object), callback); + } - test('object instantiation with strings', function (assert) { - var d = moment.duration({ - years: '2', - months: '3', - weeks: '2', - days: '1', - hours: '8', - minutes: '9', - seconds: '20', - milliseconds: '12' - }); + module('create'); - assert.equal(d.years(), 2, 'years'); - assert.equal(d.months(), 3, 'months'); - assert.equal(d.weeks(), 2, 'weeks'); - assert.equal(d.days(), 15, 'days'); // two weeks + 1 day - assert.equal(d.hours(), 8, 'hours'); - assert.equal(d.minutes(), 9, 'minutes'); - assert.equal(d.seconds(), 20, 'seconds'); - assert.equal(d.milliseconds(), 12, 'milliseconds'); + test('array', function (assert) { + assert.ok(moment([2010]).toDate() instanceof Date, '[2010]'); + assert.ok(moment([2010, 1]).toDate() instanceof Date, '[2010, 1]'); + assert.ok(moment([2010, 1, 12]).toDate() instanceof Date, '[2010, 1, 12]'); + assert.ok( + moment([2010, 1, 12, 1]).toDate() instanceof Date, + '[2010, 1, 12, 1]' + ); + assert.ok( + moment([2010, 1, 12, 1, 1]).toDate() instanceof Date, + '[2010, 1, 12, 1, 1]' + ); + assert.ok( + moment([2010, 1, 12, 1, 1, 1]).toDate() instanceof Date, + '[2010, 1, 12, 1, 1, 1]' + ); + assert.ok( + moment([2010, 1, 12, 1, 1, 1, 1]).toDate() instanceof Date, + '[2010, 1, 12, 1, 1, 1, 1]' + ); + assert.equal( + +moment(new Date(2010, 1, 14, 15, 25, 50, 125)), + +moment([2010, 1, 14, 15, 25, 50, 125]), + 'constructing with array === constructing with new Date()' + ); }); - test('milliseconds instantiation', function (assert) { - assert.equal(moment.duration(72).milliseconds(), 72, 'milliseconds'); - assert.equal(moment.duration(72).humanize(), 'a few seconds', 'Duration should be valid'); + test('array with invalid arguments', function (assert) { + assert.ok(!moment([2010, null, null]).isValid(), '[2010, null, null]'); + assert.ok( + !moment([1945, null, null]).isValid(), + '[1945, null, null] (pre-1970)' + ); }); - test('undefined instantiation', function (assert) { - assert.equal(moment.duration(undefined).milliseconds(), 0, 'milliseconds'); - assert.equal(moment.duration(undefined).isValid(), true, '_isValid'); - assert.equal(moment.duration(undefined).humanize(), 'a few seconds', 'Duration should be valid'); + test('array copying', function (assert) { + var importantArray = [2009, 11]; + moment(importantArray); + assert.deepEqual( + importantArray, + [2009, 11], + 'initializer should not mutate the original array' + ); }); - test('null instantiation', function (assert) { - assert.equal(moment.duration(null).milliseconds(), 0, 'milliseconds'); - assert.equal(moment.duration(null).isValid(), true, '_isValid'); - assert.equal(moment.duration(null).humanize(), 'a few seconds', 'Duration should be valid'); + test('object', function (assert) { + var fmt = 'YYYY-MM-DD HH:mm:ss.SSS', + tests = [ + [{ year: 2010 }, '2010-01-01 00:00:00.000'], + [{ year: 2010, month: 1 }, '2010-02-01 00:00:00.000'], + [{ year: 2010, month: 1, day: 12 }, '2010-02-12 00:00:00.000'], + [{ year: 2010, month: 1, date: 12 }, '2010-02-12 00:00:00.000'], + [ + { year: 2010, month: 1, day: 12, hours: 1 }, + '2010-02-12 01:00:00.000', + ], + [ + { year: 2010, month: 1, date: 12, hours: 1 }, + '2010-02-12 01:00:00.000', + ], + [ + { year: 2010, month: 1, day: 12, hours: 1, minutes: 1 }, + '2010-02-12 01:01:00.000', + ], + [ + { year: 2010, month: 1, date: 12, hours: 1, minutes: 1 }, + '2010-02-12 01:01:00.000', + ], + [ + { + year: 2010, + month: 1, + day: 12, + hours: 1, + minutes: 1, + seconds: 1, + }, + '2010-02-12 01:01:01.000', + ], + [ + { + year: 2010, + month: 1, + day: 12, + hours: 1, + minutes: 1, + seconds: 1, + milliseconds: 1, + }, + '2010-02-12 01:01:01.001', + ], + [ + { + years: 2010, + months: 1, + days: 14, + hours: 15, + minutes: 25, + seconds: 50, + milliseconds: 125, + }, + '2010-02-14 15:25:50.125', + ], + [ + { + year: 2010, + month: 1, + day: 14, + hour: 15, + minute: 25, + second: 50, + millisecond: 125, + }, + '2010-02-14 15:25:50.125', + ], + [ + { y: 2010, M: 1, d: 14, h: 15, m: 25, s: 50, ms: 125 }, + '2010-02-14 15:25:50.125', + ], + ], + i; + for (i = 0; i < tests.length; ++i) { + assert.equal(moment(tests[i][0]).format(fmt), tests[i][1]); + } }); - test('NaN instantiation', function (assert) { - assert.ok(isNaN(moment.duration(NaN).milliseconds()), 'milliseconds should be NaN'); - assert.equal(moment.duration(NaN).isValid(), false, '_isValid'); - assert.equal(moment.duration(NaN).humanize(), 'Invalid date', 'Duration should be invalid'); + test('invalid date for object with zero value date or day keys', function (assert) { + assert.equal(moment({ date: '0' }).format(), 'Invalid date'); + assert.equal(moment({ date: 0 }).format(), 'Invalid date'); + assert.equal(moment({ day: '0' }).format(), 'Invalid date'); + assert.equal(moment({ day: 0 }).format(), 'Invalid date'); }); - test('instantiation by type', function (assert) { - assert.equal(moment.duration(1, 'years').years(), 1, 'years'); - assert.equal(moment.duration(1, 'y').years(), 1, 'y'); - assert.equal(moment.duration(2, 'months').months(), 2, 'months'); - assert.equal(moment.duration(2, 'M').months(), 2, 'M'); - assert.equal(moment.duration(3, 'weeks').weeks(), 3, 'weeks'); - assert.equal(moment.duration(3, 'w').weeks(), 3, 'weeks'); - assert.equal(moment.duration(4, 'days').days(), 4, 'days'); - assert.equal(moment.duration(4, 'd').days(), 4, 'd'); - assert.equal(moment.duration(5, 'hours').hours(), 5, 'hours'); - assert.equal(moment.duration(5, 'h').hours(), 5, 'h'); - assert.equal(moment.duration(6, 'minutes').minutes(), 6, 'minutes'); - assert.equal(moment.duration(6, 'm').minutes(), 6, 'm'); - assert.equal(moment.duration(7, 'seconds').seconds(), 7, 'seconds'); - assert.equal(moment.duration(7, 's').seconds(), 7, 's'); - assert.equal(moment.duration(8, 'milliseconds').milliseconds(), 8, 'milliseconds'); - assert.equal(moment.duration(8, 'ms').milliseconds(), 8, 'ms'); + test('multi format array copying', function (assert) { + var importantArray = ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY']; + moment('1999-02-13', importantArray); + assert.deepEqual( + importantArray, + ['MM/DD/YYYY', 'YYYY-MM-DD', 'MM-DD-YYYY'], + 'initializer should not mutate the original array' + ); }); - test('shortcuts', function (assert) { - assert.equal(moment.duration({y: 1}).years(), 1, 'years = y'); - assert.equal(moment.duration({M: 2}).months(), 2, 'months = M'); - assert.equal(moment.duration({w: 3}).weeks(), 3, 'weeks = w'); - assert.equal(moment.duration({d: 4}).days(), 4, 'days = d'); - assert.equal(moment.duration({h: 5}).hours(), 5, 'hours = h'); - assert.equal(moment.duration({m: 6}).minutes(), 6, 'minutes = m'); - assert.equal(moment.duration({s: 7}).seconds(), 7, 'seconds = s'); - assert.equal(moment.duration({ms: 8}).milliseconds(), 8, 'milliseconds = ms'); + test('number', function (assert) { + assert.ok(moment(1000).toDate() instanceof Date, '1000'); + assert.equal(moment(1000).valueOf(), 1000, 'asserting valueOf'); + assert.equal(moment.utc(1000).valueOf(), 1000, 'asserting valueOf'); }); - test('generic getter', function (assert) { - assert.equal(moment.duration(1, 'years').get('years'), 1, 'years'); - assert.equal(moment.duration(1, 'years').get('year'), 1, 'years = year'); - assert.equal(moment.duration(1, 'years').get('y'), 1, 'years = y'); - assert.equal(moment.duration(2, 'months').get('months'), 2, 'months'); - assert.equal(moment.duration(2, 'months').get('month'), 2, 'months = month'); - assert.equal(moment.duration(2, 'months').get('M'), 2, 'months = M'); - assert.equal(moment.duration(3, 'weeks').get('weeks'), 3, 'weeks'); - assert.equal(moment.duration(3, 'weeks').get('week'), 3, 'weeks = week'); - assert.equal(moment.duration(3, 'weeks').get('w'), 3, 'weeks = w'); - assert.equal(moment.duration(4, 'days').get('days'), 4, 'days'); - assert.equal(moment.duration(4, 'days').get('day'), 4, 'days = day'); - assert.equal(moment.duration(4, 'days').get('d'), 4, 'days = d'); - assert.equal(moment.duration(5, 'hours').get('hours'), 5, 'hours'); - assert.equal(moment.duration(5, 'hours').get('hour'), 5, 'hours = hour'); - assert.equal(moment.duration(5, 'hours').get('h'), 5, 'hours = h'); - assert.equal(moment.duration(6, 'minutes').get('minutes'), 6, 'minutes'); - assert.equal(moment.duration(6, 'minutes').get('minute'), 6, 'minutes = minute'); - assert.equal(moment.duration(6, 'minutes').get('m'), 6, 'minutes = m'); - assert.equal(moment.duration(7, 'seconds').get('seconds'), 7, 'seconds'); - assert.equal(moment.duration(7, 'seconds').get('second'), 7, 'seconds = second'); - assert.equal(moment.duration(7, 'seconds').get('s'), 7, 'seconds = s'); - assert.equal(moment.duration(8, 'milliseconds').get('milliseconds'), 8, 'milliseconds'); - assert.equal(moment.duration(8, 'milliseconds').get('millisecond'), 8, 'milliseconds = millisecond'); - assert.equal(moment.duration(8, 'milliseconds').get('ms'), 8, 'milliseconds = ms'); + test('unix', function (assert) { + assert.equal( + moment.unix(1).valueOf(), + 1000, + '1 unix timestamp == 1000 Date.valueOf' + ); + assert.equal( + moment(1000).unix(), + 1, + '1000 Date.valueOf == 1 unix timestamp' + ); + assert.equal( + moment.unix(1000).valueOf(), + 1000000, + '1000 unix timestamp == 1000000 Date.valueOf' + ); + assert.equal( + moment(1500).unix(), + 1, + '1500 Date.valueOf == 1 unix timestamp' + ); + assert.equal( + moment(1900).unix(), + 1, + '1900 Date.valueOf == 1 unix timestamp' + ); + assert.equal( + moment(2100).unix(), + 2, + '2100 Date.valueOf == 2 unix timestamp' + ); + assert.equal( + moment(1333129333524).unix(), + 1333129333, + '1333129333524 Date.valueOf == 1333129333 unix timestamp' + ); + assert.equal( + moment(1333129333524000).unix(), + 1333129333524, + '1333129333524000 Date.valueOf == 1333129333524 unix timestamp' + ); }); - test('instantiation from another duration', function (assert) { - var simple = moment.duration(1234), - lengthy = moment.duration(60 * 60 * 24 * 360 * 1e3), - complicated = moment.duration({ - years: 2, - months: 3, - weeks: 4, - days: 1, - hours: 8, - minutes: 9, - seconds: 20, - milliseconds: 12 - }), - modified = moment.duration(1, 'day').add(moment.duration(1, 'day')); - - assert.deepEqual(moment.duration(simple), simple, 'simple clones are equal'); - assert.deepEqual(moment.duration(lengthy), lengthy, 'lengthy clones are equal'); - assert.deepEqual(moment.duration(complicated), complicated, 'complicated clones are equal'); - assert.deepEqual(moment.duration(modified), modified, 'cloning modified duration works'); + test('date', function (assert) { + assert.ok(moment(new Date()).toDate() instanceof Date, 'new Date()'); + assert.equal( + moment(new Date(2016, 0, 1), 'YYYY-MM-DD').format('YYYY-MM-DD'), + '2016-01-01', + 'If date is provided, format string is ignored' + ); }); - test('explicit cloning', function (assert) { - var durationA = moment.duration(5, 'milliseconds'); - var durationB = durationA.clone(); - durationA.add(5, 'milliseconds'); - assert.notEqual(durationA.milliseconds(), durationB.milliseconds(), 'Calling duration.clone() on a duration will create a clone'); + test('date with a format as an array', function (assert) { + var tests = [ + new Date(2016, 9, 27), + new Date(2016, 9, 28), + new Date(2016, 9, 29), + new Date(2016, 9, 30), + new Date(2016, 9, 31), + ], + i; + + for (i = 0; i < tests.length; i++) { + assert.equal( + moment(tests[i]).format(), + moment(tests[i], ['MM/DD/YYYY'], false).format(), + 'Passing date with a format array should still return the correct date' + ); + } }); - test('instantiation from 24-hour time zero', function (assert) { - assert.equal(moment.duration('00:00').years(), 0, '0 years'); - assert.equal(moment.duration('00:00').days(), 0, '0 days'); - assert.equal(moment.duration('00:00').hours(), 0, '0 hours'); - assert.equal(moment.duration('00:00').minutes(), 0, '0 minutes'); - assert.equal(moment.duration('00:00').seconds(), 0, '0 seconds'); - assert.equal(moment.duration('00:00').milliseconds(), 0, '0 milliseconds'); + test('date mutation', function (assert) { + var a = new Date(); + assert.ok( + moment(a).toDate() !== a, + 'the date moment uses should not be the date passed in' + ); }); - test('instantiation from 24-hour time <24 hours', function (assert) { - assert.equal(moment.duration('06:45').years(), 0, '0 years'); - assert.equal(moment.duration('06:45').days(), 0, '0 days'); - assert.equal(moment.duration('06:45').hours(), 6, '6 hours'); - assert.equal(moment.duration('06:45').minutes(), 45, '45 minutes'); - assert.equal(moment.duration('06:45').seconds(), 0, '0 seconds'); - assert.equal(moment.duration('06:45').milliseconds(), 0, '0 milliseconds'); - }); - - test('instantiation from 24-hour time >24 hours', function (assert) { - assert.equal(moment.duration('26:45').years(), 0, '0 years'); - assert.equal(moment.duration('26:45').days(), 1, '0 days'); - assert.equal(moment.duration('26:45').hours(), 2, '2 hours'); - assert.equal(moment.duration('26:45').minutes(), 45, '45 minutes'); - assert.equal(moment.duration('26:45').seconds(), 0, '0 seconds'); - assert.equal(moment.duration('26:45').milliseconds(), 0, '0 milliseconds'); + test('moment', function (assert) { + assert.ok(moment(moment()).toDate() instanceof Date, 'moment(moment())'); + assert.ok( + moment(moment(moment())).toDate() instanceof Date, + 'moment(moment(moment()))' + ); }); - test('instatiation from serialized C# TimeSpan zero', function (assert) { - assert.equal(moment.duration('00:00:00').years(), 0, '0 years'); - assert.equal(moment.duration('00:00:00').days(), 0, '0 days'); - assert.equal(moment.duration('00:00:00').hours(), 0, '0 hours'); - assert.equal(moment.duration('00:00:00').minutes(), 0, '0 minutes'); - assert.equal(moment.duration('00:00:00').seconds(), 0, '0 seconds'); - assert.equal(moment.duration('00:00:00').milliseconds(), 0, '0 milliseconds'); + test('cloning moment should only copy own properties', function (assert) { + assert.ok( + !hasOwnProp(moment().clone(), 'month'), + 'Should not clone prototype methods' + ); }); - test('instatiation from serialized C# TimeSpan with days', function (assert) { - assert.equal(moment.duration('1.02:03:04.9999999').years(), 0, '0 years'); - assert.equal(moment.duration('1.02:03:04.9999999').days(), 1, '1 day'); - assert.equal(moment.duration('1.02:03:04.9999999').hours(), 2, '2 hours'); - assert.equal(moment.duration('1.02:03:04.9999999').minutes(), 3, '3 minutes'); - assert.equal(moment.duration('1.02:03:04.9999999').seconds(), 5, '5 seconds'); - assert.equal(moment.duration('1.02:03:04.9999999').milliseconds(), 0, '0 milliseconds'); + test('cloning moment works with weird clones', function (assert) { + var extend = function (a, b) { + var i; + for (i in b) { + a[i] = b[i]; + } + return a; + }, + now = moment(), + nowu = moment.utc(); - assert.equal(moment.duration('1 02:03:04.9999999').years(), 0, '0 years'); - assert.equal(moment.duration('1 02:03:04.9999999').days(), 1, '1 day'); - assert.equal(moment.duration('1 02:03:04.9999999').hours(), 2, '2 hours'); - assert.equal(moment.duration('1 02:03:04.9999999').minutes(), 3, '3 minutes'); - assert.equal(moment.duration('1 02:03:04.9999999').seconds(), 5, '5 seconds'); - assert.equal(moment.duration('1 02:03:04.9999999').milliseconds(), 0, '0 milliseconds'); + assert.equal( + +extend({}, now).clone(), + +now, + 'cloning extend-ed now is now' + ); + assert.equal( + +extend({}, nowu).clone(), + +nowu, + 'cloning extend-ed utc now is utc now' + ); }); - test('instatiation from serialized C# TimeSpan without days', function (assert) { - assert.equal(moment.duration('01:02:03.9999999').years(), 0, '0 years'); - assert.equal(moment.duration('01:02:03.9999999').days(), 0, '0 days'); - assert.equal(moment.duration('01:02:03.9999999').hours(), 1, '1 hour'); - assert.equal(moment.duration('01:02:03.9999999').minutes(), 2, '2 minutes'); - assert.equal(moment.duration('01:02:03.9999999').seconds(), 4, '4 seconds'); - assert.equal(moment.duration('01:02:03.9999999').milliseconds(), 0, '0 milliseconds'); - - assert.equal(moment.duration('23:59:59.9999999').days(), 1, '1 days'); - assert.equal(moment.duration('23:59:59.9999999').hours(), 0, '0 hours'); - assert.equal(moment.duration('23:59:59.9999999').minutes(), 0, '0 minutes'); - assert.equal(moment.duration('23:59:59.9999999').seconds(), 0, '0 seconds'); - assert.equal(moment.duration('23:59:59.9999999').milliseconds(), 0, '0 milliseconds'); + test('cloning respects moment.momentProperties', function (assert) { + var m = moment(); - assert.equal(moment.duration('500:59:59.8888888').days(), 20, '500 hours overflows to 20 days'); - assert.equal(moment.duration('500:59:59.8888888').hours(), 20, '500 hours overflows to 20 hours'); + assert.equal( + m.clone()._special, + undefined, + 'cloning ignores extra properties' + ); + m._special = 'bacon'; + moment.momentProperties.push('_special'); + assert.equal( + m.clone()._special, + 'bacon', + 'cloning respects momentProperties' + ); + moment.momentProperties.pop(); }); - test('instatiation from serialized C# TimeSpan without days or milliseconds', function (assert) { - assert.equal(moment.duration('01:02:03').years(), 0, '0 years'); - assert.equal(moment.duration('01:02:03').days(), 0, '0 days'); - assert.equal(moment.duration('01:02:03').hours(), 1, '1 hour'); - assert.equal(moment.duration('01:02:03').minutes(), 2, '2 minutes'); - assert.equal(moment.duration('01:02:03').seconds(), 3, '3 seconds'); - assert.equal(moment.duration('01:02:03').milliseconds(), 0, '0 milliseconds'); + test('undefined', function (assert) { + assert.ok(moment().toDate() instanceof Date, 'undefined'); }); - test('instatiation from serialized C# TimeSpan without milliseconds', function (assert) { - assert.equal(moment.duration('1.02:03:04').years(), 0, '0 years'); - assert.equal(moment.duration('1.02:03:04').days(), 1, '1 day'); - assert.equal(moment.duration('1.02:03:04').hours(), 2, '2 hours'); - assert.equal(moment.duration('1.02:03:04').minutes(), 3, '3 minutes'); - assert.equal(moment.duration('1.02:03:04').seconds(), 4, '4 seconds'); - assert.equal(moment.duration('1.02:03:04').milliseconds(), 0, '0 milliseconds'); + test('iso with bad input', function (assert) { + assert.ok( + !moment('a', moment.ISO_8601).isValid(), + 'iso parsing with invalid string' + ); + assert.ok( + !moment('a', moment.ISO_8601, true).isValid(), + 'iso parsing with invalid string, strict' + ); }); - test('instantiation from serialized C# TimeSpan with low millisecond precision', function (assert) { - assert.equal(moment.duration('00:00:15.72').years(), 0, '0 years'); - assert.equal(moment.duration('00:00:15.72').days(), 0, '0 days'); - assert.equal(moment.duration('00:00:15.72').hours(), 0, '0 hours'); - assert.equal(moment.duration('00:00:15.72').minutes(), 0, '0 minutes'); - assert.equal(moment.duration('00:00:15.72').seconds(), 15, '15 seconds'); - assert.equal(moment.duration('00:00:15.72').milliseconds(), 720, '720 milliseconds'); - - assert.equal(moment.duration('00:00:15.7').milliseconds(), 700, '700 milliseconds'); - - assert.equal(moment.duration('00:00:15.').milliseconds(), 0, '0 milliseconds'); + test('iso format 24hrs', function (assert) { + assert.equal( + moment('2014-01-01T24:00:00.000').format('YYYY-MM-DD[T]HH:mm:ss.SSS'), + '2014-01-02T00:00:00.000', + 'iso format with 24:00 localtime' + ); + assert.equal( + moment + .utc('2014-01-01T24:00:00.000') + .format('YYYY-MM-DD[T]HH:mm:ss.SSS'), + '2014-01-02T00:00:00.000', + 'iso format with 24:00 utc' + ); }); - test('instantiation from serialized C# TimeSpan with high millisecond precision', function (assert) { - assert.equal(moment.duration('00:00:15.7200000').seconds(), 15, '15 seconds'); - assert.equal(moment.duration('00:00:15.7200000').milliseconds(), 720, '720 milliseconds'); + test('string without format - json', function (assert) { + assert.equal( + moment('Date(1325132654000)').valueOf(), + 1325132654000, + 'Date(1325132654000)' + ); + assert.equal( + moment('Date(-1325132654000)').valueOf(), + -1325132654000, + 'Date(-1325132654000)' + ); + assert.equal( + moment('/Date(1325132654000)/').valueOf(), + 1325132654000, + '/Date(1325132654000)/' + ); + assert.equal( + moment('/Date(1325132654000+0700)/').valueOf(), + 1325132654000, + '/Date(1325132654000+0700)/' + ); + assert.equal( + moment('/Date(1325132654000-0700)/').valueOf(), + 1325132654000, + '/Date(1325132654000-0700)/' + ); + }); - assert.equal(moment.duration('00:00:15.7209999').seconds(), 15, '15 seconds'); - assert.equal(moment.duration('00:00:15.7209999').milliseconds(), 721, '721 milliseconds'); + test('string without format - strict parsing', function (assert) { + assert.equal( + moment('Date(1325132654000)', false).valueOf(), + 1325132654000, + 'Date(1325132654000)' + ); + assert.equal( + moment('Date(1325132654000)', true).valueOf(), + 1325132654000, + 'Date(1325132654000)' + ); + assert.equal( + moment('/Date(1325132654000)/', true).valueOf(), + 1325132654000, + '/Date(1325132654000)/' + ); + assert.equal(moment('1/1/2001', true).isValid(), false, '1/1/2001'); + assert.equal(moment.utc('1/1/2001', true).isValid(), false, '1/1/2001 utc'); + }); - assert.equal(moment.duration('00:00:15.7205000').seconds(), 15, '15 seconds'); - assert.equal(moment.duration('00:00:15.7205000').milliseconds(), 721, '721 milliseconds'); + test('string with format dropped am/pm bug', function (assert) { + moment.locale('en'); - assert.equal(moment.duration('-00:00:15.7205000').seconds(), -15, '15 seconds'); - assert.equal(moment.duration('-00:00:15.7205000').milliseconds(), -721, '721 milliseconds'); + assert.equal( + moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').format('MM/DD/YYYY'), + '05/01/2012', + 'should not break if am/pm is left off from the parsing tokens' + ); + assert.equal( + moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').format( + 'MM/DD/YYYY' + ), + '05/01/2012', + 'should not break if am/pm is left off from the parsing tokens' + ); + assert.equal( + moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').format( + 'MM/DD/YYYY' + ), + '05/01/2012', + 'should not break if am/pm is left off from the parsing tokens' + ); - assert.equal(moment.duration('+00:00:15.7205000').seconds(), 15, '15 seconds'); - assert.equal(moment.duration('+00:00:15.7205000').milliseconds(), 721, '721 milliseconds'); + assert.ok(moment('05/1/2012 12:25:00', 'MM/DD/YYYY h:m:s a').isValid()); + assert.ok(moment('05/1/2012 12:25:00 am', 'MM/DD/YYYY h:m:s a').isValid()); + assert.ok(moment('05/1/2012 12:25:00 pm', 'MM/DD/YYYY h:m:s a').isValid()); }); - test('instatiation from serialized C# TimeSpan maxValue', function (assert) { - var d = moment.duration('10675199.02:48:05.4775807'); - - assert.equal(d.years(), 29227, '29227 years'); - assert.equal(d.months(), 8, '8 months'); - assert.equal(d.days(), 12, '12 day'); // if you have to change this value -- just do it + test('empty string with formats', function (assert) { + assert.equal( + moment('', 'MM').format('YYYY-MM-DD HH:mm:ss'), + 'Invalid date' + ); + assert.equal( + moment(' ', 'MM').format('YYYY-MM-DD HH:mm:ss'), + 'Invalid date' + ); + assert.equal( + moment(' ', 'DD').format('YYYY-MM-DD HH:mm:ss'), + 'Invalid date' + ); + assert.equal( + moment(' ', ['MM', 'DD']).format('YYYY-MM-DD HH:mm:ss'), + 'Invalid date' + ); - assert.equal(d.hours(), 2, '2 hours'); - assert.equal(d.minutes(), 48, '48 minutes'); - assert.equal(d.seconds(), 5, '5 seconds'); - assert.equal(d.milliseconds(), 478, '478 milliseconds'); + assert.ok(!moment('', 'MM').isValid()); + assert.ok(!moment(' ', 'MM').isValid()); + assert.ok(!moment(' ', 'DD').isValid()); + assert.ok(!moment(' ', ['MM', 'DD']).isValid()); }); - test('instatiation from serialized C# TimeSpan minValue', function (assert) { - var d = moment.duration('-10675199.02:48:05.4775808'); + test('undefined argument with formats', function (assert) { + assert.equal( + moment(undefined, 'MM').format('YYYY-MM-DD HH:mm:ss'), + 'Invalid date' + ); + assert.equal( + moment(undefined, 'DD').format('YYYY-MM-DD HH:mm:ss'), + 'Invalid date' + ); + assert.equal( + moment(undefined, ['MM', 'DD']).format('YYYY-MM-DD HH:mm:ss'), + 'Invalid date' + ); - assert.equal(d.years(), -29227, '29653 years'); - assert.equal(d.months(), -8, '8 day'); - assert.equal(d.days(), -12, '12 day'); // if you have to change this value -- just do it + assert.ok(!moment(undefined, 'MM').isValid()); + assert.ok(!moment(undefined, 'MM').isValid()); + assert.ok(!moment(undefined, 'DD').isValid()); + assert.ok(!moment(undefined, ['MM', 'DD']).isValid()); + }); - assert.equal(d.hours(), -2, '2 hours'); - assert.equal(d.minutes(), -48, '48 minutes'); - assert.equal(d.seconds(), -5, '5 seconds'); - assert.equal(d.milliseconds(), -478, '478 milliseconds'); + test('defaulting to current date', function (assert) { + var now = moment(); + assert.equal( + moment('12:13:14', 'hh:mm:ss').format('YYYY-MM-DD hh:mm:ss'), + now + .clone() + .hour(12) + .minute(13) + .second(14) + .format('YYYY-MM-DD hh:mm:ss'), + 'given only time default to current date' + ); + assert.equal( + moment('05', 'DD').format('YYYY-MM-DD'), + now.clone().date(5).format('YYYY-MM-DD'), + 'given day of month default to current month, year' + ); + assert.equal( + moment('05', 'MM').format('YYYY-MM-DD'), + now.clone().month(4).date(1).format('YYYY-MM-DD'), + 'given month default to current year' + ); + assert.equal( + moment('1996', 'YYYY').format('YYYY-MM-DD'), + now.clone().year(1996).month(0).date(1).format('YYYY-MM-DD'), + 'given year do not default' + ); }); - test('instatiation from serialized C# TimeSpan maxValue with + sign', function (assert) { - var d = moment.duration('+10675199.02:48:05.4775808'); + test('matching am/pm', function (assert) { + assert.equal( + moment('2012-09-03T03:00PM', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00PM', + 'am/pm should parse correctly for PM' + ); + assert.equal( + moment('2012-09-03T03:00P.M.', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00PM', + 'am/pm should parse correctly for P.M.' + ); + assert.equal( + moment('2012-09-03T03:00P', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00PM', + 'am/pm should parse correctly for P' + ); + assert.equal( + moment('2012-09-03T03:00pm', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00PM', + 'am/pm should parse correctly for pm' + ); + assert.equal( + moment('2012-09-03T03:00p.m.', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00PM', + 'am/pm should parse correctly for p.m.' + ); + assert.equal( + moment('2012-09-03T03:00p', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00PM', + 'am/pm should parse correctly for p' + ); - assert.equal(d.years(), 29227, '29653 years'); - assert.equal(d.months(), 8, '8 day'); - assert.equal(d.days(), 12, '12 day'); // if you have to change this value -- just do it + assert.equal( + moment('2012-09-03T03:00AM', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00AM', + 'am/pm should parse correctly for AM' + ); + assert.equal( + moment('2012-09-03T03:00A.M.', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00AM', + 'am/pm should parse correctly for A.M.' + ); + assert.equal( + moment('2012-09-03T03:00A', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00AM', + 'am/pm should parse correctly for A' + ); + assert.equal( + moment('2012-09-03T03:00am', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00AM', + 'am/pm should parse correctly for am' + ); + assert.equal( + moment('2012-09-03T03:00a.m.', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00AM', + 'am/pm should parse correctly for a.m.' + ); + assert.equal( + moment('2012-09-03T03:00a', 'YYYY-MM-DDThh:mmA').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-09-03T03:00AM', + 'am/pm should parse correctly for a' + ); - assert.equal(d.hours(), 2, '2 hours'); - assert.equal(d.minutes(), 48, '48 minutes'); - assert.equal(d.seconds(), 5, '5 seconds'); - assert.equal(d.milliseconds(), 478, '478 milliseconds'); + assert.equal( + moment('5:00p.m.March 4 2012', 'h:mmAMMMM D YYYY').format( + 'YYYY-MM-DDThh:mmA' + ), + '2012-03-04T05:00PM', + 'am/pm should parse correctly before month names' + ); }); - test('instantiation from ISO 8601 duration', function (assert) { - assert.equal(moment.duration('P1Y2M3DT4H5M6S').asSeconds(), moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).asSeconds(), 'all fields'); - assert.equal(moment.duration('P3W3D').asSeconds(), moment.duration({w: 3, d: 3}).asSeconds(), 'week and day fields'); - assert.equal(moment.duration('P1M').asSeconds(), moment.duration({M: 1}).asSeconds(), 'single month field'); - assert.equal(moment.duration('PT1M').asSeconds(), moment.duration({m: 1}).asSeconds(), 'single minute field'); - assert.equal(moment.duration('P1MT2H').asSeconds(), moment.duration({M: 1, h: 2}).asSeconds(), 'random fields missing'); - assert.equal(moment.duration('-P60D').asSeconds(), moment.duration({d: -60}).asSeconds(), 'negative days'); - assert.equal(moment.duration('+P60D').asSeconds(), moment.duration({d: 60}).asSeconds(), 'positive days'); - assert.equal(moment.duration('PT0.5S').asSeconds(), moment.duration({s: 0.5}).asSeconds(), 'fractional seconds'); - assert.equal(moment.duration('PT0,5S').asSeconds(), moment.duration({s: 0.5}).asSeconds(), 'fractional seconds (comma)'); - }); + test('string with format', function (assert) { + moment.locale('en'); + var a = [ + ['YYYY-Q', '2014-4'], + ['MM-DD-YYYY', '12-02-1999'], + ['DD-MM-YYYY', '12-02-1999'], + ['DD/MM/YYYY', '12/02/1999'], + ['DD_MM_YYYY', '12_02_1999'], + ['DD:MM:YYYY', '12:02:1999'], + ['D-M-YY', '2-2-99'], + ['YY', '99'], + ['DDD-YYYY', '300-1999'], + ['DD-MM-YYYY h:m:s', '12-02-1999 2:45:10'], + ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 am'], + ['DD-MM-YYYY h:m:s a', '12-02-1999 2:45:10 pm'], + ['h:mm a', '12:00 pm'], + ['h:mm a', '12:30 pm'], + ['h:mm a', '12:00 am'], + ['h:mm a', '12:30 am'], + ['HH:mm', '12:00'], + ['kk:mm', '12:00'], + ['YYYY-MM-DDTHH:mm:ss', '2011-11-11T11:11:11'], + ['MM-DD-YYYY [M]', '12-02-1999 M'], + ['ddd MMM DD HH:mm:ss YYYY', 'Tue Apr 07 22:52:51 2009'], + ['HH:mm:ss', '12:00:00'], + ['HH:mm:ss', '12:30:00'], + ['HH:mm:ss', '00:00:00'], + ['HH:mm:ss S', '00:30:00 1'], + ['HH:mm:ss SS', '00:30:00 12'], + ['HH:mm:ss SSS', '00:30:00 123'], + ['HH:mm:ss S', '00:30:00 7'], + ['HH:mm:ss SS', '00:30:00 78'], + ['HH:mm:ss SSS', '00:30:00 789'], + ['kk:mm:ss', '12:00:00'], + ['kk:mm:ss', '12:30:00'], + ['kk:mm:ss', '24:00:00'], + ['kk:mm:ss S', '24:30:00 1'], + ['kk:mm:ss SS', '24:30:00 12'], + ['kk:mm:ss SSS', '24:30:00 123'], + ['kk:mm:ss S', '24:30:00 7'], + ['kk:mm:ss SS', '24:30:00 78'], + ['kk:mm:ss SSS', '24:30:00 789'], + ['X', '1234567890'], + ['x', '1234567890123'], + ['LT', '12:30 AM'], + ['LTS', '12:30:29 AM'], + ['L', '09/02/1999'], + ['l', '9/2/1999'], + ['LL', 'September 2, 1999'], + ['ll', 'Sep 2, 1999'], + ['LLL', 'September 2, 1999 12:30 AM'], + ['lll', 'Sep 2, 1999 12:30 AM'], + ['LLLL', 'Thursday, September 2, 1999 12:30 AM'], + ['llll', 'Thu, Sep 2, 1999 12:30 AM'], + ], + m, + i; - test('serialization to ISO 8601 duration strings', function (assert) { - assert.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toISOString(), 'P1Y2M3DT4H5M6S', 'all fields'); - assert.equal(moment.duration({M: -1}).toISOString(), '-P1M', 'one month ago'); - assert.equal(moment.duration({m: -1}).toISOString(), '-PT1M', 'one minute ago'); - assert.equal(moment.duration({s: -0.5}).toISOString(), '-PT0.5S', 'one half second ago'); - assert.equal(moment.duration({y: -1, M: 1}).toISOString(), '-P11M', 'a month after a year ago'); - assert.equal(moment.duration({y: -1, h: 1}).toISOString(), '-P1YT-1H', 'an hour after a year ago'); - assert.equal(moment.duration({y: -1, h: 1, m: -1}).toISOString(), '-P1YT-59M', '59 minutes after a year ago'); - assert.equal(moment.duration({y: -1, h: 1, s: -1}).toISOString(), '-P1YT-59M-59S', '59 minutes 59 seconds after a year ago'); - assert.equal(moment.duration({y: -1, h: -1, s: 1}).toISOString(), '-P1YT59M59S', '59 minutes 59 seconds after a year ago'); - assert.equal(moment.duration({y: -1, d: 2}).toISOString(), '-P1Y-2D', '1 year less 2 days ago'); - assert.equal(moment.duration({M: +1}).toISOString(), 'P1M', 'one month ago'); - assert.equal(moment.duration({m: +1}).toISOString(), 'PT1M', 'one minute ago'); - assert.equal(moment.duration({s: +0.5}).toISOString(), 'PT0.5S', 'one half second ago'); - assert.equal(moment.duration({y: +1, M: 1}).toISOString(), 'P1Y1M', 'a month after a year in future'); - assert.equal(moment.duration({y: -1, h: 1}).toISOString(), '-P1YT-1H', 'an hour after a year ago'); - assert.equal(moment.duration({}).toISOString(), 'P0D', 'zero duration'); - assert.equal(moment.duration({M: 16, d:40, s: 86465}).toISOString(), 'P1Y4M40DT24H1M5S', 'all fields'); - assert.equal(moment.duration({ms: 123456789}).toISOString(), 'PT34H17M36.789S', 'check floating-point errors'); - assert.equal(moment.duration({ms: 31952}).toISOString(), 'PT31.952S', 'check floating-point errors'); + for (i = 0; i < a.length; i++) { + m = moment(a[i][1], a[i][0]); + assert.ok(m.isValid()); + assert.equal(m.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]); + } }); - test('toString acts as toISOString', function (assert) { - assert.equal(moment.duration({y: 1, M: 2, d: 3, h: 4, m: 5, s: 6}).toString(), 'P1Y2M3DT4H5M6S', 'all fields'); - assert.equal(moment.duration({M: -1}).toString(), '-P1M', 'one month ago'); - assert.equal(moment.duration({m: -1}).toString(), '-PT1M', 'one minute ago'); - assert.equal(moment.duration({s: -0.5}).toString(), '-PT0.5S', 'one half second ago'); - assert.equal(moment.duration({y: -1, M: 1}).toString(), '-P11M', 'a month after a year ago'); - assert.equal(moment.duration({M: +1}).toString(), 'P1M', 'one month ago'); - assert.equal(moment.duration({m: +1}).toString(), 'PT1M', 'one minute ago'); - assert.equal(moment.duration({s: +0.5}).toString(), 'PT0.5S', 'one half second ago'); - assert.equal(moment.duration({y: +1, M: 1}).toString(), 'P1Y1M', 'a month after a year in future'); - assert.equal(moment.duration({}).toString(), 'P0D', 'zero duration'); - assert.equal(moment.duration({M: 16, d:40, s: 86465}).toString(), 'P1Y4M40DT24H1M5S', 'all fields'); + test('2 digit year with YYYY format', function (assert) { + assert.equal( + moment('9/2/99', 'D/M/YYYY').format('DD/MM/YYYY'), + '09/02/1999', + 'D/M/YYYY ---> 9/2/99' + ); + assert.equal( + moment('9/2/1999', 'D/M/YYYY').format('DD/MM/YYYY'), + '09/02/1999', + 'D/M/YYYY ---> 9/2/1999' + ); + assert.equal( + moment('9/2/68', 'D/M/YYYY').format('DD/MM/YYYY'), + '09/02/2068', + 'D/M/YYYY ---> 9/2/68' + ); + assert.equal( + moment('9/2/69', 'D/M/YYYY').format('DD/MM/YYYY'), + '09/02/1969', + 'D/M/YYYY ---> 9/2/69' + ); }); - test('toIsoString deprecation', function (assert) { - test.expectedDeprecations('toIsoString()'); + test('unix timestamp format', function (assert) { + var formats = ['X', 'X.S', 'X.SS', 'X.SSS'], + i, + format; - assert.equal(moment.duration({}).toIsoString(), moment.duration({}).toISOString(), 'toIsoString delegates to toISOString'); + for (i = 0; i < formats.length; i++) { + format = formats[i]; + assert.equal( + moment('1234567890', format).valueOf(), + 1234567890 * 1000, + format + ' matches timestamp without milliseconds' + ); + assert.equal( + moment('1234567890.1', format).valueOf(), + 1234567890 * 1000 + 100, + format + ' matches timestamp with deciseconds' + ); + assert.equal( + moment('1234567890.12', format).valueOf(), + 1234567890 * 1000 + 120, + format + ' matches timestamp with centiseconds' + ); + assert.equal( + moment('1234567890.123', format).valueOf(), + 1234567890 * 1000 + 123, + format + ' matches timestamp with milliseconds' + ); + } }); - test('`isodate` (python) test cases', function (assert) { - assert.equal(moment.duration('P18Y9M4DT11H9M8S').asSeconds(), moment.duration({y: 18, M: 9, d: 4, h: 11, m: 9, s: 8}).asSeconds(), 'python isodate 1'); - assert.equal(moment.duration('P2W').asSeconds(), moment.duration({w: 2}).asSeconds(), 'python isodate 2'); - assert.equal(moment.duration('P3Y6M4DT12H30M5S').asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), 'python isodate 3'); - assert.equal(moment.duration('P23DT23H').asSeconds(), moment.duration({d: 23, h: 23}).asSeconds(), 'python isodate 4'); - assert.equal(moment.duration('P4Y').asSeconds(), moment.duration({y: 4}).asSeconds(), 'python isodate 5'); - assert.equal(moment.duration('P1M').asSeconds(), moment.duration({M: 1}).asSeconds(), 'python isodate 6'); - assert.equal(moment.duration('PT1M').asSeconds(), moment.duration({m: 1}).asSeconds(), 'python isodate 7'); - assert.equal(moment.duration('P0.5Y').asSeconds(), moment.duration({y: 0.5}).asSeconds(), 'python isodate 8'); - assert.equal(moment.duration('PT36H').asSeconds(), moment.duration({h: 36}).asSeconds(), 'python isodate 9'); - assert.equal(moment.duration('P1DT12H').asSeconds(), moment.duration({d: 1, h: 12}).asSeconds(), 'python isodate 10'); - assert.equal(moment.duration('-P2W').asSeconds(), moment.duration({w: -2}).asSeconds(), 'python isodate 11'); - assert.equal(moment.duration('-P2.2W').asSeconds(), moment.duration({w: -2.2}).asSeconds(), 'python isodate 12'); - assert.equal(moment.duration('+P2W').asSeconds(), moment.duration({w: 2}).asSeconds(), 'python isodate 11'); - assert.equal(moment.duration('+P2.2W').asSeconds(), moment.duration({w: 2.2}).asSeconds(), 'python isodate 12'); - assert.equal(moment.duration('P1DT2H3M4S').asSeconds(), moment.duration({d: 1, h: 2, m: 3, s: 4}).asSeconds(), 'python isodate 13'); - assert.equal(moment.duration('P1DT2H3M').asSeconds(), moment.duration({d: 1, h: 2, m: 3}).asSeconds(), 'python isodate 14'); - assert.equal(moment.duration('P1DT2H').asSeconds(), moment.duration({d: 1, h: 2}).asSeconds(), 'python isodate 15'); - assert.equal(moment.duration('PT2H').asSeconds(), moment.duration({h: 2}).asSeconds(), 'python isodate 16'); - assert.equal(moment.duration('PT2.3H').asSeconds(), moment.duration({h: 2.3}).asSeconds(), 'python isodate 17'); - assert.equal(moment.duration('PT2H3M4S').asSeconds(), moment.duration({h: 2, m: 3, s: 4}).asSeconds(), 'python isodate 18'); - assert.equal(moment.duration('PT3M4S').asSeconds(), moment.duration({m: 3, s: 4}).asSeconds(), 'python isodate 19'); - assert.equal(moment.duration('PT22S').asSeconds(), moment.duration({s: 22}).asSeconds(), 'python isodate 20'); - assert.equal(moment.duration('PT22.22S').asSeconds(), moment.duration({s: 22.22}).asSeconds(), 'python isodate 21'); - assert.equal(moment.duration('-P2Y').asSeconds(), moment.duration({y: -2}).asSeconds(), 'python isodate 22'); - assert.equal(moment.duration('-P3Y6M4DT12H30M5S').asSeconds(), moment.duration({y: -3, M: -6, d: -4, h: -12, m: -30, s: -5}).asSeconds(), 'python isodate 23'); - assert.equal(moment.duration('-P1DT2H3M4S').asSeconds(), moment.duration({d: -1, h: -2, m: -3, s: -4}).asSeconds(), 'python isodate 24'); - assert.equal(moment.duration('PT-6H3M').asSeconds(), moment.duration({h: -6, m: 3}).asSeconds(), 'python isodate 25'); - assert.equal(moment.duration('-PT-6H3M').asSeconds(), moment.duration({h: 6, m: -3}).asSeconds(), 'python isodate 26'); - assert.equal(moment.duration('-P-3Y-6M-4DT-12H-30M-5S').asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), 'python isodate 27'); - assert.equal(moment.duration('P-3Y-6M-4DT-12H-30M-5S').asSeconds(), moment.duration({y: -3, M: -6, d: -4, h: -12, m: -30, s: -5}).asSeconds(), 'python isodate 28'); - assert.equal(moment.duration('-P-2W').asSeconds(), moment.duration({w: 2}).asSeconds(), 'python isodate 29'); - assert.equal(moment.duration('P-2W').asSeconds(), moment.duration({w: -2}).asSeconds(), 'python isodate 30'); - assert.equal(moment.duration('+P2Y').asSeconds(), moment.duration({y: 2}).asSeconds(), 'python isodate 31'); - assert.equal(moment.duration('+P3Y6M4DT12H30M5S').asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), 'python isodate 32'); - assert.equal(moment.duration('+P1DT2H3M4S').asSeconds(), moment.duration({d: 1, h: 2, m: 3, s: 4}).asSeconds(), 'python isodate 34'); - assert.equal(moment.duration('PT+6H3M').asSeconds(), moment.duration({h: 6, m: 3}).asSeconds(), 'python isodate 35'); - assert.equal(moment.duration('+PT+6H3M').asSeconds(), moment.duration({h: 6, m: 3}).asSeconds(), 'python isodate 36'); - assert.equal(moment.duration('+PT-6H3M').asSeconds(), moment.duration({h: -6, m: 3}).asSeconds(), 'python isodate 37'); - assert.equal(moment.duration('+P+3Y+6M+4DT+12H+30M+5S').asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), 'python isodate 38'); - assert.equal(moment.duration('+P-3Y-6M-4DT-12H-30M-5S').asSeconds(), moment.duration({y: -3, M: -6, d: -4, h: -12, m: -30, s: -5}).asSeconds(), 'python isodate 39'); - assert.equal(moment.duration('P+3Y+6M+4DT+12H+30M+5S').asSeconds(), moment.duration({y: 3, M: 6, d: 4, h: 12, m: 30, s: 5}).asSeconds(), 'python isodate 40'); - assert.equal(moment.duration('+P+2W').asSeconds(), moment.duration({w: 2}).asSeconds(), 'python isodate 41'); - assert.equal(moment.duration('+P-2W').asSeconds(), moment.duration({w: -2}).asSeconds(), 'python isodate 41'); - assert.equal(moment.duration('P+2W').asSeconds(), moment.duration({w: 2}).asSeconds(), 'python isodate 43'); + test('unix offset milliseconds', function (assert) { + assert.equal( + moment('1234567890123', 'x').valueOf(), + 1234567890123, + 'x matches unix offset in milliseconds' + ); }); - test('ISO 8601 misuse cases', function (assert) { - assert.equal(moment.duration('P').asSeconds(), 0, 'lonely P'); - assert.equal(moment.duration('PT').asSeconds(), 0, 'just P and T'); - assert.equal(moment.duration('P1H').asSeconds(), 0, 'missing T'); - assert.equal(moment.duration('P1D1Y').asSeconds(), 0, 'out of order'); - assert.equal(moment.duration('PT.5S').asSeconds(), 0.5, 'accept no leading zero for decimal'); - assert.equal(moment.duration('PT1,S').asSeconds(), 1, 'accept trailing decimal separator'); - assert.equal(moment.duration('PT1M0,,5S').asSeconds(), 60, 'extra decimal separators are ignored as 0'); + test('milliseconds format', function (assert) { + assert.equal(moment('1', 'S').get('ms'), 100, 'deciseconds'); + // assert.equal(moment('10', 'S', true).isValid(), false, 'deciseconds with two digits'); + // assert.equal(moment('1', 'SS', true).isValid(), false, 'centiseconds with one digits'); + assert.equal(moment('12', 'SS').get('ms'), 120, 'centiseconds'); + // assert.equal(moment('123', 'SS', true).isValid(), false, 'centiseconds with three digits'); + assert.equal(moment('123', 'SSS').get('ms'), 123, 'milliseconds'); + assert.equal( + moment('1234', 'SSSS').get('ms'), + 123, + 'milliseconds with SSSS' + ); + assert.equal( + moment('123456789101112', 'SSSS').get('ms'), + 123, + 'milliseconds with SSSS' + ); }); - test('humanize', function (assert) { + test('string with format no separators', function (assert) { moment.locale('en'); - assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', '44 seconds = a few seconds'); - assert.equal(moment.duration({seconds: 45}).humanize(), 'a minute', '45 seconds = a minute'); - assert.equal(moment.duration({seconds: 89}).humanize(), 'a minute', '89 seconds = a minute'); - assert.equal(moment.duration({seconds: 90}).humanize(), '2 minutes', '90 seconds = 2 minutes'); - assert.equal(moment.duration({minutes: 44}).humanize(), '44 minutes', '44 minutes = 44 minutes'); - assert.equal(moment.duration({minutes: 45}).humanize(), 'an hour', '45 minutes = an hour'); - assert.equal(moment.duration({minutes: 89}).humanize(), 'an hour', '89 minutes = an hour'); - assert.equal(moment.duration({minutes: 90}).humanize(), '2 hours', '90 minutes = 2 hours'); - assert.equal(moment.duration({hours: 5}).humanize(), '5 hours', '5 hours = 5 hours'); - assert.equal(moment.duration({hours: 21}).humanize(), '21 hours', '21 hours = 21 hours'); - assert.equal(moment.duration({hours: 22}).humanize(), 'a day', '22 hours = a day'); - assert.equal(moment.duration({hours: 35}).humanize(), 'a day', '35 hours = a day'); - assert.equal(moment.duration({hours: 36}).humanize(), '2 days', '36 hours = 2 days'); - assert.equal(moment.duration({days: 1}).humanize(), 'a day', '1 day = a day'); - assert.equal(moment.duration({days: 5}).humanize(), '5 days', '5 days = 5 days'); - assert.equal(moment.duration({weeks: 1}).humanize(), '7 days', '1 week = 7 days'); - assert.equal(moment.duration({days: 25}).humanize(), '25 days', '25 days = 25 days'); - assert.equal(moment.duration({days: 26}).humanize(), 'a month', '26 days = a month'); - assert.equal(moment.duration({days: 30}).humanize(), 'a month', '30 days = a month'); - assert.equal(moment.duration({days: 45}).humanize(), 'a month', '45 days = a month'); - assert.equal(moment.duration({days: 46}).humanize(), '2 months', '46 days = 2 months'); - assert.equal(moment.duration({days: 74}).humanize(), '2 months', '74 days = 2 months'); - assert.equal(moment.duration({days: 77}).humanize(), '3 months', '77 days = 3 months'); - assert.equal(moment.duration({months: 1}).humanize(), 'a month', '1 month = a month'); - assert.equal(moment.duration({months: 5}).humanize(), '5 months', '5 months = 5 months'); - assert.equal(moment.duration({days: 344}).humanize(), 'a year', '344 days = a year'); - assert.equal(moment.duration({days: 345}).humanize(), 'a year', '345 days = a year'); - assert.equal(moment.duration({days: 547}).humanize(), 'a year', '547 days = a year'); - assert.equal(moment.duration({days: 548}).humanize(), '2 years', '548 days = 2 years'); - assert.equal(moment.duration({years: 1}).humanize(), 'a year', '1 year = a year'); - assert.equal(moment.duration({years: 5}).humanize(), '5 years', '5 years = 5 years'); - assert.equal(moment.duration(7200000).humanize(), '2 hours', '7200000 = 2 minutes'); - }); + var a = [ + ['MMDDYYYY', '12021999'], + ['DDMMYYYY', '12021999'], + ['YYYYMMDD', '19991202'], + ['DDMMMYYYY', '10Sep2001'], + ], + i; - test('humanize duration with suffix', function (assert) { - moment.locale('en'); - assert.equal(moment.duration({seconds: 44}).humanize(true), 'in a few seconds', '44 seconds = a few seconds'); - assert.equal(moment.duration({seconds: -44}).humanize(true), 'a few seconds ago', '44 seconds = a few seconds'); - assert.equal(moment.duration({seconds: +44}).humanize(true), 'in a few seconds', '44 seconds = a few seconds'); + for (i = 0; i < a.length; i++) { + assert.equal( + moment(a[i][1], a[i][0]).format(a[i][0]), + a[i][1], + a[i][0] + ' ---> ' + a[i][1] + ); + } }); - test('bubble value up', function (assert) { - assert.equal(moment.duration({milliseconds: 61001}).milliseconds(), 1, '61001 milliseconds has 1 millisecond left over'); - assert.equal(moment.duration({milliseconds: 61001}).seconds(), 1, '61001 milliseconds has 1 second left over'); - assert.equal(moment.duration({milliseconds: 61001}).minutes(), 1, '61001 milliseconds has 1 minute left over'); - - assert.equal(moment.duration({minutes: 350}).minutes(), 50, '350 minutes has 50 minutes left over'); - assert.equal(moment.duration({minutes: 350}).hours(), 5, '350 minutes has 5 hours left over'); + test('string with format (timezone)', function (assert) { + assert.equal( + moment('5 -0700', 'H ZZ').toDate().getUTCHours(), + 12, + "parse hours '5 -0700' ---> 'H ZZ'" + ); + assert.equal( + moment('5 -07:00', 'H Z').toDate().getUTCHours(), + 12, + "parse hours '5 -07:00' ---> 'H Z'" + ); + assert.equal( + moment('5 -0730', 'H ZZ').toDate().getUTCMinutes(), + 30, + "parse hours '5 -0730' ---> 'H ZZ'" + ); + assert.equal( + moment('5 -07:30', 'H Z').toDate().getUTCMinutes(), + 30, + "parse hours '5 -07:0' ---> 'H Z'" + ); + assert.equal( + moment('5 +0100', 'H ZZ').toDate().getUTCHours(), + 4, + "parse hours '5 +0100' ---> 'H ZZ'" + ); + assert.equal( + moment('5 +01:00', 'H Z').toDate().getUTCHours(), + 4, + "parse hours '5 +01:00' ---> 'H Z'" + ); + assert.equal( + moment('5 +0130', 'H ZZ').toDate().getUTCMinutes(), + 30, + "parse hours '5 +0130' ---> 'H ZZ'" + ); + assert.equal( + moment('5 +01:30', 'H Z').toDate().getUTCMinutes(), + 30, + "parse hours '5 +01:30' ---> 'H Z'" + ); }); - test('clipping', function (assert) { - assert.equal(moment.duration({months: 11}).months(), 11, '11 months is 11 months'); - assert.equal(moment.duration({months: 11}).years(), 0, '11 months makes no year'); - assert.equal(moment.duration({months: 12}).months(), 0, '12 months is 0 months left over'); - assert.equal(moment.duration({months: 12}).years(), 1, '12 months makes 1 year'); - assert.equal(moment.duration({months: 13}).months(), 1, '13 months is 1 month left over'); - assert.equal(moment.duration({months: 13}).years(), 1, '13 months makes 1 year'); - - assert.equal(moment.duration({days: 30}).days(), 30, '30 days is 30 days'); - assert.equal(moment.duration({days: 30}).months(), 0, '30 days makes no month'); - assert.equal(moment.duration({days: 31}).days(), 0, '31 days is 0 days left over'); - assert.equal(moment.duration({days: 31}).months(), 1, '31 days is a month'); - assert.equal(moment.duration({days: 32}).days(), 1, '32 days is 1 day left over'); - assert.equal(moment.duration({days: 32}).months(), 1, '32 days is a month'); - - assert.equal(moment.duration({hours: 23}).hours(), 23, '23 hours is 23 hours'); - assert.equal(moment.duration({hours: 23}).days(), 0, '23 hours makes no day'); - assert.equal(moment.duration({hours: 24}).hours(), 0, '24 hours is 0 hours left over'); - assert.equal(moment.duration({hours: 24}).days(), 1, '24 hours makes 1 day'); - assert.equal(moment.duration({hours: 25}).hours(), 1, '25 hours is 1 hour left over'); - assert.equal(moment.duration({hours: 25}).days(), 1, '25 hours makes 1 day'); + test('string with format (timezone offset)', function (assert) { + var a, b, c, d, e, f; + a = new Date(Date.UTC(2011, 0, 1, 1)); + b = moment('2011 1 1 0 -01:00', 'YYYY MM DD HH Z'); + assert.equal( + a.getHours(), + b.hours(), + 'date created with utc == parsed string with timezone offset' + ); + assert.equal( + +a, + +b, + 'date created with utc == parsed string with timezone offset' + ); + c = moment('2011 2 1 10 -05:00', 'YYYY MM DD HH Z'); + d = moment('2011 2 1 8 -07:00', 'YYYY MM DD HH Z'); + assert.equal( + c.hours(), + d.hours(), + '10 am central time == 8 am pacific time' + ); + e = moment.utc('20 07 2012 17:15:00', 'DD MM YYYY HH:mm:ss'); + f = moment.utc('20 07 2012 10:15:00 -0700', 'DD MM YYYY HH:mm:ss ZZ'); + assert.equal(e.hours(), f.hours(), 'parse timezone offset in utc'); }); - test('bubbling consistency', function (assert) { - var days = 0, months = 0, newDays, newMonths, totalDays, d; - for (totalDays = 1; totalDays <= 500; ++totalDays) { - d = moment.duration(totalDays, 'days'); - newDays = d.days(); - newMonths = d.months() + d.years() * 12; - assert.ok( - (months === newMonths && days + 1 === newDays) || - (months + 1 === newMonths && newDays === 0), - 'consistent total days ' + totalDays + - ' was ' + months + ' ' + days + - ' now ' + newMonths + ' ' + newDays); - days = newDays; - months = newMonths; - } + test('string with timezone around start of year', function (assert) { + assert.equal( + moment('2000-01-01T00:00:00.000+01:00').toISOString(), + '1999-12-31T23:00:00.000Z', + '+1:00 around 2000' + ); + assert.equal( + moment('2000-01-01T00:00:00.000-01:00').toISOString(), + '2000-01-01T01:00:00.000Z', + '-1:00 around 2000' + ); + assert.equal( + moment('1970-01-01T00:00:00.000+01:00').toISOString(), + '1969-12-31T23:00:00.000Z', + '+1:00 around 1970' + ); + assert.equal( + moment('1970-01-01T00:00:00.000-01:00').toISOString(), + '1970-01-01T01:00:00.000Z', + '-1:00 around 1970' + ); + assert.equal( + moment('1200-01-01T00:00:00.000+01:00').toISOString(), + '1199-12-31T23:00:00.000Z', + '+1:00 around 1200' + ); + assert.equal( + moment('1200-01-01T00:00:00.000-01:00').toISOString(), + '1200-01-01T01:00:00.000Z', + '-1:00 around 1200' + ); }); - test('effective equivalency', function (assert) { - assert.deepEqual(moment.duration({seconds: 1})._data, moment.duration({milliseconds: 1000})._data, '1 second is the same as 1000 milliseconds'); - assert.deepEqual(moment.duration({seconds: 60})._data, moment.duration({minutes: 1})._data, '1 minute is the same as 60 seconds'); - assert.deepEqual(moment.duration({minutes: 60})._data, moment.duration({hours: 1})._data, '1 hour is the same as 60 minutes'); - assert.deepEqual(moment.duration({hours: 24})._data, moment.duration({days: 1})._data, '1 day is the same as 24 hours'); - assert.deepEqual(moment.duration({days: 7})._data, moment.duration({weeks: 1})._data, '1 week is the same as 7 days'); - assert.deepEqual(moment.duration({days: 31})._data, moment.duration({months: 1})._data, '1 month is the same as 30 days'); - assert.deepEqual(moment.duration({months: 12})._data, moment.duration({years: 1})._data, '1 years is the same as 12 months'); - }); + test('string with array of formats', function (assert) { + var thursdayForCurrentWeek = moment().day(4).format('YYYY MM DD'); - test('asGetters', function (assert) { - // 400 years have exactly 146097 days + assert.equal( + moment('11-02-1999', ['MM-DD-YYYY', 'DD-MM-YYYY']).format('MM DD YYYY'), + '11 02 1999', + 'switching month and day' + ); + assert.equal( + moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format( + 'MM DD YYYY' + ), + '02 11 1999', + 'year last' + ); + assert.equal( + moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD', 'MM-DD-YYYY']).format( + 'MM DD YYYY' + ), + '02 11 1999', + 'year first' + ); - // years - assert.equal(moment.duration(1, 'year').asYears(), 1, '1 year as years'); - assert.equal(moment.duration(1, 'year').asQuarters(), 4, '1 year as quarters'); - assert.equal(moment.duration(1, 'year').asMonths(), 12, '1 year as months'); - assert.equal(moment.duration(400, 'year').asMonths(), 4800, '400 years as months'); - assert.equal(moment.duration(1, 'year').asWeeks().toFixed(3), 52.143, '1 year as weeks'); - assert.equal(moment.duration(1, 'year').asDays(), 365, '1 year as days'); - assert.equal(moment.duration(2, 'year').asDays(), 730, '2 years as days'); - assert.equal(moment.duration(3, 'year').asDays(), 1096, '3 years as days'); - assert.equal(moment.duration(4, 'year').asDays(), 1461, '4 years as days'); - assert.equal(moment.duration(400, 'year').asDays(), 146097, '400 years as days'); - assert.equal(moment.duration(1, 'year').asHours(), 8760, '1 year as hours'); - assert.equal(moment.duration(1, 'year').asMinutes(), 525600, '1 year as minutes'); - assert.equal(moment.duration(1, 'year').asSeconds(), 31536000, '1 year as seconds'); - assert.equal(moment.duration(1, 'year').asMilliseconds(), 31536000000, '1 year as milliseconds'); + assert.equal( + moment('02-11-1999', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), + '02 11 1999', + 'year last' + ); + assert.equal( + moment('1999-02-11', ['MM/DD/YYYY', 'YYYY MM DD']).format('MM DD YYYY'), + '02 11 1999', + 'year first' + ); + assert.equal( + moment('02-11-1999', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), + '02 11 1999', + 'year last' + ); + assert.equal( + moment('1999-02-11', ['YYYY MM DD', 'MM/DD/YYYY']).format('MM DD YYYY'), + '02 11 1999', + 'year first' + ); - // quarters - assert.equal(moment.duration(1, 'quarter').asYears(), 0.25, '1 quarter as years'); - assert.equal(moment.duration(1, 'quarter').asQuarters(), 1, '1 quarter as quarters'); - assert.equal(moment.duration(1, 'quarter').asMonths(), 3, '1 quarter as months'); - assert.equal(moment.duration(2, 'quarter').asWeeks().toFixed(3), 26.143, '2 month as quarters'); - assert.equal(moment.duration(1, 'quarter').asDays(), 91, '1 quarter as days'); - assert.equal(moment.duration(2, 'quarter').asDays(), 183, '2 quarter as days'); - assert.equal(moment.duration(3, 'quarter').asDays(), 274, '4 quarter as days'); - assert.equal(moment.duration(4, 'quarter').asDays(), 365, '4 quarter as days'); - assert.equal(moment.duration(1, 'quarter').asHours(), 2184, '1 quarter as hours'); - assert.equal(moment.duration(3, 'quarter').asHours(), 6576, '3 quarter as hours'); - assert.equal(moment.duration(2, 'quarter').asMinutes(), 263520, '2 quarter as minutes'); - assert.equal(moment.duration(3, 'quarter').asSeconds(), 23673600, '3 quarter as seconds'); - assert.equal(moment.duration(1, 'quarter').asMilliseconds(), 7862400000, '1 quarter as milliseconds'); + assert.equal( + moment('13-11-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), + '11 13 1999', + 'second must be month' + ); + assert.equal( + moment('11-13-1999', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), + '11 13 1999', + 'first must be month' + ); + assert.equal( + moment('01-02-2000', ['MM/DD/YYYY', 'DD/MM/YYYY']).format('MM DD YYYY'), + '01 02 2000', + 'either can be a month, month first format' + ); + assert.equal( + moment('02-01-2000', ['DD/MM/YYYY', 'MM/DD/YYYY']).format('MM DD YYYY'), + '01 02 2000', + 'either can be a month, day first format' + ); - // months - assert.equal(moment.duration(1, 'month').asYears().toFixed(4), 0.0833, '1 month as years'); - assert.equal(moment.duration(6, 'month').asQuarters(), 2, '6 month as quarters'); - assert.equal(moment.duration(1, 'month').asMonths(), 1, '1 month as months'); - assert.equal(moment.duration(1, 'month').asWeeks().toFixed(3), 4.286, '1 month as weeks'); - assert.equal(moment.duration(1, 'month').asDays(), 30, '1 month as days'); - assert.equal(moment.duration(2, 'month').asDays(), 61, '2 months as days'); - assert.equal(moment.duration(3, 'month').asDays(), 91, '3 months as days'); - assert.equal(moment.duration(4, 'month').asDays(), 122, '4 months as days'); - assert.equal(moment.duration(5, 'month').asDays(), 152, '5 months as days'); - assert.equal(moment.duration(6, 'month').asDays(), 183, '6 months as days'); - assert.equal(moment.duration(7, 'month').asDays(), 213, '7 months as days'); - assert.equal(moment.duration(8, 'month').asDays(), 243, '8 months as days'); - assert.equal(moment.duration(9, 'month').asDays(), 274, '9 months as days'); - assert.equal(moment.duration(10, 'month').asDays(), 304, '10 months as days'); - assert.equal(moment.duration(11, 'month').asDays(), 335, '11 months as days'); - assert.equal(moment.duration(12, 'month').asDays(), 365, '12 months as days'); - assert.equal(moment.duration(24, 'month').asDays(), 730, '24 months as days'); - assert.equal(moment.duration(36, 'month').asDays(), 1096, '36 months as days'); - assert.equal(moment.duration(48, 'month').asDays(), 1461, '48 months as days'); - assert.equal(moment.duration(4800, 'month').asDays(), 146097, '4800 months as days'); - assert.equal(moment.duration(1, 'month').asHours(), 720, '1 month as hours'); - assert.equal(moment.duration(1, 'month').asMinutes(), 43200, '1 month as minutes'); - assert.equal(moment.duration(1, 'month').asSeconds(), 2592000, '1 month as seconds'); - assert.equal(moment.duration(1, 'month').asMilliseconds(), 2592000000, '1 month as milliseconds'); + assert.equal( + moment('11-02-10', ['MM/DD/YY', 'YY MM DD', 'DD-MM-YY']).format( + 'MM DD YYYY' + ), + '02 11 2010', + 'all unparsed substrings have influence on format penalty' + ); + assert.equal( + moment('11-02-10', ['MM-DD-YY HH:mm', 'YY MM DD']).format('MM DD YYYY'), + '02 10 2011', + 'prefer formats without extra tokens' + ); + assert.equal( + moment('11-02-10 junk', ['MM-DD-YY', 'YY.MM.DD [junk]']).format( + 'MM DD YYYY' + ), + '02 10 2011', + 'prefer formats that dont result in extra characters' + ); + assert.equal( + moment('11-22-10', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), + '10 22 2011', + 'prefer valid results' + ); - // weeks - assert.equal(moment.duration(1, 'week').asYears().toFixed(4), 0.0192, '1 week as years'); - assert.equal(moment.duration(1, 'week').asQuarters().toFixed(4), 0.0767, '1 week as quarters'); - assert.equal(moment.duration(1, 'week').asMonths().toFixed(3), 0.230, '1 week as months'); - assert.equal(moment.duration(1, 'week').asWeeks(), 1, '1 week as weeks'); - assert.equal(moment.duration(1, 'week').asDays(), 7, '1 week as days'); - assert.equal(moment.duration(1, 'week').asHours(), 168, '1 week as hours'); - assert.equal(moment.duration(1, 'week').asMinutes(), 10080, '1 week as minutes'); - assert.equal(moment.duration(1, 'week').asSeconds(), 604800, '1 week as seconds'); - assert.equal(moment.duration(1, 'week').asMilliseconds(), 604800000, '1 week as milliseconds'); + assert.equal( + moment('gibberish', ['YY-MM-DD', 'YY-DD-MM']).format('MM DD YYYY'), + 'Invalid date', + 'doest throw for invalid strings' + ); + assert.equal( + moment('gibberish', []).format('MM DD YYYY'), + 'Invalid date', + 'doest throw for an empty array' + ); - // days - assert.equal(moment.duration(1, 'day').asYears().toFixed(4), 0.0027, '1 day as years'); - assert.equal(moment.duration(1, 'day').asQuarters().toFixed(4), 0.0110, '1 day as quarters'); - assert.equal(moment.duration(1, 'day').asMonths().toFixed(3), 0.033, '1 day as months'); - assert.equal(moment.duration(1, 'day').asWeeks().toFixed(3), 0.143, '1 day as weeks'); - assert.equal(moment.duration(1, 'day').asDays(), 1, '1 day as days'); - assert.equal(moment.duration(1, 'day').asHours(), 24, '1 day as hours'); - assert.equal(moment.duration(1, 'day').asMinutes(), 1440, '1 day as minutes'); - assert.equal(moment.duration(1, 'day').asSeconds(), 86400, '1 day as seconds'); - assert.equal(moment.duration(1, 'day').asMilliseconds(), 86400000, '1 day as milliseconds'); + // https://github.com/moment/moment/issues/1143 + assert.equal( + moment( + 'System Administrator and Database Assistant (7/1/2011), System Administrator and Database Assistant (7/1/2011), Database Coordinator (7/1/2011), Vice President (7/1/2011), System Administrator and Database Assistant (5/31/2012), Database Coordinator (7/1/2012), System Administrator and Database Assistant (7/1/2013)', + ['MM/DD/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD', 'YYYY-MM-DDTHH:mm:ssZ'] + ).format('YYYY-MM-DD'), + '2011-07-01', + 'Works for long strings' + ); - // hours - assert.equal(moment.duration(1, 'hour').asYears().toFixed(6), 0.000114, '1 hour as years'); - assert.equal(moment.duration(1, 'hour').asQuarters().toFixed(6), 0.000456, '1 hour as quarters'); - assert.equal(moment.duration(1, 'hour').asMonths().toFixed(5), 0.00137, '1 hour as months'); - assert.equal(moment.duration(1, 'hour').asWeeks().toFixed(5), 0.00595, '1 hour as weeks'); - assert.equal(moment.duration(1, 'hour').asDays().toFixed(4), 0.0417, '1 hour as days'); - assert.equal(moment.duration(1, 'hour').asHours(), 1, '1 hour as hours'); - assert.equal(moment.duration(1, 'hour').asMinutes(), 60, '1 hour as minutes'); - assert.equal(moment.duration(1, 'hour').asSeconds(), 3600, '1 hour as seconds'); - assert.equal(moment.duration(1, 'hour').asMilliseconds(), 3600000, '1 hour as milliseconds'); + assert.equal( + moment('11-02-10', ['MM.DD.YY', 'DD-MM-YY']).format('MM DD YYYY'), + '02 11 2010', + 'escape RegExp special characters on comparing' + ); - // minutes - assert.equal(moment.duration(1, 'minute').asYears().toFixed(8), 0.00000190, '1 minute as years'); - assert.equal(moment.duration(1, 'minute').asQuarters().toFixed(8), 0.00000761, '1 minute as quarters'); - assert.equal(moment.duration(1, 'minute').asMonths().toFixed(7), 0.0000228, '1 minute as months'); - assert.equal(moment.duration(1, 'minute').asWeeks().toFixed(7), 0.0000992, '1 minute as weeks'); - assert.equal(moment.duration(1, 'minute').asDays().toFixed(6), 0.000694, '1 minute as days'); - assert.equal(moment.duration(1, 'minute').asHours().toFixed(4), 0.0167, '1 minute as hours'); - assert.equal(moment.duration(1, 'minute').asMinutes(), 1, '1 minute as minutes'); - assert.equal(moment.duration(1, 'minute').asSeconds(), 60, '1 minute as seconds'); - assert.equal(moment.duration(1, 'minute').asMilliseconds(), 60000, '1 minute as milliseconds'); + assert.equal( + moment('13-10-98', ['DD MM YY', 'DD MM YYYY'])._f, + 'DD MM YY', + 'use two digit year' + ); + assert.equal( + moment('13-10-1998', ['DD MM YY', 'DD MM YYYY'])._f, + 'DD MM YYYY', + 'use four digit year' + ); - // seconds - assert.equal(moment.duration(1, 'second').asYears().toFixed(10), 0.0000000317, '1 second as years'); - assert.equal(moment.duration(1, 'second').asQuarters().toFixed(10), 0.0000001268, '1 second as quarters'); - assert.equal(moment.duration(1, 'second').asMonths().toFixed(9), 0.000000380, '1 second as months'); - assert.equal(moment.duration(1, 'second').asWeeks().toFixed(8), 0.00000165, '1 second as weeks'); - assert.equal(moment.duration(1, 'second').asDays().toFixed(7), 0.0000116, '1 second as days'); - assert.equal(moment.duration(1, 'second').asHours().toFixed(6), 0.000278, '1 second as hours'); - assert.equal(moment.duration(1, 'second').asMinutes().toFixed(4), 0.0167, '1 second as minutes'); - assert.equal(moment.duration(1, 'second').asSeconds(), 1, '1 second as seconds'); - assert.equal(moment.duration(1, 'second').asMilliseconds(), 1000, '1 second as milliseconds'); + assert.equal( + moment('01', ['MM', 'DD'])._f, + 'MM', + 'Should use first valid format' + ); - // milliseconds - assert.equal(moment.duration(1, 'millisecond').asYears().toFixed(13), 0.0000000000317, '1 millisecond as years'); - assert.equal(moment.duration(1, 'millisecond').asQuarters().toFixed(13), 0.0000000001268, '1 millisecond as quarters'); - assert.equal(moment.duration(1, 'millisecond').asMonths().toFixed(12), 0.000000000380, '1 millisecond as months'); - assert.equal(moment.duration(1, 'millisecond').asWeeks().toFixed(11), 0.00000000165, '1 millisecond as weeks'); - assert.equal(moment.duration(1, 'millisecond').asDays().toFixed(10), 0.0000000116, '1 millisecond as days'); - assert.equal(moment.duration(1, 'millisecond').asHours().toFixed(9), 0.000000278, '1 millisecond as hours'); - assert.equal(moment.duration(1, 'millisecond').asMinutes().toFixed(7), 0.0000167, '1 millisecond as minutes'); - assert.equal(moment.duration(1, 'millisecond').asSeconds(), 0.001, '1 millisecond as seconds'); - assert.equal(moment.duration(1, 'millisecond').asMilliseconds(), 1, '1 millisecond as milliseconds'); + assert.equal( + moment('Thursday 8:30pm', ['dddd h:mma']).format( + 'YYYY MM DD dddd h:mma' + ), + thursdayForCurrentWeek + ' Thursday 8:30pm', + 'Default to current week' + ); }); - test('as getters for small units', function (assert) { - var dS = moment.duration(1, 'milliseconds'), - ds = moment.duration(3, 'seconds'), - dm = moment.duration(13, 'minutes'); - - // Tests for issue #1867. - // Floating point errors for small duration units were introduced in version 2.8.0. - assert.equal(dS.as('milliseconds'), 1, 'as("milliseconds")'); - assert.equal(dS.asMilliseconds(), 1, 'asMilliseconds()'); - assert.equal(ds.as('seconds'), 3, 'as("seconds")'); - assert.equal(ds.asSeconds(), 3, 'asSeconds()'); - assert.equal(dm.as('minutes'), 13, 'as("minutes")'); - assert.equal(dm.asMinutes(), 13, 'asMinutes()'); + test('string with array of formats + ISO', function (assert) { + assert.equal( + moment('1994', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).year(), + 1994, + 'iso: assert parse YYYY' + ); + assert.equal( + moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).hour(), + 17, + 'iso: assert parse HH:mm (1)' + ); + assert.equal( + moment('24:15', [moment.ISO_8601, 'MM', 'kk:mm', 'YYYY']).hour(), + 0, + 'iso: assert parse kk:mm' + ); + assert.equal( + moment('17:15', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).minutes(), + 15, + 'iso: assert parse HH:mm (2)' + ); + assert.equal( + moment('06', [moment.ISO_8601, 'MM', 'HH:mm', 'YYYY']).month(), + 6 - 1, + 'iso: assert parse MM' + ); + assert.equal( + moment('2012-06-01', [ + moment.ISO_8601, + 'MM', + 'HH:mm', + 'YYYY', + ]).parsingFlags().iso, + true, + 'iso: assert parse iso' + ); + assert.equal( + moment('2014-05-05', [moment.ISO_8601, 'YYYY-MM-DD']).parsingFlags() + .iso, + true, + 'iso: edge case array precedence iso' + ); + assert.equal( + moment('2014-05-05', ['YYYY-MM-DD', moment.ISO_8601]).parsingFlags() + .iso, + false, + 'iso: edge case array precedence not iso' + ); }); - test('minutes getter for floating point hours', function (assert) { - // Tests for issue #2978. - // For certain floating point hours, .minutes() getter produced incorrect values due to the rounding errors - assert.equal(moment.duration(2.3, 'h').minutes(), 18, 'minutes()'); - assert.equal(moment.duration(4.1, 'h').minutes(), 6, 'minutes()'); + test('strict parsing invalid date against array of formats', function (assert) { + var b = moment( + '2/30/2019 7:00pm', + [ + 'M/DD/YYYY h:mma", "MM/DD/YYYY h:mma", "M-D-YYYY h:mma", "MM-D-YYYY h:mma', + ], + true + ); + assert.deepEqual( + b.parsingFlags().parsedDateParts, + [2019, 1, 30, 7, 0], + 'strict parsing multiple formats should still select the best format even if the date is invalid' + ); }); - test('isDuration', function (assert) { - assert.ok(moment.isDuration(moment.duration(12345678)), 'correctly says true'); - assert.ok(!moment.isDuration(moment()), 'moment object is not a duration'); - assert.ok(!moment.isDuration({milliseconds: 1}), 'plain object is not a duration'); + test('string with format - years', function (assert) { + assert.equal(moment('67', 'YY').format('YYYY'), '2067', '67 > 2067'); + assert.equal(moment('68', 'YY').format('YYYY'), '2068', '68 > 2068'); + assert.equal(moment('69', 'YY').format('YYYY'), '1969', '69 > 1969'); + assert.equal(moment('70', 'YY').format('YYYY'), '1970', '70 > 1970'); }); - test('add', function (assert) { - var d = moment.duration({months: 4, weeks: 3, days: 2}); - // for some reason, d._data._months does not get updated; use d._months instead. - assert.equal(d.add(1, 'month')._months, 5, 'Add months'); - assert.equal(d.add(5, 'days')._days, 28, 'Add days'); - assert.equal(d.add(10000)._milliseconds, 10000, 'Add milliseconds'); - assert.equal(d.add({h: 23, m: 59})._milliseconds, 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 10000, 'Add hour:minute'); + test('implicit cloning', function (assert) { + var momentA = moment([2011, 10, 10]), + momentB = moment(momentA); + momentA.month(5); + assert.notEqual( + momentA.month(), + momentB.month(), + 'Calling moment() on a moment will create a clone' + ); }); - test('add to moment', function (assert) { - var d = moment.duration({months: 1, seconds: -1}); - var m = moment('2017-03-01').add(d); - assert.equal(m.month(), 2, 'Adds months before time'); - assert.equal(m.date(), 31, 'Adds time after months'); + test('explicit cloning', function (assert) { + var momentA = moment([2011, 10, 10]), + momentB = momentA.clone(); + momentA.month(5); + assert.notEqual( + momentA.month(), + momentB.month(), + 'Calling clone() on a moment will create a clone' + ); }); - test('add and bubble', function (assert) { - var d; - - assert.equal(moment.duration(1, 'second').add(1000, 'milliseconds').seconds(), 2, 'Adding milliseconds should bubble up to seconds'); - assert.equal(moment.duration(1, 'minute').add(60, 'second').minutes(), 2, 'Adding seconds should bubble up to minutes'); - assert.equal(moment.duration(1, 'hour').add(60, 'minutes').hours(), 2, 'Adding minutes should bubble up to hours'); - assert.equal(moment.duration(1, 'day').add(24, 'hours').days(), 2, 'Adding hours should bubble up to days'); - - d = moment.duration(-1, 'day').add(1, 'hour'); - assert.equal(d.hours(), -23, '-1 day + 1 hour == -23 hour (component)'); - assert.equal(d.asHours(), -23, '-1 day + 1 hour == -23 hours'); - - d = moment.duration(+1, 'day').add(1, 'hour'); - assert.equal(d.hours(), 1, '1 day + 1 hour == 1 hour (component)'); - assert.equal(d.asHours(), 25, '1 day + 1 hour == 25 hour'); + test('cloning carrying over utc mode', function (assert) { + assert.equal( + moment().local().clone()._isUTC, + false, + 'An explicit cloned local moment should have _isUTC == false' + ); + assert.equal( + moment().utc().clone()._isUTC, + true, + 'An cloned utc moment should have _isUTC == true' + ); + assert.equal( + moment().clone()._isUTC, + false, + 'An explicit cloned local moment should have _isUTC == false' + ); + assert.equal( + moment.utc().clone()._isUTC, + true, + 'An explicit cloned utc moment should have _isUTC == true' + ); + assert.equal( + moment(moment().local())._isUTC, + false, + 'An implicit cloned local moment should have _isUTC == false' + ); + assert.equal( + moment(moment().utc())._isUTC, + true, + 'An implicit cloned utc moment should have _isUTC == true' + ); + assert.equal( + moment(moment())._isUTC, + false, + 'An implicit cloned local moment should have _isUTC == false' + ); + assert.equal( + moment(moment.utc())._isUTC, + true, + 'An implicit cloned utc moment should have _isUTC == true' + ); + }); - d = moment.duration(-1, 'year').add(1, 'day'); - assert.equal(d.days(), -30, '- 1 year + 1 day == -30 days (component)'); - assert.equal(d.months(), -11, '- 1 year + 1 day == -11 months (component)'); - assert.equal(d.years(), 0, '- 1 year + 1 day == 0 years (component)'); - assert.equal(d.asDays(), -364, '- 1 year + 1 day == -364 days'); - - d = moment.duration(+1, 'year').add(1, 'day'); - assert.equal(d.days(), 1, '+ 1 year + 1 day == 1 days (component)'); - assert.equal(d.months(), 0, '+ 1 year + 1 day == 0 month (component)'); - assert.equal(d.years(), 1, '+ 1 year + 1 day == 1 year (component)'); - assert.equal(d.asDays(), 366, '+ 1 year + 1 day == +366 day'); - - d = moment.duration(-1, 'year').add(1, 'hour'); - assert.equal(d.hours(), -23, '- 1 year + 1 hour == -23 hours (component)'); - assert.equal(d.days(), -30, '- 1 year + 1 hour == -30 days (component)'); - assert.equal(d.months(), -11, '- 1 year + 1 hour == -11 months (component)'); - assert.equal(d.years(), 0, '- 1 year + 1 hour == 0 years (component)'); - - d = moment.duration(+1, 'year').add(1, 'hour'); - assert.equal(d.hours(), 1, '+ 1 year + 1 hour == 1 hour (component)'); - assert.equal(d.days(), 0, '+ 1 year + 1 hour == 1 day (component)'); - assert.equal(d.months(), 0, '+ 1 year + 1 hour == 1 month (component)'); - assert.equal(d.years(), 1, '+ 1 year + 1 hour == 1 year (component)'); - }); - - test('subtract and bubble', function (assert) { - var d; - - assert.equal(moment.duration(2, 'second').subtract(1000, 'milliseconds').seconds(), 1, 'Subtracting milliseconds should bubble up to seconds'); - assert.equal(moment.duration(2, 'minute').subtract(60, 'second').minutes(), 1, 'Subtracting seconds should bubble up to minutes'); - assert.equal(moment.duration(2, 'hour').subtract(60, 'minutes').hours(), 1, 'Subtracting minutes should bubble up to hours'); - assert.equal(moment.duration(2, 'day').subtract(24, 'hours').days(), 1, 'Subtracting hours should bubble up to days'); - - d = moment.duration(1, 'day').subtract(1, 'hour'); - assert.equal(d.hours(), 23, '1 day - 1 hour == 23 hour (component)'); - assert.equal(d.asHours(), 23, '1 day - 1 hour == 23 hours'); - - d = moment.duration(1, 'year').subtract(1, 'day'); - assert.equal(d.days(), 30, '1 year - 1 day == 30 days (component)'); - assert.equal(d.months(), 11, '1 year - 1 day == 11 months (component)'); - assert.equal(d.years(), 0, '1 year - 1 day == 0 years (component)'); - assert.equal(d.asDays(), 364, '1 year - 1 day == 364 days'); - - d = moment.duration(1, 'year').subtract(1, 'hour'); - assert.equal(d.hours(), 23, '1 year - 1 hour == 23 hours (component)'); - assert.equal(d.days(), 30, '1 year - 1 hour == 30 days (component)'); - assert.equal(d.months(), 11, '1 year - 1 hour == 11 months (component)'); - assert.equal(d.years(), 0, '1 year - 1 hour == 0 years (component)'); - }); + test('parsing RFC 2822', function (assert) { + var testCases = { + 'Tue, 01 Nov 2016 01:23:45 UT': [2016, 10, 1, 1, 23, 45, 0], + 'Sun, 12 Apr 2015 05:06:07 GMT': [2015, 3, 12, 5, 6, 7, 0], + 'Tue, 01 Nov 2016 01:23:45 +0000': [2016, 10, 1, 1, 23, 45, 0], + 'Tue, 01 Nov 16 04:23:45 Z': [2016, 10, 1, 4, 23, 45, 0], + '01 Nov 2016 05:23:45 z': [2016, 10, 1, 5, 23, 45, 0], + '(Init Comment) Tue,\n 1 Nov 2016 (Split\n Comment) 07:23:45 +0000 (GMT)': [ + 2016, + 10, + 1, + 7, + 23, + 45, + 0, + ], + 'Mon, 02 Jan 2017 06:00:00 -0800': [2017, 0, 2, 6, 0, 0, -8 * 60], + 'Mon, 02 Jan 2017 06:00:00 +0800': [2017, 0, 2, 6, 0, 0, +8 * 60], + 'Mon, 02 Jan 2017 06:00:00 +0330': [ + 2017, + 0, + 2, + 6, + 0, + 0, + +(3 * 60 + 30), + ], + 'Mon, 02 Jan 2017 06:00:00 -0330': [ + 2017, + 0, + 2, + 6, + 0, + 0, + -(3 * 60 + 30), + ], + 'Mon, 02 Jan 2017 06:00:00 PST': [2017, 0, 2, 6, 0, 0, -8 * 60], + 'Mon, 02 Jan 2017 06:00:00 PDT': [2017, 0, 2, 6, 0, 0, -7 * 60], + 'Mon, 02 Jan 2017 06:00:00 MST': [2017, 0, 2, 6, 0, 0, -7 * 60], + 'Mon, 02 Jan 2017 06:00:00 MDT': [2017, 0, 2, 6, 0, 0, -6 * 60], + 'Mon, 02 Jan 2017 06:00:00 CST': [2017, 0, 2, 6, 0, 0, -6 * 60], + 'Mon, 02 Jan 2017 06:00:00 CDT': [2017, 0, 2, 6, 0, 0, -5 * 60], + 'Mon, 02 Jan 2017 06:00:00 EST': [2017, 0, 2, 6, 0, 0, -5 * 60], + 'Mon, 02 Jan 2017 06:00:00 EDT': [2017, 0, 2, 6, 0, 0, -4 * 60], + }; - test('subtract', function (assert) { - var d = moment.duration({months: 2, weeks: 2, days: 0, hours: 5}); - // for some reason, d._data._months does not get updated; use d._months instead. - assert.equal(d.subtract(1, 'months')._months, 1, 'Subtract months'); - assert.equal(d.subtract(14, 'days')._days, 0, 'Subtract days'); - assert.equal(d.subtract(10000)._milliseconds, 5 * 60 * 60 * 1000 - 10000, 'Subtract milliseconds'); - assert.equal(d.subtract({h: 1, m: 59})._milliseconds, 3 * 60 * 60 * 1000 + 1 * 60 * 1000 - 10000, 'Subtract hour:minute'); + eachOwnProp(testCases, function (inp) { + var tokens = testCases[inp], + parseResult = moment(inp, moment.RFC_2822, true).parseZone(), + expResult = moment + .utc(tokens.slice(0, 6)) + .utcOffset(tokens[6], true); + assert.ok(parseResult.isValid(), inp); + assert.ok( + parseResult.parsingFlags().rfc2822, + inp + ' - rfc2822 parsingFlag' + ); + assert.equal( + parseResult.utcOffset(), + expResult.utcOffset(), + inp + ' - zone' + ); + assert.equal( + parseResult.valueOf(), + expResult.valueOf(), + inp + ' - correctness' + ); + }); }); - test('JSON.stringify duration', function (assert) { - var d = moment.duration(1024, 'h'); + test('non RFC 2822 strings', function (assert) { + var testCases = { + 'RFC2822 datetime with all options but invalid day delimiter': + 'Tue. 01 Nov 2016 01:23:45 GMT', + 'RFC2822 datetime with mismatching Day (weekday v date)': + 'Mon, 01 Nov 2016 01:23:45 GMT', + }; - assert.equal(JSON.stringify(d), '"' + d.toISOString() + '"', 'JSON.stringify on duration should return ISO string'); + eachOwnProp(testCases, function (testCase) { + var testResult = moment(testCases[testCase], moment.RFC_2822, true); + assert.ok( + !testResult.isValid(), + testCase + ': ' + testResult + ' - is invalid rfc2822' + ); + assert.ok( + !testResult.parsingFlags().rfc2822, + testCase + ': ' + testResult + ' - rfc2822 parsingFlag' + ); + }); }); - test('duration plugins', function (assert) { - var durationObject = moment.duration(); - moment.duration.fn.foo = function (arg) { - assert.equal(this, durationObject); - assert.equal(arg, 5); + test('parsing RFC 2822 in a different locale', function (assert) { + var testCases = { + 'clean RFC2822 datetime with all options': + 'Tue, 01 Nov 2016 01:23:45 UT', + 'clean RFC2822 datetime without comma': 'Tue 01 Nov 2016 02:23:45 GMT', + 'clean RFC2822 datetime without seconds': + 'Tue, 01 Nov 2016 03:23 +0000', + 'clean RFC2822 datetime without century': 'Tue, 01 Nov 16 04:23:45 Z', + 'clean RFC2822 datetime without day': '01 Nov 2016 05:23:45 z', + 'clean RFC2822 datetime with single-digit day-of-month': + 'Tue, 1 Nov 2016 06:23:45 GMT', + 'RFC2822 datetime with CFWSs': + '(Init Comment) Tue,\n 1 Nov 2016 (Split\n Comment) 07:23:45 +0000 (GMT)', }; - durationObject.foo(5); - }); - -}))); - -;(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); + try { + moment.locale('ru'); + eachOwnProp(testCases, function (testCase) { + var testResult = moment(testCases[testCase], moment.RFC_2822, true); + assert.ok(testResult.isValid(), testResult); + assert.ok( + testResult.parsingFlags().rfc2822, + testResult + ' - rfc2822 parsingFlag' + ); + }); + } finally { + moment.locale('en'); } - } + }); - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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; + test('non RFC 2822 strings in a different locale', function (assert) { + var testCases = { + 'RFC2822 datetime with all options but invalid day delimiter': + 'Tue. 01 Nov 2016 01:23:45 GMT', + 'RFC2822 datetime with mismatching Day (week v date)': + 'Mon, 01 Nov 2016 01:23:45 GMT', }; - } - - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; - if (test._expectedDeprecations != null) { - var missedDeprecations = []; - each(test._expectedDeprecations, function (deprecationPattern, id) { - if (test._observedDeprecations[id] !== 1) { - missedDeprecations.push(deprecationPattern); - } + try { + moment.locale('ru'); + eachOwnProp(testCases, function (testCase) { + var testResult = moment(testCases[testCase], moment.RFC_2822, true); + assert.ok(!testResult.isValid(), testResult); + assert.ok( + !testResult.parsingFlags().rfc2822, + testResult + ' - rfc2822 parsingFlag' + ); }); - 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; - } + } finally { + moment.locale('en'); } - return -1; - } - - /*global QUnit:false*/ - - var test = QUnit.test; + }); - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); + test('parsing iso', function (assert) { + var offset = moment([2011, 9, 8]).utcOffset(), + pad = function (input) { + if (input < 10) { + return '0' + input; } + return '' + input; }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } + offStr = function (offset) { + var hourOffset = + offset > 0 + ? Math.floor(offset / 60) + : Math.ceil(offset / 60), + minOffset = offset - hourOffset * 60; + return offset >= 0 + ? '+' + pad(hourOffset) + ':' + pad(minOffset) + : '-' + pad(-hourOffset) + ':' + pad(-minOffset); + }, + tz = offStr(offset), + tz0 = offStr(moment([2011, 0, 1]).utcOffset()), + tz2 = tz.replace(':', ''), + tz3 = tz2.slice(0, 3), + //Tz3 removes minutes digit so will break the tests when parsed if they all use the same minutes digit + hourOffset = + offset > 0 ? Math.floor(offset / 60) : Math.ceil(offset / 60), + minOffset = offset - hourOffset * 60, + minutesForTz3 = pad((4 + minOffset) % 60), + // minute = pad(4 + minOffset), + + formats = [ + ['2011', '2011-01-01T00:00:00.000' + tz0], + ['2011-10', '2011-10-01T00:00:00.000' + tz], + ['2011-10-08', '2011-10-08T00:00:00.000' + tz], + ['2011-10-08T18', '2011-10-08T18:00:00.000' + tz], + ['2011-10-08T18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011-10-08T18:04' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011-10-08T18:04:20' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011-10-08T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-10-08T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-10-08T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-10-08 18', '2011-10-08T18:00:00.000' + tz], + ['2011-10-08 18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-10-08 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-10-08 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011-10-08 18:04' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011-10-08 18:04:20' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011-10-08 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-10-08 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-10-08 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-W40', '2011-10-03T00:00:00.000' + tz], + ['2011-W40-6', '2011-10-08T00:00:00.000' + tz], + ['2011-W40-6T18', '2011-10-08T18:00:00.000' + tz], + ['2011-W40-6T18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011-W40-6T18:04' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011-W40-6T18:04:20' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011-W40-6T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-W40-6T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-W40-6T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-W40-6 18', '2011-10-08T18:00:00.000' + tz], + ['2011-W40-6 18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-W40-6 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-W40-6 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011-W40-6 18:04' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011-W40-6 18:04:20' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011-W40-6 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-W40-6 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-W40-6 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-281', '2011-10-08T00:00:00.000' + tz], + ['2011-281T18', '2011-10-08T18:00:00.000' + tz], + ['2011-281T18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-281T18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-281T18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011-281T18:04' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011-281T18:04:20' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011-281T18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-281T18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-281T18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011-281 18', '2011-10-08T18:00:00.000' + tz], + ['2011-281 18:04', '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20', '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011-281 18:04' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011-281 18:04:20' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011-281 18:04' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011-281 18:04:20' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011-281 18:04:20.1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011-281 18:04:20.11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011-281 18:04:20.111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['20111008T18', '2011-10-08T18:00:00.000' + tz], + ['20111008T1804', '2011-10-08T18:04:00.000' + tz], + ['20111008T180420', '2011-10-08T18:04:20.000' + tz], + ['20111008T1804' + tz, '2011-10-08T18:04:00.000' + tz], + ['20111008T180420' + tz, '2011-10-08T18:04:20.000' + tz], + ['20111008T1804' + tz2, '2011-10-08T18:04:00.000' + tz], + ['20111008T180420' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '20111008T1804' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '20111008T180420' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['20111008T180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['20111008T180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['20111008T180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['20111008 18', '2011-10-08T18:00:00.000' + tz], + ['20111008 1804', '2011-10-08T18:04:00.000' + tz], + ['20111008 180420', '2011-10-08T18:04:20.000' + tz], + ['20111008 1804' + tz, '2011-10-08T18:04:00.000' + tz], + ['20111008 180420' + tz, '2011-10-08T18:04:20.000' + tz], + ['20111008 1804' + tz2, '2011-10-08T18:04:00.000' + tz], + ['20111008 180420' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '20111008 1804' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '20111008 180420' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['20111008 180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['20111008 180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['20111008 180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011W40', '2011-10-03T00:00:00.000' + tz], + ['2011W406', '2011-10-08T00:00:00.000' + tz], + ['2011W406T18', '2011-10-08T18:00:00.000' + tz], + ['2011W406T1804', '2011-10-08T18:04:00.000' + tz], + ['2011W406T180420', '2011-10-08T18:04:20.000' + tz], + ['2011W406 1804' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011W406T1804' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011W406T180420' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011W406T1804' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011W406T180420' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011W406T1804' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011W406T180420' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011W406T180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011W406T180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011W406T180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011W406 18', '2011-10-08T18:00:00.000' + tz], + ['2011W406 1804', '2011-10-08T18:04:00.000' + tz], + ['2011W406 180420', '2011-10-08T18:04:20.000' + tz], + ['2011W406 1804' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011W406 180420' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011W406 180420' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011W406 1804' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011W406 180420' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011W406 180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011W406 180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011W406 180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011281', '2011-10-08T00:00:00.000' + tz], + ['2011281T18', '2011-10-08T18:00:00.000' + tz], + ['2011281T1804', '2011-10-08T18:04:00.000' + tz], + ['2011281T180420', '2011-10-08T18:04:20.000' + tz], + ['2011281T1804' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011281T180420' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011281T1804' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011281T180420' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011281T1804' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011281T180420' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011281T180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011281T180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011281T180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], + ['2011281 18', '2011-10-08T18:00:00.000' + tz], + ['2011281 1804', '2011-10-08T18:04:00.000' + tz], + ['2011281 180420', '2011-10-08T18:04:20.000' + tz], + ['2011281 1804' + tz, '2011-10-08T18:04:00.000' + tz], + ['2011281 180420' + tz, '2011-10-08T18:04:20.000' + tz], + ['2011281 1804' + tz2, '2011-10-08T18:04:00.000' + tz], + ['2011281 180420' + tz2, '2011-10-08T18:04:20.000' + tz], + [ + '2011281 1804' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':00.000' + tz, + ], + [ + '2011281 180420' + tz3, + '2011-10-08T18:' + minutesForTz3 + ':20.000' + tz, + ], + ['2011281 180420,1' + tz2, '2011-10-08T18:04:20.100' + tz], + ['2011281 180420,11' + tz2, '2011-10-08T18:04:20.110' + tz], + ['2011281 180420,111' + tz2, '2011-10-08T18:04:20.111' + tz], + ], + i; + for (i = 0; i < formats.length; i++) { + assert.equal( + moment(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), + formats[i][1], + 'moment should be able to parse ISO ' + formats[i][0] + ); + assert.equal( + moment(formats[i][0], moment.ISO_8601).format( + 'YYYY-MM-DDTHH:mm:ss.SSSZ' + ), + formats[i][1], + 'moment should be able to parse specified ISO ' + formats[i][0] + ); + assert.equal( + moment(formats[i][0], moment.ISO_8601, true).format( + 'YYYY-MM-DDTHH:mm:ss.SSSZ' + ), + formats[i][1], + 'moment should be able to parse specified strict ISO ' + + formats[i][0] + ); + } + }); - module$1('duration from moments'); + test('non iso 8601 strings', function (assert) { + assert.ok( + !moment('2015-10T10:15', moment.ISO_8601, true).isValid(), + 'incomplete date with time' + ); + assert.ok( + !moment('2015-W10T10:15', moment.ISO_8601, true).isValid(), + 'incomplete week date with time' + ); + assert.ok( + !moment('2015W10T1015', moment.ISO_8601, true).isValid(), + 'incomplete week date with time (basic)' + ); + assert.ok( + !moment('2015-10-08T1015', moment.ISO_8601, true).isValid(), + 'mixing extended and basic format' + ); + assert.ok( + !moment('20151008T10:15', moment.ISO_8601, true).isValid(), + 'mixing basic and extended format' + ); + assert.ok( + !moment('2015-10-1', moment.ISO_8601, true).isValid(), + 'missing zero padding for day' + ); + }); - test('pure year diff', function (assert) { - var m1 = moment('2012-01-01T00:00:00.000Z'), - m2 = moment('2013-01-01T00:00:00.000Z'); + test('parsing iso week year/week/weekday', function (assert) { + assert.equal( + moment.utc('2007-W01').format(), + '2007-01-01T00:00:00Z', + '2008 week 1 (1st Jan Mon)' + ); + assert.equal( + moment.utc('2008-W01').format(), + '2007-12-31T00:00:00Z', + '2008 week 1 (1st Jan Tue)' + ); + assert.equal( + moment.utc('2003-W01').format(), + '2002-12-30T00:00:00Z', + '2008 week 1 (1st Jan Wed)' + ); + assert.equal( + moment.utc('2009-W01').format(), + '2008-12-29T00:00:00Z', + '2009 week 1 (1st Jan Thu)' + ); + assert.equal( + moment.utc('2010-W01').format(), + '2010-01-04T00:00:00Z', + '2010 week 1 (1st Jan Fri)' + ); + assert.equal( + moment.utc('2011-W01').format(), + '2011-01-03T00:00:00Z', + '2011 week 1 (1st Jan Sat)' + ); + assert.equal( + moment.utc('2012-W01').format(), + '2012-01-02T00:00:00Z', + '2012 week 1 (1st Jan Sun)' + ); + }); - assert.equal(moment.duration({from: m1, to: m2}).as('years'), 1, 'year moment difference'); - assert.equal(moment.duration({from: m2, to: m1}).as('years'), -1, 'negative year moment difference'); + test('parsing weekdays verifies the day', function (assert) { + // string with format + assert.ok( + !moment('Wed 08-10-2017', 'ddd MM-DD-YYYY').isValid(), + 'because day of week is incorrect for the date' + ); + assert.ok( + moment('Thu 08-10-2017', 'ddd MM-DD-YYYY').isValid(), + 'because day of week is correct for the date' + ); }); - test('month and day diff', function (assert) { - var m1 = moment('2012-01-15T00:00:00.000Z'), - m2 = moment('2012-02-17T00:00:00.000Z'), - d = moment.duration({from: m1, to: m2}); + test('parsing weekday on utc dates verifies day according to utc time', function (assert) { + assert.ok(moment.utc('Mon 03:59', 'ddd HH:mm').isValid(), 'Monday 03:59'); + }); - assert.equal(d.get('days'), 2); - assert.equal(d.get('months'), 1); + test('parsing weekday on local dates verifies day according to local time', function (assert) { + // this doesn't do much useful if you're not in the US or at least close to it + assert.ok(moment('Mon 03:59', 'ddd HH:mm').isValid(), 'Monday 03:59'); }); - test('day diff, separate months', function (assert) { - var m1 = moment('2012-01-15T00:00:00.000Z'), - m2 = moment('2012-02-13T00:00:00.000Z'), - d = moment.duration({from: m1, to: m2}); + test('parsing weekday on utc dates with specified offsets verifies day according to that offset', function (assert) { + assert.ok( + moment.utc('Mon 03:59 +12:00', 'ddd HH:mm Z', true).isValid(), + 'Monday 03:59' + ); + }); - assert.equal(d.as('days'), 29); + test('parsing weekday on local dates with specified offsets verifies day according to that offset', function (assert) { + // if you're in the US, these times will all be sometime Sunday, but they should parse as Monday + assert.ok( + moment('Mon 03:59 +12:00', 'ddd HH:mm Z', true).isValid(), + 'Monday 03:59' + ); }); - test('hour diff', function (assert) { - var m1 = moment('2012-01-15T17:00:00.000Z'), - m2 = moment('2012-01-16T03:00:00.000Z'), - d = moment.duration({from: m1, to: m2}); + test('parsing week year/week/weekday (dow 1, doy 4)', function (assert) { + moment.locale('dow:1,doy:4', { week: { dow: 1, doy: 4 } }); - assert.equal(d.as('hours'), 10); + assert.equal( + moment.utc('2007-01', 'gggg-ww').format(), + '2007-01-01T00:00:00Z', + '2007 week 1 (1st Jan Mon)' + ); + assert.equal( + moment.utc('2008-01', 'gggg-ww').format(), + '2007-12-31T00:00:00Z', + '2008 week 1 (1st Jan Tue)' + ); + assert.equal( + moment.utc('2003-01', 'gggg-ww').format(), + '2002-12-30T00:00:00Z', + '2003 week 1 (1st Jan Wed)' + ); + assert.equal( + moment.utc('2009-01', 'gggg-ww').format(), + '2008-12-29T00:00:00Z', + '2009 week 1 (1st Jan Thu)' + ); + assert.equal( + moment.utc('2010-01', 'gggg-ww').format(), + '2010-01-04T00:00:00Z', + '2010 week 1 (1st Jan Fri)' + ); + assert.equal( + moment.utc('2011-01', 'gggg-ww').format(), + '2011-01-03T00:00:00Z', + '2011 week 1 (1st Jan Sat)' + ); + assert.equal( + moment.utc('2012-01', 'gggg-ww').format(), + '2012-01-02T00:00:00Z', + '2012 week 1 (1st Jan Sun)' + ); + + moment.defineLocale('dow:1,doy:4', null); }); - test('minute diff', function (assert) { - var m1 = moment('2012-01-15T17:45:00.000Z'), - m2 = moment('2012-01-16T03:15:00.000Z'), - d = moment.duration({from: m1, to: m2}); + test('parsing week year/week/weekday (dow 1, doy 7)', function (assert) { + moment.locale('dow:1,doy:7', { week: { dow: 1, doy: 7 } }); - assert.equal(d.as('hours'), 9.5); + assert.equal( + moment.utc('2007-01', 'gggg-ww').format(), + '2007-01-01T00:00:00Z', + '2007 week 1 (1st Jan Mon)' + ); + assert.equal( + moment.utc('2008-01', 'gggg-ww').format(), + '2007-12-31T00:00:00Z', + '2008 week 1 (1st Jan Tue)' + ); + assert.equal( + moment.utc('2003-01', 'gggg-ww').format(), + '2002-12-30T00:00:00Z', + '2003 week 1 (1st Jan Wed)' + ); + assert.equal( + moment.utc('2009-01', 'gggg-ww').format(), + '2008-12-29T00:00:00Z', + '2009 week 1 (1st Jan Thu)' + ); + assert.equal( + moment.utc('2010-01', 'gggg-ww').format(), + '2009-12-28T00:00:00Z', + '2010 week 1 (1st Jan Fri)' + ); + assert.equal( + moment.utc('2011-01', 'gggg-ww').format(), + '2010-12-27T00:00:00Z', + '2011 week 1 (1st Jan Sat)' + ); + assert.equal( + moment.utc('2012-01', 'gggg-ww').format(), + '2011-12-26T00:00:00Z', + '2012 week 1 (1st Jan Sun)' + ); + moment.defineLocale('dow:1,doy:7', null); }); -}))); - + test('parsing week year/week/weekday (dow 0, doy 6)', function (assert) { + moment.locale('dow:0,doy:6', { week: { dow: 0, doy: 6 } }); -;(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'; + assert.equal( + moment.utc('2007-01', 'gggg-ww').format(), + '2006-12-31T00:00:00Z', + '2007 week 1 (1st Jan Mon)' + ); + assert.equal( + moment.utc('2008-01', 'gggg-ww').format(), + '2007-12-30T00:00:00Z', + '2008 week 1 (1st Jan Tue)' + ); + assert.equal( + moment.utc('2003-01', 'gggg-ww').format(), + '2002-12-29T00:00:00Z', + '2003 week 1 (1st Jan Wed)' + ); + assert.equal( + moment.utc('2009-01', 'gggg-ww').format(), + '2008-12-28T00:00:00Z', + '2009 week 1 (1st Jan Thu)' + ); + assert.equal( + moment.utc('2010-01', 'gggg-ww').format(), + '2009-12-27T00:00:00Z', + '2010 week 1 (1st Jan Fri)' + ); + assert.equal( + moment.utc('2011-01', 'gggg-ww').format(), + '2010-12-26T00:00:00Z', + '2011 week 1 (1st Jan Sat)' + ); + assert.equal( + moment.utc('2012-01', 'gggg-ww').format(), + '2012-01-01T00:00:00Z', + '2012 week 1 (1st Jan Sun)' + ); + moment.defineLocale('dow:0,doy:6', null); + }); - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } + test('parsing week year/week/weekday (dow 6, doy 12)', function (assert) { + moment.locale('dow:6,doy:12', { week: { dow: 6, doy: 12 } }); - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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; - }; - } + assert.equal( + moment.utc('2007-01', 'gggg-ww').format(), + '2006-12-30T00:00:00Z', + '2007 week 1 (1st Jan Mon)' + ); + assert.equal( + moment.utc('2008-01', 'gggg-ww').format(), + '2007-12-29T00:00:00Z', + '2008 week 1 (1st Jan Tue)' + ); + assert.equal( + moment.utc('2003-01', 'gggg-ww').format(), + '2002-12-28T00:00:00Z', + '2003 week 1 (1st Jan Wed)' + ); + assert.equal( + moment.utc('2009-01', 'gggg-ww').format(), + '2008-12-27T00:00:00Z', + '2009 week 1 (1st Jan Thu)' + ); + assert.equal( + moment.utc('2010-01', 'gggg-ww').format(), + '2009-12-26T00:00:00Z', + '2010 week 1 (1st Jan Fri)' + ); + assert.equal( + moment.utc('2011-01', 'gggg-ww').format(), + '2011-01-01T00:00:00Z', + '2011 week 1 (1st Jan Sat)' + ); + assert.equal( + moment.utc('2012-01', 'gggg-ww').format(), + '2011-12-31T00:00:00Z', + '2012 week 1 (1st Jan Sun)' + ); + moment.defineLocale('dow:6,doy:12', null); + }); - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + test('parsing ISO with Z', function (assert) { + var i, + mom, + formats = [ + ['2011-10-08T18:04', '2011-10-08T18:04:00.000'], + ['2011-10-08T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-10-08T18:04:20.1', '2011-10-08T18:04:20.100'], + ['2011-10-08T18:04:20.11', '2011-10-08T18:04:20.110'], + ['2011-10-08T18:04:20.111', '2011-10-08T18:04:20.111'], + ['2011-W40-6T18', '2011-10-08T18:00:00.000'], + ['2011-W40-6T18:04', '2011-10-08T18:04:00.000'], + ['2011-W40-6T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-W40-6T18:04:20.1', '2011-10-08T18:04:20.100'], + ['2011-W40-6T18:04:20.11', '2011-10-08T18:04:20.110'], + ['2011-W40-6T18:04:20.111', '2011-10-08T18:04:20.111'], + ['2011-281T18', '2011-10-08T18:00:00.000'], + ['2011-281T18:04', '2011-10-08T18:04:00.000'], + ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-281T18:04:20', '2011-10-08T18:04:20.000'], + ['2011-281T18:04:20.1', '2011-10-08T18:04:20.100'], + ['2011-281T18:04:20.11', '2011-10-08T18:04:20.110'], + ['2011-281T18:04:20.111', '2011-10-08T18:04:20.111'], + ]; - 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(' ')); - } - } - } + for (i = 0; i < formats.length; i++) { + mom = moment(formats[i][0] + 'Z').utc(); + assert.equal( + mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), + formats[i][1], + 'moment should be able to parse ISO in UTC ' + formats[i][0] + 'Z' + ); - 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; - } + mom = moment(formats[i][0] + ' Z').utc(); + assert.equal( + mom.format('YYYY-MM-DDTHH:mm:ss.SSS'), + formats[i][1], + 'moment should be able to parse ISO in UTC ' + formats[i][0] + ' Z' + ); } - return -1; - } - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } + }); - module$1('invalid'); + test('parsing iso with T', function (assert) { + assert.equal( + moment('2011-10-08T18')._f, + 'YYYY-MM-DDTHH', + "should include 'T' in the format" + ); + assert.equal( + moment('2011-10-08T18:20')._f, + 'YYYY-MM-DDTHH:mm', + "should include 'T' in the format" + ); + assert.equal( + moment('2011-10-08T18:20:13')._f, + 'YYYY-MM-DDTHH:mm:ss', + "should include 'T' in the format" + ); + assert.equal( + moment('2011-10-08T18:20:13.321')._f, + 'YYYY-MM-DDTHH:mm:ss.SSSS', + "should include 'T' in the format" + ); - test('invalid duration', function (assert) { - var m = moment.duration.invalid(); // should be invalid - assert.equal(m.isValid(), false); - assert.ok(isNaN(m.valueOf())); + assert.equal( + moment('2011-10-08 18')._f, + 'YYYY-MM-DD HH', + "should not include 'T' in the format" + ); + assert.equal( + moment('2011-10-08 18:20')._f, + 'YYYY-MM-DD HH:mm', + "should not include 'T' in the format" + ); + assert.equal( + moment('2011-10-08 18:20:13')._f, + 'YYYY-MM-DD HH:mm:ss', + "should not include 'T' in the format" + ); + assert.equal( + moment('2011-10-08 18:20:13.321')._f, + 'YYYY-MM-DD HH:mm:ss.SSSS', + "should not include 'T' in the format" + ); }); - test('valid duration', function (assert) { - var m = moment.duration({d: null}); // should be valid, for now - assert.equal(m.isValid(), true); - assert.equal(m.valueOf(), 0); + test('parsing iso Z timezone', function (assert) { + var i, + formats = [ + ['2011-10-08T18:04Z', '2011-10-08T18:04:00.000+00:00'], + ['2011-10-08T18:04:20Z', '2011-10-08T18:04:20.000+00:00'], + ['2011-10-08T18:04:20.111Z', '2011-10-08T18:04:20.111+00:00'], + ]; + for (i = 0; i < formats.length; i++) { + assert.equal( + moment.utc(formats[i][0]).format('YYYY-MM-DDTHH:mm:ss.SSSZ'), + formats[i][1], + 'moment should be able to parse ISO ' + formats[i][0] + ); + } }); - test('invalid duration - only smallest unit can have decimal', function (assert) { - var m = moment.duration({'days': 3.5, 'hours': 1.1}); // should be invalid - assert.equal(m.isValid(), false); - assert.ok(isNaN(m.valueOf())); // .valueOf() returns NaN for invalid durations + test('parsing iso Z timezone into local', function (assert) { + var m = moment('2011-10-08T18:04:20.111Z'); + + assert.equal( + m.utc().format('YYYY-MM-DDTHH:mm:ss.SSS'), + '2011-10-08T18:04:20.111', + 'moment should be able to parse ISO 2011-10-08T18:04:20.111Z' + ); }); - test('valid duration - smallest unit can have decimal', function (assert) { - var m = moment.duration({'days': 3, 'hours': 1.1}); // should be valid - assert.equal(m.isValid(), true); - assert.equal(m.asHours(), 73.1); + test('parsing iso with more subsecond precision digits', function (assert) { + assert.equal( + moment.utc('2013-07-31T22:00:00.0000000Z').format(), + '2013-07-31T22:00:00Z', + 'more than 3 subsecond digits' + ); }); - test('invalid duration with two arguments', function (assert) { - var m = moment.duration(NaN, 'days'); - assert.equal(m.isValid(), false); - assert.ok(isNaN(m.valueOf())); + test('null or empty', function (assert) { + assert.equal(moment('').isValid(), false, "moment('') is not valid"); + assert.equal(moment(null).isValid(), false, 'moment(null) is not valid'); + assert.equal( + moment(null, 'YYYY-MM-DD').isValid(), + false, + "moment('', 'format') is not valid" + ); + assert.equal( + moment('', 'YYYY-MM-DD').isValid(), + false, + "moment('', 'format') is not valid" + ); + assert.equal( + moment.utc('').isValid(), + false, + "moment.utc('') is not valid" + ); + assert.equal( + moment.utc(null).isValid(), + false, + 'moment.utc(null) is not valid' + ); + assert.equal( + moment.utc(null, 'YYYY-MM-DD').isValid(), + false, + 'moment.utc(null) is not valid' + ); + assert.equal( + moment.utc('', 'YYYY-MM-DD').isValid(), + false, + "moment.utc('', 'YYYY-MM-DD') is not valid" + ); }); - test('invalid duration operations', function (assert) { - var invalids = [ - moment.duration(NaN), - moment.duration(NaN, 'days'), - moment.duration.invalid() - ], - i, - invalid, - valid = moment.duration(); + test('first century', function (assert) { + assert.equal( + moment([0, 0, 1]).format('YYYY-MM-DD'), + '0000-01-01', + 'Year AD 0' + ); + assert.equal( + moment([99, 0, 1]).format('YYYY-MM-DD'), + '0099-01-01', + 'Year AD 99' + ); + assert.equal( + moment([999, 0, 1]).format('YYYY-MM-DD'), + '0999-01-01', + 'Year AD 999' + ); + assert.equal( + moment('0 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), + '0000-01-01', + 'Year AD 0' + ); + assert.equal( + moment('999 1 1', 'YYYY MM DD').format('YYYY-MM-DD'), + '0999-01-01', + 'Year AD 999' + ); + assert.equal( + moment('0 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), + '00000-01-01', + 'Year AD 0' + ); + assert.equal( + moment('99 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), + '00099-01-01', + 'Year AD 99' + ); + assert.equal( + moment('999 1 1', 'YYYYY MM DD').format('YYYYY-MM-DD'), + '00999-01-01', + 'Year AD 999' + ); + }); - for (i = 0; i < invalids.length; ++i) { - invalid = invalids[i]; + test('six digit years', function (assert) { + assert.equal( + moment([-270000, 0, 1]).format('YYYYY-MM-DD'), + '-270000-01-01', + 'format BC 270,001' + ); + assert.equal( + moment([270000, 0, 1]).format('YYYYY-MM-DD'), + '270000-01-01', + 'format AD 270,000' + ); + assert.equal( + moment('-270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), + -270000, + 'parse BC 270,001' + ); + assert.equal( + moment('270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), + 270000, + 'parse AD 270,000' + ); + assert.equal( + moment('+270000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), + 270000, + 'parse AD +270,000' + ); + assert.equal( + moment.utc('-270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), + -270000, + 'parse utc BC 270,001' + ); + assert.equal( + moment.utc('270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), + 270000, + 'parse utc AD 270,000' + ); + assert.equal( + moment.utc('+270000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), + 270000, + 'parse utc AD +270,000' + ); + }); - assert.ok(!invalid.add(5, 'hours').isValid(), 'invalid.add is invalid; i=' + i); - assert.ok(!invalid.subtract(30, 'days').isValid(), 'invalid.subtract is invalid; i=' + i); - assert.ok(!invalid.abs().isValid(), 'invalid.abs is invalid; i=' + i); - assert.ok(isNaN(invalid.as('years')), 'invalid.as is NaN; i=' + i); - assert.ok(isNaN(invalid.asMilliseconds()), 'invalid.asMilliseconds is NaN; i=' + i); - assert.ok(isNaN(invalid.asSeconds()), 'invalid.asSeconds is NaN; i=' + i); - assert.ok(isNaN(invalid.asMinutes()), 'invalid.asMinutes is NaN; i=' + i); - assert.ok(isNaN(invalid.asHours()), 'invalid.asHours is NaN; i=' + i); - assert.ok(isNaN(invalid.asDays()), 'invalid.asDays is NaN; i=' + i); - assert.ok(isNaN(invalid.asWeeks()), 'invalid.asWeeks is NaN; i=' + i); - assert.ok(isNaN(invalid.asMonths()), 'invalid.asMonths is NaN; i=' + i); - assert.ok(isNaN(invalid.asQuarters()), 'invalid.asQuarters is NaN; i=' + i); - assert.ok(isNaN(invalid.asYears()), 'invalid.asYears is NaN; i=' + i); - assert.ok(isNaN(invalid.valueOf()), 'invalid.valueOf is NaN; i=' + i); - assert.ok(isNaN(invalid.get('hours')), 'invalid.get is NaN; i=' + i); + test('negative four digit years', function (assert) { + assert.equal( + moment('-1000-01-01', 'YYYYY-MM-DD').toDate().getFullYear(), + -1000, + 'parse BC 1,001' + ); + assert.equal( + moment.utc('-1000-01-01', 'YYYYY-MM-DD').toDate().getUTCFullYear(), + -1000, + 'parse utc BC 1,001' + ); + }); - assert.ok(isNaN(invalid.milliseconds()), 'invalid.milliseconds is NaN; i=' + i); - assert.ok(isNaN(invalid.seconds()), 'invalid.seconds is NaN; i=' + i); - assert.ok(isNaN(invalid.minutes()), 'invalid.minutes is NaN; i=' + i); - assert.ok(isNaN(invalid.hours()), 'invalid.hours is NaN; i=' + i); - assert.ok(isNaN(invalid.days()), 'invalid.days is NaN; i=' + i); - assert.ok(isNaN(invalid.weeks()), 'invalid.weeks is NaN; i=' + i); - assert.ok(isNaN(invalid.months()), 'invalid.months is NaN; i=' + i); - assert.ok(isNaN(invalid.years()), 'invalid.years is NaN; i=' + i); + test('strict parsing', function (assert) { + assert.equal( + moment('2014-', 'YYYY-Q', true).isValid(), + false, + 'fail missing quarter' + ); - assert.equal(invalid.humanize(), - invalid.localeData().invalidDate(), - 'invalid.humanize is localized invalid duration string; i=' + i); - assert.equal(invalid.toISOString(), - invalid.localeData().invalidDate(), - 'invalid.toISOString is localized invalid duration string; i=' + i); - assert.equal(invalid.toString(), - invalid.localeData().invalidDate(), - 'invalid.toString is localized invalid duration string; i=' + i); - assert.equal(invalid.toJSON(), invalid.localeData().invalidDate(), 'invalid.toJSON is null; i=' + i); - assert.equal(invalid.locale(), 'en', 'invalid.locale; i=' + i); - assert.equal(invalid.localeData()._abbr, 'en', 'invalid.localeData()._abbr; i=' + i); + assert.equal( + moment('2012-05', 'YYYY-MM', true).format('YYYY-MM'), + '2012-05', + 'parse correct string' + ); + assert.equal( + moment(' 2012-05', 'YYYY-MM', true).isValid(), + false, + 'fail on extra whitespace' + ); + assert.equal( + moment('foo 2012-05', '[foo] YYYY-MM', true).format('YYYY-MM'), + '2012-05', + 'handle fixed text' + ); + assert.equal( + moment('2012 05', 'YYYY-MM', true).isValid(), + false, + 'fail on different separator' + ); + assert.equal( + moment('2012 05', 'YYYY MM DD', true).isValid(), + false, + 'fail on too many tokens' + ); + + assert.equal( + moment('05 30 2010', ['DD MM YYYY', 'MM DD YYYY'], true).format( + 'MM DD YYYY' + ), + '05 30 2010', + 'array with bad date' + ); + assert.equal( + moment('05 30 2010', ['', 'MM DD YYYY'], true).format('MM DD YYYY'), + '05 30 2010', + 'array with invalid format' + ); + assert.equal( + moment('05 30 2010', [' DD MM YYYY', 'MM DD YYYY'], true).format( + 'MM DD YYYY' + ), + '05 30 2010', + 'array with non-matching format' + ); + + assert.equal( + moment('2010.*...', 'YYYY.*', true).isValid(), + false, + 'invalid format with regex chars' + ); + assert.equal( + moment('2010.*', 'YYYY.*', true).year(), + 2010, + 'valid format with regex chars' + ); + assert.equal( + moment('.*2010.*', '.*YYYY.*', true).year(), + 2010, + 'valid format with regex chars on both sides' + ); + + //strict tokens + assert.equal( + moment('-5-05-25', 'YYYY-MM-DD', true).isValid(), + false, + 'invalid negative year' + ); + assert.equal( + moment('2-05-25', 'YYYY-MM-DD', true).isValid(), + false, + 'invalid one-digit year' + ); + assert.equal( + moment('20-05-25', 'YYYY-MM-DD', true).isValid(), + false, + 'invalid two-digit year' + ); + assert.equal( + moment('201-05-25', 'YYYY-MM-DD', true).isValid(), + false, + 'invalid three-digit year' + ); + assert.equal( + moment('2010-05-25', 'YYYY-MM-DD', true).isValid(), + true, + 'valid four-digit year' + ); + assert.equal( + moment('22010-05-25', 'YYYY-MM-DD', true).isValid(), + false, + 'invalid five-digit year' + ); + + assert.equal( + moment('12-05-25', 'YY-MM-DD', true).isValid(), + true, + 'valid two-digit year' + ); + assert.equal( + moment('2012-05-25', 'YY-MM-DD', true).isValid(), + false, + 'invalid four-digit year' + ); + + assert.equal( + moment('-5-05-25', 'Y-MM-DD', true).isValid(), + true, + 'valid negative year' + ); + assert.equal( + moment('2-05-25', 'Y-MM-DD', true).isValid(), + true, + 'valid one-digit year' + ); + assert.equal( + moment('20-05-25', 'Y-MM-DD', true).isValid(), + true, + 'valid two-digit year' + ); + assert.equal( + moment('201-05-25', 'Y-MM-DD', true).isValid(), + true, + 'valid three-digit year' + ); + + assert.equal( + moment('2012-5-25', 'YYYY-M-DD', true).isValid(), + true, + 'valid one-digit month' + ); + assert.equal( + moment('2012-5-25', 'YYYY-MM-DD', true).isValid(), + false, + 'invalid one-digit month' + ); + assert.equal( + moment('2012-05-25', 'YYYY-M-DD', true).isValid(), + true, + 'valid one-digit month' + ); + assert.equal( + moment('2012-05-25', 'YYYY-MM-DD', true).isValid(), + true, + 'valid one-digit month' + ); + + assert.equal( + moment('2012-05-2', 'YYYY-MM-D', true).isValid(), + true, + 'valid one-digit day' + ); + assert.equal( + moment('2012-05-2', 'YYYY-MM-DD', true).isValid(), + false, + 'invalid one-digit day' + ); + assert.equal( + moment('2012-05-02', 'YYYY-MM-D', true).isValid(), + true, + 'valid two-digit day' + ); + assert.equal( + moment('2012-05-02', 'YYYY-MM-DD', true).isValid(), + true, + 'valid two-digit day' + ); + + assert.equal( + moment('+002012-05-25', 'YYYYY-MM-DD', true).isValid(), + true, + 'valid six-digit year' + ); + assert.equal( + moment('+2012-05-25', 'YYYYY-MM-DD', true).isValid(), + false, + 'invalid four-digit year' + ); + + //thse are kinda pointless, but they should work as expected + assert.equal( + moment('1', 'S', true).isValid(), + true, + 'valid one-digit milisecond' + ); + assert.equal( + moment('12', 'S', true).isValid(), + false, + 'invalid two-digit milisecond' + ); + assert.equal( + moment('123', 'S', true).isValid(), + false, + 'invalid three-digit milisecond' + ); + + assert.equal( + moment('1', 'SS', true).isValid(), + false, + 'invalid one-digit milisecond' + ); + assert.equal( + moment('12', 'SS', true).isValid(), + true, + 'valid two-digit milisecond' + ); + assert.equal( + moment('123', 'SS', true).isValid(), + false, + 'invalid three-digit milisecond' + ); + + assert.equal( + moment('1', 'SSS', true).isValid(), + false, + 'invalid one-digit milisecond' + ); + assert.equal( + moment('12', 'SSS', true).isValid(), + false, + 'invalid two-digit milisecond' + ); + assert.equal( + moment('123', 'SSS', true).isValid(), + true, + 'valid three-digit milisecond' + ); + + // strict parsing respects month length + assert.ok( + moment('1 January 2000', 'D MMMM YYYY', true).isValid(), + 'capital long-month + MMMM' + ); + assert.ok( + !moment('1 January 2000', 'D MMM YYYY', true).isValid(), + 'capital long-month + MMM' + ); + assert.ok( + !moment('1 Jan 2000', 'D MMMM YYYY', true).isValid(), + 'capital short-month + MMMM' + ); + assert.ok( + moment('1 Jan 2000', 'D MMM YYYY', true).isValid(), + 'capital short-month + MMM' + ); + assert.ok( + moment('1 january 2000', 'D MMMM YYYY', true).isValid(), + 'lower long-month + MMMM' + ); + assert.ok( + !moment('1 january 2000', 'D MMM YYYY', true).isValid(), + 'lower long-month + MMM' + ); + assert.ok( + !moment('1 jan 2000', 'D MMMM YYYY', true).isValid(), + 'lower short-month + MMMM' + ); + assert.ok( + moment('1 jan 2000', 'D MMM YYYY', true).isValid(), + 'lower short-month + MMM' + ); + }); + + test('parsing into a locale', function (assert) { + moment.defineLocale('parselocale', { + months: 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split( + '_' + ), + monthsShort: 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split( + '_' + ), + }); + + moment.locale('en'); + + assert.equal( + moment('2012 seven', 'YYYY MMM', 'parselocale').month(), + 6, + 'should be able to parse in a specific locale' + ); + + moment.locale('parselocale'); + + assert.equal( + moment('2012 july', 'YYYY MMM', 'en').month(), + 6, + 'should be able to parse in a specific locale' + ); + + moment.defineLocale('parselocale', null); + }); + + function getVerifier(test) { + return function (input, format, expected, description, asymetrical) { + var m = moment(input, format); + test.equal(m.format('YYYY MM DD'), expected, 'compare: ' + description); + + //test round trip + if (!asymetrical) { + test.equal(m.format(format), input, 'round trip: ' + description); + } + }; + } + + test('parsing week and weekday information', function (assert) { + var ver = getVerifier(assert), + currentWeekOfYear = moment().weeks(), + expectedDate2012 = moment([2012, 0, 1]) + .day(0) + .add(currentWeekOfYear - 1, 'weeks') + .format('YYYY MM DD'), + expectedDate1999 = moment([1999, 0, 1]) + .day(0) + .add(currentWeekOfYear - 1, 'weeks') + .format('YYYY MM DD'); + + // year + ver('12', 'gg', expectedDate2012, 'week-year two digits'); + ver('2012', 'gggg', expectedDate2012, 'week-year four digits'); + ver('99', 'gg', expectedDate1999, 'week-year two digits previous year'); + ver( + '1999', + 'gggg', + expectedDate1999, + 'week-year four digits previous year' + ); + + ver('99', 'GG', '1999 01 04', 'iso week-year two digits'); + ver('1999', 'GGGG', '1999 01 04', 'iso week-year four digits'); + + ver('13', 'GG', '2012 12 31', 'iso week-year two digits previous year'); + ver( + '2013', + 'GGGG', + '2012 12 31', + 'iso week-year four digits previous year' + ); + + // year + week + ver('1999 37', 'gggg w', '1999 09 05', 'week'); + ver('1999 37', 'gggg ww', '1999 09 05', 'week double'); + ver('1999 37', 'GGGG W', '1999 09 13', 'iso week'); + ver('1999 37', 'GGGG WW', '1999 09 13', 'iso week double'); + + ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso day'); + ver('1999 37 04', 'GGGG WW E', '1999 09 16', 'iso day wide', true); + + ver('1999 37 4', 'gggg ww e', '1999 09 09', 'day'); + ver('1999 37 04', 'gggg ww e', '1999 09 09', 'day wide', true); + + // year + week + day + ver('1999 37 4', 'gggg ww d', '1999 09 09', 'd'); + ver('1999 37 Th', 'gggg ww dd', '1999 09 09', 'dd'); + ver('1999 37 Thu', 'gggg ww ddd', '1999 09 09', 'ddd'); + ver('1999 37 Thursday', 'gggg ww dddd', '1999 09 09', 'dddd'); + + // lower-order only + assert.equal(moment('22', 'ww').week(), 22, 'week sets the week by itself'); + assert.equal( + moment('22', 'ww').weekYear(), + moment().weekYear(), + 'week keeps this year' + ); + assert.equal( + moment('2012 22', 'YYYY ww').weekYear(), + 2012, + 'week keeps parsed year' + ); + + assert.equal( + moment('22', 'WW').isoWeek(), + 22, + 'iso week sets the week by itself' + ); + assert.equal( + moment('2012 22', 'YYYY WW').weekYear(), + 2012, + 'iso week keeps parsed year' + ); + assert.equal( + moment('22', 'WW').isoWeekYear(), + moment().isoWeekYear(), + 'iso week keeps this year' + ); + + // order + ver('6 2013 2', 'e gggg w', '2013 01 12', "order doesn't matter"); + ver('6 2013 2', 'E GGGG W', '2013 01 12', "iso order doesn't matter"); + + //can parse other stuff too + assert.equal( + moment('1999-W37-4 3:30', 'GGGG-[W]WW-E HH:mm').format( + 'YYYY MM DD HH:mm' + ), + '1999 09 16 03:30', + 'parsing weeks and hours' + ); + + // In safari, all years before 1300 are shifted back with one day. + // http://stackoverflow.com/questions/20768975/safari-subtracts-1-day-from-dates-before-1300 + if (new Date('1300-01-01').getUTCFullYear() === 1300) { + // Years less than 100 + ver('0098-06', 'GGGG-WW', '0098 02 03', 'small years work', true); + } + }); + + test('parsing localized weekdays', function (assert) { + var ver = getVerifier(assert); + try { + moment.locale('dow:1,doy:4', { + weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split( + '_' + ), + weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin: 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + week: { dow: 1, doy: 4 }, + }); + ver('1999 37 4', 'GGGG WW E', '1999 09 16', 'iso ignores locale'); + ver('1999 37 7', 'GGGG WW E', '1999 09 19', 'iso ignores locale'); + + ver( + '1999 37 0', + 'gggg ww e', + '1999 09 13', + 'localized e uses local doy and dow: 0 = monday' + ); + ver( + '1999 37 4', + 'gggg ww e', + '1999 09 17', + 'localized e uses local doy and dow: 4 = friday' + ); + + ver( + '1999 37 1', + 'gggg ww d', + '1999 09 13', + 'localized d uses 0-indexed days: 1 = monday' + ); + ver( + '1999 37 Lu', + 'gggg ww dd', + '1999 09 13', + 'localized d uses 0-indexed days: Mo' + ); + ver( + '1999 37 lun.', + 'gggg ww ddd', + '1999 09 13', + 'localized d uses 0-indexed days: Mon' + ); + ver( + '1999 37 lundi', + 'gggg ww dddd', + '1999 09 13', + 'localized d uses 0-indexed days: Monday' + ); + ver( + '1999 37 4', + 'gggg ww d', + '1999 09 16', + 'localized d uses 0-indexed days: 4' + ); + + //sunday goes at the end of the week + ver( + '1999 37 0', + 'gggg ww d', + '1999 09 19', + 'localized d uses 0-indexed days: 0 = sund' + ); + ver( + '1999 37 Di', + 'gggg ww dd', + '1999 09 19', + 'localized d uses 0-indexed days: 0 = sund' + ); + } finally { + moment.defineLocale('dow:1,doy:4', null); + moment.locale('en'); + } + }); + + test('parsing with customized two-digit year', function (assert) { + var original = moment.parseTwoDigitYear; + try { + assert.equal(moment('68', 'YY').year(), 2068); + assert.equal(moment('69', 'YY').year(), 1969); + moment.parseTwoDigitYear = function (input) { + return +input + (+input > 30 ? 1900 : 2000); + }; + assert.equal(moment('68', 'YY').year(), 1968); + assert.equal(moment('67', 'YY').year(), 1967); + assert.equal(moment('31', 'YY').year(), 1931); + assert.equal(moment('30', 'YY').year(), 2030); + } finally { + moment.parseTwoDigitYear = original; + } + }); + + test('array with strings', function (assert) { + assert.equal( + moment(['2014', '7', '31']).isValid(), + true, + 'string array + isValid' + ); + }); + + test('object with strings', function (assert) { + assert.equal( + moment({ year: '2014', month: '7', day: '31' }).isValid(), + true, + 'string object + isValid' + ); + }); + + test('utc with array of formats', function (assert) { + assert.equal( + moment.utc('2014-01-01', ['YYYY-MM-DD', 'YYYY-MM']).format(), + '2014-01-01T00:00:00Z', + 'moment.utc works with array of formats' + ); + }); + + test('parsing invalid string weekdays', function (assert) { + assert.equal( + false, + moment('a', 'dd').isValid(), + 'dd with invalid weekday, non-strict' + ); + assert.equal( + false, + moment('a', 'dd', true).isValid(), + 'dd with invalid weekday, strict' + ); + assert.equal( + false, + moment('a', 'ddd').isValid(), + 'ddd with invalid weekday, non-strict' + ); + assert.equal( + false, + moment('a', 'ddd', true).isValid(), + 'ddd with invalid weekday, strict' + ); + assert.equal( + false, + moment('a', 'dddd').isValid(), + 'dddd with invalid weekday, non-strict' + ); + assert.equal( + false, + moment('a', 'dddd', true).isValid(), + 'dddd with invalid weekday, strict' + ); + }); + + test('milliseconds', function (assert) { + assert.equal(moment('1', 'S').millisecond(), 100); + assert.equal(moment('12', 'SS').millisecond(), 120); + assert.equal(moment('123', 'SSS').millisecond(), 123); + assert.equal(moment('1234', 'SSSS').millisecond(), 123); + assert.equal(moment('12345', 'SSSSS').millisecond(), 123); + assert.equal(moment('123456', 'SSSSSS').millisecond(), 123); + assert.equal(moment('1234567', 'SSSSSSS').millisecond(), 123); + assert.equal(moment('12345678', 'SSSSSSSS').millisecond(), 123); + assert.equal(moment('123456789', 'SSSSSSSSS').millisecond(), 123); + }); + + test('hmm', function (assert) { + assert.equal( + moment('123', 'hmm', true).format('HH:mm:ss'), + '01:23:00', + '123 with hmm' + ); + assert.equal( + moment('123a', 'hmmA', true).format('HH:mm:ss'), + '01:23:00', + '123a with hmmA' + ); + assert.equal( + moment('123p', 'hmmA', true).format('HH:mm:ss'), + '13:23:00', + '123p with hmmA' + ); + + assert.equal( + moment('1234', 'hmm', true).format('HH:mm:ss'), + '12:34:00', + '1234 with hmm' + ); + assert.equal( + moment('1234a', 'hmmA', true).format('HH:mm:ss'), + '00:34:00', + '1234a with hmmA' + ); + assert.equal( + moment('1234p', 'hmmA', true).format('HH:mm:ss'), + '12:34:00', + '1234p with hmmA' + ); + + assert.equal( + moment('12345', 'hmmss', true).format('HH:mm:ss'), + '01:23:45', + '12345 with hmmss' + ); + assert.equal( + moment('12345a', 'hmmssA', true).format('HH:mm:ss'), + '01:23:45', + '12345a with hmmssA' + ); + assert.equal( + moment('12345p', 'hmmssA', true).format('HH:mm:ss'), + '13:23:45', + '12345p with hmmssA' + ); + assert.equal( + moment('112345', 'hmmss', true).format('HH:mm:ss'), + '11:23:45', + '112345 with hmmss' + ); + assert.equal( + moment('112345a', 'hmmssA', true).format('HH:mm:ss'), + '11:23:45', + '112345a with hmmssA' + ); + assert.equal( + moment('112345p', 'hmmssA', true).format('HH:mm:ss'), + '23:23:45', + '112345p with hmmssA' + ); + + assert.equal( + moment('023', 'Hmm', true).format('HH:mm:ss'), + '00:23:00', + '023 with Hmm' + ); + assert.equal( + moment('123', 'Hmm', true).format('HH:mm:ss'), + '01:23:00', + '123 with Hmm' + ); + assert.equal( + moment('1234', 'Hmm', true).format('HH:mm:ss'), + '12:34:00', + '1234 with Hmm' + ); + assert.equal( + moment('1534', 'Hmm', true).format('HH:mm:ss'), + '15:34:00', + '1234 with Hmm' + ); + assert.equal( + moment('12345', 'Hmmss', true).format('HH:mm:ss'), + '01:23:45', + '12345 with Hmmss' + ); + assert.equal( + moment('112345', 'Hmmss', true).format('HH:mm:ss'), + '11:23:45', + '112345 with Hmmss' + ); + assert.equal( + moment('172345', 'Hmmss', true).format('HH:mm:ss'), + '17:23:45', + '112345 with Hmmss' + ); + }); + + test('Y token', function (assert) { + assert.equal(moment('1-1-2010', 'M-D-Y', true).year(), 2010, 'parsing Y'); + }); + + test('parsing flags retain parsed date parts', function (assert) { + var a = moment('10 p', 'hh:mm a'), + b; + assert.equal( + a.parsingFlags().parsedDateParts[3], + 10, + 'parsed 10 as the hour' + ); + assert.equal( + a.parsingFlags().parsedDateParts[0], + undefined, + 'year was not parsed' + ); + assert.equal(a.parsingFlags().meridiem, 'p', 'meridiem flag was added'); + b = moment('10:30', ['MMDDYY', 'HH:mm']); + assert.equal( + b.parsingFlags().parsedDateParts[3], + 10, + 'multiple format parshing matched hour' + ); + assert.equal( + b.parsingFlags().parsedDateParts[0], + undefined, + 'array is properly copied, no residual data from first token parse' + ); + }); + + test('parsing only meridiem results in invalid date', function (assert) { + assert.ok( + !moment('alkj', 'hh:mm a').isValid(), + 'because an a token is used, a meridiem will be parsed but nothing else was so invalid' + ); + assert.ok( + moment('02:30 p more extra stuff', 'hh:mm a').isValid(), + 'because other tokens were parsed, date is valid' + ); + assert.ok( + moment('1/1/2016 extra data', ['a', 'M/D/YYYY']).isValid(), + 'took second format, does not pick up on meridiem parsed from first format (good copy)' + ); + }); + + test('invalid dates return invalid for methods that access the _d prop', function (assert) { + var momentAsDate = moment(['2015', '12', '1']).toDate(); + assert.ok(momentAsDate instanceof Date, 'toDate returns a Date object'); + assert.ok( + isNaN(momentAsDate.getTime()), + 'toDate returns an invalid Date invalid' + ); + }); + + test('k, kk', function (assert) { + var i, kVal, kkVal; + for (i = -1; i <= 24; i++) { + kVal = i + ':15:59'; + kkVal = (i < 10 ? '0' : '') + i + ':15:59'; + if (i !== 24) { + assert.ok( + moment(kVal, 'k:mm:ss').isSame(moment(kVal, 'H:mm:ss')), + kVal + ' k parsing' + ); + assert.ok( + moment(kkVal, 'kk:mm:ss').isSame(moment(kkVal, 'HH:mm:ss')), + kkVal + ' kk parsing' + ); + } else { + assert.equal( + moment(kVal, 'k:mm:ss').format('k:mm:ss'), + kVal, + kVal + ' k parsing' + ); + assert.equal( + moment(kkVal, 'kk:mm:ss').format('kk:mm:ss'), + kkVal, + kkVal + ' skk parsing' + ); + } } }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -69614,27 +119634,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -69644,8 +119669,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -69658,7 +119685,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -69667,570 +119697,70 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('format'); + module('creation data'); - test('format using constants', function (assert) { - var m = moment('2016-01-02T23:40:40.678'); - assert.equal(m.format(moment.HTML5_FMT.DATETIME_LOCAL), '2016-01-02T23:40', 'datetime local format constant'); - assert.equal(m.format(moment.HTML5_FMT.DATETIME_LOCAL_SECONDS), '2016-01-02T23:40:40', 'datetime local format constant'); - assert.equal(m.format(moment.HTML5_FMT.DATETIME_LOCAL_MS), '2016-01-02T23:40:40.678', 'datetime local format constant with seconds and millis'); - assert.equal(m.format(moment.HTML5_FMT.DATE), '2016-01-02', 'date format constant'); - assert.equal(m.format(moment.HTML5_FMT.TIME), '23:40', 'time format constant'); - assert.equal(m.format(moment.HTML5_FMT.TIME_SECONDS), '23:40:40', 'time format constant with seconds'); - assert.equal(m.format(moment.HTML5_FMT.TIME_MS), '23:40:40.678', 'time format constant with seconds and millis'); - assert.equal(m.format(moment.HTML5_FMT.WEEK), '2015-W53', 'week format constant'); - assert.equal(m.format(moment.HTML5_FMT.MONTH), '2016-01', 'month format constant'); - }); + test('valid date', function (assert) { + var dat = moment('1992-10-22'), + orig = dat.creationData(); - test('format YY', function (assert) { - var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); - assert.equal(b.format('YY'), '09', 'YY ---> 09'); + assert.equal(dat.isValid(), true, '1992-10-22 is valid'); + assert.equal(orig.input, '1992-10-22', 'original input is not correct.'); + assert.equal(orig.format, 'YYYY-MM-DD', 'original format is defined.'); + assert.equal(orig.locale._abbr, 'en', 'default locale is en'); + assert.equal(orig.isUTC, false, 'not a UTC date'); }); - test('format escape brackets', function (assert) { - moment.locale('en'); + test('valid date at fr locale', function (assert) { + var dat = moment('1992-10-22', 'YYYY-MM-DD', 'fr'), + orig = dat.creationData(); - var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); - assert.equal(b.format('[day]'), 'day', 'Single bracket'); - assert.equal(b.format('[day] YY [YY]'), 'day 09 YY', 'Double bracket'); - assert.equal(b.format('[YY'), '[09', 'Un-ended bracket'); - assert.equal(b.format('[[YY]]'), '[YY]', 'Double nested brackets'); - assert.equal(b.format('[[]'), '[', 'Escape open bracket'); - assert.equal(b.format('[Last]'), 'Last', 'localized tokens'); - assert.equal(b.format('[L] L'), 'L 02/14/2009', 'localized tokens with escaped localized tokens'); - assert.equal(b.format('[L LL LLL LLLL aLa]'), 'L LL LLL LLLL aLa', 'localized tokens with escaped localized tokens'); - assert.equal(b.format('[LLL] LLL'), 'LLL February 14, 2009 3:25 PM', 'localized tokens with escaped localized tokens (recursion)'); - assert.equal(b.format('YYYY[\n]DD[\n]'), '2009\n14\n', 'Newlines'); + assert.equal(orig.locale._abbr, 'fr', 'locale is fr'); }); - test('handle negative years', function (assert) { - moment.locale('en'); - assert.equal(moment.utc().year(-1).format('YY'), '-01', 'YY with negative year'); - assert.equal(moment.utc().year(-1).format('YYYY'), '-0001', 'YYYY with negative year'); - assert.equal(moment.utc().year(-12).format('YY'), '-12', 'YY with negative year'); - assert.equal(moment.utc().year(-12).format('YYYY'), '-0012', 'YYYY with negative year'); - assert.equal(moment.utc().year(-123).format('YY'), '-23', 'YY with negative year'); - assert.equal(moment.utc().year(-123).format('YYYY'), '-0123', 'YYYY with negative year'); - assert.equal(moment.utc().year(-1234).format('YY'), '-34', 'YY with negative year'); - assert.equal(moment.utc().year(-1234).format('YYYY'), '-1234', 'YYYY with negative year'); - assert.equal(moment.utc().year(-12345).format('YY'), '-45', 'YY with negative year'); - assert.equal(moment.utc().year(-12345).format('YYYY'), '-12345', 'YYYY with negative year'); - }); + test('valid date with formats', function (assert) { + var dat = moment('29-06-1995', ['MM-DD-YYYY', 'DD-MM', 'DD-MM-YYYY']), + orig = dat.creationData(); - test('format milliseconds', function (assert) { - var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123)); - assert.equal(b.format('S'), '1', 'Deciseconds'); - assert.equal(b.format('SS'), '12', 'Centiseconds'); - assert.equal(b.format('SSS'), '123', 'Milliseconds'); - b.milliseconds(789); - assert.equal(b.format('S'), '7', 'Deciseconds'); - assert.equal(b.format('SS'), '78', 'Centiseconds'); - assert.equal(b.format('SSS'), '789', 'Milliseconds'); + assert.equal(orig.format, 'DD-MM-YYYY', 'DD-MM-YYYY format is defined.'); }); - test('format timezone', function (assert) { - var b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)); - assert.ok(b.format('Z').match(/^[\+\-]\d\d:\d\d$/), b.format('Z') + ' should be something like \'+07:30\''); - assert.ok(b.format('ZZ').match(/^[\+\-]\d{4}$/), b.format('ZZ') + ' should be something like \'+0700\''); + test('strict', function (assert) { + assert.ok( + moment('2015-01-02', 'YYYY-MM-DD', true).creationData().strict, + 'strict is true' + ); + assert.ok( + !moment('2015-01-02', 'YYYY-MM-DD').creationData().strict, + 'strict is true' + ); }); - test('format multiple with utc offset', function (assert) { - var b = moment('2012-10-08 -1200', ['YYYY-MM-DD HH:mm ZZ', 'YYYY-MM-DD ZZ', 'YYYY-MM-DD']); - assert.equal(b.format('YYYY-MM'), '2012-10', 'Parsing multiple formats should not crash with different sized formats'); - }); +}))); - test('isDST', function (assert) { - var janOffset = new Date(2011, 0, 1).getTimezoneOffset(), - julOffset = new Date(2011, 6, 1).getTimezoneOffset(), - janIsDst = janOffset < julOffset, - julIsDst = julOffset < janOffset, - jan1 = moment([2011]), - jul1 = moment([2011, 6]); - - if (janIsDst && julIsDst) { - assert.ok(0, 'January and July cannot both be in DST'); - assert.ok(0, 'January and July cannot both be in DST'); - } else if (janIsDst) { - assert.ok(jan1.isDST(), 'January 1 is DST'); - assert.ok(!jul1.isDST(), 'July 1 is not DST'); - } else if (julIsDst) { - assert.ok(!jan1.isDST(), 'January 1 is not DST'); - assert.ok(jul1.isDST(), 'July 1 is DST'); - } else { - assert.ok(!jan1.isDST(), 'January 1 is not DST'); - assert.ok(!jul1.isDST(), 'July 1 is not DST'); - } - }); - - test('unix timestamp', function (assert) { - var m = moment('1234567890.123', 'X'); - assert.equal(m.format('X'), '1234567890', 'unix timestamp without milliseconds'); - assert.equal(m.format('X.S'), '1234567890.1', 'unix timestamp with deciseconds'); - assert.equal(m.format('X.SS'), '1234567890.12', 'unix timestamp with centiseconds'); - assert.equal(m.format('X.SSS'), '1234567890.123', 'unix timestamp with milliseconds'); - - m = moment(1234567890.123, 'X'); - assert.equal(m.format('X'), '1234567890', 'unix timestamp as integer'); - }); - - test('unix offset milliseconds', function (assert) { - var m = moment('1234567890123', 'x'); - assert.equal(m.format('x'), '1234567890123', 'unix offset in milliseconds'); - - m = moment(1234567890123, 'x'); - assert.equal(m.format('x'), '1234567890123', 'unix offset in milliseconds as integer'); - }); - - test('utcOffset sanity checks', function (assert) { - assert.equal(moment().utcOffset() % 15, 0, - 'utc offset should be a multiple of 15 (was ' + moment().utcOffset() + ')'); - - assert.equal(moment().utcOffset(), -(new Date()).getTimezoneOffset(), - 'utcOffset should return the opposite of getTimezoneOffset'); - }); - - test('default format', function (assert) { - var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\d[\+\-]\d\d:\d\d/; - assert.ok(isoRegex.exec(moment().format()), 'default format (' + moment().format() + ') should match ISO'); - }); - - test('default UTC format', function (assert) { - var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\dZ/; - assert.ok(isoRegex.exec(moment.utc().format()), 'default UTC format (' + moment.utc().format() + ') should match ISO'); - }); - - test('toJSON', function (assert) { - var supportsJson = typeof JSON !== 'undefined' && JSON.stringify && JSON.stringify.call, - date = moment('2012-10-09T21:30:40.678+0100'); - - assert.equal(date.toJSON(), '2012-10-09T20:30:40.678Z', 'should output ISO8601 on moment.fn.toJSON'); - - if (supportsJson) { - assert.equal(JSON.stringify({ - date : date - }), '{"date":"2012-10-09T20:30:40.678Z"}', 'should output ISO8601 on JSON.stringify'); - } - }); - - test('toISOString', function (assert) { - var date = moment.utc('2012-10-09T20:30:40.678'); - - assert.equal(date.toISOString(), '2012-10-09T20:30:40.678Z', 'should output ISO8601 on moment.fn.toISOString'); - - // big years - date = moment.utc('+020123-10-09T20:30:40.678'); - assert.equal(date.toISOString(), '+020123-10-09T20:30:40.678Z', 'ISO8601 format on big positive year'); - // negative years - date = moment.utc('-000001-10-09T20:30:40.678'); - assert.equal(date.toISOString(), '-000001-10-09T20:30:40.678Z', 'ISO8601 format on negative year'); - // big negative years - date = moment.utc('-020123-10-09T20:30:40.678'); - assert.equal(date.toISOString(), '-020123-10-09T20:30:40.678Z', 'ISO8601 format on big negative year'); - - //invalid dates - date = moment.utc('2017-12-32'); - assert.equal(date.toISOString(), null, 'An invalid date to iso string is null'); - }); - - test('toISOString without UTC conversion', function (assert) { - var date = moment.utc('2016-12-31T19:53:45.678').utcOffset('+05:30'); - - assert.equal(date.toISOString(true), '2017-01-01T01:23:45.678+05:30', 'should output ISO8601 on moment.fn.toISOString'); - - // big years - date = moment.utc('+020122-12-31T19:53:45.678').utcOffset('+05:30'); - assert.equal(date.toISOString(true), '+020123-01-01T01:23:45.678+05:30', 'ISO8601 format on big positive year'); - // negative years - date = moment.utc('-000002-12-31T19:53:45.678').utcOffset('+05:30'); - assert.equal(date.toISOString(true), '-000001-01-01T01:23:45.678+05:30', 'ISO8601 format on negative year'); - // big negative years - date = moment.utc('-020124-12-31T19:53:45.678').utcOffset('+05:30'); - assert.equal(date.toISOString(true), '-020123-01-01T01:23:45.678+05:30', 'ISO8601 format on big negative year'); - - //invalid dates - date = moment.utc('2017-12-32').utcOffset('+05:30'); - assert.equal(date.toISOString(true), null, 'An invalid date to iso string is null'); - }); - - // See https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects - test('inspect', function (assert) { - function roundtrip(m) { - /*jshint evil:true */ - return (new Function('moment', 'return ' + m.inspect()))(moment); - } - function testInspect(date, string) { - var inspected = date.inspect(); - assert.equal(inspected, string); - assert.ok(date.isSame(roundtrip(date)), 'Tried to parse ' + inspected); - } - - testInspect( - moment('2012-10-09T20:30:40.678'), - 'moment("2012-10-09T20:30:40.678")' - ); - testInspect( - moment('+020123-10-09T20:30:40.678'), - 'moment("+020123-10-09T20:30:40.678")' - ); - testInspect( - moment.utc('2012-10-09T20:30:40.678'), - 'moment.utc("2012-10-09T20:30:40.678+00:00")' - ); - testInspect( - moment.utc('+020123-10-09T20:30:40.678'), - 'moment.utc("+020123-10-09T20:30:40.678+00:00")' - ); - testInspect( - moment.utc('+020123-10-09T20:30:40.678+01:00'), - 'moment.utc("+020123-10-09T19:30:40.678+00:00")' - ); - testInspect( - moment.parseZone('2016-06-11T17:30:40.678+0430'), - 'moment.parseZone("2016-06-11T17:30:40.678+04:30")' - ); - testInspect( - moment.parseZone('+112016-06-11T17:30:40.678+0430'), - 'moment.parseZone("+112016-06-11T17:30:40.678+04:30")' - ); - - assert.equal( - moment(new Date('nope')).inspect(), - 'moment.invalid(/* Invalid Date */)' - ); - assert.equal( - moment('blah', 'YYYY').inspect(), - 'moment.invalid(/* blah */)' - ); - }); - - test('long years', function (assert) { - assert.equal(moment.utc().year(2).format('YYYYYY'), '+000002', 'small year with YYYYYY'); - assert.equal(moment.utc().year(2012).format('YYYYYY'), '+002012', 'regular year with YYYYYY'); - assert.equal(moment.utc().year(20123).format('YYYYYY'), '+020123', 'big year with YYYYYY'); - - assert.equal(moment.utc().year(-1).format('YYYYYY'), '-000001', 'small negative year with YYYYYY'); - assert.equal(moment.utc().year(-2012).format('YYYYYY'), '-002012', 'negative year with YYYYYY'); - assert.equal(moment.utc().year(-20123).format('YYYYYY'), '-020123', 'big negative year with YYYYYY'); - }); - - test('toISOString() when 0 year', function (assert) { - // https://github.com/moment/moment/issues/3765 - var date = moment('0000-01-01T21:00:00.000Z'); - assert.equal(date.toISOString(), '0000-01-01T21:00:00.000Z'); - assert.equal(date.toDate().toISOString(), '0000-01-01T21:00:00.000Z'); - }); - - test('iso week formats', function (assert) { - // https://en.wikipedia.org/wiki/ISO_week_date - var cases = { - '2005-01-02': '2004-53', - '2005-12-31': '2005-52', - '2007-01-01': '2007-01', - '2007-12-30': '2007-52', - '2007-12-31': '2008-01', - '2008-01-01': '2008-01', - '2008-12-28': '2008-52', - '2008-12-29': '2009-01', - '2008-12-30': '2009-01', - '2008-12-31': '2009-01', - '2009-01-01': '2009-01', - '2009-12-31': '2009-53', - '2010-01-01': '2009-53', - '2010-01-02': '2009-53', - '2010-01-03': '2009-53', - '404-12-31': '0404-53', - '405-12-31': '0405-52' - }, i, isoWeek, formatted2, formatted1; - - for (i in cases) { - isoWeek = cases[i].split('-').pop(); - formatted2 = moment(i, 'YYYY-MM-DD').format('WW'); - assert.equal(isoWeek, formatted2, i + ': WW should be ' + isoWeek + ', but ' + formatted2); - isoWeek = isoWeek.replace(/^0+/, ''); - formatted1 = moment(i, 'YYYY-MM-DD').format('W'); - assert.equal(isoWeek, formatted1, i + ': W should be ' + isoWeek + ', but ' + formatted1); - } - }); - - test('iso week year formats', function (assert) { - // https://en.wikipedia.org/wiki/ISO_week_date - var cases = { - '2005-01-02': '2004-53', - '2005-12-31': '2005-52', - '2007-01-01': '2007-01', - '2007-12-30': '2007-52', - '2007-12-31': '2008-01', - '2008-01-01': '2008-01', - '2008-12-28': '2008-52', - '2008-12-29': '2009-01', - '2008-12-30': '2009-01', - '2008-12-31': '2009-01', - '2009-01-01': '2009-01', - '2009-12-31': '2009-53', - '2010-01-01': '2009-53', - '2010-01-02': '2009-53', - '2010-01-03': '2009-53', - '404-12-31': '0404-53', - '405-12-31': '0405-52' - }, i, isoWeekYear, formatted5, formatted4, formatted2; - - for (i in cases) { - isoWeekYear = cases[i].split('-')[0]; - formatted5 = moment(i, 'YYYY-MM-DD').format('GGGGG'); - assert.equal('0' + isoWeekYear, formatted5, i + ': GGGGG should be ' + isoWeekYear + ', but ' + formatted5); - formatted4 = moment(i, 'YYYY-MM-DD').format('GGGG'); - assert.equal(isoWeekYear, formatted4, i + ': GGGG should be ' + isoWeekYear + ', but ' + formatted4); - formatted2 = moment(i, 'YYYY-MM-DD').format('GG'); - assert.equal(isoWeekYear.slice(2, 4), formatted2, i + ': GG should be ' + isoWeekYear + ', but ' + formatted2); - } - }); - - test('week year formats', function (assert) { - // https://en.wikipedia.org/wiki/ISO_week_date - var cases = { - '2005-01-02': '2004-53', - '2005-12-31': '2005-52', - '2007-01-01': '2007-01', - '2007-12-30': '2007-52', - '2007-12-31': '2008-01', - '2008-01-01': '2008-01', - '2008-12-28': '2008-52', - '2008-12-29': '2009-01', - '2008-12-30': '2009-01', - '2008-12-31': '2009-01', - '2009-01-01': '2009-01', - '2009-12-31': '2009-53', - '2010-01-01': '2009-53', - '2010-01-02': '2009-53', - '2010-01-03': '2009-53', - '404-12-31': '0404-53', - '405-12-31': '0405-52' - }, i, isoWeekYear, formatted5, formatted4, formatted2; - - moment.defineLocale('dow:1,doy:4', {week: {dow: 1, doy: 4}}); - - for (i in cases) { - isoWeekYear = cases[i].split('-')[0]; - formatted5 = moment(i, 'YYYY-MM-DD').format('ggggg'); - assert.equal('0' + isoWeekYear, formatted5, i + ': ggggg should be ' + isoWeekYear + ', but ' + formatted5); - formatted4 = moment(i, 'YYYY-MM-DD').format('gggg'); - assert.equal(isoWeekYear, formatted4, i + ': gggg should be ' + isoWeekYear + ', but ' + formatted4); - formatted2 = moment(i, 'YYYY-MM-DD').format('gg'); - assert.equal(isoWeekYear.slice(2, 4), formatted2, i + ': gg should be ' + isoWeekYear + ', but ' + formatted2); - } - moment.defineLocale('dow:1,doy:4', null); - }); - - test('iso weekday formats', function (assert) { - assert.equal(moment([1985, 1, 4]).format('E'), '1', 'Feb 4 1985 is Monday -- 1st day'); - assert.equal(moment([2029, 8, 18]).format('E'), '2', 'Sep 18 2029 is Tuesday -- 2nd day'); - assert.equal(moment([2013, 3, 24]).format('E'), '3', 'Apr 24 2013 is Wednesday -- 3rd day'); - assert.equal(moment([2015, 2, 5]).format('E'), '4', 'Mar 5 2015 is Thursday -- 4th day'); - assert.equal(moment([1970, 0, 2]).format('E'), '5', 'Jan 2 1970 is Friday -- 5th day'); - assert.equal(moment([2001, 4, 12]).format('E'), '6', 'May 12 2001 is Saturday -- 6th day'); - assert.equal(moment([2000, 0, 2]).format('E'), '7', 'Jan 2 2000 is Sunday -- 7th day'); - }); - - test('weekday formats', function (assert) { - moment.defineLocale('dow: 3,doy: 5', {week: {dow: 3, doy: 5}}); - assert.equal(moment([1985, 1, 6]).format('e'), '0', 'Feb 6 1985 is Wednesday -- 0th day'); - assert.equal(moment([2029, 8, 20]).format('e'), '1', 'Sep 20 2029 is Thursday -- 1st day'); - assert.equal(moment([2013, 3, 26]).format('e'), '2', 'Apr 26 2013 is Friday -- 2nd day'); - assert.equal(moment([2015, 2, 7]).format('e'), '3', 'Mar 7 2015 is Saturday -- 3nd day'); - assert.equal(moment([1970, 0, 4]).format('e'), '4', 'Jan 4 1970 is Sunday -- 4th day'); - assert.equal(moment([2001, 4, 14]).format('e'), '5', 'May 14 2001 is Monday -- 5th day'); - assert.equal(moment([2000, 0, 4]).format('e'), '6', 'Jan 4 2000 is Tuesday -- 6th day'); - moment.defineLocale('dow: 3,doy: 5', null); - }); - - test('toString is just human readable format', function (assert) { - var b = moment(new Date(2009, 1, 5, 15, 25, 50, 125)); - assert.equal(b.toString(), b.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ')); - }); - - test('toJSON skips postformat', function (assert) { - moment.defineLocale('postformat', { - postformat: function (s) { - s.replace(/./g, 'X'); - } - }); - assert.equal(moment.utc([2000, 0, 1]).toJSON(), '2000-01-01T00:00:00.000Z', 'toJSON doesn\'t postformat'); - moment.defineLocale('postformat', null); - }); - - test('calendar day timezone', function (assert) { - moment.locale('en'); - var zones = [60, -60, 90, -90, 360, -360, 720, -720], - b = moment().utc().startOf('day').subtract({m : 1}), - c = moment().local().startOf('day').subtract({m : 1}), - d = moment().local().startOf('day').subtract({d : 2}), - i, z, a; - - for (i = 0; i < zones.length; ++i) { - z = zones[i]; - a = moment().utcOffset(z).startOf('day').subtract({m: 1}); - assert.equal(moment(a).utcOffset(z).calendar(), 'Yesterday at 11:59 PM', - 'Yesterday at 11:59 PM, not Today, or the wrong time, tz = ' + z); - } - - assert.equal(moment(b).utc().calendar(), 'Yesterday at 11:59 PM', 'Yesterday at 11:59 PM, not Today, or the wrong time'); - assert.equal(moment(c).local().calendar(), 'Yesterday at 11:59 PM', 'Yesterday at 11:59 PM, not Today, or the wrong time'); - assert.equal(moment(c).local().calendar(d), 'Tomorrow at 11:59 PM', 'Tomorrow at 11:59 PM, not Yesterday, or the wrong time'); - }); - - test('calendar with custom formats', function (assert) { - assert.equal(moment().calendar(null, {sameDay: '[Today]'}), 'Today', 'Today'); - assert.equal(moment().add(1, 'days').calendar(null, {nextDay: '[Tomorrow]'}), 'Tomorrow', 'Tomorrow'); - assert.equal(moment([1985, 1, 4]).calendar(null, {sameElse: 'YYYY-MM-DD'}), '1985-02-04', 'Else'); - }); - - test('invalid', function (assert) { - assert.equal(moment.invalid().format(), 'Invalid date'); - assert.equal(moment.invalid().format('YYYY-MM-DD'), 'Invalid date'); - }); - - test('quarter formats', function (assert) { - assert.equal(moment([1985, 1, 4]).format('Q'), '1', 'Feb 4 1985 is Q1'); - assert.equal(moment([2029, 8, 18]).format('Q'), '3', 'Sep 18 2029 is Q3'); - assert.equal(moment([2013, 3, 24]).format('Q'), '2', 'Apr 24 2013 is Q2'); - assert.equal(moment([2015, 2, 5]).format('Q'), '1', 'Mar 5 2015 is Q1'); - assert.equal(moment([1970, 0, 2]).format('Q'), '1', 'Jan 2 1970 is Q1'); - assert.equal(moment([2001, 11, 12]).format('Q'), '4', 'Dec 12 2001 is Q4'); - assert.equal(moment([2000, 0, 2]).format('[Q]Q-YYYY'), 'Q1-2000', 'Jan 2 2000 is Q1'); - }); - - test('quarter ordinal formats', function (assert) { - assert.equal(moment([1985, 1, 4]).format('Qo'), '1st', 'Feb 4 1985 is 1st quarter'); - assert.equal(moment([2029, 8, 18]).format('Qo'), '3rd', 'Sep 18 2029 is 3rd quarter'); - assert.equal(moment([2013, 3, 24]).format('Qo'), '2nd', 'Apr 24 2013 is 2nd quarter'); - assert.equal(moment([2015, 2, 5]).format('Qo'), '1st', 'Mar 5 2015 is 1st quarter'); - assert.equal(moment([1970, 0, 2]).format('Qo'), '1st', 'Jan 2 1970 is 1st quarter'); - assert.equal(moment([2001, 11, 12]).format('Qo'), '4th', 'Dec 12 2001 is 4th quarter'); - assert.equal(moment([2000, 0, 2]).format('Qo [quarter] YYYY'), '1st quarter 2000', 'Jan 2 2000 is 1st quarter'); - }); - - // test('full expanded format is returned from abbreviated formats', function (assert) { - // function objectKeys(obj) { - // if (Object.keys) { - // return Object.keys(obj); - // } else { - // // IE8 - // var res = [], i; - // for (i in obj) { - // if (obj.hasOwnProperty(i)) { - // res.push(i); - // } - // } - // return res; - // } - // } - - // var locales = - // 'ar-sa ar-tn ar az be bg bn bo br bs ca cs cv cy da de-at de dv el ' + - // 'en-au en-ca en-gb en-ie en-nz eo es et eu fa fi fo fr-ca fr-ch fr fy ' + - // 'gd gl he hi hr hu hy-am id is it ja jv ka kk km ko lb lo lt lv me mk ml ' + - // 'mr ms-my ms my nb ne nl nn pl pt-br pt ro ru se si sk sl sq sr-cyrl ' + - // 'sr sv sw ta te th tl-ph tlh tr tzl tzm-latn tzm uk uz vi zh-cn zh-tw'; - - // each(locales.split(' '), function (locale) { - // var data, tokens; - // data = moment().locale(locale).localeData()._longDateFormat; - // tokens = objectKeys(data); - // each(tokens, function (token) { - // // Check each format string to make sure it does not contain any - // // tokens that need to be expanded. - // each(tokens, function (i) { - // // strip escaped sequences - // var format = data[i].replace(/(\[[^\]]*\])/g, ''); - // assert.equal(false, !!~format.indexOf(token), 'locale ' + locale + ' contains ' + token + ' in ' + i); - // }); - // }); - // }); - // }); - - test('milliseconds', function (assert) { - var m = moment('123', 'SSS'); - - assert.equal(m.format('S'), '1'); - assert.equal(m.format('SS'), '12'); - assert.equal(m.format('SSS'), '123'); - assert.equal(m.format('SSSS'), '1230'); - assert.equal(m.format('SSSSS'), '12300'); - assert.equal(m.format('SSSSSS'), '123000'); - assert.equal(m.format('SSSSSSS'), '1230000'); - assert.equal(m.format('SSSSSSSS'), '12300000'); - assert.equal(m.format('SSSSSSSSS'), '123000000'); - }); - - test('hmm and hmmss', function (assert) { - assert.equal(moment('12:34:56', 'HH:mm:ss').format('hmm'), '1234'); - assert.equal(moment('01:34:56', 'HH:mm:ss').format('hmm'), '134'); - assert.equal(moment('13:34:56', 'HH:mm:ss').format('hmm'), '134'); - - assert.equal(moment('12:34:56', 'HH:mm:ss').format('hmmss'), '123456'); - assert.equal(moment('01:34:56', 'HH:mm:ss').format('hmmss'), '13456'); - assert.equal(moment('13:34:56', 'HH:mm:ss').format('hmmss'), '13456'); - }); - - test('Hmm and Hmmss', function (assert) { - assert.equal(moment('12:34:56', 'HH:mm:ss').format('Hmm'), '1234'); - assert.equal(moment('01:34:56', 'HH:mm:ss').format('Hmm'), '134'); - assert.equal(moment('13:34:56', 'HH:mm:ss').format('Hmm'), '1334'); - - assert.equal(moment('12:34:56', 'HH:mm:ss').format('Hmmss'), '123456'); - assert.equal(moment('01:34:56', 'HH:mm:ss').format('Hmmss'), '13456'); - assert.equal(moment('08:34:56', 'HH:mm:ss').format('Hmmss'), '83456'); - assert.equal(moment('18:34:56', 'HH:mm:ss').format('Hmmss'), '183456'); - }); - - test('k and kk', function (assert) { - assert.equal(moment('01:23:45', 'HH:mm:ss').format('k'), '1'); - assert.equal(moment('12:34:56', 'HH:mm:ss').format('k'), '12'); - assert.equal(moment('01:23:45', 'HH:mm:ss').format('kk'), '01'); - assert.equal(moment('12:34:56', 'HH:mm:ss').format('kk'), '12'); - assert.equal(moment('00:34:56', 'HH:mm:ss').format('kk'), '24'); - assert.equal(moment('00:00:00', 'HH:mm:ss').format('kk'), '24'); - }); - - test('Y token', function (assert) { - assert.equal(moment('2010-01-01', 'YYYY-MM-DD', true).format('Y'), '2010', 'format 2010 with Y'); - assert.equal(moment('-123-01-01', 'Y-MM-DD', true).format('Y'), '-123', 'format -123 with Y'); - assert.equal(moment('12345-01-01', 'Y-MM-DD', true).format('Y'), '+12345', 'format 12345 with Y'); - assert.equal(moment('0-01-01', 'Y-MM-DD', true).format('Y'), '0', 'format 0 with Y'); - assert.equal(moment('1-01-01', 'Y-MM-DD', true).format('Y'), '1', 'format 1 with Y'); - assert.equal(moment('9999-01-01', 'Y-MM-DD', true).format('Y'), '9999', 'format 9999 with Y'); - assert.equal(moment('10000-01-01', 'Y-MM-DD', true).format('Y'), '+10000', 'format 10000 with Y'); - }); - - test('HTML5_FMT.WEEK', function (assert) { - assert.equal(moment('2004-W01', moment.HTML5_FMT.WEEK).format(moment.HTML5_FMT.WEEK), '2004-W01', 'issue #4698 regression'); - assert.equal(moment('2019-W01').format(moment.HTML5_FMT.WEEK), '2019-W01', 'issue #4833 regression'); - }); - -}))); ;(function (global, factory) { @@ -70247,27 +119777,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -70277,8 +119812,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -70291,7 +119828,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -70300,557 +119840,7422 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('from_to'); + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } - test('from', function (assert) { - var start = moment(); - moment.locale('en'); - assert.equal(start.from(start.clone().add(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago'); - assert.equal(start.from(start.clone().add(1, 'minute')), 'a minute ago', '1 minute = a minute ago'); - assert.equal(start.from(start.clone().add(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago'); + function addUnitAlias(unit, shorthand) { + var lowerCase = unit.toLowerCase(); + } - assert.equal(start.from(start.clone().subtract(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds'); - assert.equal(start.from(start.clone().subtract(1, 'minute')), 'in a minute', '1 minute = in a minute'); - assert.equal(start.from(start.clone().subtract(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes'); - }); + var hookCallback; - test('from with absolute duration', function (assert) { - var start = moment(); - moment.locale('en'); - assert.equal(start.from(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); - assert.equal(start.from(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute'); - assert.equal(start.from(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + function hooks() { + return hookCallback.apply(null, arguments); + } - assert.equal(start.from(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); - assert.equal(start.from(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute'); - assert.equal(start.from(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); - }); + function isFunction(input) { + return ( + (typeof Function !== 'undefined' && input instanceof Function) || + Object.prototype.toString.call(input) === '[object Function]' + ); + } - test('to', function (assert) { - var start = moment(); - moment.locale('en'); - assert.equal(start.to(start.clone().subtract(5, 'seconds')), 'a few seconds ago', '5 seconds = a few seconds ago'); - assert.equal(start.to(start.clone().subtract(1, 'minute')), 'a minute ago', '1 minute = a minute ago'); - assert.equal(start.to(start.clone().subtract(5, 'minutes')), '5 minutes ago', '5 minutes = 5 minutes ago'); + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - assert.equal(start.to(start.clone().add(5, 'seconds')), 'in a few seconds', '5 seconds = in a few seconds'); - assert.equal(start.to(start.clone().add(1, 'minute')), 'in a minute', '1 minute = in a minute'); - assert.equal(start.to(start.clone().add(5, 'minutes')), 'in 5 minutes', '5 minutes = in 5 minutes'); - }); + function absFloor(number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } - test('to with absolute duration', function (assert) { - var start = moment(); - moment.locale('en'); - assert.equal(start.to(start.clone().add(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); - assert.equal(start.to(start.clone().add(1, 'minute'), true), 'a minute', '1 minute = a minute'); - assert.equal(start.to(start.clone().add(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - assert.equal(start.to(start.clone().subtract(5, 'seconds'), true), 'a few seconds', '5 seconds = a few seconds'); - assert.equal(start.to(start.clone().subtract(1, 'minute'), true), 'a minute', '1 minute = a minute'); - assert.equal(start.to(start.clone().subtract(5, 'minutes'), true), '5 minutes', '5 minutes = 5 minutes'); - }); + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } -}))); + return value; + } + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return ( + (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + + absNumber + ); + } -;(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'; + var formatTokenFunctions = {}; - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken(token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal( + func.apply(this, arguments), + token + ); + }; } } - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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; - }; - } + var match2 = /\d\d/, // 00 - 99 + match4 = /\d{4}/, // 0000 - 9999 + match6 = /[+-]?\d{6}/, // -999999 - 999999 + match1to2 = /\d\d?/, // 0 - 99 + match3to4 = /\d\d\d\d?/, // 999 - 9999 + match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999 + match1to4 = /\d{1,4}/, // 0 - 9999 + match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 + matchSigned = /[+-]?\d+/, // -inf - inf + regexes; - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + regexes = {}; - 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 addRegexToken(token, regex, strictRegex) { + regexes[token] = isFunction(regex) + ? regex + : function (isStrict, localeData) { + return isStrict && strictRegex ? strictRegex : regex; + }; } - function matchedDeprecation(name, msg, deprecations) { - if (deprecations == null) { - return -1; + function isNumber(input) { + return ( + typeof input === 'number' || + Object.prototype.toString.call(input) === '[object Number]' + ); + } + + var tokens = {}; + + function addParseToken(token, callback) { + var i, + func = callback; + if (typeof token === 'string') { + token = [token]; } - 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; - } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; } - return -1; } - /*global QUnit:false*/ + function addWeekParseToken(token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } - var test = QUnit.test; + var YEAR = 0, + MONTH = 1, + HOUR = 3, + MINUTE = 4, + SECOND = 5; - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); + function mod(n, x) { + return ((n % x) + x) % x; } - module$1('getters and setters'); + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } - test('getters', function (assert) { - var a = moment([2011, 9, 12, 6, 7, 8, 9]); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); - }); + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - test('getters programmatic', function (assert) { - var a = moment([2011, 9, 12, 6, 7, 8, 9]); - assert.equal(a.get('year'), 2011, 'year'); - assert.equal(a.get('month'), 9, 'month'); - assert.equal(a.get('date'), 12, 'date'); - assert.equal(a.get('day'), 3, 'day'); - assert.equal(a.get('hour'), 6, 'hour'); - assert.equal(a.get('minute'), 7, 'minute'); - assert.equal(a.get('second'), 8, 'second'); - assert.equal(a.get('milliseconds'), 9, 'milliseconds'); + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - //actual getters tested elsewhere - assert.equal(a.get('weekday'), a.weekday(), 'weekday'); - assert.equal(a.get('isoWeekday'), a.isoWeekday(), 'isoWeekday'); - assert.equal(a.get('week'), a.week(), 'week'); - assert.equal(a.get('isoWeek'), a.isoWeek(), 'isoWeek'); - assert.equal(a.get('dayOfYear'), a.dayOfYear(), 'dayOfYear'); + return a; + } - //getter no longer sets values when passed an object - assert.equal(moment([2016,0,1]).get({year:2015}).year(), 2016, 'getter no longer sets values when passed an object'); - }); + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty: false, + unusedTokens: [], + unusedInput: [], + overflow: -2, + charsLeftOver: 0, + nullInput: false, + invalidEra: null, + invalidMonth: null, + invalidFormat: false, + userInvalidated: false, + iso: false, + parsedDateParts: [], + era: null, + meridiem: null, + rfc2822: false, + weekdayMismatch: false, + }; + } - test('setters plural', function (assert) { - var a = moment(); - test.expectedDeprecations('years accessor', 'months accessor', 'dates accessor'); + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } - a.years(2011); - a.months(9); - a.dates(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(9); - assert.equal(a.years(), 2011, 'years'); - assert.equal(a.months(), 9, 'months'); - assert.equal(a.dates(), 12, 'dates'); - assert.equal(a.days(), 3, 'days'); - assert.equal(a.hours(), 6, 'hours'); - assert.equal(a.minutes(), 7, 'minutes'); - assert.equal(a.seconds(), 8, 'seconds'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + var momentProperties = (hooks.momentProperties = []); + + function warn(msg) { + if ( + hooks.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && + console.warn + ) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = [], + arg, + i, + key; + for (i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (key in arguments[0]) { + if (hasOwnProp(arguments[0], key)) { + arg += key + ': ' + arguments[0][key] + ', '; + } + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn( + msg + + '\nArguments: ' + + Array.prototype.slice.call(args).join('') + + '\n' + + new Error().stack + ); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + hooks.suppressDeprecationWarnings = false; + hooks.deprecationHandler = null; + + // FORMATTING + + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? zeroFill(y, 4) : '+' + y; }); - test('setters singular', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hour(6); - a.minute(7); - a.second(8); - a.millisecond(9); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hour(), 6, 'hour'); - assert.equal(a.minute(), 7, 'minute'); - assert.equal(a.second(), 8, 'second'); - assert.equal(a.millisecond(), 9, 'milliseconds'); + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; }); - test('setters', function (assert) { - var a = moment(); - a.year(2011); - a.month(9); - a.date(12); - a.hours(6); - a.minutes(7); - a.seconds(8); - a.milliseconds(9); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - // Test month() behavior. See https://github.com/timrwood/moment/pull/822 - a = moment('20130531', 'YYYYMMDD'); - a.month(3); - assert.equal(a.month(), 3, 'month edge case'); + // 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); }); - test('setters should handle garbage input', function (assert) { - var a = moment(); - a.set('year', 2011); - a.set('month', 9); - a.set('date', 12); - a.set('hours', 6); - a.set('minutes', 7); - a.set('seconds', 8); - a.set('milliseconds', 9); + // HOOKS - a.year(undefined); - a.month('foo'); - a.date(null); - a.day({a:2,b:3}); - a.hours('[1]'); - a.minutes(undefined); - a.seconds(null); - a.milliseconds(NaN); + hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - assert.equal(a.year(), 2011, 'year - provided undefined'); - assert.equal(a.month(), 9, 'month - provided null'); - assert.equal(a.date(), 12, 'date - provided [1]'); - assert.equal(a.day(), 3, 'day - provided Infinity'); - assert.equal(a.hours(), 6, 'hour - provided new Date'); - assert.equal(a.minutes(), 7, 'minute - provided {a:1,b:2}'); - assert.equal(a.seconds(), 8, 'second - provided foo'); - assert.equal(a.milliseconds(), 9, 'milliseconds - provided Infinity'); + // FORMATTING + + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + + // ALIASES + + addUnitAlias('week'); + addUnitAlias('isoWeek'); + + // PARSING + + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); + + addWeekParseToken(['w', 'ww', 'W', 'WW'], function ( + input, + week, + config, + token + ) { + week[token.substr(0, 1)] = toInt(input); }); - test('setter programmatic', function (assert) { - var a = moment(); - a.set('year', 2011); - a.set('month', 9); - a.set('date', 12); - a.set('hours', 6); - a.set('minutes', 7); - a.set('seconds', 8); - a.set('milliseconds', 9); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); + // FORMATTING - // Test month() behavior. See https://github.com/timrwood/moment/pull/822 - a = moment('20130531', 'YYYYMMDD'); - a.month(3); - assert.equal(a.month(), 3, 'month edge case'); + addFormatToken('d', 0, 'do', 'day'); + + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); }); - test('setters programatic with weeks', function (assert) { - var a = moment(); - a.set('weekYear', 2001); - a.set('week', 49); - a.set('day', 4); + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); - assert.equal(a.weekYear(), 2001, 'weekYear'); - assert.equal(a.week(), 49, 'week'); - assert.equal(a.day(), 4, 'day'); + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); - a.set('weekday', 1); - assert.equal(a.weekday(), 1, 'weekday'); + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); + + // ALIASES + + addUnitAlias('day'); + addUnitAlias('weekday'); + addUnitAlias('isoWeekday'); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); }); - test('setters programatic with weeks ISO', function (assert) { - var a = moment(); - a.set('isoWeekYear', 2001); - a.set('isoWeek', 49); - a.set('isoWeekday', 4); + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } + }); - assert.equal(a.isoWeekYear(), 2001, 'isoWeekYear'); - assert.equal(a.isoWeek(), 49, 'isoWeek'); - assert.equal(a.isoWeekday(), 4, 'isoWeekday'); + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); }); - test('setters strings', function (assert) { - var a = moment([2012]).locale('en'); - assert.equal(a.clone().day(0).day('Wednesday').day(), 3, 'day full name'); - assert.equal(a.clone().day(0).day('Wed').day(), 3, 'day short name'); - assert.equal(a.clone().day(0).day('We').day(), 3, 'day minimal name'); - assert.equal(a.clone().day(0).day('invalid').day(), 0, 'invalid day name'); - assert.equal(a.clone().month(0).month('April').month(), 3, 'month full name'); - assert.equal(a.clone().month(0).month('Apr').month(), 3, 'month short name'); - assert.equal(a.clone().month(0).month('invalid').month(), 0, 'invalid month name'); + // FORMATTING + + function hFormat() { + return this.hours() % 12 || 12; + } + + function kFormat() { + return this.hours() || 24; + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); + + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); }); - test('setters - falsey values', function (assert) { - var a = moment(); - // ensure minutes wasn't coincidentally 0 already - a.minutes(1); - a.minutes(0); - assert.equal(a.minutes(), 0, 'falsey value'); + addFormatToken('hmmss', 0, 0, function () { + return ( + '' + + hFormat.apply(this) + + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2) + ); }); - test('chaining setters', function (assert) { - var a = moment(); - a.year(2011) - .month(9) - .date(12) - .hours(6) - .minutes(7) - .seconds(8); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); }); - test('setter with multiple unit values', function (assert) { - var a = moment(); - a.set({ - year: 2011, - month: 9, - date: 12, - hours: 6, - minutes: 7, - seconds: 8, - milliseconds: 9 + addFormatToken('Hmmss', 0, 0, function () { + return ( + '' + + this.hours() + + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2) + ); + }); + + function meridiem(token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem( + this.hours(), + this.minutes(), + lowercase + ); }); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); + } - var c = moment([2016,0,1]); - assert.equal(c.set({weekYear: 2016}).weekYear(), 2016, 'week year correctly sets with object syntax'); - assert.equal(c.set({quarter: 3}).quarter(), 3, 'quarter sets correctly with object syntax'); - }); + meridiem('a', true); + meridiem('A', false); - test('day setter', function (assert) { - var a = moment([2011, 0, 15]); - assert.equal(moment(a).day(0).date(), 9, 'set from saturday to sunday'); - assert.equal(moment(a).day(6).date(), 15, 'set from saturday to saturday'); - assert.equal(moment(a).day(3).date(), 12, 'set from saturday to wednesday'); + // ALIASES - a = moment([2011, 0, 9]); - assert.equal(moment(a).day(0).date(), 9, 'set from sunday to sunday'); - assert.equal(moment(a).day(6).date(), 15, 'set from sunday to saturday'); - assert.equal(moment(a).day(3).date(), 12, 'set from sunday to wednesday'); + addUnitAlias('hour'); - a = moment([2011, 0, 12]); - assert.equal(moment(a).day(0).date(), 9, 'set from wednesday to sunday'); - assert.equal(moment(a).day(6).date(), 15, 'set from wednesday to saturday'); - assert.equal(moment(a).day(3).date(), 12, 'set from wednesday to wednesday'); + // PARSING + + function matchMeridiem(isStrict, locale) { + return locale._meridiemParse; + } - assert.equal(moment(a).day(-7).date(), 2, 'set from wednesday to last sunday'); - assert.equal(moment(a).day(-1).date(), 8, 'set from wednesday to last saturday'); - assert.equal(moment(a).day(-4).date(), 5, 'set from wednesday to last wednesday'); + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('k', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + addRegexToken('kk', match1to2, match2); - assert.equal(moment(a).day(7).date(), 16, 'set from wednesday to next sunday'); - assert.equal(moment(a).day(13).date(), 22, 'set from wednesday to next saturday'); - assert.equal(moment(a).day(10).date(), 19, 'set from wednesday to next wednesday'); + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); - assert.equal(moment(a).day(14).date(), 23, 'set from wednesday to second next sunday'); - assert.equal(moment(a).day(20).date(), 29, 'set from wednesday to second next saturday'); - assert.equal(moment(a).day(17).date(), 26, 'set from wednesday to second next wednesday'); + addParseToken(['H', 'HH'], HOUR); + addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; + }); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4, + pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4, + pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); }); - test('year setter', function (assert) { - var a = moment([2015, 3, 15]); - assert.equal(moment(a).year(2016).format('YYYY-MM-DD'), '2016-04-15', 'set from 2015 to 2016'); - assert.equal(moment(a).year(2011).format('YYYY-MM-DD'), '2011-04-15', 'set from 2015 to 2011'); + hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // constant that refers to the ISO standard + hooks.ISO_8601 = function () {}; + + // constant that refers to the RFC 2822 form + hooks.RFC_2822 = function () {}; - var b = moment([2012, 1, 29]); - assert.equal(moment(b).year(2017).format('YYYY-MM-DD'), '2017-02-28', 'set from last day of february on a leap year to a non leap year'); - assert.equal(moment(b).year(2004).format('YYYY-MM-DD'), '2004-02-29', 'set from last day of february on a leap year to a leap year'); + function daysInMonth(year, month) { + if (isNaN(year) || isNaN(month)) { + return NaN; + } + var modMonth = mod(month, 12); + year += (month - modMonth) / 12; + return modMonth === 1 + ? isLeapYear(year) + ? 29 + : 28 + : 31 - ((modMonth % 7) % 2); + } + + // FORMATTING - var c = moment([2012, 9, 4]); - assert.equal(moment(c).year(2017).format('YYYY-MM-DD'), '2017-10-04', 'set from a random day on a leap year to a non leap year'); - assert.equal(moment(c).year(2004).format('YYYY-MM-DD'), '2004-10-04', 'set from a random day on a leap year to a leap year'); + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; }); - test('object set ordering', function (assert) { - var a = moment([2016,3,30]); - assert.equal(a.set({date:31, month:4}).date(), 31, 'setter order automatically arranged by size'); - var b = moment([2015,1,28]); - assert.equal(b.set({date:29, year: 2016}).format('YYYY-MM-DD'), '2016-02-29', 'year is prioritized over date'); - //check a nonexistent time in US isn't set - var c = moment([2016,2,13]); - c.set({ - hour:2, - minutes:30, - date: 14 - }); - assert.equal(c.format('YYYY-MM-DDTHH:mm'), '2016-03-14T02:30', 'setting hours, minutes date puts date first allowing time set to work'); + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); }); - test('string setters', function (assert) { - var a = moment(); - a.year('2011'); - a.month('9'); - a.date('12'); - a.hours('6'); - a.minutes('7'); - a.seconds('8'); - a.milliseconds('9'); - assert.equal(a.year(), 2011, 'year'); - assert.equal(a.month(), 9, 'month'); - assert.equal(a.date(), 12, 'date'); - assert.equal(a.day(), 3, 'day'); - assert.equal(a.hours(), 6, 'hour'); - assert.equal(a.minutes(), 7, 'minute'); - assert.equal(a.seconds(), 8, 'second'); - assert.equal(a.milliseconds(), 9, 'milliseconds'); + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); }); - test('setters across DST +1', function (assert) { - var oldUpdateOffset = moment.updateOffset, - // Based on a real story somewhere in America/Los_Angeles - dstAt = moment('2014-03-09T02:00:00-08:00').parseZone(), - m; + // ALIASES - moment.updateOffset = function (mom, keepTime) { - if (mom.isBefore(dstAt)) { - mom.utcOffset(-8, keepTime); - } else { - mom.utcOffset(-7, keepTime); - } - }; + addUnitAlias('month'); - m = moment('2014-03-15T00:00:00-07:00').parseZone(); - m.year(2013); - assert.equal(m.format(), '2013-03-15T00:00:00-08:00', 'year across +1'); + // PARSING - m = moment('2014-03-15T00:00:00-07:00').parseZone(); - m.month(0); - assert.equal(m.format(), '2014-01-15T00:00:00-08:00', 'month across +1'); + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); + }); + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); + }); - m = moment('2014-03-15T00:00:00-07:00').parseZone(); - m.date(1); - assert.equal(m.format(), '2014-03-01T00:00:00-08:00', 'date across +1'); + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); - m = moment('2014-03-09T03:05:00-07:00').parseZone(); - m.hour(0); - assert.equal(m.format(), '2014-03-09T00:05:00-08:00', 'hour across +1'); + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } + }); - moment.updateOffset = oldUpdateOffset; + module('days in month'); + + test('days in month', function (assert) { + each([31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], function (days, i) { + var firstDay = moment([2012, i]), + lastDay = moment([2012, i, days]); + assert.equal( + firstDay.daysInMonth(), + days, + firstDay.format('L') + ' should have ' + days + ' days.' + ); + assert.equal( + lastDay.daysInMonth(), + days, + lastDay.format('L') + ' should have ' + days + ' days.' + ); + }); + }); + + test('days in month leap years', function (assert) { + assert.equal( + moment([2010, 1]).daysInMonth(), + 28, + 'Feb 2010 should have 28 days' + ); + assert.equal( + moment([2100, 1]).daysInMonth(), + 28, + 'Feb 2100 should have 28 days' + ); + assert.equal( + moment([2008, 1]).daysInMonth(), + 29, + 'Feb 2008 should have 29 days' + ); + assert.equal( + moment([2000, 1]).daysInMonth(), + 29, + 'Feb 2000 should have 29 days' + ); + }); + + test('days in month with NaN inputs', function (assert) { + assert.ok(isNaN(daysInMonth(2, NaN)), 'month NaN inputs should return NaN'); + assert.ok(isNaN(daysInMonth(NaN, 0)), 'year NaN inputs should return NaN'); + assert.ok( + !moment([2010, null, null]).isValid(), + 'Invalid date because month is NaN' + ); + }); + + test('days in month with overflow', function (assert) { + assert.equal( + daysInMonth(14, 22), + daysInMonth(15, 10), + 'positive overflow by 1' + ); + assert.equal( + daysInMonth(14, 122), + daysInMonth(24, 2), + 'positive overflow by 10' + ); + assert.equal( + daysInMonth(8, -2), + daysInMonth(7, 10), + 'negative overflow by 1' + ); + assert.equal( + daysInMonth(-2380, -25), + daysInMonth(-2383, 11), + 'negative overflow by 3' + ); + }); + + test('days in month consistent with Date()', function (assert) { + var oldMethod = function (year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + }; + assert.equal( + daysInMonth(14, 22), + oldMethod(14, 22), + 'positive overflow by 1' + ); + assert.equal( + daysInMonth(14, 122), + oldMethod(14, 122), + 'positive overflow by 10' + ); + assert.equal( + daysInMonth(8, -2), + oldMethod(8, -2), + 'negative overflow by 1' + ); + assert.equal( + daysInMonth(-2380, -25), + oldMethod(-2380, -25), + 'negative overflow by 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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + module('days in year'); + + // https://github.com/moment/moment/issues/3717 + test('YYYYDDD should not parse DDD=000', function (assert) { + assert.equal(moment(7000000, moment.ISO_8601, true).isValid(), false); + assert.equal(moment('7000000', moment.ISO_8601, true).isValid(), false); + assert.equal(moment(7000000, moment.ISO_8601, false).isValid(), false); + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); + } + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + var hookCallback; + + function hooks() { + return hookCallback.apply(null, arguments); + } + + function warn(msg) { + if ( + hooks.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && + console.warn + ) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = [], + arg, + i, + key; + for (i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (key in arguments[0]) { + if (hasOwnProp(arguments[0], key)) { + arg += key + ': ' + arguments[0][key] + ', '; + } + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn( + msg + + '\nArguments: ' + + Array.prototype.slice.call(args).join('') + + '\n' + + new Error().stack + ); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + hooks.suppressDeprecationWarnings = false; + hooks.deprecationHandler = null; + + module('deprecate'); + + test('deprecate', function (assert) { + // NOTE: hooks inside deprecate.js and moment are different, so this is can + // not be test.expectedDeprecations(...) + var fn = function () {}, + deprecatedFn = deprecate('testing deprecation', fn); + deprecatedFn(); + + assert.expect(0); + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + function equal(assert, a, b, message) { + assert.ok( + Math.abs(a - b) < 0.00000001, + '(' + a + ' === ' + b + ') ' + message + ); + } + + function dstForYear(year) { + var start = moment([year]), + end = moment([year + 1]), + current = start.clone(), + last; + + while (current < end) { + last = current.clone(); + current.add(24, 'hour'); + if (last.utcOffset() !== current.utcOffset()) { + end = current.clone(); + current = last.clone(); + break; + } + } + + while (current < end) { + last = current.clone(); + current.add(1, 'hour'); + if (last.utcOffset() !== current.utcOffset()) { + return { + moment: last, + diff: -(current.utcOffset() - last.utcOffset()) / 60, + }; + } + } + } + + module('diff'); + + test('diff', function (assert) { + assert.equal(moment(1000).diff(0), 1000, '1 second - 0 = 1000'); + assert.equal(moment(1000).diff(500), 500, '1 second - 0.5 seconds = 500'); + assert.equal(moment(0).diff(1000), -1000, '0 - 1 second = -1000'); + assert.equal( + moment(new Date(1000)).diff(1000), + 0, + '1 second - 1 second = 0' + ); + var oneHourDate = new Date(2015, 5, 21), + nowDate = new Date(+oneHourDate); + oneHourDate.setHours(oneHourDate.getHours() + 1); + assert.equal( + moment(oneHourDate).diff(nowDate), + 60 * 60 * 1000, + '1 hour from now = 3600000' + ); + }); + + test('diff key after', function (assert) { + assert.equal(moment([2010]).diff([2011], 'years'), -1, 'year diff'); + assert.equal(moment([2010]).diff([2010, 2], 'months'), -2, 'month diff'); + assert.equal(moment([2010]).diff([2010, 0, 7], 'weeks'), 0, 'week diff'); + assert.equal(moment([2010]).diff([2010, 0, 8], 'weeks'), -1, 'week diff'); + assert.equal(moment([2010]).diff([2010, 0, 21], 'weeks'), -2, 'week diff'); + assert.equal(moment([2010]).diff([2010, 0, 22], 'weeks'), -3, 'week diff'); + assert.equal(moment([2010]).diff([2010, 0, 4], 'days'), -3, 'day diff'); + assert.equal( + moment([2010]).diff([2010, 0, 1, 4], 'hours'), + -4, + 'hour diff' + ); + assert.equal( + moment([2010]).diff([2010, 0, 1, 0, 5], 'minutes'), + -5, + 'minute diff' + ); + assert.equal( + moment([2010]).diff([2010, 0, 1, 0, 0, 6], 'seconds'), + -6, + 'second diff' + ); + }); + + test('diff key before', function (assert) { + assert.equal(moment([2011]).diff([2010], 'years'), 1, 'year diff'); + assert.equal(moment([2010, 2]).diff([2010], 'months'), 2, 'month diff'); + assert.equal(moment([2010, 0, 4]).diff([2010], 'days'), 3, 'day diff'); + assert.equal(moment([2010, 0, 7]).diff([2010], 'weeks'), 0, 'week diff'); + assert.equal(moment([2010, 0, 8]).diff([2010], 'weeks'), 1, 'week diff'); + assert.equal(moment([2010, 0, 21]).diff([2010], 'weeks'), 2, 'week diff'); + assert.equal(moment([2010, 0, 22]).diff([2010], 'weeks'), 3, 'week diff'); + assert.equal(moment([2010, 0, 1, 4]).diff([2010], 'hours'), 4, 'hour diff'); + assert.equal( + moment([2010, 0, 1, 0, 5]).diff([2010], 'minutes'), + 5, + 'minute diff' + ); + assert.equal( + moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'seconds'), + 6, + 'second diff' + ); + }); + + test('diff key before singular', function (assert) { + assert.equal(moment([2011]).diff([2010], 'year'), 1, 'year diff singular'); + assert.equal( + moment([2010, 2]).diff([2010], 'month'), + 2, + 'month diff singular' + ); + assert.equal( + moment([2010, 0, 4]).diff([2010], 'day'), + 3, + 'day diff singular' + ); + assert.equal( + moment([2010, 0, 7]).diff([2010], 'week'), + 0, + 'week diff singular' + ); + assert.equal( + moment([2010, 0, 8]).diff([2010], 'week'), + 1, + 'week diff singular' + ); + assert.equal( + moment([2010, 0, 21]).diff([2010], 'week'), + 2, + 'week diff singular' + ); + assert.equal( + moment([2010, 0, 22]).diff([2010], 'week'), + 3, + 'week diff singular' + ); + assert.equal( + moment([2010, 0, 1, 4]).diff([2010], 'hour'), + 4, + 'hour diff singular' + ); + assert.equal( + moment([2010, 0, 1, 0, 5]).diff([2010], 'minute'), + 5, + 'minute diff singular' + ); + assert.equal( + moment([2010, 0, 1, 0, 0, 6]).diff([2010], 'second'), + 6, + 'second diff singular' + ); + }); + + test('diff key before abbreviated', function (assert) { + assert.equal(moment([2011]).diff([2010], 'y'), 1, 'year diff abbreviated'); + assert.equal( + moment([2010, 2]).diff([2010], 'M'), + 2, + 'month diff abbreviated' + ); + assert.equal( + moment([2010, 0, 4]).diff([2010], 'd'), + 3, + 'day diff abbreviated' + ); + assert.equal( + moment([2010, 0, 7]).diff([2010], 'w'), + 0, + 'week diff abbreviated' + ); + assert.equal( + moment([2010, 0, 8]).diff([2010], 'w'), + 1, + 'week diff abbreviated' + ); + assert.equal( + moment([2010, 0, 21]).diff([2010], 'w'), + 2, + 'week diff abbreviated' + ); + assert.equal( + moment([2010, 0, 22]).diff([2010], 'w'), + 3, + 'week diff abbreviated' + ); + assert.equal( + moment([2010, 0, 1, 4]).diff([2010], 'h'), + 4, + 'hour diff abbreviated' + ); + assert.equal( + moment([2010, 0, 1, 0, 5]).diff([2010], 'm'), + 5, + 'minute diff abbreviated' + ); + assert.equal( + moment([2010, 0, 1, 0, 0, 6]).diff([2010], 's'), + 6, + 'second diff abbreviated' + ); + }); + + test('diff month', function (assert) { + assert.equal( + moment([2011, 0, 31]).diff([2011, 2, 1], 'months'), + -1, + 'month diff' + ); + }); + + test('end of month diff', function (assert) { + assert.equal( + moment('2016-02-29').diff('2016-01-30', 'months'), + 1, + 'Feb 29 to Jan 30 should be 1 month' + ); + assert.equal( + moment('2016-02-29').diff('2016-01-31', 'months'), + 1, + 'Feb 29 to Jan 31 should be 1 month' + ); + assert.equal( + moment('2016-05-31') + .add(1, 'month') + .diff(moment('2016-05-31'), 'month'), + 1, + '(May 31 plus 1 month) to May 31 should be 1 month diff' + ); + }); + + test('end of month diff with time behind', function (assert) { + assert.equal( + moment('2017-03-31').diff('2017-02-28', 'months'), + 1, + 'Feb 28 to March 31 should be 1 month' + ); + assert.equal( + moment('2017-02-28').diff('2017-03-31', 'months'), + -1, + 'Feb 28 to March 31 should be 1 month' + ); + }); + + test('diff across DST', function (assert) { + var dst = dstForYear(2012), + a, + b; + if (!dst) { + assert.equal(42, 42, 'at least one assertion'); + return; + } + + a = dst.moment; + b = a.clone().utc().add(12, 'hours').local(); + assert.equal( + b.diff(a, 'milliseconds', true), + 12 * 60 * 60 * 1000, + 'ms diff across DST' + ); + assert.equal( + b.diff(a, 'seconds', true), + 12 * 60 * 60, + 'second diff across DST' + ); + assert.equal(b.diff(a, 'minutes', true), 12 * 60, 'minute diff across DST'); + assert.equal(b.diff(a, 'hours', true), 12, 'hour diff across DST'); + assert.equal( + b.diff(a, 'days', true), + (12 - dst.diff) / 24, + 'day diff across DST' + ); + equal( + assert, + b.diff(a, 'weeks', true), + (12 - dst.diff) / 24 / 7, + 'week diff across DST' + ); + assert.ok( + 0.95 / (2 * 31) < b.diff(a, 'months', true), + 'month diff across DST, lower bound' + ); + assert.ok( + b.diff(a, 'month', true) < 1.05 / (2 * 28), + 'month diff across DST, upper bound' + ); + assert.ok( + 0.95 / (2 * 31 * 12) < b.diff(a, 'years', true), + 'year diff across DST, lower bound' + ); + assert.ok( + b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12), + 'year diff across DST, upper bound' + ); + + a = dst.moment; + b = a + .clone() + .utc() + .add(12 + dst.diff, 'hours') + .local(); + + assert.equal( + b.diff(a, 'milliseconds', true), + (12 + dst.diff) * 60 * 60 * 1000, + 'ms diff across DST' + ); + assert.equal( + b.diff(a, 'seconds', true), + (12 + dst.diff) * 60 * 60, + 'second diff across DST' + ); + assert.equal( + b.diff(a, 'minutes', true), + (12 + dst.diff) * 60, + 'minute diff across DST' + ); + assert.equal( + b.diff(a, 'hours', true), + 12 + dst.diff, + 'hour diff across DST' + ); + assert.equal(b.diff(a, 'days', true), 12 / 24, 'day diff across DST'); + equal( + assert, + b.diff(a, 'weeks', true), + 12 / 24 / 7, + 'week diff across DST' + ); + assert.ok( + 0.95 / (2 * 31) < b.diff(a, 'months', true), + 'month diff across DST, lower bound' + ); + assert.ok( + b.diff(a, 'month', true) < 1.05 / (2 * 28), + 'month diff across DST, upper bound' + ); + assert.ok( + 0.95 / (2 * 31 * 12) < b.diff(a, 'years', true), + 'year diff across DST, lower bound' + ); + assert.ok( + b.diff(a, 'year', true) < 1.05 / (2 * 28 * 12), + 'year diff across DST, upper bound' + ); + }); + + test('diff overflow', function (assert) { + assert.equal(moment([2011]).diff([2010], 'months'), 12, 'month diff'); + assert.equal(moment([2010, 0, 2]).diff([2010], 'hours'), 24, 'hour diff'); + assert.equal( + moment([2010, 0, 1, 2]).diff([2010], 'minutes'), + 120, + 'minute diff' + ); + assert.equal( + moment([2010, 0, 1, 0, 4]).diff([2010], 'seconds'), + 240, + 'second diff' + ); + }); + + test('diff between utc and local', function (assert) { + if (moment([2012]).utcOffset() === moment([2011]).utcOffset()) { + // Russia's utc offset on 1st of Jan 2012 vs 2011 is different + assert.equal( + moment([2012]).utc().diff([2011], 'years'), + 1, + 'year diff' + ); + } + assert.equal( + moment([2010, 2, 2]).utc().diff([2010, 0, 2], 'months'), + 2, + 'month diff' + ); + assert.equal( + moment([2010, 0, 4]).utc().diff([2010], 'days'), + 3, + 'day diff' + ); + assert.equal( + moment([2010, 0, 22]).utc().diff([2010], 'weeks'), + 3, + 'week diff' + ); + assert.equal( + moment([2010, 0, 1, 4]).utc().diff([2010], 'hours'), + 4, + 'hour diff' + ); + assert.equal( + moment([2010, 0, 1, 0, 5]).utc().diff([2010], 'minutes'), + 5, + 'minute diff' + ); + assert.equal( + moment([2010, 0, 1, 0, 0, 6]).utc().diff([2010], 'seconds'), + 6, + 'second diff' + ); + }); + + test('diff floored', function (assert) { + assert.equal( + moment([2010, 0, 1, 23]).diff([2010], 'day'), + 0, + '23 hours = 0 days' + ); + assert.equal( + moment([2010, 0, 1, 23, 59]).diff([2010], 'day'), + 0, + '23:59 hours = 0 days' + ); + assert.equal( + moment([2010, 0, 1, 24]).diff([2010], 'day'), + 1, + '24 hours = 1 day' + ); + assert.equal( + moment([2010, 0, 2]).diff([2011, 0, 1], 'year'), + 0, + 'year rounded down' + ); + assert.equal( + moment([2011, 0, 1]).diff([2010, 0, 2], 'year'), + 0, + 'year rounded down' + ); + assert.equal( + moment([2010, 0, 2]).diff([2011, 0, 2], 'year'), + -1, + 'year rounded down' + ); + assert.equal( + moment([2011, 0, 2]).diff([2010, 0, 2], 'year'), + 1, + 'year rounded down' + ); + }); + + test('year diffs include dates', function (assert) { + assert.ok( + moment([2012, 1, 19]).diff(moment([2002, 1, 20]), 'years', true) < 10, + 'year diff should include date of month' + ); + }); + + test('month diffs', function (assert) { + // due to floating point math errors, these tests just need to be accurate within 0.00000001 + assert.equal( + moment([2012, 0, 1]).diff([2012, 1, 1], 'months', true), + -1, + 'Jan 1 to Feb 1 should be 1 month' + ); + equal( + assert, + moment([2012, 0, 1]).diff([2012, 0, 1, 12], 'months', true), + -0.5 / 31, + 'Jan 1 to Jan 1 noon should be 0.5 / 31 months' + ); + assert.equal( + moment([2012, 0, 15]).diff([2012, 1, 15], 'months', true), + -1, + 'Jan 15 to Feb 15 should be 1 month' + ); + assert.equal( + moment([2012, 0, 28]).diff([2012, 1, 28], 'months', true), + -1, + 'Jan 28 to Feb 28 should be 1 month' + ); + assert.ok( + moment([2012, 0, 31]).diff([2012, 1, 29], 'months', true), + -1, + 'Jan 31 to Feb 29 should be 1 month' + ); + assert.ok( + -1 > moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), + 'Jan 31 to Mar 1 should be more than 1 month' + ); + assert.ok( + -30 / 28 < moment([2012, 0, 31]).diff([2012, 2, 1], 'months', true), + 'Jan 31 to Mar 1 should be less than 1 month and 1 day' + ); + equal( + assert, + moment([2012, 0, 1]).diff([2012, 0, 31], 'months', true), + -(30 / 31), + 'Jan 1 to Jan 31 should be 30 / 31 months' + ); + assert.ok( + 0 < moment('2014-02-01').diff(moment('2014-01-31'), 'months', true), + 'jan-31 to feb-1 diff is positive' + ); + }); + + test('exact month diffs', function (assert) { + // generate all pairs of months and compute month diff, with fixed day + // of month = 15. + + var m1, m2; + for (m1 = 0; m1 < 12; ++m1) { + for (m2 = m1; m2 < 12; ++m2) { + assert.equal( + moment([2013, m2, 15]).diff( + moment([2013, m1, 15]), + 'months', + true + ), + m2 - m1, + 'month diff from 2013-' + m1 + '-15 to 2013-' + m2 + '-15' + ); + } + } + }); + + test('year diffs', function (assert) { + // due to floating point math errors, these tests just need to be accurate within 0.00000001 + equal( + assert, + moment([2012, 0, 1]).diff([2013, 0, 1], 'years', true), + -1, + 'Jan 1 2012 to Jan 1 2013 should be 1 year' + ); + equal( + assert, + moment([2012, 1, 28]).diff([2013, 1, 28], 'years', true), + -1, + 'Feb 28 2012 to Feb 28 2013 should be 1 year' + ); + equal( + assert, + moment([2012, 2, 1]).diff([2013, 2, 1], 'years', true), + -1, + 'Mar 1 2012 to Mar 1 2013 should be 1 year' + ); + equal( + assert, + moment([2012, 11, 1]).diff([2013, 11, 1], 'years', true), + -1, + 'Dec 1 2012 to Dec 1 2013 should be 1 year' + ); + equal( + assert, + moment([2012, 11, 31]).diff([2013, 11, 31], 'years', true), + -1, + 'Dec 31 2012 to Dec 31 2013 should be 1 year' + ); + equal( + assert, + moment([2012, 0, 1]).diff([2013, 6, 1], 'years', true), + -1.5, + 'Jan 1 2012 to Jul 1 2013 should be 1.5 years' + ); + equal( + assert, + moment([2012, 0, 31]).diff([2013, 6, 31], 'years', true), + -1.5, + 'Jan 31 2012 to Jul 31 2013 should be 1.5 years' + ); + equal( + assert, + moment([2012, 0, 1]).diff([2013, 0, 1, 12], 'years', true), + -1 - 0.5 / 31 / 12, + 'Jan 1 2012 to Jan 1 2013 noon should be 1+(0.5 / 31) / 12 years' + ); + equal( + assert, + moment([2012, 0, 1]).diff([2013, 6, 1, 12], 'years', true), + -1.5 - 0.5 / 31 / 12, + 'Jan 1 2012 to Jul 1 2013 noon should be 1.5+(0.5 / 31) / 12 years' + ); + equal( + assert, + moment([2012, 1, 29]).diff([2013, 1, 28], 'years', true), + -1, + 'Feb 29 2012 to Feb 28 2013 should be 1-(1 / 28.5) / 12 years' + ); + }); + + test('negative zero', function (assert) { + function isNegative(n) { + return 1 / n < 0; + } + assert.ok( + !isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'months')), + 'month diff on same date is zero, not -0' + ); + assert.ok( + !isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'years')), + 'year diff on same date is zero, not -0' + ); + assert.ok( + !isNegative( + moment([2012, 0, 1]).diff(moment([2012, 0, 1]), 'quarters') + ), + 'quarter diff on same date is zero, not -0' + ); + assert.ok( + !isNegative(moment([2012, 0, 1]).diff(moment([2012, 0, 1, 1]), 'days')), + 'days diff on same date is zero, not -0' + ); + assert.ok( + !isNegative( + moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 1]), 'hours') + ), + 'hour diff on same hour is zero, not -0' + ); + assert.ok( + !isNegative( + moment([2012, 0, 1]).diff(moment([2012, 0, 1, 0, 0, 1]), 'minutes') + ), + 'minute diff on same minute is zero, not -0' + ); + assert.ok( + !isNegative( + moment([2012, 0, 1]).diff( + moment([2012, 0, 1, 0, 0, 0, 1]), + 'seconds' + ) + ), + 'second diff on same second is zero, not -0' + ); + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + module('duration from moments'); + + test('pure year diff', function (assert) { + var m1 = moment('2012-01-01T00:00:00.000Z'), + m2 = moment('2013-01-01T00:00:00.000Z'); + + assert.equal( + moment.duration({ from: m1, to: m2 }).as('years'), + 1, + 'year moment difference' + ); + assert.equal( + moment.duration({ from: m2, to: m1 }).as('years'), + -1, + 'negative year moment difference' + ); + }); + + test('month and day diff', function (assert) { + var m1 = moment('2012-01-15T00:00:00.000Z'), + m2 = moment('2012-02-17T00:00:00.000Z'), + d = moment.duration({ from: m1, to: m2 }); + + assert.equal(d.get('days'), 2); + assert.equal(d.get('months'), 1); + }); + + test('day diff, separate months', function (assert) { + var m1 = moment('2012-01-15T00:00:00.000Z'), + m2 = moment('2012-02-13T00:00:00.000Z'), + d = moment.duration({ from: m1, to: m2 }); + + assert.equal(d.as('days'), 29); + }); + + test('hour diff', function (assert) { + var m1 = moment('2012-01-15T17:00:00.000Z'), + m2 = moment('2012-01-16T03:00:00.000Z'), + d = moment.duration({ from: m1, to: m2 }); + + assert.equal(d.as('hours'), 10); + }); + + test('minute diff', function (assert) { + var m1 = moment('2012-01-15T17:45:00.000Z'), + m2 = moment('2012-01-16T03:15:00.000Z'), + d = moment.duration({ from: m1, to: m2 }); + + assert.equal(d.as('hours'), 9.5); + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + module('invalid'); + + test('invalid duration', function (assert) { + var m = moment.duration.invalid(); // should be invalid + assert.equal(m.isValid(), false); + assert.ok(isNaN(m.valueOf())); + }); + + test('valid duration', function (assert) { + var m = moment.duration({ d: null }); // should be valid, for now + assert.equal(m.isValid(), true); + assert.equal(m.valueOf(), 0); + }); + + test('invalid duration - clone of invalid duration', function (assert) { + var m = moment.duration.invalid().clone(); // should be invalid + assert.equal(m.isValid(), false); + assert.ok(isNaN(m.valueOf())); + }); + + test('valid duration - clone of valid duration', function (assert) { + var m = moment.duration({ d: null }).clone(); // should be valid, for now + assert.equal(m.isValid(), true); + assert.equal(m.valueOf(), 0); + }); + + test('invalid duration - wrapper of invalid duration', function (assert) { + var m = moment.duration(moment.duration.invalid()); // should be invalid + assert.equal(m.isValid(), false); + assert.ok(isNaN(m.valueOf())); + }); + + test('valid duration - wrapper of valid duration', function (assert) { + var m = moment.duration(moment.duration({ d: null })); // should be valid, for now + assert.equal(m.isValid(), true); + assert.equal(m.valueOf(), 0); + }); + + test('invalid duration - only smallest unit can have decimal', function (assert) { + var m = moment.duration({ days: 3.5, hours: 1.1 }); // should be invalid + assert.equal(m.isValid(), false); + assert.ok(isNaN(m.valueOf())); // .valueOf() returns NaN for invalid durations + }); + + test('valid duration - smallest unit can have decimal', function (assert) { + var m = moment.duration({ days: 3, hours: 1.1 }); // should be valid + assert.equal(m.isValid(), true); + assert.equal(m.asHours(), 73.1); + }); + + test('invalid duration with two arguments', function (assert) { + var m = moment.duration(NaN, 'days'); + assert.equal(m.isValid(), false); + assert.ok(isNaN(m.valueOf())); + }); + + test('invalid duration operations', function (assert) { + var invalids = [ + moment.duration(NaN), + moment.duration(NaN, 'days'), + moment.duration.invalid(), + ], + i, + invalid; + + for (i = 0; i < invalids.length; ++i) { + invalid = invalids[i]; + + assert.ok( + !invalid.add(5, 'hours').isValid(), + 'invalid.add is invalid; i=' + i + ); + assert.ok( + !invalid.subtract(30, 'days').isValid(), + 'invalid.subtract is invalid; i=' + i + ); + assert.ok(!invalid.abs().isValid(), 'invalid.abs is invalid; i=' + i); + assert.ok(isNaN(invalid.as('years')), 'invalid.as is NaN; i=' + i); + assert.ok( + isNaN(invalid.asMilliseconds()), + 'invalid.asMilliseconds is NaN; i=' + i + ); + assert.ok( + isNaN(invalid.asSeconds()), + 'invalid.asSeconds is NaN; i=' + i + ); + assert.ok( + isNaN(invalid.asMinutes()), + 'invalid.asMinutes is NaN; i=' + i + ); + assert.ok(isNaN(invalid.asHours()), 'invalid.asHours is NaN; i=' + i); + assert.ok(isNaN(invalid.asDays()), 'invalid.asDays is NaN; i=' + i); + assert.ok(isNaN(invalid.asWeeks()), 'invalid.asWeeks is NaN; i=' + i); + assert.ok(isNaN(invalid.asMonths()), 'invalid.asMonths is NaN; i=' + i); + assert.ok( + isNaN(invalid.asQuarters()), + 'invalid.asQuarters is NaN; i=' + i + ); + assert.ok(isNaN(invalid.asYears()), 'invalid.asYears is NaN; i=' + i); + assert.ok(isNaN(invalid.valueOf()), 'invalid.valueOf is NaN; i=' + i); + assert.ok(isNaN(invalid.get('hours')), 'invalid.get is NaN; i=' + i); + + assert.ok( + isNaN(invalid.milliseconds()), + 'invalid.milliseconds is NaN; i=' + i + ); + assert.ok(isNaN(invalid.seconds()), 'invalid.seconds is NaN; i=' + i); + assert.ok(isNaN(invalid.minutes()), 'invalid.minutes is NaN; i=' + i); + assert.ok(isNaN(invalid.hours()), 'invalid.hours is NaN; i=' + i); + assert.ok(isNaN(invalid.days()), 'invalid.days is NaN; i=' + i); + assert.ok(isNaN(invalid.weeks()), 'invalid.weeks is NaN; i=' + i); + assert.ok(isNaN(invalid.months()), 'invalid.months is NaN; i=' + i); + assert.ok(isNaN(invalid.years()), 'invalid.years is NaN; i=' + i); + + assert.equal( + invalid.humanize(), + invalid.localeData().invalidDate(), + 'invalid.humanize is localized invalid duration string; i=' + i + ); + assert.equal( + invalid.toISOString(), + invalid.localeData().invalidDate(), + 'invalid.toISOString is localized invalid duration string; i=' + i + ); + assert.equal( + invalid.toString(), + invalid.localeData().invalidDate(), + 'invalid.toString is localized invalid duration string; i=' + i + ); + assert.equal( + invalid.toJSON(), + invalid.localeData().invalidDate(), + 'invalid.toJSON is null; i=' + i + ); + assert.equal(invalid.locale(), 'en', 'invalid.locale; i=' + i); + assert.equal( + invalid.localeData()._abbr, + 'en', + 'invalid.localeData()._abbr; i=' + i + ); + } + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + module('duration'); + + test('object instantiation', function (assert) { + var d = moment.duration({ + years: 2, + months: 3, + weeks: 2, + days: 1, + hours: 8, + minutes: 9, + seconds: 20, + milliseconds: 12, + }); + + assert.equal(d.years(), 2, 'years'); + assert.equal(d.months(), 3, 'months'); + assert.equal(d.weeks(), 2, 'weeks'); + assert.equal(d.days(), 15, 'days'); // two weeks + 1 day + assert.equal(d.hours(), 8, 'hours'); + assert.equal(d.minutes(), 9, 'minutes'); + assert.equal(d.seconds(), 20, 'seconds'); + assert.equal(d.milliseconds(), 12, 'milliseconds'); + }); + + test('object instantiation with strings', function (assert) { + var d = moment.duration({ + years: '2', + months: '3', + weeks: '2', + days: '1', + hours: '8', + minutes: '9', + seconds: '20', + milliseconds: '12', + }); + + assert.equal(d.years(), 2, 'years'); + assert.equal(d.months(), 3, 'months'); + assert.equal(d.weeks(), 2, 'weeks'); + assert.equal(d.days(), 15, 'days'); // two weeks + 1 day + assert.equal(d.hours(), 8, 'hours'); + assert.equal(d.minutes(), 9, 'minutes'); + assert.equal(d.seconds(), 20, 'seconds'); + assert.equal(d.milliseconds(), 12, 'milliseconds'); + }); + + test('milliseconds instantiation', function (assert) { + assert.equal(moment.duration(72).milliseconds(), 72, 'milliseconds'); + assert.equal( + moment.duration(72).humanize(), + 'a few seconds', + 'Duration should be valid' + ); + }); + + test('milliseconds instantiation with string', function (assert) { + assert.equal(moment.duration('72').milliseconds(), 72, 'milliseconds'); + assert.equal( + moment.duration('72').humanize(), + 'a few seconds', + 'Duration should be valid' + ); + }); + + test('undefined instantiation', function (assert) { + assert.equal(moment.duration(undefined).milliseconds(), 0, 'milliseconds'); + assert.equal(moment.duration(undefined).isValid(), true, '_isValid'); + assert.equal( + moment.duration(undefined).humanize(), + 'a few seconds', + 'Duration should be valid' + ); + }); + + test('null instantiation', function (assert) { + assert.equal(moment.duration(null).milliseconds(), 0, 'milliseconds'); + assert.equal(moment.duration(null).isValid(), true, '_isValid'); + assert.equal( + moment.duration(null).humanize(), + 'a few seconds', + 'Duration should be valid' + ); + }); + + test('NaN instantiation', function (assert) { + assert.ok( + isNaN(moment.duration(NaN).milliseconds()), + 'milliseconds should be NaN' + ); + assert.equal(moment.duration(NaN).isValid(), false, '_isValid'); + assert.equal( + moment.duration(NaN).humanize(), + 'Invalid date', + 'Duration should be invalid' + ); + }); + + test('instantiation by type', function (assert) { + assert.equal(moment.duration(1, 'years').years(), 1, 'years'); + assert.equal(moment.duration(1, 'y').years(), 1, 'y'); + assert.equal(moment.duration(2, 'months').months(), 2, 'months'); + assert.equal(moment.duration(2, 'M').months(), 2, 'M'); + assert.equal(moment.duration(3, 'weeks').weeks(), 3, 'weeks'); + assert.equal(moment.duration(3, 'w').weeks(), 3, 'weeks'); + assert.equal(moment.duration(4, 'days').days(), 4, 'days'); + assert.equal(moment.duration(4, 'd').days(), 4, 'd'); + assert.equal(moment.duration(5, 'hours').hours(), 5, 'hours'); + assert.equal(moment.duration(5, 'h').hours(), 5, 'h'); + assert.equal(moment.duration(6, 'minutes').minutes(), 6, 'minutes'); + assert.equal(moment.duration(6, 'm').minutes(), 6, 'm'); + assert.equal(moment.duration(7, 'seconds').seconds(), 7, 'seconds'); + assert.equal(moment.duration(7, 's').seconds(), 7, 's'); + assert.equal( + moment.duration(8, 'milliseconds').milliseconds(), + 8, + 'milliseconds' + ); + assert.equal(moment.duration(8, 'ms').milliseconds(), 8, 'ms'); + }); + + test('instantiation by type with string', function (assert) { + assert.equal(moment.duration('1', 'years').years(), 1, 'years'); + assert.equal(moment.duration('1', 'y').years(), 1, 'y'); + assert.equal(moment.duration('2', 'months').months(), 2, 'months'); + assert.equal(moment.duration('2', 'M').months(), 2, 'M'); + assert.equal(moment.duration('3', 'weeks').weeks(), 3, 'weeks'); + assert.equal(moment.duration('3', 'w').weeks(), 3, 'weeks'); + assert.equal(moment.duration('4', 'days').days(), 4, 'days'); + assert.equal(moment.duration('4', 'd').days(), 4, 'd'); + assert.equal(moment.duration('5', 'hours').hours(), 5, 'hours'); + assert.equal(moment.duration('5', 'h').hours(), 5, 'h'); + assert.equal(moment.duration('6', 'minutes').minutes(), 6, 'minutes'); + assert.equal(moment.duration('6', 'm').minutes(), 6, 'm'); + assert.equal(moment.duration('7', 'seconds').seconds(), 7, 'seconds'); + assert.equal(moment.duration('7', 's').seconds(), 7, 's'); + assert.equal( + moment.duration('8', 'milliseconds').milliseconds(), + 8, + 'milliseconds' + ); + assert.equal(moment.duration('8', 'ms').milliseconds(), 8, 'ms'); + }); + + test('shortcuts', function (assert) { + assert.equal(moment.duration({ y: 1 }).years(), 1, 'years = y'); + assert.equal(moment.duration({ M: 2 }).months(), 2, 'months = M'); + assert.equal(moment.duration({ w: 3 }).weeks(), 3, 'weeks = w'); + assert.equal(moment.duration({ d: 4 }).days(), 4, 'days = d'); + assert.equal(moment.duration({ h: 5 }).hours(), 5, 'hours = h'); + assert.equal(moment.duration({ m: 6 }).minutes(), 6, 'minutes = m'); + assert.equal(moment.duration({ s: 7 }).seconds(), 7, 'seconds = s'); + assert.equal( + moment.duration({ ms: 8 }).milliseconds(), + 8, + 'milliseconds = ms' + ); + }); + + test('generic getter', function (assert) { + assert.equal(moment.duration(1, 'years').get('years'), 1, 'years'); + assert.equal(moment.duration(1, 'years').get('year'), 1, 'years = year'); + assert.equal(moment.duration(1, 'years').get('y'), 1, 'years = y'); + assert.equal(moment.duration(2, 'months').get('months'), 2, 'months'); + assert.equal( + moment.duration(2, 'months').get('month'), + 2, + 'months = month' + ); + assert.equal(moment.duration(2, 'months').get('M'), 2, 'months = M'); + assert.equal(moment.duration(3, 'weeks').get('weeks'), 3, 'weeks'); + assert.equal(moment.duration(3, 'weeks').get('week'), 3, 'weeks = week'); + assert.equal(moment.duration(3, 'weeks').get('w'), 3, 'weeks = w'); + assert.equal(moment.duration(4, 'days').get('days'), 4, 'days'); + assert.equal(moment.duration(4, 'days').get('day'), 4, 'days = day'); + assert.equal(moment.duration(4, 'days').get('d'), 4, 'days = d'); + assert.equal(moment.duration(5, 'hours').get('hours'), 5, 'hours'); + assert.equal(moment.duration(5, 'hours').get('hour'), 5, 'hours = hour'); + assert.equal(moment.duration(5, 'hours').get('h'), 5, 'hours = h'); + assert.equal(moment.duration(6, 'minutes').get('minutes'), 6, 'minutes'); + assert.equal( + moment.duration(6, 'minutes').get('minute'), + 6, + 'minutes = minute' + ); + assert.equal(moment.duration(6, 'minutes').get('m'), 6, 'minutes = m'); + assert.equal(moment.duration(7, 'seconds').get('seconds'), 7, 'seconds'); + assert.equal( + moment.duration(7, 'seconds').get('second'), + 7, + 'seconds = second' + ); + assert.equal(moment.duration(7, 'seconds').get('s'), 7, 'seconds = s'); + assert.equal( + moment.duration(8, 'milliseconds').get('milliseconds'), + 8, + 'milliseconds' + ); + assert.equal( + moment.duration(8, 'milliseconds').get('millisecond'), + 8, + 'milliseconds = millisecond' + ); + assert.equal( + moment.duration(8, 'milliseconds').get('ms'), + 8, + 'milliseconds = ms' + ); + }); + + test('instantiation from another duration', function (assert) { + var simple = moment.duration(1234), + lengthy = moment.duration(60 * 60 * 24 * 360 * 1e3), + complicated = moment.duration({ + years: 2, + months: 3, + weeks: 4, + days: 1, + hours: 8, + minutes: 9, + seconds: 20, + milliseconds: 12, + }), + modified = moment.duration(1, 'day').add(moment.duration(1, 'day')); + + assert.deepEqual( + moment.duration(simple), + simple, + 'simple clones are equal' + ); + assert.deepEqual( + moment.duration(lengthy), + lengthy, + 'lengthy clones are equal' + ); + assert.deepEqual( + moment.duration(complicated), + complicated, + 'complicated clones are equal' + ); + assert.deepEqual( + moment.duration(modified), + modified, + 'cloning modified duration works' + ); + }); + + test('explicit cloning', function (assert) { + var durationA = moment.duration(5, 'milliseconds'), + durationB = durationA.clone(); + durationA.add(5, 'milliseconds'); + assert.notEqual( + durationA.milliseconds(), + durationB.milliseconds(), + 'Calling duration.clone() on a duration will create a clone' + ); + }); + + test('instantiation from 24-hour time zero', function (assert) { + assert.equal(moment.duration('00:00').years(), 0, '0 years'); + assert.equal(moment.duration('00:00').days(), 0, '0 days'); + assert.equal(moment.duration('00:00').hours(), 0, '0 hours'); + assert.equal(moment.duration('00:00').minutes(), 0, '0 minutes'); + assert.equal(moment.duration('00:00').seconds(), 0, '0 seconds'); + assert.equal(moment.duration('00:00').milliseconds(), 0, '0 milliseconds'); + }); + + test('instantiation from 24-hour time <24 hours', function (assert) { + assert.equal(moment.duration('06:45').years(), 0, '0 years'); + assert.equal(moment.duration('06:45').days(), 0, '0 days'); + assert.equal(moment.duration('06:45').hours(), 6, '6 hours'); + assert.equal(moment.duration('06:45').minutes(), 45, '45 minutes'); + assert.equal(moment.duration('06:45').seconds(), 0, '0 seconds'); + assert.equal(moment.duration('06:45').milliseconds(), 0, '0 milliseconds'); + }); + + test('instantiation from 24-hour time >24 hours', function (assert) { + assert.equal(moment.duration('26:45').years(), 0, '0 years'); + assert.equal(moment.duration('26:45').days(), 1, '0 days'); + assert.equal(moment.duration('26:45').hours(), 2, '2 hours'); + assert.equal(moment.duration('26:45').minutes(), 45, '45 minutes'); + assert.equal(moment.duration('26:45').seconds(), 0, '0 seconds'); + assert.equal(moment.duration('26:45').milliseconds(), 0, '0 milliseconds'); + }); + + test('instantiation from serialized C# TimeSpan zero', function (assert) { + assert.equal(moment.duration('00:00:00').years(), 0, '0 years'); + assert.equal(moment.duration('00:00:00').days(), 0, '0 days'); + assert.equal(moment.duration('00:00:00').hours(), 0, '0 hours'); + assert.equal(moment.duration('00:00:00').minutes(), 0, '0 minutes'); + assert.equal(moment.duration('00:00:00').seconds(), 0, '0 seconds'); + assert.equal( + moment.duration('00:00:00').milliseconds(), + 0, + '0 milliseconds' + ); + }); + + test('instantiation from serialized C# TimeSpan with days', function (assert) { + assert.equal(moment.duration('1.02:03:04.9999999').years(), 0, '0 years'); + assert.equal(moment.duration('1.02:03:04.9999999').days(), 1, '1 day'); + assert.equal(moment.duration('1.02:03:04.9999999').hours(), 2, '2 hours'); + assert.equal( + moment.duration('1.02:03:04.9999999').minutes(), + 3, + '3 minutes' + ); + assert.equal( + moment.duration('1.02:03:04.9999999').seconds(), + 5, + '5 seconds' + ); + assert.equal( + moment.duration('1.02:03:04.9999999').milliseconds(), + 0, + '0 milliseconds' + ); + + assert.equal(moment.duration('1 02:03:04.9999999').years(), 0, '0 years'); + assert.equal(moment.duration('1 02:03:04.9999999').days(), 1, '1 day'); + assert.equal(moment.duration('1 02:03:04.9999999').hours(), 2, '2 hours'); + assert.equal( + moment.duration('1 02:03:04.9999999').minutes(), + 3, + '3 minutes' + ); + assert.equal( + moment.duration('1 02:03:04.9999999').seconds(), + 5, + '5 seconds' + ); + assert.equal( + moment.duration('1 02:03:04.9999999').milliseconds(), + 0, + '0 milliseconds' + ); + }); + + test('instantiation from serialized C# TimeSpan without days', function (assert) { + assert.equal(moment.duration('01:02:03.9999999').years(), 0, '0 years'); + assert.equal(moment.duration('01:02:03.9999999').days(), 0, '0 days'); + assert.equal(moment.duration('01:02:03.9999999').hours(), 1, '1 hour'); + assert.equal(moment.duration('01:02:03.9999999').minutes(), 2, '2 minutes'); + assert.equal(moment.duration('01:02:03.9999999').seconds(), 4, '4 seconds'); + assert.equal( + moment.duration('01:02:03.9999999').milliseconds(), + 0, + '0 milliseconds' + ); + + assert.equal(moment.duration('23:59:59.9999999').days(), 1, '1 days'); + assert.equal(moment.duration('23:59:59.9999999').hours(), 0, '0 hours'); + assert.equal(moment.duration('23:59:59.9999999').minutes(), 0, '0 minutes'); + assert.equal(moment.duration('23:59:59.9999999').seconds(), 0, '0 seconds'); + assert.equal( + moment.duration('23:59:59.9999999').milliseconds(), + 0, + '0 milliseconds' + ); + + assert.equal( + moment.duration('500:59:59.8888888').days(), + 20, + '500 hours overflows to 20 days' + ); + assert.equal( + moment.duration('500:59:59.8888888').hours(), + 20, + '500 hours overflows to 20 hours' + ); + }); + + test('instantiation from serialized C# TimeSpan without days or milliseconds', function (assert) { + assert.equal(moment.duration('01:02:03').years(), 0, '0 years'); + assert.equal(moment.duration('01:02:03').days(), 0, '0 days'); + assert.equal(moment.duration('01:02:03').hours(), 1, '1 hour'); + assert.equal(moment.duration('01:02:03').minutes(), 2, '2 minutes'); + assert.equal(moment.duration('01:02:03').seconds(), 3, '3 seconds'); + assert.equal( + moment.duration('01:02:03').milliseconds(), + 0, + '0 milliseconds' + ); + }); + + test('instantiation from serialized C# TimeSpan without milliseconds', function (assert) { + assert.equal(moment.duration('1.02:03:04').years(), 0, '0 years'); + assert.equal(moment.duration('1.02:03:04').days(), 1, '1 day'); + assert.equal(moment.duration('1.02:03:04').hours(), 2, '2 hours'); + assert.equal(moment.duration('1.02:03:04').minutes(), 3, '3 minutes'); + assert.equal(moment.duration('1.02:03:04').seconds(), 4, '4 seconds'); + assert.equal( + moment.duration('1.02:03:04').milliseconds(), + 0, + '0 milliseconds' + ); + }); + + test('instantiation from serialized C# TimeSpan with low millisecond precision', function (assert) { + assert.equal(moment.duration('00:00:15.72').years(), 0, '0 years'); + assert.equal(moment.duration('00:00:15.72').days(), 0, '0 days'); + assert.equal(moment.duration('00:00:15.72').hours(), 0, '0 hours'); + assert.equal(moment.duration('00:00:15.72').minutes(), 0, '0 minutes'); + assert.equal(moment.duration('00:00:15.72').seconds(), 15, '15 seconds'); + assert.equal( + moment.duration('00:00:15.72').milliseconds(), + 720, + '720 milliseconds' + ); + + assert.equal( + moment.duration('00:00:15.7').milliseconds(), + 700, + '700 milliseconds' + ); + + assert.equal( + moment.duration('00:00:15.').milliseconds(), + 0, + '0 milliseconds' + ); + }); + + test('instantiation from serialized C# TimeSpan with high millisecond precision', function (assert) { + assert.equal( + moment.duration('00:00:15.7200000').seconds(), + 15, + '15 seconds' + ); + assert.equal( + moment.duration('00:00:15.7200000').milliseconds(), + 720, + '720 milliseconds' + ); + + assert.equal( + moment.duration('00:00:15.7209999').seconds(), + 15, + '15 seconds' + ); + assert.equal( + moment.duration('00:00:15.7209999').milliseconds(), + 721, + '721 milliseconds' + ); + + assert.equal( + moment.duration('00:00:15.7205000').seconds(), + 15, + '15 seconds' + ); + assert.equal( + moment.duration('00:00:15.7205000').milliseconds(), + 721, + '721 milliseconds' + ); + + assert.equal( + moment.duration('-00:00:15.7205000').seconds(), + -15, + '15 seconds' + ); + assert.equal( + moment.duration('-00:00:15.7205000').milliseconds(), + -721, + '721 milliseconds' + ); + + assert.equal( + moment.duration('+00:00:15.7205000').seconds(), + 15, + '15 seconds' + ); + assert.equal( + moment.duration('+00:00:15.7205000').milliseconds(), + 721, + '721 milliseconds' + ); + }); + + test('instantiation from serialized C# TimeSpan maxValue', function (assert) { + var d = moment.duration('10675199.02:48:05.4775807'); + + assert.equal(d.years(), 29227, '29227 years'); + assert.equal(d.months(), 8, '8 months'); + assert.equal(d.days(), 12, '12 day'); // if you have to change this value -- just do it + + assert.equal(d.hours(), 2, '2 hours'); + assert.equal(d.minutes(), 48, '48 minutes'); + assert.equal(d.seconds(), 5, '5 seconds'); + assert.equal(d.milliseconds(), 478, '478 milliseconds'); + }); + + test('instantiation from serialized C# TimeSpan minValue', function (assert) { + var d = moment.duration('-10675199.02:48:05.4775808'); + + assert.equal(d.years(), -29227, '29653 years'); + assert.equal(d.months(), -8, '8 day'); + assert.equal(d.days(), -12, '12 day'); // if you have to change this value -- just do it + + assert.equal(d.hours(), -2, '2 hours'); + assert.equal(d.minutes(), -48, '48 minutes'); + assert.equal(d.seconds(), -5, '5 seconds'); + assert.equal(d.milliseconds(), -478, '478 milliseconds'); + }); + + test('instantiation from serialized C# TimeSpan maxValue with + sign', function (assert) { + var d = moment.duration('+10675199.02:48:05.4775808'); + + assert.equal(d.years(), 29227, '29653 years'); + assert.equal(d.months(), 8, '8 day'); + assert.equal(d.days(), 12, '12 day'); // if you have to change this value -- just do it + + assert.equal(d.hours(), 2, '2 hours'); + assert.equal(d.minutes(), 48, '48 minutes'); + assert.equal(d.seconds(), 5, '5 seconds'); + assert.equal(d.milliseconds(), 478, '478 milliseconds'); + }); + + test('instantiation from ISO 8601 duration', function (assert) { + assert.equal( + moment.duration('P1Y2M3DT4H5M6S').asSeconds(), + moment.duration({ y: 1, M: 2, d: 3, h: 4, m: 5, s: 6 }).asSeconds(), + 'all fields' + ); + assert.equal( + moment.duration('P3W3D').asSeconds(), + moment.duration({ w: 3, d: 3 }).asSeconds(), + 'week and day fields' + ); + assert.equal( + moment.duration('P1M').asSeconds(), + moment.duration({ M: 1 }).asSeconds(), + 'single month field' + ); + assert.equal( + moment.duration('PT1M').asSeconds(), + moment.duration({ m: 1 }).asSeconds(), + 'single minute field' + ); + assert.equal( + moment.duration('P1MT2H').asSeconds(), + moment.duration({ M: 1, h: 2 }).asSeconds(), + 'random fields missing' + ); + assert.equal( + moment.duration('-P60D').asSeconds(), + moment.duration({ d: -60 }).asSeconds(), + 'negative days' + ); + assert.equal( + moment.duration('+P60D').asSeconds(), + moment.duration({ d: 60 }).asSeconds(), + 'positive days' + ); + assert.equal( + moment.duration('PT0.5S').asSeconds(), + moment.duration({ s: 0.5 }).asSeconds(), + 'fractional seconds' + ); + assert.equal( + moment.duration('PT0,5S').asSeconds(), + moment.duration({ s: 0.5 }).asSeconds(), + 'fractional seconds (comma)' + ); + }); + + test('serialization to ISO 8601 duration strings', function (assert) { + assert.equal( + moment.duration({ y: 1, M: 2, d: 3, h: 4, m: 5, s: 6 }).toISOString(), + 'P1Y2M3DT4H5M6S', + 'all fields' + ); + assert.equal( + moment.duration({ M: -1 }).toISOString(), + '-P1M', + 'one month ago' + ); + assert.equal( + moment.duration({ m: -1 }).toISOString(), + '-PT1M', + 'one minute ago' + ); + assert.equal( + moment.duration({ s: -0.5 }).toISOString(), + '-PT0.5S', + 'one half second ago' + ); + assert.equal( + moment.duration({ y: -1, M: 1 }).toISOString(), + '-P11M', + 'a month after a year ago' + ); + assert.equal( + moment.duration({ y: -1, h: 1 }).toISOString(), + '-P1YT-1H', + 'an hour after a year ago' + ); + assert.equal( + moment.duration({ y: -1, h: 1, m: -1 }).toISOString(), + '-P1YT-59M', + '59 minutes after a year ago' + ); + assert.equal( + moment.duration({ y: -1, h: 1, s: -1 }).toISOString(), + '-P1YT-59M-59S', + '59 minutes 59 seconds after a year ago' + ); + assert.equal( + moment.duration({ y: -1, h: -1, s: 1 }).toISOString(), + '-P1YT59M59S', + '59 minutes 59 seconds after a year ago' + ); + assert.equal( + moment.duration({ y: -1, d: 2 }).toISOString(), + '-P1Y-2D', + '1 year less 2 days ago' + ); + assert.equal( + moment.duration({ M: +1 }).toISOString(), + 'P1M', + 'one month ago' + ); + assert.equal( + moment.duration({ m: +1 }).toISOString(), + 'PT1M', + 'one minute ago' + ); + assert.equal( + moment.duration({ s: +0.5 }).toISOString(), + 'PT0.5S', + 'one half second ago' + ); + assert.equal( + moment.duration({ y: +1, M: 1 }).toISOString(), + 'P1Y1M', + 'a month after a year in future' + ); + assert.equal( + moment.duration({ y: -1, h: 1 }).toISOString(), + '-P1YT-1H', + 'an hour after a year ago' + ); + assert.equal(moment.duration({}).toISOString(), 'P0D', 'zero duration'); + assert.equal( + moment.duration({ M: 16, d: 40, s: 86465 }).toISOString(), + 'P1Y4M40DT24H1M5S', + 'all fields' + ); + assert.equal( + moment.duration({ ms: 123456789 }).toISOString(), + 'PT34H17M36.789S', + 'check floating-point errors' + ); + assert.equal( + moment.duration({ ms: 31952 }).toISOString(), + 'PT31.952S', + 'check floating-point errors' + ); + }); + + test('toString acts as toISOString', function (assert) { + assert.equal( + moment.duration({ y: 1, M: 2, d: 3, h: 4, m: 5, s: 6 }).toString(), + 'P1Y2M3DT4H5M6S', + 'all fields' + ); + assert.equal( + moment.duration({ M: -1 }).toString(), + '-P1M', + 'one month ago' + ); + assert.equal( + moment.duration({ m: -1 }).toString(), + '-PT1M', + 'one minute ago' + ); + assert.equal( + moment.duration({ s: -0.5 }).toString(), + '-PT0.5S', + 'one half second ago' + ); + assert.equal( + moment.duration({ y: -1, M: 1 }).toString(), + '-P11M', + 'a month after a year ago' + ); + assert.equal(moment.duration({ M: +1 }).toString(), 'P1M', 'one month ago'); + assert.equal( + moment.duration({ m: +1 }).toString(), + 'PT1M', + 'one minute ago' + ); + assert.equal( + moment.duration({ s: +0.5 }).toString(), + 'PT0.5S', + 'one half second ago' + ); + assert.equal( + moment.duration({ y: +1, M: 1 }).toString(), + 'P1Y1M', + 'a month after a year in future' + ); + assert.equal(moment.duration({}).toString(), 'P0D', 'zero duration'); + assert.equal( + moment.duration({ M: 16, d: 40, s: 86465 }).toString(), + 'P1Y4M40DT24H1M5S', + 'all fields' + ); + }); + + test('toIsoString deprecation', function (assert) { + test.expectedDeprecations('toIsoString()'); + + assert.equal( + moment.duration({}).toIsoString(), + moment.duration({}).toISOString(), + 'toIsoString delegates to toISOString' + ); + }); + + test('`isodate` (python) test cases', function (assert) { + assert.equal( + moment.duration('P18Y9M4DT11H9M8S').asSeconds(), + moment.duration({ y: 18, M: 9, d: 4, h: 11, m: 9, s: 8 }).asSeconds(), + 'python isodate 1' + ); + assert.equal( + moment.duration('P2W').asSeconds(), + moment.duration({ w: 2 }).asSeconds(), + 'python isodate 2' + ); + assert.equal( + moment.duration('P3Y6M4DT12H30M5S').asSeconds(), + moment.duration({ y: 3, M: 6, d: 4, h: 12, m: 30, s: 5 }).asSeconds(), + 'python isodate 3' + ); + assert.equal( + moment.duration('P23DT23H').asSeconds(), + moment.duration({ d: 23, h: 23 }).asSeconds(), + 'python isodate 4' + ); + assert.equal( + moment.duration('P4Y').asSeconds(), + moment.duration({ y: 4 }).asSeconds(), + 'python isodate 5' + ); + assert.equal( + moment.duration('P1M').asSeconds(), + moment.duration({ M: 1 }).asSeconds(), + 'python isodate 6' + ); + assert.equal( + moment.duration('PT1M').asSeconds(), + moment.duration({ m: 1 }).asSeconds(), + 'python isodate 7' + ); + assert.equal( + moment.duration('P0.5Y').asSeconds(), + moment.duration({ y: 0.5 }).asSeconds(), + 'python isodate 8' + ); + assert.equal( + moment.duration('PT36H').asSeconds(), + moment.duration({ h: 36 }).asSeconds(), + 'python isodate 9' + ); + assert.equal( + moment.duration('P1DT12H').asSeconds(), + moment.duration({ d: 1, h: 12 }).asSeconds(), + 'python isodate 10' + ); + assert.equal( + moment.duration('-P2W').asSeconds(), + moment.duration({ w: -2 }).asSeconds(), + 'python isodate 11' + ); + assert.equal( + moment.duration('-P2.2W').asSeconds(), + moment.duration({ w: -2.2 }).asSeconds(), + 'python isodate 12' + ); + assert.equal( + moment.duration('+P2W').asSeconds(), + moment.duration({ w: 2 }).asSeconds(), + 'python isodate 11' + ); + assert.equal( + moment.duration('+P2.2W').asSeconds(), + moment.duration({ w: 2.2 }).asSeconds(), + 'python isodate 12' + ); + assert.equal( + moment.duration('P1DT2H3M4S').asSeconds(), + moment.duration({ d: 1, h: 2, m: 3, s: 4 }).asSeconds(), + 'python isodate 13' + ); + assert.equal( + moment.duration('P1DT2H3M').asSeconds(), + moment.duration({ d: 1, h: 2, m: 3 }).asSeconds(), + 'python isodate 14' + ); + assert.equal( + moment.duration('P1DT2H').asSeconds(), + moment.duration({ d: 1, h: 2 }).asSeconds(), + 'python isodate 15' + ); + assert.equal( + moment.duration('PT2H').asSeconds(), + moment.duration({ h: 2 }).asSeconds(), + 'python isodate 16' + ); + assert.equal( + moment.duration('PT2.3H').asSeconds(), + moment.duration({ h: 2.3 }).asSeconds(), + 'python isodate 17' + ); + assert.equal( + moment.duration('PT2H3M4S').asSeconds(), + moment.duration({ h: 2, m: 3, s: 4 }).asSeconds(), + 'python isodate 18' + ); + assert.equal( + moment.duration('PT3M4S').asSeconds(), + moment.duration({ m: 3, s: 4 }).asSeconds(), + 'python isodate 19' + ); + assert.equal( + moment.duration('PT22S').asSeconds(), + moment.duration({ s: 22 }).asSeconds(), + 'python isodate 20' + ); + assert.equal( + moment.duration('PT22.22S').asSeconds(), + moment.duration({ s: 22.22 }).asSeconds(), + 'python isodate 21' + ); + assert.equal( + moment.duration('-P2Y').asSeconds(), + moment.duration({ y: -2 }).asSeconds(), + 'python isodate 22' + ); + assert.equal( + moment.duration('-P3Y6M4DT12H30M5S').asSeconds(), + moment + .duration({ y: -3, M: -6, d: -4, h: -12, m: -30, s: -5 }) + .asSeconds(), + 'python isodate 23' + ); + assert.equal( + moment.duration('-P1DT2H3M4S').asSeconds(), + moment.duration({ d: -1, h: -2, m: -3, s: -4 }).asSeconds(), + 'python isodate 24' + ); + assert.equal( + moment.duration('PT-6H3M').asSeconds(), + moment.duration({ h: -6, m: 3 }).asSeconds(), + 'python isodate 25' + ); + assert.equal( + moment.duration('-PT-6H3M').asSeconds(), + moment.duration({ h: 6, m: -3 }).asSeconds(), + 'python isodate 26' + ); + assert.equal( + moment.duration('-P-3Y-6M-4DT-12H-30M-5S').asSeconds(), + moment.duration({ y: 3, M: 6, d: 4, h: 12, m: 30, s: 5 }).asSeconds(), + 'python isodate 27' + ); + assert.equal( + moment.duration('P-3Y-6M-4DT-12H-30M-5S').asSeconds(), + moment + .duration({ y: -3, M: -6, d: -4, h: -12, m: -30, s: -5 }) + .asSeconds(), + 'python isodate 28' + ); + assert.equal( + moment.duration('-P-2W').asSeconds(), + moment.duration({ w: 2 }).asSeconds(), + 'python isodate 29' + ); + assert.equal( + moment.duration('P-2W').asSeconds(), + moment.duration({ w: -2 }).asSeconds(), + 'python isodate 30' + ); + assert.equal( + moment.duration('+P2Y').asSeconds(), + moment.duration({ y: 2 }).asSeconds(), + 'python isodate 31' + ); + assert.equal( + moment.duration('+P3Y6M4DT12H30M5S').asSeconds(), + moment.duration({ y: 3, M: 6, d: 4, h: 12, m: 30, s: 5 }).asSeconds(), + 'python isodate 32' + ); + assert.equal( + moment.duration('+P1DT2H3M4S').asSeconds(), + moment.duration({ d: 1, h: 2, m: 3, s: 4 }).asSeconds(), + 'python isodate 34' + ); + assert.equal( + moment.duration('PT+6H3M').asSeconds(), + moment.duration({ h: 6, m: 3 }).asSeconds(), + 'python isodate 35' + ); + assert.equal( + moment.duration('+PT+6H3M').asSeconds(), + moment.duration({ h: 6, m: 3 }).asSeconds(), + 'python isodate 36' + ); + assert.equal( + moment.duration('+PT-6H3M').asSeconds(), + moment.duration({ h: -6, m: 3 }).asSeconds(), + 'python isodate 37' + ); + assert.equal( + moment.duration('+P+3Y+6M+4DT+12H+30M+5S').asSeconds(), + moment.duration({ y: 3, M: 6, d: 4, h: 12, m: 30, s: 5 }).asSeconds(), + 'python isodate 38' + ); + assert.equal( + moment.duration('+P-3Y-6M-4DT-12H-30M-5S').asSeconds(), + moment + .duration({ y: -3, M: -6, d: -4, h: -12, m: -30, s: -5 }) + .asSeconds(), + 'python isodate 39' + ); + assert.equal( + moment.duration('P+3Y+6M+4DT+12H+30M+5S').asSeconds(), + moment.duration({ y: 3, M: 6, d: 4, h: 12, m: 30, s: 5 }).asSeconds(), + 'python isodate 40' + ); + assert.equal( + moment.duration('+P+2W').asSeconds(), + moment.duration({ w: 2 }).asSeconds(), + 'python isodate 41' + ); + assert.equal( + moment.duration('+P-2W').asSeconds(), + moment.duration({ w: -2 }).asSeconds(), + 'python isodate 41' + ); + assert.equal( + moment.duration('P+2W').asSeconds(), + moment.duration({ w: 2 }).asSeconds(), + 'python isodate 43' + ); + }); + + test('ISO 8601 misuse cases', function (assert) { + assert.equal(moment.duration('P').asSeconds(), 0, 'lonely P'); + assert.equal(moment.duration('PT').asSeconds(), 0, 'just P and T'); + assert.equal(moment.duration('P1H').asSeconds(), 0, 'missing T'); + assert.equal(moment.duration('P1D1Y').asSeconds(), 0, 'out of order'); + assert.equal( + moment.duration('PT.5S').asSeconds(), + 0.5, + 'accept no leading zero for decimal' + ); + assert.equal( + moment.duration('PT1,S').asSeconds(), + 1, + 'accept trailing decimal separator' + ); + assert.equal( + moment.duration('PT1M0,,5S').asSeconds(), + 60, + 'extra decimal separators are ignored as 0' + ); + }); + + test('humanize', function (assert) { + moment.locale('en'); + assert.equal( + moment.duration({ seconds: 44 }).humanize(), + 'a few seconds', + '44 seconds = a few seconds' + ); + assert.equal( + moment.duration({ seconds: 45 }).humanize(), + 'a minute', + '45 seconds = a minute' + ); + assert.equal( + moment.duration({ seconds: 89 }).humanize(), + 'a minute', + '89 seconds = a minute' + ); + assert.equal( + moment.duration({ seconds: 90 }).humanize(), + '2 minutes', + '90 seconds = 2 minutes' + ); + assert.equal( + moment.duration({ minutes: 44 }).humanize(), + '44 minutes', + '44 minutes = 44 minutes' + ); + assert.equal( + moment.duration({ minutes: 45 }).humanize(), + 'an hour', + '45 minutes = an hour' + ); + assert.equal( + moment.duration({ minutes: 89 }).humanize(), + 'an hour', + '89 minutes = an hour' + ); + assert.equal( + moment.duration({ minutes: 90 }).humanize(), + '2 hours', + '90 minutes = 2 hours' + ); + assert.equal( + moment.duration({ hours: 5 }).humanize(), + '5 hours', + '5 hours = 5 hours' + ); + assert.equal( + moment.duration({ hours: 21 }).humanize(), + '21 hours', + '21 hours = 21 hours' + ); + assert.equal( + moment.duration({ hours: 22 }).humanize(), + 'a day', + '22 hours = a day' + ); + assert.equal( + moment.duration({ hours: 35 }).humanize(), + 'a day', + '35 hours = a day' + ); + assert.equal( + moment.duration({ hours: 36 }).humanize(), + '2 days', + '36 hours = 2 days' + ); + assert.equal( + moment.duration({ days: 1 }).humanize(), + 'a day', + '1 day = a day' + ); + assert.equal( + moment.duration({ days: 5 }).humanize(), + '5 days', + '5 days = 5 days' + ); + assert.equal( + moment.duration({ weeks: 1 }).humanize(), + '7 days', + '1 week = 7 days' + ); + assert.equal( + moment.duration({ days: 25 }).humanize(), + '25 days', + '25 days = 25 days' + ); + assert.equal( + moment.duration({ days: 26 }).humanize(), + 'a month', + '26 days = a month' + ); + assert.equal( + moment.duration({ days: 30 }).humanize(), + 'a month', + '30 days = a month' + ); + assert.equal( + moment.duration({ days: 45 }).humanize(), + 'a month', + '45 days = a month' + ); + assert.equal( + moment.duration({ days: 46 }).humanize(), + '2 months', + '46 days = 2 months' + ); + assert.equal( + moment.duration({ days: 74 }).humanize(), + '2 months', + '74 days = 2 months' + ); + assert.equal( + moment.duration({ days: 77 }).humanize(), + '3 months', + '77 days = 3 months' + ); + assert.equal( + moment.duration({ months: 1 }).humanize(), + 'a month', + '1 month = a month' + ); + assert.equal( + moment.duration({ months: 5 }).humanize(), + '5 months', + '5 months = 5 months' + ); + assert.equal( + moment.duration({ days: 344 }).humanize(), + 'a year', + '344 days = a year' + ); + assert.equal( + moment.duration({ days: 345 }).humanize(), + 'a year', + '345 days = a year' + ); + assert.equal( + moment.duration({ days: 547 }).humanize(), + 'a year', + '547 days = a year' + ); + assert.equal( + moment.duration({ days: 548 }).humanize(), + '2 years', + '548 days = 2 years' + ); + assert.equal( + moment.duration({ years: 1 }).humanize(), + 'a year', + '1 year = a year' + ); + assert.equal( + moment.duration({ years: 5 }).humanize(), + '5 years', + '5 years = 5 years' + ); + assert.equal( + moment.duration(7200000).humanize(), + '2 hours', + '7200000 = 2 hours' + ); + }); + + test('humanize duration with suffix', function (assert) { + moment.locale('en'); + assert.equal( + moment.duration({ seconds: 44 }).humanize(true), + 'in a few seconds', + '44 seconds = a few seconds' + ); + assert.equal( + moment.duration({ seconds: -44 }).humanize(true), + 'a few seconds ago', + '44 seconds = a few seconds' + ); + assert.equal( + moment.duration({ seconds: +44 }).humanize(true), + 'in a few seconds', + '44 seconds = a few seconds' + ); + }); + + test('humanize duration with thresholds', function (assert) { + var thresholds = { s: 9 }; + moment.locale('en'); + assert.equal( + moment.duration({ seconds: -10 }).humanize(thresholds), + 'a minute', + '10 seconds = a minute (with thresholds)' + ); + assert.equal( + moment.duration({ seconds: 10 }).humanize(true, thresholds), + 'in a minute', + '10 seconds = a minute (with thresholds and suffix)' + ); + assert.equal( + moment.duration({ weeks: 3 }).humanize(true, { d: 7, w: 4 }), + 'in 3 weeks', + 'in 3 weeks = in 3 weeks (with thresholds and suffix)' + ); + assert.equal( + moment.duration({ weeks: 3 }).humanize(false, { d: 7, w: 4 }), + '3 weeks', + '3 weeks = 3 weeks (with thresholds and suffix == false)' + ); + }); + + test('bubble value up', function (assert) { + assert.equal( + moment.duration({ milliseconds: 61001 }).milliseconds(), + 1, + '61001 milliseconds has 1 millisecond left over' + ); + assert.equal( + moment.duration({ milliseconds: 61001 }).seconds(), + 1, + '61001 milliseconds has 1 second left over' + ); + assert.equal( + moment.duration({ milliseconds: 61001 }).minutes(), + 1, + '61001 milliseconds has 1 minute left over' + ); + + assert.equal( + moment.duration({ minutes: 350 }).minutes(), + 50, + '350 minutes has 50 minutes left over' + ); + assert.equal( + moment.duration({ minutes: 350 }).hours(), + 5, + '350 minutes has 5 hours left over' + ); + }); + + test('clipping', function (assert) { + assert.equal( + moment.duration({ months: 11 }).months(), + 11, + '11 months is 11 months' + ); + assert.equal( + moment.duration({ months: 11 }).years(), + 0, + '11 months makes no year' + ); + assert.equal( + moment.duration({ months: 12 }).months(), + 0, + '12 months is 0 months left over' + ); + assert.equal( + moment.duration({ months: 12 }).years(), + 1, + '12 months makes 1 year' + ); + assert.equal( + moment.duration({ months: 13 }).months(), + 1, + '13 months is 1 month left over' + ); + assert.equal( + moment.duration({ months: 13 }).years(), + 1, + '13 months makes 1 year' + ); + + assert.equal( + moment.duration({ days: 30 }).days(), + 30, + '30 days is 30 days' + ); + assert.equal( + moment.duration({ days: 30 }).months(), + 0, + '30 days makes no month' + ); + assert.equal( + moment.duration({ days: 31 }).days(), + 0, + '31 days is 0 days left over' + ); + assert.equal( + moment.duration({ days: 31 }).months(), + 1, + '31 days is a month' + ); + assert.equal( + moment.duration({ days: 32 }).days(), + 1, + '32 days is 1 day left over' + ); + assert.equal( + moment.duration({ days: 32 }).months(), + 1, + '32 days is a month' + ); + + assert.equal( + moment.duration({ hours: 23 }).hours(), + 23, + '23 hours is 23 hours' + ); + assert.equal( + moment.duration({ hours: 23 }).days(), + 0, + '23 hours makes no day' + ); + assert.equal( + moment.duration({ hours: 24 }).hours(), + 0, + '24 hours is 0 hours left over' + ); + assert.equal( + moment.duration({ hours: 24 }).days(), + 1, + '24 hours makes 1 day' + ); + assert.equal( + moment.duration({ hours: 25 }).hours(), + 1, + '25 hours is 1 hour left over' + ); + assert.equal( + moment.duration({ hours: 25 }).days(), + 1, + '25 hours makes 1 day' + ); + }); + + test('bubbling consistency', function (assert) { + var days = 0, + months = 0, + newDays, + newMonths, + totalDays, + d; + for (totalDays = 1; totalDays <= 500; ++totalDays) { + d = moment.duration(totalDays, 'days'); + newDays = d.days(); + newMonths = d.months() + d.years() * 12; + assert.ok( + (months === newMonths && days + 1 === newDays) || + (months + 1 === newMonths && newDays === 0), + 'consistent total days ' + + totalDays + + ' was ' + + months + + ' ' + + days + + ' now ' + + newMonths + + ' ' + + newDays + ); + days = newDays; + months = newMonths; + } + }); + + test('effective equivalency', function (assert) { + assert.deepEqual( + moment.duration({ seconds: 1 })._data, + moment.duration({ milliseconds: 1000 })._data, + '1 second is the same as 1000 milliseconds' + ); + assert.deepEqual( + moment.duration({ seconds: 60 })._data, + moment.duration({ minutes: 1 })._data, + '1 minute is the same as 60 seconds' + ); + assert.deepEqual( + moment.duration({ minutes: 60 })._data, + moment.duration({ hours: 1 })._data, + '1 hour is the same as 60 minutes' + ); + assert.deepEqual( + moment.duration({ hours: 24 })._data, + moment.duration({ days: 1 })._data, + '1 day is the same as 24 hours' + ); + assert.deepEqual( + moment.duration({ days: 7 })._data, + moment.duration({ weeks: 1 })._data, + '1 week is the same as 7 days' + ); + assert.deepEqual( + moment.duration({ days: 31 })._data, + moment.duration({ months: 1 })._data, + '1 month is the same as 30 days' + ); + assert.deepEqual( + moment.duration({ months: 12 })._data, + moment.duration({ years: 1 })._data, + '1 years is the same as 12 months' + ); + }); + + test('asGetters', function (assert) { + // 400 years have exactly 146097 days + + // years + assert.equal(moment.duration(1, 'year').asYears(), 1, '1 year as years'); + assert.equal( + moment.duration(1, 'year').asQuarters(), + 4, + '1 year as quarters' + ); + assert.equal(moment.duration(1, 'year').asMonths(), 12, '1 year as months'); + assert.equal( + moment.duration(400, 'year').asMonths(), + 4800, + '400 years as months' + ); + assert.equal( + moment.duration(1, 'year').asWeeks().toFixed(3), + 52.143, + '1 year as weeks' + ); + assert.equal(moment.duration(1, 'year').asDays(), 365, '1 year as days'); + assert.equal(moment.duration(2, 'year').asDays(), 730, '2 years as days'); + assert.equal(moment.duration(3, 'year').asDays(), 1096, '3 years as days'); + assert.equal(moment.duration(4, 'year').asDays(), 1461, '4 years as days'); + assert.equal( + moment.duration(400, 'year').asDays(), + 146097, + '400 years as days' + ); + assert.equal(moment.duration(1, 'year').asHours(), 8760, '1 year as hours'); + assert.equal( + moment.duration(1, 'year').asMinutes(), + 525600, + '1 year as minutes' + ); + assert.equal( + moment.duration(1, 'year').asSeconds(), + 31536000, + '1 year as seconds' + ); + assert.equal( + moment.duration(1, 'year').asMilliseconds(), + 31536000000, + '1 year as milliseconds' + ); + + // quarters + assert.equal( + moment.duration(1, 'quarter').asYears(), + 0.25, + '1 quarter as years' + ); + assert.equal( + moment.duration(1, 'quarter').asQuarters(), + 1, + '1 quarter as quarters' + ); + assert.equal( + moment.duration(1, 'quarter').asMonths(), + 3, + '1 quarter as months' + ); + assert.equal( + moment.duration(2, 'quarter').asWeeks().toFixed(3), + 26.143, + '2 month as quarters' + ); + assert.equal( + moment.duration(1, 'quarter').asDays(), + 91, + '1 quarter as days' + ); + assert.equal( + moment.duration(2, 'quarter').asDays(), + 183, + '2 quarter as days' + ); + assert.equal( + moment.duration(3, 'quarter').asDays(), + 274, + '4 quarter as days' + ); + assert.equal( + moment.duration(4, 'quarter').asDays(), + 365, + '4 quarter as days' + ); + assert.equal( + moment.duration(1, 'quarter').asHours(), + 2184, + '1 quarter as hours' + ); + assert.equal( + moment.duration(3, 'quarter').asHours(), + 6576, + '3 quarter as hours' + ); + assert.equal( + moment.duration(2, 'quarter').asMinutes(), + 263520, + '2 quarter as minutes' + ); + assert.equal( + moment.duration(3, 'quarter').asSeconds(), + 23673600, + '3 quarter as seconds' + ); + assert.equal( + moment.duration(1, 'quarter').asMilliseconds(), + 7862400000, + '1 quarter as milliseconds' + ); + + // months + assert.equal( + moment.duration(1, 'month').asYears().toFixed(4), + 0.0833, + '1 month as years' + ); + assert.equal( + moment.duration(6, 'month').asQuarters(), + 2, + '6 month as quarters' + ); + assert.equal( + moment.duration(1, 'month').asMonths(), + 1, + '1 month as months' + ); + assert.equal( + moment.duration(1, 'month').asWeeks().toFixed(3), + 4.286, + '1 month as weeks' + ); + assert.equal(moment.duration(1, 'month').asDays(), 30, '1 month as days'); + assert.equal(moment.duration(2, 'month').asDays(), 61, '2 months as days'); + assert.equal(moment.duration(3, 'month').asDays(), 91, '3 months as days'); + assert.equal(moment.duration(4, 'month').asDays(), 122, '4 months as days'); + assert.equal(moment.duration(5, 'month').asDays(), 152, '5 months as days'); + assert.equal(moment.duration(6, 'month').asDays(), 183, '6 months as days'); + assert.equal(moment.duration(7, 'month').asDays(), 213, '7 months as days'); + assert.equal(moment.duration(8, 'month').asDays(), 243, '8 months as days'); + assert.equal(moment.duration(9, 'month').asDays(), 274, '9 months as days'); + assert.equal( + moment.duration(10, 'month').asDays(), + 304, + '10 months as days' + ); + assert.equal( + moment.duration(11, 'month').asDays(), + 335, + '11 months as days' + ); + assert.equal( + moment.duration(12, 'month').asDays(), + 365, + '12 months as days' + ); + assert.equal( + moment.duration(24, 'month').asDays(), + 730, + '24 months as days' + ); + assert.equal( + moment.duration(36, 'month').asDays(), + 1096, + '36 months as days' + ); + assert.equal( + moment.duration(48, 'month').asDays(), + 1461, + '48 months as days' + ); + assert.equal( + moment.duration(4800, 'month').asDays(), + 146097, + '4800 months as days' + ); + assert.equal( + moment.duration(1, 'month').asHours(), + 720, + '1 month as hours' + ); + assert.equal( + moment.duration(1, 'month').asMinutes(), + 43200, + '1 month as minutes' + ); + assert.equal( + moment.duration(1, 'month').asSeconds(), + 2592000, + '1 month as seconds' + ); + assert.equal( + moment.duration(1, 'month').asMilliseconds(), + 2592000000, + '1 month as milliseconds' + ); + + // weeks + assert.equal( + moment.duration(1, 'week').asYears().toFixed(4), + 0.0192, + '1 week as years' + ); + assert.equal( + moment.duration(1, 'week').asQuarters().toFixed(4), + 0.0767, + '1 week as quarters' + ); + assert.equal( + moment.duration(1, 'week').asMonths().toFixed(3), + 0.23, + '1 week as months' + ); + assert.equal(moment.duration(1, 'week').asWeeks(), 1, '1 week as weeks'); + assert.equal(moment.duration(1, 'week').asDays(), 7, '1 week as days'); + assert.equal(moment.duration(1, 'week').asHours(), 168, '1 week as hours'); + assert.equal( + moment.duration(1, 'week').asMinutes(), + 10080, + '1 week as minutes' + ); + assert.equal( + moment.duration(1, 'week').asSeconds(), + 604800, + '1 week as seconds' + ); + assert.equal( + moment.duration(1, 'week').asMilliseconds(), + 604800000, + '1 week as milliseconds' + ); + + // days + assert.equal( + moment.duration(1, 'day').asYears().toFixed(4), + 0.0027, + '1 day as years' + ); + assert.equal( + moment.duration(1, 'day').asQuarters().toFixed(4), + 0.011, + '1 day as quarters' + ); + assert.equal( + moment.duration(1, 'day').asMonths().toFixed(3), + 0.033, + '1 day as months' + ); + assert.equal( + moment.duration(1, 'day').asWeeks().toFixed(3), + 0.143, + '1 day as weeks' + ); + assert.equal(moment.duration(1, 'day').asDays(), 1, '1 day as days'); + assert.equal(moment.duration(1, 'day').asHours(), 24, '1 day as hours'); + assert.equal( + moment.duration(1, 'day').asMinutes(), + 1440, + '1 day as minutes' + ); + assert.equal( + moment.duration(1, 'day').asSeconds(), + 86400, + '1 day as seconds' + ); + assert.equal( + moment.duration(1, 'day').asMilliseconds(), + 86400000, + '1 day as milliseconds' + ); + + // hours + assert.equal( + moment.duration(1, 'hour').asYears().toFixed(6), + 0.000114, + '1 hour as years' + ); + assert.equal( + moment.duration(1, 'hour').asQuarters().toFixed(6), + 0.000456, + '1 hour as quarters' + ); + assert.equal( + moment.duration(1, 'hour').asMonths().toFixed(5), + 0.00137, + '1 hour as months' + ); + assert.equal( + moment.duration(1, 'hour').asWeeks().toFixed(5), + 0.00595, + '1 hour as weeks' + ); + assert.equal( + moment.duration(1, 'hour').asDays().toFixed(4), + 0.0417, + '1 hour as days' + ); + assert.equal(moment.duration(1, 'hour').asHours(), 1, '1 hour as hours'); + assert.equal( + moment.duration(1, 'hour').asMinutes(), + 60, + '1 hour as minutes' + ); + assert.equal( + moment.duration(1, 'hour').asSeconds(), + 3600, + '1 hour as seconds' + ); + assert.equal( + moment.duration(1, 'hour').asMilliseconds(), + 3600000, + '1 hour as milliseconds' + ); + + // minutes + assert.equal( + moment.duration(1, 'minute').asYears().toFixed(8), + 0.0000019, + '1 minute as years' + ); + assert.equal( + moment.duration(1, 'minute').asQuarters().toFixed(8), + 0.00000761, + '1 minute as quarters' + ); + assert.equal( + moment.duration(1, 'minute').asMonths().toFixed(7), + 0.0000228, + '1 minute as months' + ); + assert.equal( + moment.duration(1, 'minute').asWeeks().toFixed(7), + 0.0000992, + '1 minute as weeks' + ); + assert.equal( + moment.duration(1, 'minute').asDays().toFixed(6), + 0.000694, + '1 minute as days' + ); + assert.equal( + moment.duration(1, 'minute').asHours().toFixed(4), + 0.0167, + '1 minute as hours' + ); + assert.equal( + moment.duration(1, 'minute').asMinutes(), + 1, + '1 minute as minutes' + ); + assert.equal( + moment.duration(1, 'minute').asSeconds(), + 60, + '1 minute as seconds' + ); + assert.equal( + moment.duration(1, 'minute').asMilliseconds(), + 60000, + '1 minute as milliseconds' + ); + + // seconds + assert.equal( + moment.duration(1, 'second').asYears().toFixed(10), + 0.0000000317, + '1 second as years' + ); + assert.equal( + moment.duration(1, 'second').asQuarters().toFixed(10), + 0.0000001268, + '1 second as quarters' + ); + assert.equal( + moment.duration(1, 'second').asMonths().toFixed(9), + 0.00000038, + '1 second as months' + ); + assert.equal( + moment.duration(1, 'second').asWeeks().toFixed(8), + 0.00000165, + '1 second as weeks' + ); + assert.equal( + moment.duration(1, 'second').asDays().toFixed(7), + 0.0000116, + '1 second as days' + ); + assert.equal( + moment.duration(1, 'second').asHours().toFixed(6), + 0.000278, + '1 second as hours' + ); + assert.equal( + moment.duration(1, 'second').asMinutes().toFixed(4), + 0.0167, + '1 second as minutes' + ); + assert.equal( + moment.duration(1, 'second').asSeconds(), + 1, + '1 second as seconds' + ); + assert.equal( + moment.duration(1, 'second').asMilliseconds(), + 1000, + '1 second as milliseconds' + ); + + // milliseconds + assert.equal( + moment.duration(1, 'millisecond').asYears().toFixed(13), + 0.0000000000317, + '1 millisecond as years' + ); + assert.equal( + moment.duration(1, 'millisecond').asQuarters().toFixed(13), + 0.0000000001268, + '1 millisecond as quarters' + ); + assert.equal( + moment.duration(1, 'millisecond').asMonths().toFixed(12), + 0.00000000038, + '1 millisecond as months' + ); + assert.equal( + moment.duration(1, 'millisecond').asWeeks().toFixed(11), + 0.00000000165, + '1 millisecond as weeks' + ); + assert.equal( + moment.duration(1, 'millisecond').asDays().toFixed(10), + 0.0000000116, + '1 millisecond as days' + ); + assert.equal( + moment.duration(1, 'millisecond').asHours().toFixed(9), + 0.000000278, + '1 millisecond as hours' + ); + assert.equal( + moment.duration(1, 'millisecond').asMinutes().toFixed(7), + 0.0000167, + '1 millisecond as minutes' + ); + assert.equal( + moment.duration(1, 'millisecond').asSeconds(), + 0.001, + '1 millisecond as seconds' + ); + assert.equal( + moment.duration(1, 'millisecond').asMilliseconds(), + 1, + '1 millisecond as milliseconds' + ); + }); + + test('as getters for small units', function (assert) { + var dS = moment.duration(1, 'milliseconds'), + ds = moment.duration(3, 'seconds'), + dm = moment.duration(13, 'minutes'); + + // Tests for issue #1867. + // Floating point errors for small duration units were introduced in version 2.8.0. + assert.equal(dS.as('milliseconds'), 1, 'as("milliseconds")'); + assert.equal(dS.asMilliseconds(), 1, 'asMilliseconds()'); + assert.equal(ds.as('seconds'), 3, 'as("seconds")'); + assert.equal(ds.asSeconds(), 3, 'asSeconds()'); + assert.equal(dm.as('minutes'), 13, 'as("minutes")'); + assert.equal(dm.asMinutes(), 13, 'asMinutes()'); + }); + + test('minutes getter for floating point hours', function (assert) { + // Tests for issue #2978. + // For certain floating point hours, .minutes() getter produced incorrect values due to the rounding errors + assert.equal(moment.duration(2.3, 'h').minutes(), 18, 'minutes()'); + assert.equal(moment.duration(4.1, 'h').minutes(), 6, 'minutes()'); + }); + + test('isDuration', function (assert) { + assert.ok( + moment.isDuration(moment.duration(12345678)), + 'correctly says true' + ); + assert.ok(!moment.isDuration(moment()), 'moment object is not a duration'); + assert.ok( + !moment.isDuration({ milliseconds: 1 }), + 'plain object is not a duration' + ); + }); + + test('add', function (assert) { + var d = moment.duration({ months: 4, weeks: 3, days: 2 }); + // for some reason, d._data._months does not get updated; use d._months instead. + assert.equal(d.add(1, 'month')._months, 5, 'Add months'); + assert.equal(d.add(5, 'days')._days, 28, 'Add days'); + assert.equal(d.add(10000)._milliseconds, 10000, 'Add milliseconds'); + assert.equal( + d.add({ h: 23, m: 59 })._milliseconds, + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 10000, + 'Add hour:minute' + ); + }); + + test('add to moment', function (assert) { + var d = moment.duration({ months: 1, seconds: -1 }), + m = moment('2017-03-01').add(d); + assert.equal(m.month(), 2, 'Adds months before time'); + assert.equal(m.date(), 31, 'Adds time after months'); + }); + + test('add and bubble', function (assert) { + var d; + + assert.equal( + moment.duration(1, 'second').add(1000, 'milliseconds').seconds(), + 2, + 'Adding milliseconds should bubble up to seconds' + ); + assert.equal( + moment.duration(1, 'minute').add(60, 'second').minutes(), + 2, + 'Adding seconds should bubble up to minutes' + ); + assert.equal( + moment.duration(1, 'hour').add(60, 'minutes').hours(), + 2, + 'Adding minutes should bubble up to hours' + ); + assert.equal( + moment.duration(1, 'day').add(24, 'hours').days(), + 2, + 'Adding hours should bubble up to days' + ); + + d = moment.duration(-1, 'day').add(1, 'hour'); + assert.equal(d.hours(), -23, '-1 day + 1 hour == -23 hour (component)'); + assert.equal(d.asHours(), -23, '-1 day + 1 hour == -23 hours'); + + d = moment.duration(+1, 'day').add(1, 'hour'); + assert.equal(d.hours(), 1, '1 day + 1 hour == 1 hour (component)'); + assert.equal(d.asHours(), 25, '1 day + 1 hour == 25 hour'); + + d = moment.duration(-1, 'year').add(1, 'day'); + assert.equal(d.days(), -30, '- 1 year + 1 day == -30 days (component)'); + assert.equal(d.months(), -11, '- 1 year + 1 day == -11 months (component)'); + assert.equal(d.years(), 0, '- 1 year + 1 day == 0 years (component)'); + assert.equal(d.asDays(), -364, '- 1 year + 1 day == -364 days'); + + d = moment.duration(+1, 'year').add(1, 'day'); + assert.equal(d.days(), 1, '+ 1 year + 1 day == 1 days (component)'); + assert.equal(d.months(), 0, '+ 1 year + 1 day == 0 month (component)'); + assert.equal(d.years(), 1, '+ 1 year + 1 day == 1 year (component)'); + assert.equal(d.asDays(), 366, '+ 1 year + 1 day == +366 day'); + + d = moment.duration(-1, 'year').add(1, 'hour'); + assert.equal(d.hours(), -23, '- 1 year + 1 hour == -23 hours (component)'); + assert.equal(d.days(), -30, '- 1 year + 1 hour == -30 days (component)'); + assert.equal( + d.months(), + -11, + '- 1 year + 1 hour == -11 months (component)' + ); + assert.equal(d.years(), 0, '- 1 year + 1 hour == 0 years (component)'); + + d = moment.duration(+1, 'year').add(1, 'hour'); + assert.equal(d.hours(), 1, '+ 1 year + 1 hour == 1 hour (component)'); + assert.equal(d.days(), 0, '+ 1 year + 1 hour == 1 day (component)'); + assert.equal(d.months(), 0, '+ 1 year + 1 hour == 1 month (component)'); + assert.equal(d.years(), 1, '+ 1 year + 1 hour == 1 year (component)'); + }); + + test('subtract and bubble', function (assert) { + var d; + + assert.equal( + moment.duration(2, 'second').subtract(1000, 'milliseconds').seconds(), + 1, + 'Subtracting milliseconds should bubble up to seconds' + ); + assert.equal( + moment.duration(2, 'minute').subtract(60, 'second').minutes(), + 1, + 'Subtracting seconds should bubble up to minutes' + ); + assert.equal( + moment.duration(2, 'hour').subtract(60, 'minutes').hours(), + 1, + 'Subtracting minutes should bubble up to hours' + ); + assert.equal( + moment.duration(2, 'day').subtract(24, 'hours').days(), + 1, + 'Subtracting hours should bubble up to days' + ); + + d = moment.duration(1, 'day').subtract(1, 'hour'); + assert.equal(d.hours(), 23, '1 day - 1 hour == 23 hour (component)'); + assert.equal(d.asHours(), 23, '1 day - 1 hour == 23 hours'); + + d = moment.duration(1, 'year').subtract(1, 'day'); + assert.equal(d.days(), 30, '1 year - 1 day == 30 days (component)'); + assert.equal(d.months(), 11, '1 year - 1 day == 11 months (component)'); + assert.equal(d.years(), 0, '1 year - 1 day == 0 years (component)'); + assert.equal(d.asDays(), 364, '1 year - 1 day == 364 days'); + + d = moment.duration(1, 'year').subtract(1, 'hour'); + assert.equal(d.hours(), 23, '1 year - 1 hour == 23 hours (component)'); + assert.equal(d.days(), 30, '1 year - 1 hour == 30 days (component)'); + assert.equal(d.months(), 11, '1 year - 1 hour == 11 months (component)'); + assert.equal(d.years(), 0, '1 year - 1 hour == 0 years (component)'); + }); + + test('subtract', function (assert) { + var d = moment.duration({ months: 2, weeks: 2, days: 0, hours: 5 }); + // for some reason, d._data._months does not get updated; use d._months instead. + assert.equal(d.subtract(1, 'months')._months, 1, 'Subtract months'); + assert.equal(d.subtract(14, 'days')._days, 0, 'Subtract days'); + assert.equal( + d.subtract(10000)._milliseconds, + 5 * 60 * 60 * 1000 - 10000, + 'Subtract milliseconds' + ); + assert.equal( + d.subtract({ h: 1, m: 59 })._milliseconds, + 3 * 60 * 60 * 1000 + 1 * 60 * 1000 - 10000, + 'Subtract hour:minute' + ); + }); + + test('JSON.stringify duration', function (assert) { + var d = moment.duration(1024, 'h'); + + assert.equal( + JSON.stringify(d), + '"' + d.toISOString() + '"', + 'JSON.stringify on duration should return ISO string' + ); + }); + + test('duration plugins', function (assert) { + var durationObject = moment.duration(); + moment.duration.fn.foo = function (arg) { + assert.equal(this, durationObject); + assert.equal(arg, 5); + }; + durationObject.foo(5); + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + 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); + } + + module('format'); + + test('format using constants', function (assert) { + var m = moment('2016-01-02T23:40:40.678'); + assert.equal( + m.format(moment.HTML5_FMT.DATETIME_LOCAL), + '2016-01-02T23:40', + 'datetime local format constant' + ); + assert.equal( + m.format(moment.HTML5_FMT.DATETIME_LOCAL_SECONDS), + '2016-01-02T23:40:40', + 'datetime local format constant' + ); + assert.equal( + m.format(moment.HTML5_FMT.DATETIME_LOCAL_MS), + '2016-01-02T23:40:40.678', + 'datetime local format constant with seconds and millis' + ); + assert.equal( + m.format(moment.HTML5_FMT.DATE), + '2016-01-02', + 'date format constant' + ); + assert.equal( + m.format(moment.HTML5_FMT.TIME), + '23:40', + 'time format constant' + ); + assert.equal( + m.format(moment.HTML5_FMT.TIME_SECONDS), + '23:40:40', + 'time format constant with seconds' + ); + assert.equal( + m.format(moment.HTML5_FMT.TIME_MS), + '23:40:40.678', + 'time format constant with seconds and millis' + ); + assert.equal( + m.format(moment.HTML5_FMT.WEEK), + '2015-W53', + 'week format constant' + ); + assert.equal( + m.format(moment.HTML5_FMT.MONTH), + '2016-01', + 'month format constant' + ); + }); + + test('format YY', function (assert) { + var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); + assert.equal(b.format('YY'), '09', 'YY ---> 09'); + }); + + test('format escape brackets', function (assert) { + moment.locale('en'); + + var b = moment(new Date(2009, 1, 14, 15, 25, 50, 125)); + assert.equal(b.format('[day]'), 'day', 'Single bracket'); + assert.equal(b.format('[day] YY [YY]'), 'day 09 YY', 'Double bracket'); + assert.equal(b.format('[YY'), '[09', 'Un-ended bracket'); + assert.equal(b.format('[[YY]]'), '[YY]', 'Double nested brackets'); + assert.equal(b.format('[[]'), '[', 'Escape open bracket'); + assert.equal(b.format('[Last]'), 'Last', 'localized tokens'); + assert.equal( + b.format('[L] L'), + 'L 02/14/2009', + 'localized tokens with escaped localized tokens' + ); + assert.equal( + b.format('[L LL LLL LLLL aLa]'), + 'L LL LLL LLLL aLa', + 'localized tokens with escaped localized tokens' + ); + assert.equal( + b.format('[LLL] LLL'), + 'LLL February 14, 2009 3:25 PM', + 'localized tokens with escaped localized tokens (recursion)' + ); + assert.equal(b.format('YYYY[\n]DD[\n]'), '2009\n14\n', 'Newlines'); + }); + + test('handle negative years', function (assert) { + moment.locale('en'); + assert.equal( + moment.utc().year(-1).format('YY'), + '-01', + 'YY with negative year' + ); + assert.equal( + moment.utc().year(-1).format('YYYY'), + '-0001', + 'YYYY with negative year' + ); + assert.equal( + moment.utc().year(-12).format('YY'), + '-12', + 'YY with negative year' + ); + assert.equal( + moment.utc().year(-12).format('YYYY'), + '-0012', + 'YYYY with negative year' + ); + assert.equal( + moment.utc().year(-123).format('YY'), + '-23', + 'YY with negative year' + ); + assert.equal( + moment.utc().year(-123).format('YYYY'), + '-0123', + 'YYYY with negative year' + ); + assert.equal( + moment.utc().year(-1234).format('YY'), + '-34', + 'YY with negative year' + ); + assert.equal( + moment.utc().year(-1234).format('YYYY'), + '-1234', + 'YYYY with negative year' + ); + assert.equal( + moment.utc().year(-12345).format('YY'), + '-45', + 'YY with negative year' + ); + assert.equal( + moment.utc().year(-12345).format('YYYY'), + '-12345', + 'YYYY with negative year' + ); + }); + + test('format milliseconds', function (assert) { + var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123)); + assert.equal(b.format('S'), '1', 'Deciseconds'); + assert.equal(b.format('SS'), '12', 'Centiseconds'); + assert.equal(b.format('SSS'), '123', 'Milliseconds'); + b.milliseconds(789); + assert.equal(b.format('S'), '7', 'Deciseconds'); + assert.equal(b.format('SS'), '78', 'Centiseconds'); + assert.equal(b.format('SSS'), '789', 'Milliseconds'); + }); + + test('format timezone', function (assert) { + var b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)); + assert.ok( + b.format('Z').match(/^[\+\-]\d\d:\d\d$/), + b.format('Z') + " should be something like '+07:30'" + ); + assert.ok( + b.format('ZZ').match(/^[\+\-]\d{4}$/), + b.format('ZZ') + " should be something like '+0700'" + ); + }); + + test('format multiple with utc offset', function (assert) { + var b = moment('2012-10-08 -1200', [ + 'YYYY-MM-DD HH:mm ZZ', + 'YYYY-MM-DD ZZ', + 'YYYY-MM-DD', + ]); + assert.equal( + b.format('YYYY-MM'), + '2012-10', + 'Parsing multiple formats should not crash with different sized formats' + ); + }); + + test('isDST', function (assert) { + var janOffset = new Date(2011, 0, 1).getTimezoneOffset(), + julOffset = new Date(2011, 6, 1).getTimezoneOffset(), + janIsDst = janOffset < julOffset, + julIsDst = julOffset < janOffset, + jan1 = moment([2011]), + jul1 = moment([2011, 6]); + + if (janIsDst && julIsDst) { + assert.ok(0, 'January and July cannot both be in DST'); + assert.ok(0, 'January and July cannot both be in DST'); + } else if (janIsDst) { + assert.ok(jan1.isDST(), 'January 1 is DST'); + assert.ok(!jul1.isDST(), 'July 1 is not DST'); + } else if (julIsDst) { + assert.ok(!jan1.isDST(), 'January 1 is not DST'); + assert.ok(jul1.isDST(), 'July 1 is DST'); + } else { + assert.ok(!jan1.isDST(), 'January 1 is not DST'); + assert.ok(!jul1.isDST(), 'July 1 is not DST'); + } + }); + + test('unix timestamp', function (assert) { + var m = moment('1234567890.123', 'X'); + assert.equal( + m.format('X'), + '1234567890', + 'unix timestamp without milliseconds' + ); + assert.equal( + m.format('X.S'), + '1234567890.1', + 'unix timestamp with deciseconds' + ); + assert.equal( + m.format('X.SS'), + '1234567890.12', + 'unix timestamp with centiseconds' + ); + assert.equal( + m.format('X.SSS'), + '1234567890.123', + 'unix timestamp with milliseconds' + ); + + m = moment(1234567890.123, 'X'); + assert.equal(m.format('X'), '1234567890', 'unix timestamp as integer'); + }); + + test('unix offset milliseconds', function (assert) { + var m = moment('1234567890123', 'x'); + assert.equal(m.format('x'), '1234567890123', 'unix offset in milliseconds'); + + m = moment(1234567890123, 'x'); + assert.equal( + m.format('x'), + '1234567890123', + 'unix offset in milliseconds as integer' + ); + }); + + test('utcOffset sanity checks', function (assert) { + assert.equal( + moment().utcOffset() % 15, + 0, + 'utc offset should be a multiple of 15 (was ' + + moment().utcOffset() + + ')' + ); + + assert.equal( + moment().utcOffset(), + -new Date().getTimezoneOffset(), + 'utcOffset should return the opposite of getTimezoneOffset' + ); + }); + + test('default format', function (assert) { + var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\d[\+\-]\d\d:\d\d/; + assert.ok( + isoRegex.exec(moment().format()), + 'default format (' + moment().format() + ') should match ISO' + ); + }); + + test('default UTC format', function (assert) { + var isoRegex = /\d{4}.\d\d.\d\dT\d\d.\d\d.\d\dZ/; + assert.ok( + isoRegex.exec(moment.utc().format()), + 'default UTC format (' + moment.utc().format() + ') should match ISO' + ); + }); + + test('toJSON', function (assert) { + var supportsJson = + typeof JSON !== 'undefined' && + JSON.stringify && + JSON.stringify.call, + date = moment('2012-10-09T21:30:40.678+0100'); + + assert.equal( + date.toJSON(), + '2012-10-09T20:30:40.678Z', + 'should output ISO8601 on moment.fn.toJSON' + ); + + if (supportsJson) { + assert.equal( + JSON.stringify({ + date: date, + }), + '{"date":"2012-10-09T20:30:40.678Z"}', + 'should output ISO8601 on JSON.stringify' + ); + } + }); + + test('toISOString', function (assert) { + var date = moment.utc('2012-10-09T20:30:40.678'); + + assert.equal( + date.toISOString(), + '2012-10-09T20:30:40.678Z', + 'should output ISO8601 on moment.fn.toISOString' + ); + + // big years + date = moment.utc('+020123-10-09T20:30:40.678'); + assert.equal( + date.toISOString(), + '+020123-10-09T20:30:40.678Z', + 'ISO8601 format on big positive year' + ); + // negative years + date = moment.utc('-000001-10-09T20:30:40.678'); + assert.equal( + date.toISOString(), + '-000001-10-09T20:30:40.678Z', + 'ISO8601 format on negative year' + ); + // big negative years + date = moment.utc('-020123-10-09T20:30:40.678'); + assert.equal( + date.toISOString(), + '-020123-10-09T20:30:40.678Z', + 'ISO8601 format on big negative year' + ); + + //invalid dates + date = moment.utc('2017-12-32'); + assert.equal( + date.toISOString(), + null, + 'An invalid date to iso string is null' + ); + }); + + test('toISOString without UTC conversion', function (assert) { + var date = moment.utc('2016-12-31T19:53:45.678').utcOffset('+05:30'); + + assert.equal( + date.toISOString(true), + '2017-01-01T01:23:45.678+05:30', + 'should output ISO8601 on moment.fn.toISOString' + ); + + // big years + date = moment.utc('+020122-12-31T19:53:45.678').utcOffset('+05:30'); + assert.equal( + date.toISOString(true), + '+020123-01-01T01:23:45.678+05:30', + 'ISO8601 format on big positive year' + ); + // negative years + date = moment.utc('-000002-12-31T19:53:45.678').utcOffset('+05:30'); + assert.equal( + date.toISOString(true), + '-000001-01-01T01:23:45.678+05:30', + 'ISO8601 format on negative year' + ); + // big negative years + date = moment.utc('-020124-12-31T19:53:45.678').utcOffset('+05:30'); + assert.equal( + date.toISOString(true), + '-020123-01-01T01:23:45.678+05:30', + 'ISO8601 format on big negative year' + ); + + //invalid dates + date = moment.utc('2017-12-32').utcOffset('+05:30'); + assert.equal( + date.toISOString(true), + null, + 'An invalid date to iso string is null' + ); + }); + + // See https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + test('inspect', function (assert) { + function roundtrip(m) { + return new Function('moment', 'return ' + m.inspect())(moment); + } + function testInspect(date, string) { + var inspected = date.inspect(); + assert.equal(inspected, string); + assert.ok(date.isSame(roundtrip(date)), 'Tried to parse ' + inspected); + } + + testInspect( + moment('2012-10-09T20:30:40.678'), + 'moment("2012-10-09T20:30:40.678")' + ); + testInspect( + moment('+020123-10-09T20:30:40.678'), + 'moment("+020123-10-09T20:30:40.678")' + ); + testInspect( + moment.utc('2012-10-09T20:30:40.678'), + 'moment.utc("2012-10-09T20:30:40.678+00:00")' + ); + testInspect( + moment.utc('+020123-10-09T20:30:40.678'), + 'moment.utc("+020123-10-09T20:30:40.678+00:00")' + ); + testInspect( + moment.utc('+020123-10-09T20:30:40.678+01:00'), + 'moment.utc("+020123-10-09T19:30:40.678+00:00")' + ); + testInspect( + moment.parseZone('2016-06-11T17:30:40.678+0430'), + 'moment.parseZone("2016-06-11T17:30:40.678+04:30")' + ); + testInspect( + moment.parseZone('+112016-06-11T17:30:40.678+0430'), + 'moment.parseZone("+112016-06-11T17:30:40.678+04:30")' + ); + + assert.equal( + moment(new Date('nope')).inspect(), + 'moment.invalid(/* Invalid Date */)' + ); + assert.equal( + moment('blah', 'YYYY').inspect(), + 'moment.invalid(/* blah */)' + ); + }); + + test('long years', function (assert) { + assert.equal( + moment.utc().year(2).format('YYYYYY'), + '+000002', + 'small year with YYYYYY' + ); + assert.equal( + moment.utc().year(2012).format('YYYYYY'), + '+002012', + 'regular year with YYYYYY' + ); + assert.equal( + moment.utc().year(20123).format('YYYYYY'), + '+020123', + 'big year with YYYYYY' + ); + + assert.equal( + moment.utc().year(-1).format('YYYYYY'), + '-000001', + 'small negative year with YYYYYY' + ); + assert.equal( + moment.utc().year(-2012).format('YYYYYY'), + '-002012', + 'negative year with YYYYYY' + ); + assert.equal( + moment.utc().year(-20123).format('YYYYYY'), + '-020123', + 'big negative year with YYYYYY' + ); + }); + + test('toISOString() when 0 year', function (assert) { + // https://github.com/moment/moment/issues/3765 + var date = moment('0000-01-01T21:00:00.000Z'); + assert.equal(date.toISOString(), '0000-01-01T21:00:00.000Z'); + assert.equal(date.toDate().toISOString(), '0000-01-01T21:00:00.000Z'); + }); + + test('iso week formats', function (assert) { + // https://en.wikipedia.org/wiki/ISO_week_date + var cases = { + '2005-01-02': '2004-53', + '2005-12-31': '2005-52', + '2007-01-01': '2007-01', + '2007-12-30': '2007-52', + '2007-12-31': '2008-01', + '2008-01-01': '2008-01', + '2008-12-28': '2008-52', + '2008-12-29': '2009-01', + '2008-12-30': '2009-01', + '2008-12-31': '2009-01', + '2009-01-01': '2009-01', + '2009-12-31': '2009-53', + '2010-01-01': '2009-53', + '2010-01-02': '2009-53', + '2010-01-03': '2009-53', + '404-12-31': '0404-53', + '405-12-31': '0405-52', + }; + + eachOwnProp(cases, function (i) { + var isoWeek, formatted2, formatted1; + isoWeek = cases[i].split('-').pop(); + formatted2 = moment(i, 'YYYY-MM-DD').format('WW'); + assert.equal( + isoWeek, + formatted2, + i + ': WW should be ' + isoWeek + ', but ' + formatted2 + ); + isoWeek = isoWeek.replace(/^0+/, ''); + formatted1 = moment(i, 'YYYY-MM-DD').format('W'); + assert.equal( + isoWeek, + formatted1, + i + ': W should be ' + isoWeek + ', but ' + formatted1 + ); + }); + }); + + test('iso week year formats', function (assert) { + // https://en.wikipedia.org/wiki/ISO_week_date + var cases = { + '2005-01-02': '2004-53', + '2005-12-31': '2005-52', + '2007-01-01': '2007-01', + '2007-12-30': '2007-52', + '2007-12-31': '2008-01', + '2008-01-01': '2008-01', + '2008-12-28': '2008-52', + '2008-12-29': '2009-01', + '2008-12-30': '2009-01', + '2008-12-31': '2009-01', + '2009-01-01': '2009-01', + '2009-12-31': '2009-53', + '2010-01-01': '2009-53', + '2010-01-02': '2009-53', + '2010-01-03': '2009-53', + '404-12-31': '0404-53', + '405-12-31': '0405-52', + }; + + eachOwnProp(cases, function (i) { + var isoWeekYear, formatted5, formatted4, formatted2; + isoWeekYear = cases[i].split('-')[0]; + formatted5 = moment(i, 'YYYY-MM-DD').format('GGGGG'); + assert.equal( + '0' + isoWeekYear, + formatted5, + i + ': GGGGG should be ' + isoWeekYear + ', but ' + formatted5 + ); + formatted4 = moment(i, 'YYYY-MM-DD').format('GGGG'); + assert.equal( + isoWeekYear, + formatted4, + i + ': GGGG should be ' + isoWeekYear + ', but ' + formatted4 + ); + formatted2 = moment(i, 'YYYY-MM-DD').format('GG'); + assert.equal( + isoWeekYear.slice(2, 4), + formatted2, + i + ': GG should be ' + isoWeekYear + ', but ' + formatted2 + ); + }); + }); + + test('week year formats', function (assert) { + // https://en.wikipedia.org/wiki/ISO_week_date + var cases = { + '2005-01-02': '2004-53', + '2005-12-31': '2005-52', + '2007-01-01': '2007-01', + '2007-12-30': '2007-52', + '2007-12-31': '2008-01', + '2008-01-01': '2008-01', + '2008-12-28': '2008-52', + '2008-12-29': '2009-01', + '2008-12-30': '2009-01', + '2008-12-31': '2009-01', + '2009-01-01': '2009-01', + '2009-12-31': '2009-53', + '2010-01-01': '2009-53', + '2010-01-02': '2009-53', + '2010-01-03': '2009-53', + '404-12-31': '0404-53', + '405-12-31': '0405-52', + }; + + moment.defineLocale('dow:1,doy:4', { week: { dow: 1, doy: 4 } }); + + eachOwnProp(cases, function (i) { + var isoWeekYear, formatted5, formatted4, formatted2; + isoWeekYear = cases[i].split('-')[0]; + formatted5 = moment(i, 'YYYY-MM-DD').format('ggggg'); + assert.equal( + '0' + isoWeekYear, + formatted5, + i + ': ggggg should be ' + isoWeekYear + ', but ' + formatted5 + ); + formatted4 = moment(i, 'YYYY-MM-DD').format('gggg'); + assert.equal( + isoWeekYear, + formatted4, + i + ': gggg should be ' + isoWeekYear + ', but ' + formatted4 + ); + formatted2 = moment(i, 'YYYY-MM-DD').format('gg'); + assert.equal( + isoWeekYear.slice(2, 4), + formatted2, + i + ': gg should be ' + isoWeekYear + ', but ' + formatted2 + ); + }); + moment.defineLocale('dow:1,doy:4', null); + }); + + test('iso weekday formats', function (assert) { + assert.equal( + moment([1985, 1, 4]).format('E'), + '1', + 'Feb 4 1985 is Monday -- 1st day' + ); + assert.equal( + moment([2029, 8, 18]).format('E'), + '2', + 'Sep 18 2029 is Tuesday -- 2nd day' + ); + assert.equal( + moment([2013, 3, 24]).format('E'), + '3', + 'Apr 24 2013 is Wednesday -- 3rd day' + ); + assert.equal( + moment([2015, 2, 5]).format('E'), + '4', + 'Mar 5 2015 is Thursday -- 4th day' + ); + assert.equal( + moment([1970, 0, 2]).format('E'), + '5', + 'Jan 2 1970 is Friday -- 5th day' + ); + assert.equal( + moment([2001, 4, 12]).format('E'), + '6', + 'May 12 2001 is Saturday -- 6th day' + ); + assert.equal( + moment([2000, 0, 2]).format('E'), + '7', + 'Jan 2 2000 is Sunday -- 7th day' + ); + }); + + test('weekday formats', function (assert) { + moment.defineLocale('dow: 3,doy: 5', { week: { dow: 3, doy: 5 } }); + assert.equal( + moment([1985, 1, 6]).format('e'), + '0', + 'Feb 6 1985 is Wednesday -- 0th day' + ); + assert.equal( + moment([2029, 8, 20]).format('e'), + '1', + 'Sep 20 2029 is Thursday -- 1st day' + ); + assert.equal( + moment([2013, 3, 26]).format('e'), + '2', + 'Apr 26 2013 is Friday -- 2nd day' + ); + assert.equal( + moment([2015, 2, 7]).format('e'), + '3', + 'Mar 7 2015 is Saturday -- 3nd day' + ); + assert.equal( + moment([1970, 0, 4]).format('e'), + '4', + 'Jan 4 1970 is Sunday -- 4th day' + ); + assert.equal( + moment([2001, 4, 14]).format('e'), + '5', + 'May 14 2001 is Monday -- 5th day' + ); + assert.equal( + moment([2000, 0, 4]).format('e'), + '6', + 'Jan 4 2000 is Tuesday -- 6th day' + ); + moment.defineLocale('dow: 3,doy: 5', null); + }); + + test('toString is just human readable format', function (assert) { + var b = moment(new Date(2009, 1, 5, 15, 25, 50, 125)); + assert.equal(b.toString(), b.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ')); + }); + + test('toJSON skips postformat', function (assert) { + moment.defineLocale('postformat', { + postformat: function (s) { + s.replace(/./g, 'X'); + }, + }); + assert.equal( + moment.utc([2000, 0, 1]).toJSON(), + '2000-01-01T00:00:00.000Z', + "toJSON doesn't postformat" + ); + moment.defineLocale('postformat', null); + }); + + test('calendar day timezone', function (assert) { + moment.locale('en'); + var zones = [60, -60, 90, -90, 360, -360, 720, -720], + b = moment().utc().startOf('day').subtract({ m: 1 }), + c = moment().local().startOf('day').subtract({ m: 1 }), + d = moment().local().startOf('day').subtract({ d: 2 }), + i, + z, + a; + + for (i = 0; i < zones.length; ++i) { + z = zones[i]; + a = moment().utcOffset(z).startOf('day').subtract({ m: 1 }); + assert.equal( + moment(a).utcOffset(z).calendar(), + 'Yesterday at 11:59 PM', + 'Yesterday at 11:59 PM, not Today, or the wrong time, tz = ' + z + ); + } + + assert.equal( + moment(b).utc().calendar(), + 'Yesterday at 11:59 PM', + 'Yesterday at 11:59 PM, not Today, or the wrong time' + ); + assert.equal( + moment(c).local().calendar(), + 'Yesterday at 11:59 PM', + 'Yesterday at 11:59 PM, not Today, or the wrong time' + ); + assert.equal( + moment(c).local().calendar(d), + 'Tomorrow at 11:59 PM', + 'Tomorrow at 11:59 PM, not Yesterday, or the wrong time' + ); + }); + + test('calendar with custom formats', function (assert) { + assert.equal( + moment().calendar(null, { sameDay: '[Today]' }), + 'Today', + 'Today' + ); + assert.equal( + moment().add(1, 'days').calendar(null, { nextDay: '[Tomorrow]' }), + 'Tomorrow', + 'Tomorrow' + ); + assert.equal( + moment([1985, 1, 4]).calendar(null, { sameElse: 'YYYY-MM-DD' }), + '1985-02-04', + 'Else' + ); + }); + + test('invalid', function (assert) { + assert.equal(moment.invalid().format(), 'Invalid date'); + assert.equal(moment.invalid().format('YYYY-MM-DD'), 'Invalid date'); + }); + + test('quarter formats', function (assert) { + assert.equal(moment([1985, 1, 4]).format('Q'), '1', 'Feb 4 1985 is Q1'); + assert.equal(moment([2029, 8, 18]).format('Q'), '3', 'Sep 18 2029 is Q3'); + assert.equal(moment([2013, 3, 24]).format('Q'), '2', 'Apr 24 2013 is Q2'); + assert.equal(moment([2015, 2, 5]).format('Q'), '1', 'Mar 5 2015 is Q1'); + assert.equal(moment([1970, 0, 2]).format('Q'), '1', 'Jan 2 1970 is Q1'); + assert.equal(moment([2001, 11, 12]).format('Q'), '4', 'Dec 12 2001 is Q4'); + assert.equal( + moment([2000, 0, 2]).format('[Q]Q-YYYY'), + 'Q1-2000', + 'Jan 2 2000 is Q1' + ); + }); + + test('quarter ordinal formats', function (assert) { + assert.equal( + moment([1985, 1, 4]).format('Qo'), + '1st', + 'Feb 4 1985 is 1st quarter' + ); + assert.equal( + moment([2029, 8, 18]).format('Qo'), + '3rd', + 'Sep 18 2029 is 3rd quarter' + ); + assert.equal( + moment([2013, 3, 24]).format('Qo'), + '2nd', + 'Apr 24 2013 is 2nd quarter' + ); + assert.equal( + moment([2015, 2, 5]).format('Qo'), + '1st', + 'Mar 5 2015 is 1st quarter' + ); + assert.equal( + moment([1970, 0, 2]).format('Qo'), + '1st', + 'Jan 2 1970 is 1st quarter' + ); + assert.equal( + moment([2001, 11, 12]).format('Qo'), + '4th', + 'Dec 12 2001 is 4th quarter' + ); + assert.equal( + moment([2000, 0, 2]).format('Qo [quarter] YYYY'), + '1st quarter 2000', + 'Jan 2 2000 is 1st quarter' + ); + }); + + // test('full expanded format is returned from abbreviated formats', function (assert) { + + // var locales = + // 'ar-sa ar-tn ar az be bg bn bo br bs ca cs cv cy da de-at de dv el ' + + // 'en-au en-ca en-gb en-ie en-nz eo es et eu fa fi fo fr-ca fr-ch fr fy ' + + // 'gd gl he hi hr hu hy-am id is it ja jv ka kk km ko lb lo lt lv me mk ml ' + + // 'mr ms-my ms my nb ne nl nn pl pt-br pt ro ru se si sk sl sq sr-cyrl ' + + // 'sr sv sw ta te th tl-ph tlh tr tzl tzm-latn tzm uk uz vi zh-cn zh-tw'; + + // each(locales.split(' '), function (locale) { + // var data = moment().locale(locale).localeData()._longDateFormat; + // eachOwnProp(data, function (token) { + // // Check each format string to make sure it does not contain any + // // tokens that need to be expanded. + // each(tokens, function (i) { + // // strip escaped sequences + // var format = data[i].replace(/(\[[^\]]*\])/g, ''); + // assert.equal(false, !!~format.indexOf(token), 'locale ' + locale + ' contains ' + token + ' in ' + i); + // }); + // }); + // }); + // }); + + test('milliseconds', function (assert) { + var m = moment('123', 'SSS'); + + assert.equal(m.format('S'), '1'); + assert.equal(m.format('SS'), '12'); + assert.equal(m.format('SSS'), '123'); + assert.equal(m.format('SSSS'), '1230'); + assert.equal(m.format('SSSSS'), '12300'); + assert.equal(m.format('SSSSSS'), '123000'); + assert.equal(m.format('SSSSSSS'), '1230000'); + assert.equal(m.format('SSSSSSSS'), '12300000'); + assert.equal(m.format('SSSSSSSSS'), '123000000'); + }); + + test('hmm and hmmss', function (assert) { + assert.equal(moment('12:34:56', 'HH:mm:ss').format('hmm'), '1234'); + assert.equal(moment('01:34:56', 'HH:mm:ss').format('hmm'), '134'); + assert.equal(moment('13:34:56', 'HH:mm:ss').format('hmm'), '134'); + + assert.equal(moment('12:34:56', 'HH:mm:ss').format('hmmss'), '123456'); + assert.equal(moment('01:34:56', 'HH:mm:ss').format('hmmss'), '13456'); + assert.equal(moment('13:34:56', 'HH:mm:ss').format('hmmss'), '13456'); + }); + + test('Hmm and Hmmss', function (assert) { + assert.equal(moment('12:34:56', 'HH:mm:ss').format('Hmm'), '1234'); + assert.equal(moment('01:34:56', 'HH:mm:ss').format('Hmm'), '134'); + assert.equal(moment('13:34:56', 'HH:mm:ss').format('Hmm'), '1334'); + + assert.equal(moment('12:34:56', 'HH:mm:ss').format('Hmmss'), '123456'); + assert.equal(moment('01:34:56', 'HH:mm:ss').format('Hmmss'), '13456'); + assert.equal(moment('08:34:56', 'HH:mm:ss').format('Hmmss'), '83456'); + assert.equal(moment('18:34:56', 'HH:mm:ss').format('Hmmss'), '183456'); + }); + + test('k and kk', function (assert) { + assert.equal(moment('01:23:45', 'HH:mm:ss').format('k'), '1'); + assert.equal(moment('12:34:56', 'HH:mm:ss').format('k'), '12'); + assert.equal(moment('01:23:45', 'HH:mm:ss').format('kk'), '01'); + assert.equal(moment('12:34:56', 'HH:mm:ss').format('kk'), '12'); + assert.equal(moment('00:34:56', 'HH:mm:ss').format('kk'), '24'); + assert.equal(moment('00:00:00', 'HH:mm:ss').format('kk'), '24'); + }); + + test('Y token', function (assert) { + assert.equal( + moment('2010-01-01', 'YYYY-MM-DD', true).format('Y'), + '2010', + 'format 2010 with Y' + ); + assert.equal( + moment('-123-01-01', 'Y-MM-DD', true).format('Y'), + '-0123', + 'format -123 with Y' + ); + assert.equal( + moment('12345-01-01', 'Y-MM-DD', true).format('Y'), + '+12345', + 'format 12345 with Y' + ); + assert.equal( + moment('0-01-01', 'Y-MM-DD', true).format('Y'), + '0000', + 'format 0 with Y' + ); + assert.equal( + moment('1-01-01', 'Y-MM-DD', true).format('Y'), + '0001', + 'format 1 with Y' + ); + assert.equal( + moment('9999-01-01', 'Y-MM-DD', true).format('Y'), + '9999', + 'format 9999 with Y' + ); + assert.equal( + moment('10000-01-01', 'Y-MM-DD', true).format('Y'), + '+10000', + 'format 10000 with Y' + ); + }); + + test('HTML5_FMT.WEEK', function (assert) { + assert.equal( + moment('2004-W01', moment.HTML5_FMT.WEEK).format(moment.HTML5_FMT.WEEK), + '2004-W01', + 'issue #4698 regression' + ); + assert.equal( + moment('2019-W01').format(moment.HTML5_FMT.WEEK), + '2019-W01', + 'issue #4833 regression' + ); + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + module('from_to'); + + test('from', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal( + start.from(start.clone().add(5, 'seconds')), + 'a few seconds ago', + '5 seconds = a few seconds ago' + ); + assert.equal( + start.from(start.clone().add(1, 'minute')), + 'a minute ago', + '1 minute = a minute ago' + ); + assert.equal( + start.from(start.clone().add(5, 'minutes')), + '5 minutes ago', + '5 minutes = 5 minutes ago' + ); + + assert.equal( + start.from(start.clone().subtract(5, 'seconds')), + 'in a few seconds', + '5 seconds = in a few seconds' + ); + assert.equal( + start.from(start.clone().subtract(1, 'minute')), + 'in a minute', + '1 minute = in a minute' + ); + assert.equal( + start.from(start.clone().subtract(5, 'minutes')), + 'in 5 minutes', + '5 minutes = in 5 minutes' + ); + }); + + test('from with absolute duration', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal( + start.from(start.clone().add(5, 'seconds'), true), + 'a few seconds', + '5 seconds = a few seconds' + ); + assert.equal( + start.from(start.clone().add(1, 'minute'), true), + 'a minute', + '1 minute = a minute' + ); + assert.equal( + start.from(start.clone().add(5, 'minutes'), true), + '5 minutes', + '5 minutes = 5 minutes' + ); + + assert.equal( + start.from(start.clone().subtract(5, 'seconds'), true), + 'a few seconds', + '5 seconds = a few seconds' + ); + assert.equal( + start.from(start.clone().subtract(1, 'minute'), true), + 'a minute', + '1 minute = a minute' + ); + assert.equal( + start.from(start.clone().subtract(5, 'minutes'), true), + '5 minutes', + '5 minutes = 5 minutes' + ); + }); + + test('to', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal( + start.to(start.clone().subtract(5, 'seconds')), + 'a few seconds ago', + '5 seconds = a few seconds ago' + ); + assert.equal( + start.to(start.clone().subtract(1, 'minute')), + 'a minute ago', + '1 minute = a minute ago' + ); + assert.equal( + start.to(start.clone().subtract(5, 'minutes')), + '5 minutes ago', + '5 minutes = 5 minutes ago' + ); + + assert.equal( + start.to(start.clone().add(5, 'seconds')), + 'in a few seconds', + '5 seconds = in a few seconds' + ); + assert.equal( + start.to(start.clone().add(1, 'minute')), + 'in a minute', + '1 minute = in a minute' + ); + assert.equal( + start.to(start.clone().add(5, 'minutes')), + 'in 5 minutes', + '5 minutes = in 5 minutes' + ); + }); + + test('to with absolute duration', function (assert) { + var start = moment(); + moment.locale('en'); + assert.equal( + start.to(start.clone().add(5, 'seconds'), true), + 'a few seconds', + '5 seconds = a few seconds' + ); + assert.equal( + start.to(start.clone().add(1, 'minute'), true), + 'a minute', + '1 minute = a minute' + ); + assert.equal( + start.to(start.clone().add(5, 'minutes'), true), + '5 minutes', + '5 minutes = 5 minutes' + ); + + assert.equal( + start.to(start.clone().subtract(5, 'seconds'), true), + 'a few seconds', + '5 seconds = a few seconds' + ); + assert.equal( + start.to(start.clone().subtract(1, 'minute'), true), + 'a minute', + '1 minute = a minute' + ); + assert.equal( + start.to(start.clone().subtract(5, 'minutes'), true), + '5 minutes', + '5 minutes = 5 minutes' + ); + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + module('getters and setters'); + + test('getters', function (assert) { + var a = moment([2011, 9, 12, 6, 7, 8, 9]); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + }); + + test('getters programmatic', function (assert) { + var a = moment([2011, 9, 12, 6, 7, 8, 9]); + assert.equal(a.get('year'), 2011, 'year'); + assert.equal(a.get('month'), 9, 'month'); + assert.equal(a.get('date'), 12, 'date'); + assert.equal(a.get('day'), 3, 'day'); + assert.equal(a.get('hour'), 6, 'hour'); + assert.equal(a.get('minute'), 7, 'minute'); + assert.equal(a.get('second'), 8, 'second'); + assert.equal(a.get('milliseconds'), 9, 'milliseconds'); + + //actual getters tested elsewhere + assert.equal(a.get('weekday'), a.weekday(), 'weekday'); + assert.equal(a.get('isoWeekday'), a.isoWeekday(), 'isoWeekday'); + assert.equal(a.get('week'), a.week(), 'week'); + assert.equal(a.get('isoWeek'), a.isoWeek(), 'isoWeek'); + assert.equal(a.get('dayOfYear'), a.dayOfYear(), 'dayOfYear'); + + //getter no longer sets values when passed an object + assert.equal( + moment([2016, 0, 1]).get({ year: 2015 }).year(), + 2016, + 'getter no longer sets values when passed an object' + ); + }); + + test('setters plural', function (assert) { + var a = moment(); + test.expectedDeprecations( + 'years accessor', + 'months accessor', + 'dates accessor' + ); + + a.years(2011); + a.months(9); + a.dates(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(9); + assert.equal(a.years(), 2011, 'years'); + assert.equal(a.months(), 9, 'months'); + assert.equal(a.dates(), 12, 'dates'); + assert.equal(a.days(), 3, 'days'); + assert.equal(a.hours(), 6, 'hours'); + assert.equal(a.minutes(), 7, 'minutes'); + assert.equal(a.seconds(), 8, 'seconds'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + }); + + test('setters singular', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hour(6); + a.minute(7); + a.second(8); + a.millisecond(9); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hour(), 6, 'hour'); + assert.equal(a.minute(), 7, 'minute'); + assert.equal(a.second(), 8, 'second'); + assert.equal(a.millisecond(), 9, 'milliseconds'); + }); + + test('setters', function (assert) { + var a = moment(); + a.year(2011); + a.month(9); + a.date(12); + a.hours(6); + a.minutes(7); + a.seconds(8); + a.milliseconds(9); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + + // Test month() behavior. See https://github.com/timrwood/moment/pull/822 + a = moment('20130531', 'YYYYMMDD'); + a.month(3); + assert.equal(a.month(), 3, 'month edge case'); + }); + + test('setters should handle garbage input', function (assert) { + var a = moment(); + a.set('year', 2011); + a.set('month', 9); + a.set('date', 12); + a.set('hours', 6); + a.set('minutes', 7); + a.set('seconds', 8); + a.set('milliseconds', 9); + + a.year(undefined); + a.month('foo'); + a.date(null); + a.day({ a: 2, b: 3 }); + a.hours('[1]'); + a.minutes(undefined); + a.seconds(null); + a.milliseconds(NaN); + + assert.equal(a.year(), 2011, 'year - provided undefined'); + assert.equal(a.month(), 9, 'month - provided null'); + assert.equal(a.date(), 12, 'date - provided [1]'); + assert.equal(a.day(), 3, 'day - provided Infinity'); + assert.equal(a.hours(), 6, 'hour - provided new Date'); + assert.equal(a.minutes(), 7, 'minute - provided {a:1,b:2}'); + assert.equal(a.seconds(), 8, 'second - provided foo'); + assert.equal(a.milliseconds(), 9, 'milliseconds - provided Infinity'); + }); + + test('setter programmatic', function (assert) { + var a = moment(); + a.set('year', 2011); + a.set('month', 9); + a.set('date', 12); + a.set('hours', 6); + a.set('minutes', 7); + a.set('seconds', 8); + a.set('milliseconds', 9); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + + // Test month() behavior. See https://github.com/timrwood/moment/pull/822 + a = moment('20130531', 'YYYYMMDD'); + a.month(3); + assert.equal(a.month(), 3, 'month edge case'); + }); + + test('setters programatic with weeks', function (assert) { + var a = moment(); + a.set('weekYear', 2001); + a.set('week', 49); + a.set('day', 4); + + assert.equal(a.weekYear(), 2001, 'weekYear'); + assert.equal(a.week(), 49, 'week'); + assert.equal(a.day(), 4, 'day'); + + a.set('weekday', 1); + assert.equal(a.weekday(), 1, 'weekday'); + }); + + test('setters programatic with weeks ISO', function (assert) { + var a = moment(); + a.set('isoWeekYear', 2001); + a.set('isoWeek', 49); + a.set('isoWeekday', 4); + + assert.equal(a.isoWeekYear(), 2001, 'isoWeekYear'); + assert.equal(a.isoWeek(), 49, 'isoWeek'); + assert.equal(a.isoWeekday(), 4, 'isoWeekday'); + }); + + test('setters strings', function (assert) { + var a = moment([2012]).locale('en'); + assert.equal(a.clone().day(0).day('Wednesday').day(), 3, 'day full name'); + assert.equal(a.clone().day(0).day('Wed').day(), 3, 'day short name'); + assert.equal(a.clone().day(0).day('We').day(), 3, 'day minimal name'); + assert.equal(a.clone().day(0).day('invalid').day(), 0, 'invalid day name'); + assert.equal( + a.clone().month(0).month('April').month(), + 3, + 'month full name' + ); + assert.equal( + a.clone().month(0).month('Apr').month(), + 3, + 'month short name' + ); + assert.equal( + a.clone().month(0).month('invalid').month(), + 0, + 'invalid month name' + ); + }); + + test('setters - falsey values', function (assert) { + var a = moment(); + // ensure minutes wasn't coincidentally 0 already + a.minutes(1); + a.minutes(0); + assert.equal(a.minutes(), 0, 'falsey value'); + }); + + test('chaining setters', function (assert) { + var a = moment(); + a.year(2011).month(9).date(12).hours(6).minutes(7).seconds(8); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + }); + + test('setter with multiple unit values', function (assert) { + var a = moment(), + c; + a.set({ + year: 2011, + month: 9, + date: 12, + hours: 6, + minutes: 7, + seconds: 8, + milliseconds: 9, + }); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + + c = moment([2016, 0, 1]); + assert.equal( + c.set({ weekYear: 2016 }).weekYear(), + 2016, + 'week year correctly sets with object syntax' + ); + assert.equal( + c.set({ quarter: 3 }).quarter(), + 3, + 'quarter sets correctly with object syntax' + ); + }); + + test('day setter', function (assert) { + var a = moment([2011, 0, 15]); + assert.equal(moment(a).day(0).date(), 9, 'set from saturday to sunday'); + assert.equal(moment(a).day(6).date(), 15, 'set from saturday to saturday'); + assert.equal(moment(a).day(3).date(), 12, 'set from saturday to wednesday'); + + a = moment([2011, 0, 9]); + assert.equal(moment(a).day(0).date(), 9, 'set from sunday to sunday'); + assert.equal(moment(a).day(6).date(), 15, 'set from sunday to saturday'); + assert.equal(moment(a).day(3).date(), 12, 'set from sunday to wednesday'); + + a = moment([2011, 0, 12]); + assert.equal(moment(a).day(0).date(), 9, 'set from wednesday to sunday'); + assert.equal(moment(a).day(6).date(), 15, 'set from wednesday to saturday'); + assert.equal( + moment(a).day(3).date(), + 12, + 'set from wednesday to wednesday' + ); + + assert.equal( + moment(a).day(-7).date(), + 2, + 'set from wednesday to last sunday' + ); + assert.equal( + moment(a).day(-1).date(), + 8, + 'set from wednesday to last saturday' + ); + assert.equal( + moment(a).day(-4).date(), + 5, + 'set from wednesday to last wednesday' + ); + + assert.equal( + moment(a).day(7).date(), + 16, + 'set from wednesday to next sunday' + ); + assert.equal( + moment(a).day(13).date(), + 22, + 'set from wednesday to next saturday' + ); + assert.equal( + moment(a).day(10).date(), + 19, + 'set from wednesday to next wednesday' + ); + + assert.equal( + moment(a).day(14).date(), + 23, + 'set from wednesday to second next sunday' + ); + assert.equal( + moment(a).day(20).date(), + 29, + 'set from wednesday to second next saturday' + ); + assert.equal( + moment(a).day(17).date(), + 26, + 'set from wednesday to second next wednesday' + ); + }); + + test('year setter', function (assert) { + var a = moment([2015, 3, 15]), + b, + c, + d, + e; + assert.equal( + moment(a).year(2016).format('YYYY-MM-DD'), + '2016-04-15', + 'set from 2015 to 2016' + ); + assert.equal( + moment(a).year(2011).format('YYYY-MM-DD'), + '2011-04-15', + 'set from 2015 to 2011' + ); + + b = moment([2012, 1, 29]); + assert.equal( + moment(b).year(2017).format('YYYY-MM-DD'), + '2017-02-28', + 'set from last day of february on a leap year to a non leap year' + ); + assert.equal( + moment(b).year(2004).format('YYYY-MM-DD'), + '2004-02-29', + 'set from last day of february on a leap year to a leap year' + ); + + c = moment([2012, 9, 4]); + assert.equal( + moment(c).year(2017).format('YYYY-MM-DD'), + '2017-10-04', + 'set from a random day on a leap year to a non leap year' + ); + assert.equal( + moment(c).year(2004).format('YYYY-MM-DD'), + '2004-10-04', + 'set from a random day on a leap year to a leap year' + ); + + d = moment([2020, 1, 29]); + assert.equal( + moment(d).year('2020').format('YYYY-MM-DD'), + '2020-02-29', + 'set from last day of february in 2020 to the same year, provided as string' + ); + + e = moment([2012, 1, 29]); + assert.equal( + moment(e).year('2020').format('YYYY-MM-DD'), + '2020-02-29', + 'set from last day of february on a leap year to 2020, provided as string' + ); + }); + + test('object set ordering', function (assert) { + var a = moment([2016, 3, 30]), + b, + c; + assert.equal( + a.set({ date: 31, month: 4 }).date(), + 31, + 'setter order automatically arranged by size' + ); + b = moment([2015, 1, 28]); + assert.equal( + b.set({ date: 29, year: 2016 }).format('YYYY-MM-DD'), + '2016-02-29', + 'year is prioritized over date' + ); + //check a nonexistent time in US isn't set + c = moment([2016, 2, 13]); + c.set({ + hour: 2, + minutes: 30, + date: 14, + }); + assert.equal( + c.format('YYYY-MM-DDTHH:mm'), + '2016-03-14T02:30', + 'setting hours, minutes date puts date first allowing time set to work' + ); + }); + + test('string setters', function (assert) { + var a = moment(); + a.year('2011'); + a.month('9'); + a.date('12'); + a.hours('6'); + a.minutes('7'); + a.seconds('8'); + a.milliseconds('9'); + assert.equal(a.year(), 2011, 'year'); + assert.equal(a.month(), 9, 'month'); + assert.equal(a.date(), 12, 'date'); + assert.equal(a.day(), 3, 'day'); + assert.equal(a.hours(), 6, 'hour'); + assert.equal(a.minutes(), 7, 'minute'); + assert.equal(a.seconds(), 8, 'second'); + assert.equal(a.milliseconds(), 9, 'milliseconds'); + }); + + test('setters across DST +1', function (assert) { + var oldUpdateOffset = moment.updateOffset, + // Based on a real story somewhere in America/Los_Angeles + dstAt = moment('2014-03-09T02:00:00-08:00').parseZone(), + m; + + moment.updateOffset = function (mom, keepTime) { + if (mom.isBefore(dstAt)) { + mom.utcOffset(-8, keepTime); + } else { + mom.utcOffset(-7, keepTime); + } + }; + + m = moment('2014-03-15T00:00:00-07:00').parseZone(); + m.year(2013); + assert.equal(m.format(), '2013-03-15T00:00:00-08:00', 'year across +1'); + + m = moment('2014-03-15T00:00:00-07:00').parseZone(); + m.month(0); + assert.equal(m.format(), '2014-01-15T00:00:00-08:00', 'month across +1'); + + m = moment('2014-03-15T00:00:00-07:00').parseZone(); + m.date(1); + assert.equal(m.format(), '2014-03-01T00:00:00-08:00', 'date across +1'); + + m = moment('2014-03-09T03:05:00-07:00').parseZone(); + m.hour(0); + assert.equal(m.format(), '2014-03-09T00:05:00-08:00', 'hour across +1'); + + moment.updateOffset = oldUpdateOffset; + }); + + test('setters across DST -1', function (assert) { + var oldUpdateOffset = moment.updateOffset, + // Based on a real story somewhere in America/Los_Angeles + dstAt = moment('2014-11-02T02:00:00-07:00').parseZone(), + m; + + moment.updateOffset = function (mom, keepTime) { + if (mom.isBefore(dstAt)) { + mom.utcOffset(-7, keepTime); + } else { + mom.utcOffset(-8, keepTime); + } + }; + + m = moment('2014-11-15T00:00:00-08:00').parseZone(); + m.year(2013); + assert.equal(m.format(), '2013-11-15T00:00:00-07:00', 'year across -1'); + + m = moment('2014-11-15T00:00:00-08:00').parseZone(); + m.month(0); + assert.equal(m.format(), '2014-01-15T00:00:00-07:00', 'month across -1'); + + m = moment('2014-11-15T00:00:00-08:00').parseZone(); + m.date(1); + assert.equal(m.format(), '2014-11-01T00:00:00-07:00', 'date across -1'); + + m = moment('2014-11-02T03:30:00-08:00').parseZone(); + m.hour(0); + assert.equal(m.format(), '2014-11-02T00:30:00-07:00', 'hour across -1'); + + moment.updateOffset = oldUpdateOffset; + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + module('instanceof'); + + test('instanceof', function (assert) { + var extend = function (a, b) { + var i; + for (i in b) { + a[i] = b[i]; + } + return a; + }; + + assert.equal(moment() instanceof moment, true, 'simple moment object'); + assert.equal( + extend({}, moment()) instanceof moment, + false, + 'extended moment object' + ); + assert.equal(moment(null) instanceof moment, true, 'invalid moment object'); + + assert.equal( + new Date() instanceof moment, + false, + 'date object is not moment object' + ); + assert.equal( + Object instanceof moment, + false, + 'Object is not moment object' + ); + assert.equal('foo' instanceof moment, false, 'string is not moment object'); + assert.equal(1 instanceof moment, false, 'number is not moment object'); + assert.equal(NaN instanceof moment, false, 'NaN is not moment object'); + assert.equal(null instanceof moment, false, 'null is not moment object'); + assert.equal( + undefined instanceof moment, + false, + 'undefined is not moment object' + ); + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + module('invalid'); + + test('invalid', function (assert) { + var m = moment.invalid(); + assert.equal(m.isValid(), false); + assert.equal(m.parsingFlags().userInvalidated, true); + assert.ok(isNaN(m.valueOf())); + }); + + test('invalid with existing flag', function (assert) { + var m = moment.invalid({ invalidMonth: 'whatchamacallit' }); + assert.equal(m.isValid(), false); + assert.equal(m.parsingFlags().userInvalidated, false); + assert.equal(m.parsingFlags().invalidMonth, 'whatchamacallit'); + assert.ok(isNaN(m.valueOf())); + }); + + test('invalid with custom flag', function (assert) { + var m = moment.invalid({ tooBusyWith: 'reiculating splines' }); + assert.equal(m.isValid(), false); + assert.equal(m.parsingFlags().userInvalidated, false); + assert.equal(m.parsingFlags().tooBusyWith, 'reiculating splines'); + assert.ok(isNaN(m.valueOf())); + }); + + test('invalid operations', function (assert) { + var invalids = [ + moment.invalid(), + moment('xyz', 'l'), + moment('2015-01-35', 'YYYY-MM-DD'), + moment('2015-01-25 a', 'YYYY-MM-DD', true), + ], + i, + invalid, + valid = moment(); + + test.expectedDeprecations('moment().min', 'moment().max', 'isDSTShifted'); + + for (i = 0; i < invalids.length; ++i) { + invalid = invalids[i]; + + assert.ok( + !invalid.clone().add(5, 'hours').isValid(), + 'invalid.add is invalid' + ); + assert.equal( + invalid.calendar(), + 'Invalid date', + "invalid.calendar is 'Invalid date'" + ); + assert.ok(!invalid.clone().isValid(), 'invalid.clone is invalid'); + assert.ok(isNaN(invalid.diff(valid)), 'invalid.diff(valid) is NaN'); + assert.ok(isNaN(valid.diff(invalid)), 'valid.diff(invalid) is NaN'); + assert.ok(isNaN(invalid.diff(invalid)), 'invalid.diff(invalid) is NaN'); + assert.ok( + !invalid.clone().endOf('month').isValid(), + 'invalid.endOf is invalid' + ); + assert.equal( + invalid.format(), + 'Invalid date', + "invalid.format is 'Invalid date'" + ); + assert.equal(invalid.from(), 'Invalid date'); + assert.equal(invalid.from(valid), 'Invalid date'); + assert.equal(valid.from(invalid), 'Invalid date'); + assert.equal(invalid.fromNow(), 'Invalid date'); + assert.equal(invalid.to(), 'Invalid date'); + assert.equal(invalid.to(valid), 'Invalid date'); + assert.equal(valid.to(invalid), 'Invalid date'); + assert.equal(invalid.toNow(), 'Invalid date'); + assert.ok(isNaN(invalid.get('year')), 'invalid.get is NaN'); + // TODO invalidAt + assert.ok(!invalid.isAfter(valid)); + assert.ok(!valid.isAfter(invalid)); + assert.ok(!invalid.isAfter(invalid)); + assert.ok(!invalid.isBefore(valid)); + assert.ok(!valid.isBefore(invalid)); + assert.ok(!invalid.isBefore(invalid)); + assert.ok(!invalid.isBetween(valid, valid)); + assert.ok(!valid.isBetween(invalid, valid)); + assert.ok(!valid.isBetween(valid, invalid)); + assert.ok(!invalid.isSame(invalid)); + assert.ok(!invalid.isSame(valid)); + assert.ok(!valid.isSame(invalid)); + assert.ok(!invalid.isValid()); + assert.equal(invalid.locale(), 'en'); + assert.equal(invalid.localeData()._abbr, 'en'); + assert.ok(!invalid.clone().max(valid).isValid()); + assert.ok(!valid.clone().max(invalid).isValid()); + assert.ok(!invalid.clone().max(invalid).isValid()); + assert.ok(!invalid.clone().min(valid).isValid()); + assert.ok(!valid.clone().min(invalid).isValid()); + assert.ok(!invalid.clone().min(invalid).isValid()); + assert.ok(!moment.min(invalid, valid).isValid()); + assert.ok(!moment.min(valid, invalid).isValid()); + assert.ok(!moment.max(invalid, valid).isValid()); + assert.ok(!moment.max(valid, invalid).isValid()); + assert.ok(!invalid.clone().set('year', 2005).isValid()); + assert.ok(!invalid.clone().startOf('month').isValid()); + + assert.ok(!invalid.clone().subtract(5, 'days').isValid()); + assert.deepEqual(invalid.toArray(), [ + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + NaN, + ]); + assert.deepEqual(invalid.toObject(), { + years: NaN, + months: NaN, + date: NaN, + hours: NaN, + minutes: NaN, + seconds: NaN, + milliseconds: NaN, + }); + assert.ok(moment.isDate(invalid.toDate())); + assert.ok(isNaN(invalid.toDate().valueOf())); + assert.equal(invalid.toJSON(), null); + assert.equal(invalid.toString(), 'Invalid date'); + assert.ok(isNaN(invalid.unix())); + assert.ok(isNaN(invalid.valueOf())); + + assert.ok(isNaN(invalid.year())); + assert.ok(isNaN(invalid.weekYear())); + assert.ok(isNaN(invalid.isoWeekYear())); + assert.ok(isNaN(invalid.quarter())); + assert.ok(isNaN(invalid.quarters())); + assert.ok(isNaN(invalid.month())); + assert.ok(isNaN(invalid.daysInMonth())); + assert.ok(isNaN(invalid.week())); + assert.ok(isNaN(invalid.weeks())); + assert.ok(isNaN(invalid.isoWeek())); + assert.ok(isNaN(invalid.isoWeeks())); + assert.ok(isNaN(invalid.weeksInYear())); + assert.ok(isNaN(invalid.isoWeeksInYear())); + assert.ok(isNaN(invalid.date())); + assert.ok(isNaN(invalid.day())); + assert.ok(isNaN(invalid.days())); + assert.ok(isNaN(invalid.weekday())); + assert.ok(isNaN(invalid.isoWeekday())); + assert.ok(isNaN(invalid.dayOfYear())); + assert.ok(isNaN(invalid.hour())); + assert.ok(isNaN(invalid.hours())); + assert.ok(isNaN(invalid.minute())); + assert.ok(isNaN(invalid.minutes())); + assert.ok(isNaN(invalid.second())); + assert.ok(isNaN(invalid.seconds())); + assert.ok(isNaN(invalid.millisecond())); + assert.ok(isNaN(invalid.milliseconds())); + assert.ok(isNaN(invalid.utcOffset())); + + assert.ok(!invalid.clone().year(2001).isValid()); + assert.ok(!invalid.clone().weekYear(2001).isValid()); + assert.ok(!invalid.clone().isoWeekYear(2001).isValid()); + assert.ok(!invalid.clone().quarter(1).isValid()); + assert.ok(!invalid.clone().quarters(1).isValid()); + assert.ok(!invalid.clone().month(1).isValid()); + assert.ok(!invalid.clone().week(1).isValid()); + assert.ok(!invalid.clone().weeks(1).isValid()); + assert.ok(!invalid.clone().isoWeek(1).isValid()); + assert.ok(!invalid.clone().isoWeeks(1).isValid()); + assert.ok(!invalid.clone().date(1).isValid()); + assert.ok(!invalid.clone().day(1).isValid()); + assert.ok(!invalid.clone().days(1).isValid()); + assert.ok(!invalid.clone().weekday(1).isValid()); + assert.ok(!invalid.clone().isoWeekday(1).isValid()); + assert.ok(!invalid.clone().dayOfYear(1).isValid()); + assert.ok(!invalid.clone().hour(1).isValid()); + assert.ok(!invalid.clone().hours(1).isValid()); + assert.ok(!invalid.clone().minute(1).isValid()); + assert.ok(!invalid.clone().minutes(1).isValid()); + assert.ok(!invalid.clone().second(1).isValid()); + assert.ok(!invalid.clone().seconds(1).isValid()); + assert.ok(!invalid.clone().millisecond(1).isValid()); + assert.ok(!invalid.clone().milliseconds(1).isValid()); + assert.ok(!invalid.clone().utcOffset(1).isValid()); + + assert.ok(!invalid.clone().utc().isValid()); + assert.ok(!invalid.clone().local().isValid()); + assert.ok(!invalid.clone().parseZone('05:30').isValid()); + assert.ok(!invalid.hasAlignedHourOffset()); + assert.ok(!invalid.isDST()); + assert.ok(!invalid.isDSTShifted()); + assert.ok(!invalid.isLocal()); + assert.ok(!invalid.isUtcOffset()); + assert.ok(!invalid.isUtc()); + assert.ok(!invalid.isUTC()); + + assert.ok(!invalid.isLeapYear()); + + assert.equal( + moment.duration({ from: invalid, to: valid }).asMilliseconds(), + 0 + ); + assert.equal( + moment.duration({ from: valid, to: invalid }).asMilliseconds(), + 0 + ); + assert.equal( + moment.duration({ from: invalid, to: invalid }).asMilliseconds(), + 0 + ); + } + }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } + + module('is after'); + + test('is after without units', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), + false, + 'year is later' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), + true, + 'year is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), + false, + 'month is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), + true, + 'month is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), + false, + 'day is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), + true, + 'day is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), + false, + 'hour is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), + true, + 'hour is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), + false, + 'minute is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), + true, + 'minute is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), + false, + 'second is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), + true, + 'second is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), + false, + 'millisecond match' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), + false, + 'millisecond is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), + true, + 'millisecond is earlier' + ); + assert.equal(m.isAfter(m), false, 'moments are not after themselves'); + assert.equal(+m, +mCopy, 'isAfter second should not change moment'); + }); + + test('is after year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), + false, + 'year match' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'years'), + true, + 'plural should work' + ); + assert.equal( + m.isAfter(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), + false, + 'year is later' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), + true, + 'year is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), + false, + 'exact start of year' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), + false, + 'exact end of year' + ); + assert.equal( + m.isAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), + false, + 'start of next year' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), + true, + 'end of previous year' + ); + assert.equal( + m.isAfter(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), + true, + 'end of year far before' + ); + assert.equal( + m.isAfter(m, 'year'), + false, + 'same moments are not after the same year' + ); + assert.equal(+m, +mCopy, 'isAfter year should not change moment'); + }); + + test('is after month', function (assert) { + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), + mCopy = moment(m); + assert.equal( + m.isAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), + false, + 'month match' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'months'), + true, + 'plural should work' + ); + assert.equal( + m.isAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), + false, + 'year is later' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), + true, + 'year is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), + false, + 'month is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), + true, + 'month is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), + false, + 'exact start of month' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), + false, + 'exact end of month' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), + false, + 'start of next month' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), + true, + 'end of previous month' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), + true, + 'later month but earlier year' + ); + assert.equal( + m.isAfter(m, 'month'), + false, + 'same moments are not after the same month' + ); + assert.equal(+m, +mCopy, 'isAfter month should not change moment'); + }); + + test('is after day', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), + false, + 'day match' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'days'), + true, + 'plural should work' + ); + assert.equal( + m.isAfter(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), + false, + 'year is later' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), + true, + 'year is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), + false, + 'month is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), + true, + 'month is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), + false, + 'day is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), + true, + 'day is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), + false, + 'exact start of day' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), + false, + 'exact end of day' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), + false, + 'start of next day' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), + true, + 'end of previous day' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), + true, + 'later day but earlier year' + ); + assert.equal( + m.isAfter(m, 'day'), + false, + 'same moments are not after the same day' + ); + assert.equal(+m, +mCopy, 'isAfter day should not change moment'); + }); + + test('is after hour', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), + false, + 'hour match' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hours'), + true, + 'plural should work' + ); + assert.equal( + m.isAfter(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), + false, + 'year is later' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), + true, + 'year is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), + false, + 'month is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), + true, + 'month is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), + false, + 'day is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), + true, + 'day is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), + false, + 'hour is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), + false, + 'hour is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), + false, + 'exact start of hour' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), + false, + 'exact end of hour' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), + false, + 'start of next hour' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), + true, + 'end of previous hour' + ); + assert.equal( + m.isAfter(m, 'hour'), + false, + 'same moments are not after the same hour' + ); + assert.equal(+m, +mCopy, 'isAfter hour should not change moment'); + }); + + test('is after minute', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), + false, + 'minute match' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minutes'), + true, + 'plural should work' + ); + assert.equal( + m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), + false, + 'year is later' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), + true, + 'year is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), + false, + 'month is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), + true, + 'month is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), + false, + 'day is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), + true, + 'day is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), + false, + 'hour is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), + true, + 'hour is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), + false, + 'minute is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), + true, + 'minute is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), + false, + 'exact start of minute' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), + false, + 'exact end of minute' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), + false, + 'start of next minute' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), + true, + 'end of previous minute' + ); + assert.equal( + m.isAfter(m, 'minute'), + false, + 'same moments are not after the same minute' + ); + assert.equal(+m, +mCopy, 'isAfter minute should not change moment'); + }); + + test('is after second', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), + false, + 'second match' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'seconds'), + true, + 'plural should work' + ); + assert.equal( + m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), + false, + 'year is later' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), + true, + 'year is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), + false, + 'month is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), + true, + 'month is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), + false, + 'day is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), + true, + 'day is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), + false, + 'hour is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), + true, + 'hour is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), + false, + 'minute is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), + true, + 'minute is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), + false, + 'second is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), + true, + 'second is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), + false, + 'exact start of second' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), + false, + 'exact end of second' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), + false, + 'start of next second' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), + true, + 'end of previous second' + ); + assert.equal( + m.isAfter(m, 'second'), + false, + 'same moments are not after the same second' + ); + assert.equal(+m, +mCopy, 'isAfter second should not change moment'); + }); + + test('is after millisecond', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'millisecond match' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), + true, + 'plural should work' + ); + assert.equal( + m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'year is later' + ); + assert.equal( + m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), + true, + 'year is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'month is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), + true, + 'month is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), + false, + 'day is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), + true, + 'day is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), + false, + 'hour is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), + true, + 'hour is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), + false, + 'minute is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), + true, + 'minute is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), + false, + 'second is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), + true, + 'second is earlier' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), + false, + 'millisecond is later' + ); + assert.equal( + m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), + true, + 'millisecond is earlier' + ); + assert.equal( + m.isAfter(m, 'millisecond'), + false, + 'same moments are not after the same millisecond' + ); + assert.equal(+m, +mCopy, 'isAfter millisecond should not change moment'); }); - test('setters across DST -1', function (assert) { - var oldUpdateOffset = moment.updateOffset, - // Based on a real story somewhere in America/Los_Angeles - dstAt = moment('2014-11-02T02:00:00-07:00').parseZone(), - m; - - moment.updateOffset = function (mom, keepTime) { - if (mom.isBefore(dstAt)) { - mom.utcOffset(-7, keepTime); - } else { - mom.utcOffset(-8, keepTime); - } - }; - - m = moment('2014-11-15T00:00:00-08:00').parseZone(); - m.year(2013); - assert.equal(m.format(), '2013-11-15T00:00:00-07:00', 'year across -1'); - - m = moment('2014-11-15T00:00:00-08:00').parseZone(); - m.month(0); - assert.equal(m.format(), '2014-01-15T00:00:00-07:00', 'month across -1'); - - m = moment('2014-11-15T00:00:00-08:00').parseZone(); - m.date(1); - assert.equal(m.format(), '2014-11-01T00:00:00-07:00', 'date across -1'); - - m = moment('2014-11-02T03:30:00-08:00').parseZone(); - m.hour(0); - assert.equal(m.format(), '2014-11-02T00:30:00-07:00', 'hour across -1'); - - moment.updateOffset = oldUpdateOffset; + test('is after invalid', function (assert) { + var m = moment(), + invalid = moment.invalid(); + assert.equal( + m.isAfter(invalid), + false, + 'valid moment is not after invalid moment' + ); + assert.equal( + invalid.isAfter(m), + false, + 'invalid moment is not after valid moment' + ); + assert.equal(m.isAfter(invalid, 'year'), false, 'invalid moment year'); + assert.equal(m.isAfter(invalid, 'month'), false, 'invalid moment month'); + assert.equal(m.isAfter(invalid, 'day'), false, 'invalid moment day'); + assert.equal(m.isAfter(invalid, 'hour'), false, 'invalid moment hour'); + assert.equal(m.isAfter(invalid, 'minute'), false, 'invalid moment minute'); + assert.equal(m.isAfter(invalid, 'second'), false, 'invalid moment second'); + assert.equal( + m.isAfter(invalid, 'milliseconds'), + false, + 'invalid moment milliseconds' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -70858,118 +127263,38 @@ 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$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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$$1, scope) { - moment$$1.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; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); + function isArray(input) { + return ( + input instanceof Array || + Object.prototype.toString.call(input) === '[object Array]' + ); } - module$1('instanceof'); - - test('instanceof', function (assert) { - var mm = moment([2010, 0, 1]); - - var extend = function (a, b) { - var i; - for (i in b) { - a[i] = b[i]; - } - return a; - }; - - assert.equal(moment() instanceof moment, true, 'simple moment object'); - assert.equal(extend({}, moment()) instanceof moment, false, 'extended moment object'); - assert.equal(moment(null) instanceof moment, true, 'invalid moment object'); + test('isArray recognizes Array objects', function (assert) { + assert.ok(isArray([1, 2, 3]), 'array args'); + assert.ok(isArray([]), 'empty array'); + assert.ok(isArray(new Array(1, 2, 3)), 'array constructor'); + }); - assert.equal(new Date() instanceof moment, false, 'date object is not moment object'); - assert.equal(Object instanceof moment, false, 'Object is not moment object'); - assert.equal('foo' instanceof moment, false, 'string is not moment object'); - assert.equal(1 instanceof moment, false, 'number is not moment object'); - assert.equal(NaN instanceof moment, false, 'NaN is not moment object'); - assert.equal(null instanceof moment, false, 'null is not moment object'); - assert.equal(undefined instanceof moment, false, 'undefined is not moment object'); + test('isArray rejects non-Array objects', function (assert) { + assert.ok(!isArray(), 'nothing'); + assert.ok(!isArray(undefined), 'undefined'); + assert.ok(!isArray(null), 'null'); + assert.ok(!isArray(123), 'number'); + assert.ok(!isArray('[1,2,3]'), 'string'); + assert.ok(!isArray(new Date()), 'date'); + assert.ok(!isArray({ a: 1, b: 2 }), 'object'); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -70984,27 +127309,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -71014,8 +127344,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -71028,7 +127360,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -71037,211 +127372,706 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('invalid'); + module('is before'); - test('invalid', function (assert) { - var m = moment.invalid(); - assert.equal(m.isValid(), false); - assert.equal(m.parsingFlags().userInvalidated, true); - assert.ok(isNaN(m.valueOf())); + test('is after without units', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), + true, + 'year is later' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), + false, + 'year is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), + true, + 'month is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), + false, + 'month is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), + true, + 'day is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), + false, + 'day is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), + true, + 'hour is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), + false, + 'hour is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), + true, + 'minute is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), + false, + 'minute is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), + true, + 'second is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), + false, + 'second is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), + false, + 'millisecond match' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), + true, + 'millisecond is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), + false, + 'millisecond is earlier' + ); + assert.equal(m.isBefore(m), false, 'moments are not before themselves'); + assert.equal(+m, +mCopy, 'isBefore second should not change moment'); }); - test('invalid with existing flag', function (assert) { - var m = moment.invalid({invalidMonth : 'whatchamacallit'}); - assert.equal(m.isValid(), false); - assert.equal(m.parsingFlags().userInvalidated, false); - assert.equal(m.parsingFlags().invalidMonth, 'whatchamacallit'); - assert.ok(isNaN(m.valueOf())); + test('is before year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), + false, + 'year match' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), + true, + 'plural should work' + ); + assert.equal( + m.isBefore(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), + true, + 'year is later' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), + false, + 'year is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), + false, + 'exact start of year' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), + false, + 'exact end of year' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), + true, + 'start of next year' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), + false, + 'end of previous year' + ); + assert.equal( + m.isBefore(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), + false, + 'end of year far before' + ); + assert.equal( + m.isBefore(m, 'year'), + false, + 'same moments are not before the same year' + ); + assert.equal(+m, +mCopy, 'isBefore year should not change moment'); }); - test('invalid with custom flag', function (assert) { - var m = moment.invalid({tooBusyWith : 'reiculating splines'}); - assert.equal(m.isValid(), false); - assert.equal(m.parsingFlags().userInvalidated, false); - assert.equal(m.parsingFlags().tooBusyWith, 'reiculating splines'); - assert.ok(isNaN(m.valueOf())); + test('is before month', function (assert) { + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), + mCopy = moment(m); + assert.equal( + m.isBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), + false, + 'month match' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'months'), + true, + 'plural should work' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), + true, + 'year is later' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), + false, + 'year is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), + true, + 'month is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), + false, + 'month is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), + false, + 'exact start of month' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), + false, + 'exact end of month' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), + true, + 'start of next month' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), + false, + 'end of previous month' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), + false, + 'later month but earlier year' + ); + assert.equal( + m.isBefore(m, 'month'), + false, + 'same moments are not before the same month' + ); + assert.equal(+m, +mCopy, 'isBefore month should not change moment'); }); - test('invalid operations', function (assert) { - var invalids = [ - moment.invalid(), - moment('xyz', 'l'), - moment('2015-01-35', 'YYYY-MM-DD'), - moment('2015-01-25 a', 'YYYY-MM-DD', true) - ], - i, - invalid, - valid = moment(); - - test.expectedDeprecations('moment().min', 'moment().max', 'isDSTShifted'); - - for (i = 0; i < invalids.length; ++i) { - invalid = invalids[i]; - - assert.ok(!invalid.clone().add(5, 'hours').isValid(), 'invalid.add is invalid'); - assert.equal(invalid.calendar(), 'Invalid date', 'invalid.calendar is \'Invalid date\''); - assert.ok(!invalid.clone().isValid(), 'invalid.clone is invalid'); - assert.ok(isNaN(invalid.diff(valid)), 'invalid.diff(valid) is NaN'); - assert.ok(isNaN(valid.diff(invalid)), 'valid.diff(invalid) is NaN'); - assert.ok(isNaN(invalid.diff(invalid)), 'invalid.diff(invalid) is NaN'); - assert.ok(!invalid.clone().endOf('month').isValid(), 'invalid.endOf is invalid'); - assert.equal(invalid.format(), 'Invalid date', 'invalid.format is \'Invalid date\''); - assert.equal(invalid.from(), 'Invalid date'); - assert.equal(invalid.from(valid), 'Invalid date'); - assert.equal(valid.from(invalid), 'Invalid date'); - assert.equal(invalid.fromNow(), 'Invalid date'); - assert.equal(invalid.to(), 'Invalid date'); - assert.equal(invalid.to(valid), 'Invalid date'); - assert.equal(valid.to(invalid), 'Invalid date'); - assert.equal(invalid.toNow(), 'Invalid date'); - assert.ok(isNaN(invalid.get('year')), 'invalid.get is NaN'); - // TODO invalidAt - assert.ok(!invalid.isAfter(valid)); - assert.ok(!valid.isAfter(invalid)); - assert.ok(!invalid.isAfter(invalid)); - assert.ok(!invalid.isBefore(valid)); - assert.ok(!valid.isBefore(invalid)); - assert.ok(!invalid.isBefore(invalid)); - assert.ok(!invalid.isBetween(valid, valid)); - assert.ok(!valid.isBetween(invalid, valid)); - assert.ok(!valid.isBetween(valid, invalid)); - assert.ok(!invalid.isSame(invalid)); - assert.ok(!invalid.isSame(valid)); - assert.ok(!valid.isSame(invalid)); - assert.ok(!invalid.isValid()); - assert.equal(invalid.locale(), 'en'); - assert.equal(invalid.localeData()._abbr, 'en'); - assert.ok(!invalid.clone().max(valid).isValid()); - assert.ok(!valid.clone().max(invalid).isValid()); - assert.ok(!invalid.clone().max(invalid).isValid()); - assert.ok(!invalid.clone().min(valid).isValid()); - assert.ok(!valid.clone().min(invalid).isValid()); - assert.ok(!invalid.clone().min(invalid).isValid()); - assert.ok(!moment.min(invalid, valid).isValid()); - assert.ok(!moment.min(valid, invalid).isValid()); - assert.ok(!moment.max(invalid, valid).isValid()); - assert.ok(!moment.max(valid, invalid).isValid()); - assert.ok(!invalid.clone().set('year', 2005).isValid()); - assert.ok(!invalid.clone().startOf('month').isValid()); - - assert.ok(!invalid.clone().subtract(5, 'days').isValid()); - assert.deepEqual(invalid.toArray(), [NaN, NaN, NaN, NaN, NaN, NaN, NaN]); - assert.deepEqual(invalid.toObject(), { - years: NaN, - months: NaN, - date: NaN, - hours: NaN, - minutes: NaN, - seconds: NaN, - milliseconds: NaN - }); - assert.ok(moment.isDate(invalid.toDate())); - assert.ok(isNaN(invalid.toDate().valueOf())); - assert.equal(invalid.toJSON(), null); - assert.equal(invalid.toString(), 'Invalid date'); - assert.ok(isNaN(invalid.unix())); - assert.ok(isNaN(invalid.valueOf())); + test('is before day', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), + false, + 'day match' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'days'), + true, + 'plural should work' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), + true, + 'year is later' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), + false, + 'year is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), + true, + 'month is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), + false, + 'month is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), + true, + 'day is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), + false, + 'day is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), + false, + 'exact start of day' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), + false, + 'exact end of day' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), + true, + 'start of next day' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), + false, + 'end of previous day' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), + false, + 'later day but earlier year' + ); + assert.equal( + m.isBefore(m, 'day'), + false, + 'same moments are not before the same day' + ); + assert.equal(+m, +mCopy, 'isBefore day should not change moment'); + }); - assert.ok(isNaN(invalid.year())); - assert.ok(isNaN(invalid.weekYear())); - assert.ok(isNaN(invalid.isoWeekYear())); - assert.ok(isNaN(invalid.quarter())); - assert.ok(isNaN(invalid.quarters())); - assert.ok(isNaN(invalid.month())); - assert.ok(isNaN(invalid.daysInMonth())); - assert.ok(isNaN(invalid.week())); - assert.ok(isNaN(invalid.weeks())); - assert.ok(isNaN(invalid.isoWeek())); - assert.ok(isNaN(invalid.isoWeeks())); - assert.ok(isNaN(invalid.weeksInYear())); - assert.ok(isNaN(invalid.isoWeeksInYear())); - assert.ok(isNaN(invalid.date())); - assert.ok(isNaN(invalid.day())); - assert.ok(isNaN(invalid.days())); - assert.ok(isNaN(invalid.weekday())); - assert.ok(isNaN(invalid.isoWeekday())); - assert.ok(isNaN(invalid.dayOfYear())); - assert.ok(isNaN(invalid.hour())); - assert.ok(isNaN(invalid.hours())); - assert.ok(isNaN(invalid.minute())); - assert.ok(isNaN(invalid.minutes())); - assert.ok(isNaN(invalid.second())); - assert.ok(isNaN(invalid.seconds())); - assert.ok(isNaN(invalid.millisecond())); - assert.ok(isNaN(invalid.milliseconds())); - assert.ok(isNaN(invalid.utcOffset())); + test('is before hour', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), + false, + 'hour match' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hours'), + true, + 'plural should work' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), + true, + 'year is later' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), + false, + 'year is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), + true, + 'month is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), + false, + 'month is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), + true, + 'day is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), + false, + 'day is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), + true, + 'hour is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), + false, + 'hour is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), + false, + 'exact start of hour' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), + false, + 'exact end of hour' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), + true, + 'start of next hour' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), + false, + 'end of previous hour' + ); + assert.equal( + m.isBefore(m, 'hour'), + false, + 'same moments are not before the same hour' + ); + assert.equal(+m, +mCopy, 'isBefore hour should not change moment'); + }); - assert.ok(!invalid.clone().year(2001).isValid()); - assert.ok(!invalid.clone().weekYear(2001).isValid()); - assert.ok(!invalid.clone().isoWeekYear(2001).isValid()); - assert.ok(!invalid.clone().quarter(1).isValid()); - assert.ok(!invalid.clone().quarters(1).isValid()); - assert.ok(!invalid.clone().month(1).isValid()); - assert.ok(!invalid.clone().week(1).isValid()); - assert.ok(!invalid.clone().weeks(1).isValid()); - assert.ok(!invalid.clone().isoWeek(1).isValid()); - assert.ok(!invalid.clone().isoWeeks(1).isValid()); - assert.ok(!invalid.clone().date(1).isValid()); - assert.ok(!invalid.clone().day(1).isValid()); - assert.ok(!invalid.clone().days(1).isValid()); - assert.ok(!invalid.clone().weekday(1).isValid()); - assert.ok(!invalid.clone().isoWeekday(1).isValid()); - assert.ok(!invalid.clone().dayOfYear(1).isValid()); - assert.ok(!invalid.clone().hour(1).isValid()); - assert.ok(!invalid.clone().hours(1).isValid()); - assert.ok(!invalid.clone().minute(1).isValid()); - assert.ok(!invalid.clone().minutes(1).isValid()); - assert.ok(!invalid.clone().second(1).isValid()); - assert.ok(!invalid.clone().seconds(1).isValid()); - assert.ok(!invalid.clone().millisecond(1).isValid()); - assert.ok(!invalid.clone().milliseconds(1).isValid()); - assert.ok(!invalid.clone().utcOffset(1).isValid()); + test('is before minute', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), + false, + 'minute match' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minutes'), + true, + 'plural should work' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), + true, + 'year is later' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), + false, + 'year is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), + true, + 'month is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), + false, + 'month is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), + true, + 'day is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), + false, + 'day is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), + true, + 'hour is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), + false, + 'hour is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), + true, + 'minute is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), + false, + 'minute is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), + false, + 'exact start of minute' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), + false, + 'exact end of minute' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), + true, + 'start of next minute' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), + false, + 'end of previous minute' + ); + assert.equal( + m.isBefore(m, 'minute'), + false, + 'same moments are not before the same minute' + ); + assert.equal(+m, +mCopy, 'isBefore minute should not change moment'); + }); - assert.ok(!invalid.clone().utc().isValid()); - assert.ok(!invalid.clone().local().isValid()); - assert.ok(!invalid.clone().parseZone('05:30').isValid()); - assert.ok(!invalid.hasAlignedHourOffset()); - assert.ok(!invalid.isDST()); - assert.ok(!invalid.isDSTShifted()); - assert.ok(!invalid.isLocal()); - assert.ok(!invalid.isUtcOffset()); - assert.ok(!invalid.isUtc()); - assert.ok(!invalid.isUTC()); + test('is before second', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), + false, + 'second match' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'seconds'), + true, + 'plural should work' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), + true, + 'year is later' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), + false, + 'year is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), + true, + 'month is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), + false, + 'month is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), + true, + 'day is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), + false, + 'day is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), + true, + 'hour is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), + false, + 'hour is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), + true, + 'minute is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), + false, + 'minute is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), + true, + 'second is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), + false, + 'second is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), + false, + 'exact start of second' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), + false, + 'exact end of second' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), + true, + 'start of next second' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), + false, + 'end of previous second' + ); + assert.equal( + m.isBefore(m, 'second'), + false, + 'same moments are not before the same second' + ); + assert.equal(+m, +mCopy, 'isBefore second should not change moment'); + }); - assert.ok(!invalid.isLeapYear()); + test('is before millisecond', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'millisecond match' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), + false, + 'plural should work' + ); + assert.equal( + m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), + true, + 'year is later' + ); + assert.equal( + m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'year is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), + true, + 'month is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'month is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), + true, + 'day is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), + false, + 'day is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), + true, + 'hour is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), + false, + 'hour is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), + true, + 'minute is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), + false, + 'minute is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), + true, + 'second is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), + false, + 'second is earlier' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), + true, + 'millisecond is later' + ); + assert.equal( + m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), + false, + 'millisecond is earlier' + ); + assert.equal( + m.isBefore(m, 'millisecond'), + false, + 'same moments are not before the same millisecond' + ); + assert.equal(+m, +mCopy, 'isBefore millisecond should not change moment'); + }); - assert.equal(moment.duration({from: invalid, to: valid}).asMilliseconds(), 0); - assert.equal(moment.duration({from: valid, to: invalid}).asMilliseconds(), 0); - assert.equal(moment.duration({from: invalid, to: invalid}).asMilliseconds(), 0); - } + test('is before invalid', function (assert) { + var m = moment(), + invalid = moment.invalid(); + assert.equal( + m.isBefore(invalid), + false, + 'valid moment is not before invalid moment' + ); + assert.equal( + invalid.isBefore(m), + false, + 'invalid moment is not before valid moment' + ); + assert.equal(m.isBefore(invalid, 'year'), false, 'invalid moment year'); + assert.equal(m.isBefore(invalid, 'month'), false, 'invalid moment month'); + assert.equal(m.isBefore(invalid, 'day'), false, 'invalid moment day'); + assert.equal(m.isBefore(invalid, 'hour'), false, 'invalid moment hour'); + assert.equal(m.isBefore(invalid, 'minute'), false, 'invalid moment minute'); + assert.equal(m.isBefore(invalid, 'second'), false, 'invalid moment second'); + assert.equal( + m.isBefore(invalid, 'milliseconds'), + false, + 'invalid moment milliseconds' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -71256,27 +128086,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -71286,8 +128121,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -71300,7 +128137,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -71309,241 +128149,1114 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('is after'); + module('is between'); - test('is after without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), true, 'hour is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), true, 'minute is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), true, 'second is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond match'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), true, 'millisecond is earlier'); - assert.equal(m.isAfter(m), false, 'moments are not after themselves'); - assert.equal(+m, +mCopy, 'isAfter second should not change moment'); + test('is between without units', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)) + ), + false, + 'year is later' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2013, 3, 2, 3, 4, 5, 10)) + ), + false, + 'year is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)) + ), + true, + 'year is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)) + ), + false, + 'month is later' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 5, 2, 3, 4, 5, 10)) + ), + false, + 'month is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 2, 2, 3, 4, 5, 10)), + moment(new Date(2011, 4, 2, 3, 4, 5, 10)) + ), + true, + 'month is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 1, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)) + ), + false, + 'day is later' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 4, 3, 4, 5, 10)) + ), + false, + 'day is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 1, 3, 4, 5, 10)), + moment(new Date(2011, 3, 3, 3, 4, 5, 10)) + ), + true, + 'day is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 1, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)) + ), + false, + 'hour is later' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 5, 4, 5, 10)) + ), + false, + 'hour is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 2, 4, 5, 10)), + moment(new Date(2011, 3, 2, 4, 4, 5, 10)) + ), + true, + 'hour is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 6, 5, 10)) + ), + false, + 'minute is later' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 2, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)) + ), + false, + 'minute is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 3, 5, 10)), + moment(new Date(2011, 3, 2, 3, 5, 5, 10)) + ), + true, + 'minute is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 7, 10)) + ), + false, + 'second is later' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 3, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)) + ), + false, + 'second is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 4, 10)), + moment(new Date(2011, 3, 2, 3, 4, 6, 10)) + ), + true, + 'second is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 12)) + ), + false, + 'millisecond is later' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 8)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)) + ), + false, + 'millisecond is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 9)), + moment(new Date(2011, 3, 2, 3, 4, 5, 11)) + ), + true, + 'millisecond is between' + ); + assert.equal( + m.isBetween(m, m), + false, + 'moments are not between themselves' + ); + assert.equal(+m, +mCopy, 'isBetween second should not change moment'); }); - test('is after year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match'); - assert.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, 'exact start of year'); - assert.equal(m.isAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, 'exact end of year'); - assert.equal(m.isAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year'); - assert.equal(m.isAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of previous year'); - assert.equal(m.isAfter(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of year far before'); - assert.equal(m.isAfter(m, 'year'), false, 'same moments are not after the same year'); - assert.equal(+m, +mCopy, 'isAfter year should not change moment'); - }); + test('is between without units inclusivity', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + null, + '()' + ), + false, + 'start and end are excluded, start is equal to moment' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + null, + '()' + ), + false, + 'start and end are excluded, end is equal to moment' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + null, + '()' + ), + true, + 'start and end are excluded, is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + null, + '()' + ), + false, + 'start and end are excluded, is not between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + null, + '()' + ), + false, + 'start and end are excluded, should fail on same start/end date.' + ); - test('is after month', function (assert) { - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month match'); - assert.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, 'exact start of month'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, 'exact end of month'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month'); - assert.equal(m.isAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), true, 'end of previous month'); - assert.equal(m.isAfter(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), true, 'later month but earlier year'); - assert.equal(m.isAfter(m, 'month'), false, 'same moments are not after the same month'); - assert.equal(+m, +mCopy, 'isAfter month should not change moment'); - }); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + null, + '(]' + ), + false, + 'start is excluded and end is included should fail on same start date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + null, + '(]' + ), + true, + 'start is excluded and end is included should succeed on end date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + null, + '(]' + ), + true, + 'start is excluded and end is included, is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + null, + '(]' + ), + false, + 'start is excluded and end is included, is not between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + null, + '(]' + ), + false, + 'start is excluded and end is included, should fail on same start/end date.' + ); - test('is after day', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, 'day match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, 'exact start of day'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, 'exact end of day'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), true, 'end of previous day'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), true, 'later day but earlier year'); - assert.equal(m.isAfter(m, 'day'), false, 'same moments are not after the same day'); - assert.equal(+m, +mCopy, 'isAfter day should not change moment'); - }); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + null, + '[)' + ), + true, + 'start is included and end is excluded should succeed on same start date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + null, + '[)' + ), + false, + 'start is included and end is excluded should fail on same end date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + null, + '[)' + ), + true, + 'start is included and end is excluded, is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + null, + '[)' + ), + false, + 'start is included and end is excluded, is not between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + null, + '[)' + ), + false, + 'start is included and end is excluded, should fail on same end and start date' + ); - test('is after hour', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, 'exact start of hour'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, 'exact end of hour'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), true, 'end of previous hour'); - assert.equal(m.isAfter(m, 'hour'), false, 'same moments are not after the same hour'); - assert.equal(+m, +mCopy, 'isAfter hour should not change moment'); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + null, + '[]' + ), + true, + 'start and end inclusive should succeed on same start date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + null, + '[]' + ), + true, + 'start and end inclusive should succeed on same end date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + null, + '[]' + ), + true, + 'start and end inclusive, is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + null, + '[]' + ), + false, + 'start and end inclusive, is not between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + null, + '[]' + ), + true, + 'start and end inclusive, should handle same end and start date' + ); }); - test('is after minute', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), true, 'hour is earler'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), false, 'minute is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), true, 'minute is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, 'exact start of minute'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, 'exact end of minute'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), true, 'end of previous minute'); - assert.equal(m.isAfter(m, 'minute'), false, 'same moments are not after the same minute'); - assert.equal(+m, +mCopy, 'isAfter minute should not change moment'); - }); + test('is between milliseconds inclusivity', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'milliseconds' + ), + true, + 'options, no inclusive' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '()' + ), + false, + 'start and end are excluded, start is equal to moment' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '()' + ), + false, + 'start and end are excluded, end is equal to moment' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '()' + ), + true, + 'start and end are excluded, is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '()' + ), + false, + 'start and end are excluded, is not between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '()' + ), + false, + 'start and end are excluded, should fail on same start/end date.' + ); - test('is after second', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, 'second match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), true, 'hour is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), false, 'minute is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), true, 'minute is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), false, 'second is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), true, 'second is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, 'exact start of second'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, 'exact end of second'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), true, 'end of previous second'); - assert.equal(m.isAfter(m, 'second'), false, 'same moments are not after the same second'); - assert.equal(+m, +mCopy, 'isAfter second should not change moment'); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '(]' + ), + false, + 'start is excluded and end is included should fail on same start date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '(]' + ), + true, + 'start is excluded and end is included should succeed on end date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '(]' + ), + true, + 'start is excluded and end is included, is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '(]' + ), + false, + 'start is excluded and end is included, is not between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '(]' + ), + false, + 'start is excluded and end is included, should fail on same start/end date.' + ); + + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[)' + ), + true, + 'start is included and end is excluded should succeed on same start date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[)' + ), + false, + 'start is included and end is excluded should fail on same end date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[)' + ), + true, + 'start is included and end is excluded, is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[)' + ), + false, + 'start is included and end is excluded, is not between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[)' + ), + false, + 'start is included and end is excluded, should fail on same end and start date' + ); + + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[]' + ), + true, + 'start and end inclusive should succeed on same start date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[]' + ), + true, + 'start and end inclusive should succeed on same end date' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[]' + ), + true, + 'start and end inclusive, is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2009, 3, 2, 3, 4, 5, 10)), + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[]' + ), + false, + 'start and end inclusive, is not between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds', + '[]' + ), + true, + 'start and end inclusive, should handle same end and start date' + ); }); - test('is after millisecond', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond match'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work'); - assert.equal(m.isAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later'); - assert.equal(m.isAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later'); - assert.equal(m.isAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), true, 'day is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), true, 'hour is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), true, 'minute is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), true, 'second is earlier'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later'); - assert.equal(m.isAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), true, 'millisecond is earlier'); - assert.equal(m.isAfter(m, 'millisecond'), false, 'same moments are not after the same millisecond'); - assert.equal(+m, +mCopy, 'isAfter millisecond should not change moment'); + test('is between year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBetween( + moment(new Date(2011, 5, 6, 7, 8, 9, 10)), + moment(new Date(2011, 5, 6, 7, 8, 9, 10)), + 'year' + ), + false, + 'year match' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 5, 6, 7, 8, 9, 10)), + moment(new Date(2012, 5, 6, 7, 8, 9, 10)), + 'years' + ), + true, + 'plural should work' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 5, 6, 7, 8, 9, 10)), + moment(new Date(2012, 5, 6, 7, 8, 9, 10)), + 'year' + ), + true, + 'year is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 5, 6, 7, 8, 9, 10)), + moment(new Date(2013, 5, 6, 7, 8, 9, 10)), + 'year' + ), + false, + 'year is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2010, 5, 6, 7, 8, 9, 10)), + moment(new Date(2011, 5, 6, 7, 8, 9, 10)), + 'year' + ), + false, + 'year is later' + ); + assert.equal( + m.isBetween(m, m, 'year'), + false, + 'same moments are not between the same year' + ); + assert.equal(+m, +mCopy, 'isBetween year should not change moment'); }); - test('is after invalid', function (assert) { - var m = moment(), invalid = moment.invalid(); - assert.equal(m.isAfter(invalid), false, 'valid moment is not after invalid moment'); - assert.equal(invalid.isAfter(m), false, 'invalid moment is not after valid moment'); - assert.equal(m.isAfter(invalid, 'year'), false, 'invalid moment year'); - assert.equal(m.isAfter(invalid, 'month'), false, 'invalid moment month'); - assert.equal(m.isAfter(invalid, 'day'), false, 'invalid moment day'); - assert.equal(m.isAfter(invalid, 'hour'), false, 'invalid moment hour'); - assert.equal(m.isAfter(invalid, 'minute'), false, 'invalid moment minute'); - assert.equal(m.isAfter(invalid, 'second'), false, 'invalid moment second'); - assert.equal(m.isAfter(invalid, 'milliseconds'), false, 'invalid moment milliseconds'); + test('is between month', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 6, 7, 8, 9, 10)), + moment(new Date(2011, 1, 6, 7, 8, 9, 10)), + 'month' + ), + false, + 'month match' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 0, 6, 7, 8, 9, 10)), + moment(new Date(2011, 2, 6, 7, 8, 9, 10)), + 'months' + ), + true, + 'plural should work' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 0, 31, 23, 59, 59, 999)), + moment(new Date(2011, 2, 1, 0, 0, 0, 0)), + 'month' + ), + true, + 'month is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 6, 7, 8, 9, 10)), + moment(new Date(2011, 2, 6, 7, 8, 9, 10)), + 'month' + ), + false, + 'month is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 11, 6, 7, 8, 9, 10)), + moment(new Date(2011, 1, 6, 7, 8, 9, 10)), + 'month' + ), + false, + 'month is later' + ); + assert.equal( + m.isBetween(m, m, 'month'), + false, + 'same moments are not between the same month' + ); + assert.equal(+m, +mCopy, 'isBetween month should not change moment'); }); -}))); + test('is between day', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + 'day' + ), + false, + 'day match' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 1, 7, 8, 9, 10)), + moment(new Date(2011, 1, 3, 7, 8, 9, 10)), + 'days' + ), + true, + 'plural should work' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 1, 7, 8, 9, 10)), + moment(new Date(2011, 1, 3, 7, 8, 9, 10)), + 'day' + ), + true, + 'day is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + moment(new Date(2011, 1, 4, 7, 8, 9, 10)), + 'day' + ), + false, + 'day is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 1, 7, 8, 9, 10)), + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + 'day' + ), + false, + 'day is later' + ); + assert.equal( + m.isBetween(m, m, 'day'), + false, + 'same moments are not between the same day' + ); + assert.equal(+m, +mCopy, 'isBetween day should not change moment'); + }); + test('is between hour', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 5, 9, 10)), + moment(new Date(2011, 1, 2, 3, 9, 9, 10)), + 'hour' + ), + false, + 'hour match' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 1, 59, 59, 999)), + moment(new Date(2011, 1, 2, 4, 0, 0, 0)), + 'hours' + ), + true, + 'plural should work' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 2, 59, 59, 999)), + moment(new Date(2011, 1, 2, 4, 0, 0, 0)), + 'hour' + ), + true, + 'hour is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + 'hour' + ), + false, + 'hour is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + moment(new Date(2011, 1, 2, 7, 8, 9, 10)), + 'hour' + ), + false, + 'hour is later' + ); + assert.equal( + m.isBetween(m, m, 'hour'), + false, + 'same moments are not between the same hour' + ); + assert.equal(+m, +mCopy, 'isBetween hour should not change moment'); + }); -;(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'; + test('is between minute', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 9, 10)), + moment(new Date(2011, 1, 2, 3, 4, 9, 10)), + 'minute' + ), + false, + 'minute match' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 3, 9, 10)), + moment(new Date(2011, 1, 2, 3, 5, 9, 10)), + 'minutes' + ), + true, + 'plural should work' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 3, 59, 999)), + moment(new Date(2011, 1, 2, 3, 5, 0, 0)), + 'minute' + ), + true, + 'minute is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 5, 0, 0)), + moment(new Date(2011, 1, 2, 3, 8, 9, 10)), + 'minute' + ), + false, + 'minute is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 2, 9, 10)), + moment(new Date(2011, 1, 2, 3, 3, 59, 999)), + 'minute' + ), + false, + 'minute is later' + ); + assert.equal( + m.isBetween(m, m, 'minute'), + false, + 'same moments are not between the same minute' + ); + assert.equal(+m, +mCopy, 'isBetween minute should not change moment'); + }); - /*global QUnit:false*/ + test('is between second', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 10)), + moment(new Date(2011, 1, 2, 3, 4, 5, 10)), + 'second' + ), + false, + 'second match' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 4, 10)), + moment(new Date(2011, 1, 2, 3, 4, 6, 10)), + 'seconds' + ), + true, + 'plural should work' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 4, 999)), + moment(new Date(2011, 1, 2, 3, 4, 6, 0)), + 'second' + ), + true, + 'second is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 6, 0)), + moment(new Date(2011, 1, 2, 3, 4, 7, 10)), + 'second' + ), + false, + 'second is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 3, 10)), + moment(new Date(2011, 1, 2, 3, 4, 4, 999)), + 'second' + ), + false, + 'second is later' + ); + assert.equal( + m.isBetween(m, m, 'second'), + false, + 'same moments are not between the same second' + ); + assert.equal(+m, +mCopy, 'isBetween second should not change moment'); + }); - var test = QUnit.test; + test('is between millisecond', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + 'millisecond' + ), + false, + 'millisecond match' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 5)), + moment(new Date(2011, 1, 2, 3, 4, 5, 7)), + 'milliseconds' + ), + true, + 'plural should work' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 5)), + moment(new Date(2011, 1, 2, 3, 4, 5, 7)), + 'millisecond' + ), + true, + 'millisecond is between' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 7)), + moment(new Date(2011, 1, 2, 3, 4, 5, 10)), + 'millisecond' + ), + false, + 'millisecond is earlier' + ); + assert.equal( + m.isBetween( + moment(new Date(2011, 1, 2, 3, 4, 5, 4)), + moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + 'millisecond' + ), + false, + 'millisecond is later' + ); + assert.equal( + m.isBetween(m, m, 'millisecond'), + false, + 'same moments are not between the same millisecond' + ); + assert.equal(+m, +mCopy, 'isBetween millisecond should not change moment'); + }); - function isArray(input) { - return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; - } + test('is between invalid', function (assert) { + var invalid = moment(NaN), + valid = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + validFrom = moment(new Date(2010, 1, 2, 3, 4, 5, 6)), + validTo = moment(new Date(2012, 1, 2, 3, 4, 5, 6)); + assert.equal( + invalid.isBetween(validFrom, validTo), + false, + 'this instance invalid' + ); + assert.equal( + invalid.isBetween(validFrom, validTo, '[]'), + false, + 'this instance invalid []' + ); + assert.equal( + invalid.isBetween(validFrom, validTo, '[)'), + false, + 'this instance invalid [)' + ); + assert.equal( + invalid.isBetween(validFrom, validTo, '(]'), + false, + 'this instance invalid (]' + ); + assert.equal( + invalid.isBetween(validFrom, validTo, '()'), + false, + 'this instance invalid ()' + ); - test('isArray recognizes Array objects', function (assert) { - assert.ok(isArray([1,2,3]), 'array args'); - assert.ok(isArray([]), 'empty array'); - assert.ok(isArray(new Array(1,2,3)), 'array constructor'); - }); + assert.equal( + valid.isBetween(invalid, validTo), + false, + 'from invalid moment' + ); + assert.equal( + valid.isBetween(invalid, validTo, '[]'), + false, + 'from invalid moment []' + ); + assert.equal( + valid.isBetween(invalid, validTo, '[)'), + false, + 'from invalid moment [)' + ); + assert.equal( + valid.isBetween(invalid, validTo, '(]'), + false, + 'from invalid moment (]' + ); + assert.equal( + valid.isBetween(invalid, validTo, '()'), + false, + 'from invalid moment ()' + ); - test('isArray rejects non-Array objects', function (assert) { - assert.ok(!isArray(), 'nothing'); - assert.ok(!isArray(undefined), 'undefined'); - assert.ok(!isArray(null), 'null'); - assert.ok(!isArray(123), 'number'); - assert.ok(!isArray('[1,2,3]'), 'string'); - assert.ok(!isArray(new Date()), 'date'); - assert.ok(!isArray({a:1,b:2}), 'object'); + assert.equal( + valid.isBetween(validFrom, invalid), + false, + 'to invalid moment' + ); + assert.equal( + valid.isBetween(validFrom, invalid, '[]'), + false, + 'to invalid moment []' + ); + assert.equal( + valid.isBetween(validFrom, invalid, '[)'), + false, + 'to invalid moment [)' + ); + assert.equal( + valid.isBetween(validFrom, invalid, '(]'), + false, + 'to invalid moment (]' + ); + assert.equal( + valid.isBetween(validFrom, invalid, '()'), + false, + 'to invalid moment ()' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -71558,27 +129271,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -71588,8 +129306,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -71602,7 +129322,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -71611,207 +129334,64 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } - }); - } - - module$1('is before'); - - test('is after without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond match'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier'); - assert.equal(m.isBefore(m), false, 'moments are not before themselves'); - assert.equal(+m, +mCopy, 'isBefore second should not change moment'); - }); - - test('is before year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match'); - assert.equal(m.isBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), false, 'exact start of year'); - assert.equal(m.isBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), false, 'exact end of year'); - assert.equal(m.isBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), true, 'start of next year'); - assert.equal(m.isBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year'); - assert.equal(m.isBefore(moment(new Date(1980, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of year far before'); - assert.equal(m.isBefore(m, 'year'), false, 'same moments are not before the same year'); - assert.equal(+m, +mCopy, 'isBefore year should not change moment'); - }); - - test('is before month', function (assert) { - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month match'); - assert.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), false, 'exact start of month'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), false, 'exact end of month'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), true, 'start of next month'); - assert.equal(m.isBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month'); - assert.equal(m.isBefore(moment(new Date(2010, 12, 31, 23, 59, 59, 999)), 'month'), false, 'later month but earlier year'); - assert.equal(m.isBefore(m, 'month'), false, 'same moments are not before the same month'); - assert.equal(+m, +mCopy, 'isBefore month should not change moment'); - }); - - test('is before day', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 7, 8, 9, 10)), 'day'), false, 'day match'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 7, 8, 9, 10)), 'day'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 7, 8, 9, 10)), 'day'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 7, 8, 9, 10)), 'day'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 7, 8, 9, 10)), 'day'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 7, 8, 9, 10)), 'day'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 0, 0, 0, 0)), 'day'), false, 'exact start of day'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 23, 59, 59, 999)), 'day'), false, 'exact end of day'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 0, 0, 0, 0)), 'day'), true, 'start of next day'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 10, 0, 0, 0, 0)), 'day'), false, 'later day but earlier year'); - assert.equal(m.isBefore(m, 'day'), false, 'same moments are not before the same day'); - assert.equal(+m, +mCopy, 'isBefore day should not change moment'); - }); - - test('is before hour', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour match'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 8, 9, 10)), 'hour'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 8, 9, 10)), 'hour'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 8, 9, 10)), 'hour'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 8, 9, 10)), 'hour'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 8, 9, 10)), 'hour'), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 8, 9, 10)), 'hour'), false, 'hour is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 0, 0, 0)), 'hour'), false, 'exact start of hour'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 59, 59, 999)), 'hour'), false, 'exact end of hour'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 0, 0, 0)), 'hour'), true, 'start of next hour'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour'); - assert.equal(m.isBefore(m, 'hour'), false, 'same moments are not before the same hour'); - assert.equal(+m, +mCopy, 'isBefore hour should not change moment'); - }); - - test('is before minute', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 9, 10)), 'minute'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 9, 10)), 'minute'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 9, 10)), 'minute'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 9, 10)), 'minute'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 3, 4, 9, 10)), 'minute'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 9, 10)), 'minute'), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 2, 4, 9, 10)), 'minute'), false, 'hour is earler'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 9, 10)), 'minute'), true, 'minute is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 9, 10)), 'minute'), false, 'minute is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 0, 0)), 'minute'), false, 'exact start of minute'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 59, 999)), 'minute'), false, 'exact end of minute'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 0, 0)), 'minute'), true, 'start of next minute'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute'); - assert.equal(m.isBefore(m, 'minute'), false, 'same moments are not before the same minute'); - assert.equal(+m, +mCopy, 'isBefore minute should not change moment'); - }); + }, + }); + } - test('is before second', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'second'), false, 'second match'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'second'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'second'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'second'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'second'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'second'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'second'), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'second'), false, 'hour is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'second'), true, 'minute is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'second'), false, 'minute is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'second'), true, 'second is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'second'), false, 'second is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 0)), 'second'), false, 'exact start of second'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 999)), 'second'), false, 'exact end of second'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 0)), 'second'), true, 'start of next second'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second'); - assert.equal(m.isBefore(m, 'second'), false, 'same moments are not before the same second'); - assert.equal(+m, +mCopy, 'isBefore second should not change moment'); - }); + module('is date'); - test('is before millisecond', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond match'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds'), false, 'plural should work'); - assert.equal(m.isBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is later'); - assert.equal(m.isBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is later'); - assert.equal(m.isBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), true, 'day is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), true, 'hour is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), true, 'minute is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), true, 'second is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), true, 'millisecond is later'); - assert.equal(m.isBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier'); - assert.equal(m.isBefore(m, 'millisecond'), false, 'same moments are not before the same millisecond'); - assert.equal(+m, +mCopy, 'isBefore millisecond should not change moment'); + test('isDate recognizes Date objects', function (assert) { + assert.ok(moment.isDate(new Date()), 'no args (now)'); + assert.ok(moment.isDate(new Date([2014, 2, 15])), 'array args'); + assert.ok(moment.isDate(new Date('2014-03-15')), 'string args'); + assert.ok( + moment.isDate(new Date('does NOT look like a date')), + 'invalid date' + ); }); - test('is before invalid', function (assert) { - var m = moment(), invalid = moment.invalid(); - assert.equal(m.isBefore(invalid), false, 'valid moment is not before invalid moment'); - assert.equal(invalid.isBefore(m), false, 'invalid moment is not before valid moment'); - assert.equal(m.isBefore(invalid, 'year'), false, 'invalid moment year'); - assert.equal(m.isBefore(invalid, 'month'), false, 'invalid moment month'); - assert.equal(m.isBefore(invalid, 'day'), false, 'invalid moment day'); - assert.equal(m.isBefore(invalid, 'hour'), false, 'invalid moment hour'); - assert.equal(m.isBefore(invalid, 'minute'), false, 'invalid moment minute'); - assert.equal(m.isBefore(invalid, 'second'), false, 'invalid moment second'); - assert.equal(m.isBefore(invalid, 'milliseconds'), false, 'invalid moment milliseconds'); + test('isDate rejects non-Date objects', function (assert) { + assert.ok(!moment.isDate(), 'nothing'); + assert.ok(!moment.isDate(undefined), 'undefined'); + assert.ok(!moment.isDate(null), 'string args'); + assert.ok(!moment.isDate(42), 'number'); + assert.ok(!moment.isDate('2014-03-15'), 'string'); + assert.ok(!moment.isDate([2014, 2, 15]), 'array'); + assert.ok(!moment.isDate({ year: 2014, month: 2, day: 15 }), 'object'); + assert.ok( + !moment.isDate({ + toString: function () { + return '[object Date]'; + }, + }), + 'lying object' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -71826,27 +129406,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -71856,8 +129441,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -71870,7 +129457,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -71879,411 +129469,132 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('is between'); + module('is moment'); - test('is between without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'year is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2013, 3, 2, 3, 4, 5, 10))), false, 'year is earlier'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10))), true, 'year is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'month is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 5, 2, 3, 4, 5, 10))), false, 'month is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 2, 2, 3, 4, 5, 10)), - moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 1, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'day is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 4, 3, 4, 5, 10))), false, 'day is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 1, 3, 4, 5, 10)), - moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 1, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'hour is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 5, 4, 5, 10))), false, 'hour is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 2, 4, 5, 10)), - moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 6, 5, 10))), false, 'minute is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 2, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'minute is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 3, 5, 10)), - moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 7, 10))), false, 'second is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 3, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'second is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 4, 10)), - moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 12))), false, 'millisecond is later'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 8)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10))), false, 'millisecond is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 9)), - moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is between'); - assert.equal(m.isBetween(m, m), false, 'moments are not between themselves'); - assert.equal(+m, +mCopy, 'isBetween second should not change moment'); - }); + test('is moment object', function (assert) { + var MyObj = function () {}, + extend = function (a, b) { + var i; + for (i in b) { + a[i] = b[i]; + } + return a; + }; + MyObj.prototype.toDate = function () { + return new Date(); + }; - test('is between without units inclusivity', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, start is equal to moment'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, end is equal to moment'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '()'), true, 'start and end are excluded, is between'); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, is not between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '()'), false, 'start and end are excluded, should fail on same start/end date.'); - - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'start is excluded and end is included should fail on same start date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '(]'), true, 'start is excluded and end is included should succeed on end date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '(]'), true, 'start is excluded and end is included, is between'); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'start is excluded and end is included, is not between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '(]'), false, 'start is excluded and end is included, should fail on same start/end date.'); - - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[)'), true, 'start is included and end is excluded should succeed on same start date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'start is included and end is excluded should fail on same end date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[)'), true, 'start is included and end is excluded, is between'); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'start is included and end is excluded, is not between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[)'), false, 'start is included and end is excluded, should fail on same end and start date'); - - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive should succeed on same start date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive should succeed on same end date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive, is between'); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), null, '[]'), false, 'start and end inclusive, is not between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), null, '[]'), true, 'start and end inclusive, should handle same end and start date'); - }); + assert.ok(moment.isMoment(moment()), 'simple moment object'); + assert.ok(moment.isMoment(moment(null)), 'invalid moment object'); + assert.ok( + moment.isMoment(extend({}, moment())), + 'externally cloned moments are moments' + ); + assert.ok( + moment.isMoment(extend({}, moment.utc())), + 'externally cloned utc moments are moments' + ); - test('is between milliseconds inclusivity', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'options, no inclusive'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, start is equal to moment'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, end is equal to moment'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), true, 'start and end are excluded, is between'); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, is not between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '()'), false, 'start and end are excluded, should fail on same start/end date.'); - - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), false, 'start is excluded and end is included should fail on same start date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), true, 'start is excluded and end is included should succeed on end date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), true, 'start is excluded and end is included, is between'); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), false, 'start is excluded and end is included, is not between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '(]'), false, 'start is excluded and end is included, should fail on same start/end date.'); - - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), true, 'start is included and end is excluded should succeed on same start date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), false, 'start is included and end is excluded should fail on same end date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), true, 'start is included and end is excluded, is between'); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), false, 'start is included and end is excluded, is not between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[)'), false, 'start is included and end is excluded, should fail on same end and start date'); - - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive should succeed on same start date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive should succeed on same end date'); - assert.equal(m.isBetween( - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), - moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive, is between'); - assert.equal(m.isBetween( - moment(new Date(2009, 3, 2, 3, 4, 5, 10)), - moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), false, 'start and end inclusive, is not between'); - assert.equal(m.isBetween( - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), - moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds', '[]'), true, 'start and end inclusive, should handle same end and start date'); + assert.ok(!moment.isMoment(new MyObj()), 'myObj is not moment object'); + assert.ok(!moment.isMoment(moment), 'moment function is not moment object'); + assert.ok(!moment.isMoment(new Date()), 'date object is not moment object'); + assert.ok(!moment.isMoment(Object), 'Object is not moment object'); + assert.ok(!moment.isMoment('foo'), 'string is not moment object'); + assert.ok(!moment.isMoment(1), 'number is not moment object'); + assert.ok(!moment.isMoment(NaN), 'NaN is not moment object'); + assert.ok(!moment.isMoment(null), 'null is not moment object'); + assert.ok(!moment.isMoment(undefined), 'undefined is not moment object'); }); - test('is between year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 5, 6, 7, 8, 9, 10)), - moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year match'); - assert.equal(m.isBetween( - moment(new Date(2010, 5, 6, 7, 8, 9, 10)), - moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2010, 5, 6, 7, 8, 9, 10)), - moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 5, 6, 7, 8, 9, 10)), - moment(new Date(2013, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier'); - assert.equal(m.isBetween( - moment(new Date(2010, 5, 6, 7, 8, 9, 10)), - moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later'); - assert.equal(m.isBetween(m, m, 'year'), false, 'same moments are not between the same year'); - assert.equal(+m, +mCopy, 'isBetween year should not change moment'); - }); + test('is moment with hacked hasOwnProperty', function (assert) { + var obj = {}; + // HACK to suppress linter warning about bad property name + obj['hasOwnMoney'.replace('Money', 'Property')] = function () { + return true; + }; - test('is between month', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 6, 7, 8, 9, 10)), - moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month match'); - assert.equal(m.isBetween( - moment(new Date(2011, 0, 6, 7, 8, 9, 10)), - moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 0, 31, 23, 59, 59, 999)), - moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'month is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 6, 7, 8, 9, 10)), - moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 11, 6, 7, 8, 9, 10)), - moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is later'); - assert.equal(m.isBetween(m, m, 'month'), false, 'same moments are not between the same month'); - assert.equal(+m, +mCopy, 'isBetween month should not change moment'); + assert.ok( + !moment.isMoment(obj), + 'isMoment works even if passed object has a wrong hasOwnProperty implementation (ie8)' + ); }); - test('is between day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), false, 'day match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 1, 7, 8, 9, 10)), - moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 1, 7, 8, 9, 10)), - moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), true, 'day is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), - moment(new Date(2011, 1, 4, 7, 8, 9, 10)), 'day'), false, 'day is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 1, 7, 8, 9, 10)), - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), false, 'day is later'); - assert.equal(m.isBetween(m, m, 'day'), false, 'same moments are not between the same day'); - assert.equal(+m, +mCopy, 'isBetween day should not change moment'); - }); +}))); - test('is between hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 5, 9, 10)), - moment(new Date(2011, 1, 2, 3, 9, 9, 10)), 'hour'), false, 'hour match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 1, 59, 59, 999)), - moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hours'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 2, 59, 59, 999)), - moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), true, 'hour is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'hour'), false, 'hour is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), - moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'hour'), false, 'hour is later'); - assert.equal(m.isBetween(m, m, 'hour'), false, 'same moments are not between the same hour'); - assert.equal(+m, +mCopy, 'isBetween hour should not change moment'); - }); - test('is between minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 9, 10)), - moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'minute match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 3, 9, 10)), - moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 3, 59, 999)), - moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), true, 'minute is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 5, 0, 0)), - moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'minute'), false, 'minute is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 2, 9, 10)), - moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'minute is later'); - assert.equal(m.isBetween(m, m, 'minute'), false, 'same moments are not between the same minute'); - assert.equal(+m, +mCopy, 'isBetween minute should not change moment'); - }); - test('is between second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 10)), - moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), false, 'second match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 4, 10)), - moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 4, 999)), - moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), true, 'second is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 6, 0)), - moment(new Date(2011, 1, 2, 3, 4, 7, 10)), 'second'), false, 'second is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 3, 10)), - moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'second is later'); - assert.equal(m.isBetween(m, m, 'second'), false, 'same moments are not between the same second'); - assert.equal(+m, +mCopy, 'isBetween second should not change moment'); - }); +;(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'; - test('is between millisecond', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 6)), - moment(new Date(2011, 1, 2, 3, 4, 5, 6)), 'millisecond'), false, 'millisecond match'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 5)), - moment(new Date(2011, 1, 2, 3, 4, 5, 7)), 'milliseconds'), true, 'plural should work'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 5)), - moment(new Date(2011, 1, 2, 3, 4, 5, 7)), 'millisecond'), true, 'millisecond is between'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 7)), - moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'millisecond'), false, 'millisecond is earlier'); - assert.equal(m.isBetween( - moment(new Date(2011, 1, 2, 3, 4, 5, 4)), - moment(new Date(2011, 1, 2, 3, 4, 5, 6)), 'millisecond'), false, 'millisecond is later'); - assert.equal(m.isBetween(m, m, 'millisecond'), false, 'same moments are not between the same millisecond'); - assert.equal(+m, +mCopy, 'isBetween millisecond should not change moment'); - }); + /*global QUnit:false*/ - test('is between invalid', function (assert) { - var invalid = moment(NaN), - valid = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), - validFrom = moment(new Date(2010, 1, 2, 3, 4, 5, 6)), - validTo = moment(new Date(2012, 1, 2, 3, 4, 5, 6)); - assert.equal(invalid.isBetween(validFrom, validTo), false, 'this instance invalid'); - assert.equal(invalid.isBetween(validFrom, validTo, '[]'), false, 'this instance invalid []'); - assert.equal(invalid.isBetween(validFrom, validTo, '[)'), false, 'this instance invalid [)'); - assert.equal(invalid.isBetween(validFrom, validTo, '(]'), false, 'this instance invalid (]'); - assert.equal(invalid.isBetween(validFrom, validTo, '()'), false, 'this instance invalid ()'); + var test = QUnit.test, + only = QUnit.only; + + function isNumber(input) { + return ( + typeof input === 'number' || + Object.prototype.toString.call(input) === '[object Number]' + ); + } - assert.equal(valid.isBetween(invalid, validTo), false, 'from invalid moment'); - assert.equal(valid.isBetween(invalid, validTo, '[]'), false, 'from invalid moment []'); - assert.equal(valid.isBetween(invalid, validTo, '[)'), false, 'from invalid moment [)'); - assert.equal(valid.isBetween(invalid, validTo, '(]'), false, 'from invalid moment (]'); - assert.equal(valid.isBetween(invalid, validTo, '()'), false, 'from invalid moment ()'); + test('isNumber recognizes numbers', function (assert) { + assert.ok(isNumber(1), 'simple integer'); + assert.ok(isNumber(0), 'simple number'); + assert.ok(isNumber(-0), 'silly number'); + assert.ok(isNumber(1010010293029), 'large number'); + assert.ok(isNumber(Infinity), 'largest number'); + assert.ok(isNumber(-Infinity), 'smallest number'); + assert.ok(isNumber(NaN), 'not number'); + assert.ok(isNumber(1.10039383), 'decimal numbers'); + assert.ok(isNumber(Math.LN2), 'natural log of two'); + assert.ok(isNumber(Math.PI), 'delicious number'); + assert.ok(isNumber(5e10), 'scientifically notated number'); + assert.ok(isNumber(new Number(1)), 'number primitive wrapped in an object'); + }); - assert.equal(valid.isBetween(validFrom, invalid), false, 'to invalid moment'); - assert.equal(valid.isBetween(validFrom, invalid, '[]'), false, 'to invalid moment []'); - assert.equal(valid.isBetween(validFrom, invalid, '[)'), false, 'to invalid moment [)'); - assert.equal(valid.isBetween(validFrom, invalid, '(]'), false, 'to invalid moment (]'); - assert.equal(valid.isBetween(validFrom, invalid, '()'), false, 'to invalid moment ()'); + test('isNumber rejects non-numbers', function (assert) { + assert.ok(!isNumber(), 'nothing'); + assert.ok(!isNumber(undefined), 'undefined'); + assert.ok(!isNumber(null), 'null'); + assert.ok(!isNumber([1]), 'array'); + assert.ok(!isNumber('[1,2,3]'), 'string'); + assert.ok(!isNumber(new Date()), 'date'); + assert.ok(!isNumber({ a: 1, b: 2 }), 'object'); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -72298,27 +129609,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -72328,8 +129644,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -72342,7 +129660,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -72351,56 +129672,809 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('is date'); + module('is same or after'); - test('isDate recognizes Date objects', function (assert) { - assert.ok(moment.isDate(new Date()), 'no args (now)'); - assert.ok(moment.isDate(new Date([2014, 2, 15])), 'array args'); - assert.ok(moment.isDate(new Date('2014-03-15')), 'string args'); - assert.ok(moment.isDate(new Date('does NOT look like a date')), 'invalid date'); + test('is same or after without units', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isSameOrAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), + false, + 'year is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), + true, + 'year is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), + false, + 'month is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), + true, + 'month is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), + false, + 'day is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), + true, + 'day is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), + false, + 'hour is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), + true, + 'hour is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), + false, + 'minute is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), + true, + 'minute is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), + false, + 'second is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), + true, + 'second is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), + true, + 'millisecond match' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), + false, + 'millisecond is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), + true, + 'millisecond is earlier' + ); + assert.equal( + m.isSameOrAfter(m), + true, + 'moments are the same as themselves' + ); + assert.equal(+m, +mCopy, 'isSameOrAfter second should not change moment'); }); - test('isDate rejects non-Date objects', function (assert) { - assert.ok(!moment.isDate(), 'nothing'); - assert.ok(!moment.isDate(undefined), 'undefined'); - assert.ok(!moment.isDate(null), 'string args'); - assert.ok(!moment.isDate(42), 'number'); - assert.ok(!moment.isDate('2014-03-15'), 'string'); - assert.ok(!moment.isDate([2014, 2, 15]), 'array'); - assert.ok(!moment.isDate({year: 2014, month: 2, day: 15}), 'object'); - assert.ok(!moment.isDate({ - toString: function () { - return '[object Date]'; - } - }), 'lying object'); + test('is same or after year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), + true, + 'year match' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), + false, + 'year is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), + true, + 'year is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), + true, + 'exact start of year' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 11, 31, 23, 59, 59, 999)), + 'year' + ), + true, + 'exact end of year' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), + false, + 'start of next year' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2010, 11, 31, 23, 59, 59, 999)), + 'year' + ), + true, + 'end of previous year' + ); + assert.equal( + m.isSameOrAfter(m, 'year'), + true, + 'same moments are in the same year' + ); + assert.equal(+m, +mCopy, 'isSameOrAfter year should not change moment'); + }); + + test('is same or after month', function (assert) { + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), + mCopy = moment(m); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), + true, + 'month match' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), + false, + 'year is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), + true, + 'year is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), + false, + 'month is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), + true, + 'month is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), + true, + 'exact start of month' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 2, 31, 23, 59, 59, 999)), + 'month' + ), + true, + 'exact end of month' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), + false, + 'start of next month' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 1, 27, 23, 59, 59, 999)), + 'month' + ), + true, + 'end of previous month' + ); + assert.equal( + m.isSameOrAfter(m, 'month'), + true, + 'same moments are in the same month' + ); + assert.equal(+m, +mCopy, 'isSameOrAfter month should not change moment'); + }); + + test('is same or after day', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), + true, + 'day match' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), + false, + 'year is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 1, 2, 7, 8, 9, 10)), 'day'), + true, + 'year is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), + false, + 'month is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 12, 2, 7, 8, 9, 10)), 'day'), + true, + 'month is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), + false, + 'day is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 1, 7, 8, 9, 10)), 'day'), + true, + 'day is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), + true, + 'exact start of day' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), + true, + 'exact end of day' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), + false, + 'start of next day' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), + true, + 'end of previous day' + ); + assert.equal( + m.isSameOrAfter(m, 'day'), + true, + 'same moments are in the same day' + ); + assert.equal(+m, +mCopy, 'isSameOrAfter day should not change moment'); + }); + + test('is same or after hour', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), + true, + 'hour match' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), + false, + 'year is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 1, 2, 3, 8, 9, 10)), 'hour'), + true, + 'year is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), + false, + 'month is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 12, 2, 3, 8, 9, 10)), 'hour'), + true, + 'month is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), + false, + 'day is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 1, 3, 8, 9, 10)), 'hour'), + true, + 'day is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), + false, + 'hour is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 8, 9, 10)), 'hour'), + true, + 'hour is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), + true, + 'exact start of hour' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), + true, + 'exact end of hour' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), + false, + 'start of next hour' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), + true, + 'end of previous hour' + ); + assert.equal( + m.isSameOrAfter(m, 'hour'), + true, + 'same moments are in the same hour' + ); + assert.equal(+m, +mCopy, 'isSameOrAfter hour should not change moment'); + }); + + test('is same or after minute', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), + true, + 'minute match' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), + false, + 'year is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 1, 2, 3, 4, 9, 10)), 'minute'), + true, + 'year is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), + false, + 'month is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 12, 2, 3, 4, 9, 10)), 'minute'), + true, + 'month is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), + false, + 'day is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 1, 3, 4, 9, 10)), 'minute'), + true, + 'day is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), + false, + 'hour is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 4, 9, 10)), 'minute'), + true, + 'hour is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), + false, + 'minute is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 3, 9, 10)), 'minute'), + true, + 'minute is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), + true, + 'exact start of minute' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), + true, + 'exact end of minute' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), + false, + 'start of next minute' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), + true, + 'end of previous minute' + ); + assert.equal( + m.isSameOrAfter(m, 'minute'), + true, + 'same moments are in the same minute' + ); + assert.equal(+m, +mCopy, 'isSameOrAfter minute should not change moment'); + }); + + test('is same or after second', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), + true, + 'second match' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), + false, + 'year is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 1, 2, 3, 4, 5, 10)), 'second'), + true, + 'year is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), + false, + 'month is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2010, 12, 2, 3, 4, 5, 10)), 'second'), + true, + 'month is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), + false, + 'day is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 1, 3, 4, 5, 10)), 'second'), + true, + 'day is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), + false, + 'hour is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 4, 5, 10)), 'second'), + true, + 'hour is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), + false, + 'minute is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 3, 5, 10)), 'second'), + true, + 'minute is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), + false, + 'second is later' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 4, 10)), 'second'), + true, + 'second is earlier' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), + true, + 'exact start of second' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), + true, + 'exact end of second' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), + false, + 'start of next second' + ); + assert.equal( + m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), + true, + 'end of previous second' + ); + assert.equal( + m.isSameOrAfter(m, 'second'), + true, + 'same moments are in the same second' + ); + assert.equal(+m, +mCopy, 'isSameOrAfter second should not change moment'); + }); + + test('is same or after millisecond', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'millisecond' + ), + true, + 'millisecond match' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds' + ), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'millisecond' + ), + false, + 'year is later' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + 'millisecond' + ), + true, + 'year is earlier' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 4, 2, 3, 4, 5, 10)), + 'millisecond' + ), + false, + 'month is later' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 2, 2, 3, 4, 5, 10)), + 'millisecond' + ), + true, + 'month is earlier' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 3, 3, 4, 5, 10)), + 'millisecond' + ), + false, + 'day is later' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 1, 1, 4, 5, 10)), + 'millisecond' + ), + true, + 'day is earlier' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 2, 4, 4, 5, 10)), + 'millisecond' + ), + false, + 'hour is later' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 1, 4, 1, 5, 10)), + 'millisecond' + ), + true, + 'hour is earlier' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 2, 3, 5, 5, 10)), + 'millisecond' + ), + false, + 'minute is later' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 2, 3, 3, 5, 10)), + 'millisecond' + ), + true, + 'minute is earlier' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 2, 3, 4, 6, 10)), + 'millisecond' + ), + false, + 'second is later' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 2, 3, 4, 4, 5)), + 'millisecond' + ), + true, + 'second is earlier' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 2, 3, 4, 6, 11)), + 'millisecond' + ), + false, + 'millisecond is later' + ); + assert.equal( + m.isSameOrAfter( + moment(new Date(2011, 3, 2, 3, 4, 4, 9)), + 'millisecond' + ), + true, + 'millisecond is earlier' + ); + assert.equal( + m.isSameOrAfter(m, 'millisecond'), + true, + 'same moments are in the same millisecond' + ); + assert.equal( + +m, + +mCopy, + 'isSameOrAfter millisecond should not change moment' + ); + }); + + test('is same or after with utc offset moments', function (assert) { + assert.ok( + moment + .parseZone('2013-02-01T00:00:00-05:00') + .isSameOrAfter(moment('2013-02-01'), 'year'), + 'zoned vs local moment' + ); + assert.ok( + moment('2013-02-01').isSameOrAfter( + moment('2013-02-01').utcOffset('-05:00'), + 'year' + ), + 'local vs zoned moment' + ); + assert.ok( + moment + .parseZone('2013-02-01T00:00:00-05:00') + .isSameOrAfter( + moment.parseZone('2013-02-01T00:00:00-06:30'), + 'year' + ), + 'zoned vs (differently) zoned moment' + ); + }); + + test('is same or after with invalid moments', function (assert) { + var m = moment(), + invalid = moment.invalid(); + assert.equal( + invalid.isSameOrAfter(invalid), + false, + 'invalid moments are not considered equal' + ); + assert.equal( + m.isSameOrAfter(invalid), + false, + 'valid moment is not after invalid moment' + ); + assert.equal( + invalid.isSameOrAfter(m), + false, + 'invalid moment is not after valid moment' + ); + assert.equal( + m.isSameOrAfter(invalid, 'year'), + false, + 'invalid moment year' + ); + assert.equal( + m.isSameOrAfter(invalid, 'month'), + false, + 'invalid moment month' + ); + assert.equal(m.isSameOrAfter(invalid, 'day'), false, 'invalid moment day'); + assert.equal( + m.isSameOrAfter(invalid, 'hour'), + false, + 'invalid moment hour' + ); + assert.equal( + m.isSameOrAfter(invalid, 'minute'), + false, + 'invalid moment minute' + ); + assert.equal( + m.isSameOrAfter(invalid, 'second'), + false, + 'invalid moment second' + ); + assert.equal( + m.isSameOrAfter(invalid, 'milliseconds'), + false, + 'invalid moment milliseconds' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -72415,27 +130489,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -72445,8 +130524,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -72459,7 +130540,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -72468,116 +130552,809 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('is moment'); - - test('is moment object', function (assert) { - var MyObj = function () {}, - extend = function (a, b) { - var i; - for (i in b) { - a[i] = b[i]; - } - return a; - }; - MyObj.prototype.toDate = function () { - return new Date(); - }; - - assert.ok(moment.isMoment(moment()), 'simple moment object'); - assert.ok(moment.isMoment(moment(null)), 'invalid moment object'); - assert.ok(moment.isMoment(extend({}, moment())), 'externally cloned moments are moments'); - assert.ok(moment.isMoment(extend({}, moment.utc())), 'externally cloned utc moments are moments'); + module('is same or before'); - assert.ok(!moment.isMoment(new MyObj()), 'myObj is not moment object'); - assert.ok(!moment.isMoment(moment), 'moment function is not moment object'); - assert.ok(!moment.isMoment(new Date()), 'date object is not moment object'); - assert.ok(!moment.isMoment(Object), 'Object is not moment object'); - assert.ok(!moment.isMoment('foo'), 'string is not moment object'); - assert.ok(!moment.isMoment(1), 'number is not moment object'); - assert.ok(!moment.isMoment(NaN), 'NaN is not moment object'); - assert.ok(!moment.isMoment(null), 'null is not moment object'); - assert.ok(!moment.isMoment(undefined), 'undefined is not moment object'); + test('is same or before without units', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isSameOrBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), + true, + 'year is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), + false, + 'year is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), + true, + 'month is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), + false, + 'month is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), + true, + 'day is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), + false, + 'day is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), + true, + 'hour is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), + false, + 'hour is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), + true, + 'minute is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), + false, + 'minute is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), + true, + 'second is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), + false, + 'second is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), + true, + 'millisecond match' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), + true, + 'millisecond is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), + false, + 'millisecond is earlier' + ); + assert.equal( + m.isSameOrBefore(m), + true, + 'moments are the same as themselves' + ); + assert.equal(+m, +mCopy, 'isSameOrBefore second should not change moment'); }); - test('is moment with hacked hasOwnProperty', function (assert) { - var obj = {}; - // HACK to suppress jshint warning about bad property name - obj['hasOwnMoney'.replace('Money', 'Property')] = function () { - return true; - }; - - assert.ok(!moment.isMoment(obj), 'isMoment works even if passed object has a wrong hasOwnProperty implementation (ie8)'); + test('is same or before year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), + true, + 'year match' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), + true, + 'year is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), + false, + 'year is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), + true, + 'exact start of year' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 11, 31, 23, 59, 59, 999)), + 'year' + ), + true, + 'exact end of year' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), + true, + 'start of next year' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2010, 11, 31, 23, 59, 59, 999)), + 'year' + ), + false, + 'end of previous year' + ); + assert.equal( + m.isSameOrBefore(m, 'year'), + true, + 'same moments are in the same year' + ); + assert.equal(+m, +mCopy, 'isSameOrBefore year should not change moment'); }); -}))); + test('is same or before month', function (assert) { + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), + mCopy = moment(m); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), + true, + 'month match' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), + true, + 'year is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), + false, + 'year is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), + true, + 'month is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), + false, + 'month is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), + true, + 'exact start of month' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 2, 31, 23, 59, 59, 999)), + 'month' + ), + true, + 'exact end of month' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), + true, + 'start of next month' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 1, 27, 23, 59, 59, 999)), + 'month' + ), + false, + 'end of previous month' + ); + assert.equal( + m.isSameOrBefore(m, 'month'), + true, + 'same moments are in the same month' + ); + assert.equal(+m, +mCopy, 'isSameOrBefore month should not change moment'); + }); + test('is same or before day', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), + true, + 'day match' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), + true, + 'year is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 1, 2, 7, 8, 9, 10)), 'day'), + false, + 'year is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), + true, + 'month is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 12, 2, 7, 8, 9, 10)), 'day'), + false, + 'month is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), + true, + 'day is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 1, 7, 8, 9, 10)), 'day'), + false, + 'day is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), + true, + 'exact start of day' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), + true, + 'exact end of day' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), + true, + 'start of next day' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), + false, + 'end of previous day' + ); + assert.equal( + m.isSameOrBefore(m, 'day'), + true, + 'same moments are in the same day' + ); + assert.equal(+m, +mCopy, 'isSameOrBefore day should not change moment'); + }); -;(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'; + test('is same or before hour', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), + true, + 'hour match' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), + true, + 'year is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 1, 2, 3, 8, 9, 10)), 'hour'), + false, + 'year is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), + true, + 'month is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 12, 2, 3, 8, 9, 10)), 'hour'), + false, + 'month is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), + true, + 'day is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 1, 3, 8, 9, 10)), 'hour'), + false, + 'day is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), + true, + 'hour is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 8, 9, 10)), 'hour'), + false, + 'hour is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), + true, + 'exact start of hour' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), + true, + 'exact end of hour' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), + true, + 'start of next hour' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), + false, + 'end of previous hour' + ); + assert.equal( + m.isSameOrBefore(m, 'hour'), + true, + 'same moments are in the same hour' + ); + assert.equal(+m, +mCopy, 'isSameOrBefore hour should not change moment'); + }); - /*global QUnit:false*/ + test('is same or before minute', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), + true, + 'minute match' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), + true, + 'year is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 1, 2, 3, 4, 9, 10)), 'minute'), + false, + 'year is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), + true, + 'month is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 12, 2, 3, 4, 9, 10)), 'minute'), + false, + 'month is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), + true, + 'day is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 1, 3, 4, 9, 10)), 'minute'), + false, + 'day is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), + true, + 'hour is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 4, 9, 10)), 'minute'), + false, + 'hour is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), + true, + 'minute is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 3, 9, 10)), 'minute'), + false, + 'minute is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), + true, + 'exact start of minute' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), + true, + 'exact end of minute' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), + true, + 'start of next minute' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), + false, + 'end of previous minute' + ); + assert.equal( + m.isSameOrBefore(m, 'minute'), + true, + 'same moments are in the same minute' + ); + assert.equal(+m, +mCopy, 'isSameOrBefore minute should not change moment'); + }); - var test = QUnit.test; + test('is same or before second', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), + true, + 'second match' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), + true, + 'year is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 1, 2, 3, 4, 5, 10)), 'second'), + false, + 'year is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), + true, + 'month is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2010, 12, 2, 3, 4, 5, 10)), 'second'), + false, + 'month is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), + true, + 'day is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 1, 3, 4, 5, 10)), 'second'), + false, + 'day is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), + true, + 'hour is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 4, 5, 10)), 'second'), + false, + 'hour is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), + true, + 'minute is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 3, 5, 10)), 'second'), + false, + 'minute is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), + true, + 'second is later' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 4, 10)), 'second'), + false, + 'second is earlier' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), + true, + 'exact start of second' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), + true, + 'exact end of second' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), + true, + 'start of next second' + ); + assert.equal( + m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), + false, + 'end of previous second' + ); + assert.equal( + m.isSameOrBefore(m, 'second'), + true, + 'same moments are in the same second' + ); + assert.equal(+m, +mCopy, 'isSameOrBefore second should not change moment'); + }); - function isNumber(input) { - return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; - } + test('is same or before millisecond', function (assert) { + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'millisecond' + ), + true, + 'millisecond match' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + 'milliseconds' + ), + true, + 'plural should work' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2012, 3, 2, 3, 4, 5, 10)), + 'millisecond' + ), + true, + 'year is later' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2010, 3, 2, 3, 4, 5, 10)), + 'millisecond' + ), + false, + 'year is earlier' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 4, 2, 3, 4, 5, 10)), + 'millisecond' + ), + true, + 'month is later' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 2, 2, 3, 4, 5, 10)), + 'millisecond' + ), + false, + 'month is earlier' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 3, 3, 4, 5, 10)), + 'millisecond' + ), + true, + 'day is later' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 1, 1, 4, 5, 10)), + 'millisecond' + ), + false, + 'day is earlier' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 2, 4, 4, 5, 10)), + 'millisecond' + ), + true, + 'hour is later' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 1, 4, 1, 5, 10)), + 'millisecond' + ), + false, + 'hour is earlier' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 2, 3, 5, 5, 10)), + 'millisecond' + ), + true, + 'minute is later' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 2, 3, 3, 5, 10)), + 'millisecond' + ), + false, + 'minute is earlier' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 2, 3, 4, 6, 10)), + 'millisecond' + ), + true, + 'second is later' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 2, 3, 4, 4, 5)), + 'millisecond' + ), + false, + 'second is earlier' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 2, 3, 4, 6, 11)), + 'millisecond' + ), + true, + 'millisecond is later' + ); + assert.equal( + m.isSameOrBefore( + moment(new Date(2011, 3, 2, 3, 4, 4, 9)), + 'millisecond' + ), + false, + 'millisecond is earlier' + ); + assert.equal( + m.isSameOrBefore(m, 'millisecond'), + true, + 'same moments are in the same millisecond' + ); + assert.equal( + +m, + +mCopy, + 'isSameOrBefore millisecond should not change moment' + ); + }); - test('isNumber recognizes numbers', function (assert) { - assert.ok(isNumber(1), 'simple integer'); - assert.ok(isNumber(0), 'simple number'); - assert.ok(isNumber(-0), 'silly number'); - assert.ok(isNumber(1010010293029), 'large number'); - assert.ok(isNumber(Infinity), 'largest number'); - assert.ok(isNumber(-Infinity), 'smallest number'); - assert.ok(isNumber(NaN), 'not number'); - assert.ok(isNumber(1.100393830000), 'decimal numbers'); - assert.ok(isNumber(Math.LN2), 'natural log of two'); - assert.ok(isNumber(Math.PI), 'delicious number'); - assert.ok(isNumber(5e10), 'scientifically notated number'); - assert.ok(isNumber(new Number(1)), 'number primitive wrapped in an object'); // jshint ignore:line + test('is same with utc offset moments', function (assert) { + assert.ok( + moment + .parseZone('2013-02-01T00:00:00-05:00') + .isSameOrBefore(moment('2013-02-01'), 'year'), + 'zoned vs local moment' + ); + assert.ok( + moment('2013-02-01').isSameOrBefore( + moment('2013-02-01').utcOffset('-05:00'), + 'year' + ), + 'local vs zoned moment' + ); + assert.ok( + moment + .parseZone('2013-02-01T00:00:00-05:00') + .isSameOrBefore( + moment.parseZone('2013-02-01T00:00:00-06:30'), + 'year' + ), + 'zoned vs (differently) zoned moment' + ); }); - test('isNumber rejects non-numbers', function (assert) { - assert.ok(!isNumber(), 'nothing'); - assert.ok(!isNumber(undefined), 'undefined'); - assert.ok(!isNumber(null), 'null'); - assert.ok(!isNumber([1]), 'array'); - assert.ok(!isNumber('[1,2,3]'), 'string'); - assert.ok(!isNumber(new Date()), 'date'); - assert.ok(!isNumber({a:1,b:2}), 'object'); + test('is same with invalid moments', function (assert) { + var m = moment(), + invalid = moment.invalid(); + assert.equal( + invalid.isSameOrBefore(invalid), + false, + 'invalid moments are not considered equal' + ); + assert.equal( + m.isSameOrBefore(invalid), + false, + 'valid moment is not before invalid moment' + ); + assert.equal( + invalid.isSameOrBefore(m), + false, + 'invalid moment is not before valid moment' + ); + assert.equal( + m.isSameOrBefore(invalid, 'year'), + false, + 'invalid moment year' + ); + assert.equal( + m.isSameOrBefore(invalid, 'month'), + false, + 'invalid moment month' + ); + assert.equal(m.isSameOrBefore(invalid, 'day'), false, 'invalid moment day'); + assert.equal( + m.isSameOrBefore(invalid, 'hour'), + false, + 'invalid moment hour' + ); + assert.equal( + m.isSameOrBefore(invalid, 'minute'), + false, + 'invalid moment minute' + ); + assert.equal( + m.isSameOrBefore(invalid, 'second'), + false, + 'invalid moment second' + ); + assert.equal( + m.isSameOrBefore(invalid, 'milliseconds'), + false, + 'invalid moment milliseconds' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -72592,27 +131369,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -72622,8 +131404,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -72636,7 +131420,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -72645,181 +131432,586 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('is same'); + module('is same'); test('is same without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later'); - assert.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, 'millisecond match'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier'); + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isSame(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), + false, + 'year is later' + ); + assert.equal( + m.isSame(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), + false, + 'year is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), + false, + 'month is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), + false, + 'month is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), + false, + 'day is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), + false, + 'day is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), + false, + 'hour is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), + false, + 'hour is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), + false, + 'minute is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), + false, + 'minute is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), + false, + 'second is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), + false, + 'second is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), + true, + 'millisecond match' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), + false, + 'millisecond is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), + false, + 'millisecond is earlier' + ); assert.equal(m.isSame(m), true, 'moments are the same as themselves'); assert.equal(+m, +mCopy, 'isSame second should not change moment'); }); test('is same year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year match'); - assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, 'exact start of year'); - assert.equal(m.isSame(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, 'exact end of year'); - assert.equal(m.isSame(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year'); - assert.equal(m.isSame(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year'); - assert.equal(m.isSame(m, 'year'), true, 'same moments are in the same year'); + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), + true, + 'year match' + ); + assert.equal( + m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), + true, + 'plural should work' + ); + assert.equal( + m.isSame(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), + false, + 'year mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), + true, + 'exact start of year' + ); + assert.equal( + m.isSame(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), + true, + 'exact end of year' + ); + assert.equal( + m.isSame(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), + false, + 'start of next year' + ); + assert.equal( + m.isSame(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), + false, + 'end of previous year' + ); + assert.equal( + m.isSame(m, 'year'), + true, + 'same moments are in the same year' + ); assert.equal(+m, +mCopy, 'isSame year should not change moment'); }); test('is same month', function (assert) { - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, 'month match'); - assert.equal(m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'exact start of month'); - assert.equal(m.isSame(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, 'exact end of month'); - assert.equal(m.isSame(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month'); - assert.equal(m.isSame(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month'); - assert.equal(m.isSame(m, 'month'), true, 'same moments are in the same month'); + var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), + mCopy = moment(m); + assert.equal( + m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), + true, + 'month match' + ); + assert.equal( + m.isSame(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), + true, + 'plural should work' + ); + assert.equal( + m.isSame(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), + false, + 'year mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), + false, + 'month mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), + true, + 'exact start of month' + ); + assert.equal( + m.isSame(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), + true, + 'exact end of month' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), + false, + 'start of next month' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), + false, + 'end of previous month' + ); + assert.equal( + m.isSame(m, 'month'), + true, + 'same moments are in the same month' + ); assert.equal(+m, +mCopy, 'isSame month should not change moment'); }); test('is same day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, 'day match'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), false, 'day mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, 'exact start of day'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, 'exact end of day'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day'); - assert.equal(m.isSame(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day'); + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), + true, + 'day match' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), + true, + 'plural should work' + ); + assert.equal( + m.isSame(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), + false, + 'year mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), + false, + 'month mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), + false, + 'day mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), + true, + 'exact start of day' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), + true, + 'exact end of day' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), + false, + 'start of next day' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), + false, + 'end of previous day' + ); assert.equal(m.isSame(m, 'day'), true, 'same moments are in the same day'); assert.equal(+m, +mCopy, 'isSame day should not change moment'); }); test('is same hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'hour match'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), false, 'day mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), false, 'hour mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, 'exact start of hour'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, 'exact end of hour'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour'); - assert.equal(m.isSame(m, 'hour'), true, 'same moments are in the same hour'); + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), + true, + 'hour match' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), + true, + 'plural should work' + ); + assert.equal( + m.isSame(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), + false, + 'year mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), + false, + 'month mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), + false, + 'day mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), + false, + 'hour mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), + true, + 'exact start of hour' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), + true, + 'exact end of hour' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), + false, + 'start of next hour' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), + false, + 'end of previous hour' + ); + assert.equal( + m.isSame(m, 'hour'), + true, + 'same moments are in the same hour' + ); assert.equal(+m, +mCopy, 'isSame hour should not change moment'); }); test('is same minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'minute match'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), false, 'day mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), false, 'hour mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), false, 'minute mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, 'exact start of minute'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, 'exact end of minute'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute'); - assert.equal(m.isSame(m, 'minute'), true, 'same moments are in the same minute'); + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), + true, + 'minute match' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), + true, + 'plural should work' + ); + assert.equal( + m.isSame(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), + false, + 'year mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), + false, + 'month mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), + false, + 'day mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), + false, + 'hour mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), + false, + 'minute mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), + true, + 'exact start of minute' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), + true, + 'exact end of minute' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), + false, + 'start of next minute' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), + false, + 'end of previous minute' + ); + assert.equal( + m.isSame(m, 'minute'), + true, + 'same moments are in the same minute' + ); assert.equal(+m, +mCopy, 'isSame minute should not change moment'); }); test('is same second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, 'second match'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), false, 'year mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), false, 'day mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), false, 'hour mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), false, 'minute mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), false, 'second mismatch'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, 'exact start of second'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, 'exact end of second'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second'); - assert.equal(m.isSame(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second'); - assert.equal(m.isSame(m, 'second'), true, 'same moments are in the same second'); + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), + mCopy = moment(m); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), + true, + 'second match' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), + true, + 'plural should work' + ); + assert.equal( + m.isSame(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), + false, + 'year mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), + false, + 'month mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), + false, + 'day mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), + false, + 'hour mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), + false, + 'minute mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), + false, + 'second mismatch' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), + true, + 'exact start of second' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), + true, + 'exact end of second' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), + false, + 'start of next second' + ); + assert.equal( + m.isSame(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), + false, + 'end of previous second' + ); + assert.equal( + m.isSame(m, 'second'), + true, + 'same moments are in the same second' + ); assert.equal(+m, +mCopy, 'isSame second should not change moment'); }); test('is same millisecond', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'millisecond match'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work'); - assert.equal(m.isSame(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later'); - assert.equal(m.isSame(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later'); - assert.equal(m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later'); - assert.equal(m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier'); - assert.equal(m.isSame(m, 'millisecond'), true, 'same moments are in the same millisecond'); + var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), + mCopy = moment(m); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), + true, + 'millisecond match' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), + true, + 'plural should work' + ); + assert.equal( + m.isSame(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'year is later' + ); + assert.equal( + m.isSame(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'year is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'month is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), + false, + 'month is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), + false, + 'day is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), + false, + 'day is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), + false, + 'hour is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), + false, + 'hour is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), + false, + 'minute is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), + false, + 'minute is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), + false, + 'second is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), + false, + 'second is earlier' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), + false, + 'millisecond is later' + ); + assert.equal( + m.isSame(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), + false, + 'millisecond is earlier' + ); + assert.equal( + m.isSame(m, 'millisecond'), + true, + 'same moments are in the same millisecond' + ); assert.equal(+m, +mCopy, 'isSame millisecond should not change moment'); }); test('is same with utc offset moments', function (assert) { - assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSame(moment('2013-02-01'), 'year'), 'zoned vs local moment'); - assert.ok(moment('2013-02-01').isSame(moment('2013-02-01').utcOffset('-05:00'), 'year'), 'local vs zoned moment'); - assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSame(moment.parseZone('2013-02-01T00:00:00-06:30'), 'year'), - 'zoned vs (differently) zoned moment'); + assert.ok( + moment + .parseZone('2013-02-01T00:00:00-05:00') + .isSame(moment('2013-02-01'), 'year'), + 'zoned vs local moment' + ); + assert.ok( + moment('2013-02-01').isSame( + moment('2013-02-01').utcOffset('-05:00'), + 'year' + ), + 'local vs zoned moment' + ); + assert.ok( + moment + .parseZone('2013-02-01T00:00:00-05:00') + .isSame(moment.parseZone('2013-02-01T00:00:00-06:30'), 'year'), + 'zoned vs (differently) zoned moment' + ); }); test('is same with invalid moments', function (assert) { - assert.equal(moment.invalid().isSame(moment.invalid()), false, 'invalid moments are not considered equal'); + assert.equal( + moment.invalid().isSame(moment.invalid()), + false, + 'invalid moments are not considered equal' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -72834,27 +132026,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -72864,8 +132061,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -72878,7 +132077,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -72887,212 +132089,594 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('is same or after'); + module('is valid'); - test('is same or after without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isSameOrAfter(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), false, 'year is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), true, 'year is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), false, 'month is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), true, 'month is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), false, 'day is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), true, 'day is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), false, 'hour is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), true, 'hour is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), false, 'minute is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), true, 'minute is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), false, 'second is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), true, 'second is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, 'millisecond match'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), false, 'millisecond is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), true, 'millisecond is earlier'); - assert.equal(m.isSameOrAfter(m), true, 'moments are the same as themselves'); - assert.equal(+m, +mCopy, 'isSameOrAfter second should not change moment'); + test('array bad month', function (assert) { + assert.equal(moment([2010, -1]).isValid(), false, 'month -1 invalid'); + assert.equal(moment([2100, 12]).isValid(), false, 'month 12 invalid'); }); - test('is same or after year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year match'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isSameOrAfter(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, 'exact start of year'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, 'exact end of year'); - assert.equal(m.isSameOrAfter(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), false, 'start of next year'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), true, 'end of previous year'); - assert.equal(m.isSameOrAfter(m, 'year'), true, 'same moments are in the same year'); - assert.equal(+m, +mCopy, 'isSameOrAfter year should not change moment'); + test('array good month', function (assert) { + for (var i = 0; i < 12; i++) { + assert.equal(moment([2010, i]).isValid(), true, 'month ' + i); + assert.equal(moment.utc([2010, i]).isValid(), true, 'month ' + i); + } }); - test('is same or after month', function (assert) { - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, 'month match'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isSameOrAfter(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), false, 'month is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), true, 'month is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'exact start of month'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, 'exact end of month'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), false, 'start of next month'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), true, 'end of previous month'); - assert.equal(m.isSameOrAfter(m, 'month'), true, 'same moments are in the same month'); - assert.equal(+m, +mCopy, 'isSameOrAfter month should not change moment'); + test('Feb 29 0000 is valid', function (assert) { + // https://github.com/moment/moment/issues/3358 + assert.ok( + moment({ year: 0, month: 1, date: 29 }).isValid(), + 'Feb 29 0000 must be valid' + ); + assert.ok( + moment({ year: 0, month: 1, date: 28 }).add(1, 'd').isValid(), + 'Feb 28 0000 + 1 day must be valid' + ); }); - test('is same or after day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, 'day match'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isSameOrAfter(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), false, 'year is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 1, 2, 7, 8, 9, 10)), 'day'), true, 'year is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), false, 'month is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 12, 2, 7, 8, 9, 10)), 'day'), true, 'month is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), false, 'day is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 7, 8, 9, 10)), 'day'), true, 'day is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, 'exact start of day'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, 'exact end of day'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), false, 'start of next day'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), true, 'end of previous day'); - assert.equal(m.isSameOrAfter(m, 'day'), true, 'same moments are in the same day'); - assert.equal(+m, +mCopy, 'isSameOrAfter day should not change moment'); + test('array bad date', function (assert) { + var tests = [ + moment([2010, 0, 0]), + moment([2100, 0, 32]), + moment.utc([2010, 0, 0]), + moment.utc([2100, 0, 32]), + ]; + + each(tests, function (m) { + assert.equal(m.isValid(), false); + }); }); - test('is same or after hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'hour match'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); - assert.equal(m.isSameOrAfter(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'year is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'year is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), false, 'month is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 12, 2, 3, 8, 9, 10)), 'hour'), true, 'month is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), false, 'day is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 3, 8, 9, 10)), 'hour'), true, 'day is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), false, 'hour is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 8, 9, 10)), 'hour'), true, 'hour is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, 'exact start of hour'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, 'exact end of hour'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), false, 'start of next hour'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), true, 'end of previous hour'); - assert.equal(m.isSameOrAfter(m, 'hour'), true, 'same moments are in the same hour'); - assert.equal(+m, +mCopy, 'isSameOrAfter hour should not change moment'); + test('h/hh with hour > 12', function (assert) { + assert.ok( + moment('06/20/2014 11:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), + '11 for hh' + ); + assert.ok( + moment('06/20/2014 11:51 AM', 'MM/DD/YYYY hh:mm A', true).isValid(), + '11 for hh' + ); + assert.ok( + moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').isValid(), + 'non-strict validity 23 for hh' + ); + assert.ok( + moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').parsingFlags() + .bigHour, + 'non-strict bigHour 23 for hh' + ); + assert.ok( + !moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), + 'validity 23 for hh' + ); + assert.ok( + moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).parsingFlags() + .bigHour, + 'bigHour 23 for hh' + ); }); - test('is same or after minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'minute match'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isSameOrAfter(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'year is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'year is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), false, 'month is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 12, 2, 3, 4, 9, 10)), 'minute'), true, 'month is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), false, 'day is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 3, 4, 9, 10)), 'minute'), true, 'day is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), false, 'hour is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 4, 9, 10)), 'minute'), true, 'hour is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), false, 'minute is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 3, 9, 10)), 'minute'), true, 'minute is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, 'exact start of minute'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, 'exact end of minute'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), false, 'start of next minute'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), true, 'end of previous minute'); - assert.equal(m.isSameOrAfter(m, 'minute'), true, 'same moments are in the same minute'); - assert.equal(+m, +mCopy, 'isSameOrAfter minute should not change moment'); + test('array bad date leap year', function (assert) { + assert.equal(moment([2010, 1, 29]).isValid(), false, '2010 feb 29'); + assert.equal(moment([2100, 1, 29]).isValid(), false, '2100 feb 29'); + assert.equal(moment([2008, 1, 30]).isValid(), false, '2008 feb 30'); + assert.equal(moment([2000, 1, 30]).isValid(), false, '2000 feb 30'); + + assert.equal(moment.utc([2010, 1, 29]).isValid(), false, 'utc 2010 feb 29'); + assert.equal(moment.utc([2100, 1, 29]).isValid(), false, 'utc 2100 feb 29'); + assert.equal(moment.utc([2008, 1, 30]).isValid(), false, 'utc 2008 feb 30'); + assert.equal(moment.utc([2000, 1, 30]).isValid(), false, 'utc 2000 feb 30'); }); - test('is same or after second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, 'second match'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isSameOrAfter(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), false, 'year is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 1, 2, 3, 4, 5, 10)), 'second'), true, 'year is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), false, 'month is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 12, 2, 3, 4, 5, 10)), 'second'), true, 'month is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), false, 'day is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 1, 3, 4, 5, 10)), 'second'), true, 'day is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), false, 'hour is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 2, 4, 5, 10)), 'second'), true, 'hour is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), false, 'minute is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 3, 5, 10)), 'second'), true, 'minute is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), false, 'second is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 4, 10)), 'second'), true, 'second is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, 'exact start of second'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, 'exact end of second'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), false, 'start of next second'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), true, 'end of previous second'); - assert.equal(m.isSameOrAfter(m, 'second'), true, 'same moments are in the same second'); - assert.equal(+m, +mCopy, 'isSameOrAfter second should not change moment'); + test('string + formats bad date', function (assert) { + assert.equal( + moment('2020-00-00', []).isValid(), + false, + 'invalid on empty array' + ); + assert.equal( + moment('2020-00-00', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), + false, + 'invalid on all in array' + ); + assert.equal( + moment('2020-00-00', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), + false, + 'invalid on all in array' + ); + assert.equal( + moment('2020-01-01', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), + true, + 'valid on first' + ); + assert.equal( + moment('2020-01-01', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), + true, + 'valid on last' + ); + assert.equal( + moment('2020-01-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), + true, + 'valid on both' + ); + assert.equal( + moment('2020-13-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), + true, + 'valid on last' + ); + + assert.equal( + moment('12-13-2012', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), + false, + 'month rollover' + ); + assert.equal( + moment('12-13-2012', ['DD-MM-YYYY', 'DD-MM-YYYY']).isValid(), + false, + 'month rollover' + ); + assert.equal( + moment('38-12-2012', ['DD-MM-YYYY']).isValid(), + false, + 'day rollover' + ); }); - test('is same or after millisecond', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'millisecond match'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work'); - assert.equal(m.isSameOrAfter(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), false, 'day is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), true, 'day is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), false, 'hour is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), true, 'hour is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), false, 'minute is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), true, 'minute is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), false, 'second is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), true, 'second is earlier'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), false, 'millisecond is later'); - assert.equal(m.isSameOrAfter(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), true, 'millisecond is earlier'); - assert.equal(m.isSameOrAfter(m, 'millisecond'), true, 'same moments are in the same millisecond'); - assert.equal(+m, +mCopy, 'isSameOrAfter millisecond should not change moment'); + test('string nonsensical with format', function (assert) { + assert.equal( + moment('fail', 'MM-DD-YYYY').isValid(), + false, + "string 'fail' with format 'MM-DD-YYYY'" + ); + assert.equal( + moment('xx-xx-2001', 'DD-MM-YYY').isValid(), + true, + "string 'xx-xx-2001' with format 'MM-DD-YYYY'" + ); }); - test('is same or after with utc offset moments', function (assert) { - assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSameOrAfter(moment('2013-02-01'), 'year'), 'zoned vs local moment'); - assert.ok(moment('2013-02-01').isSameOrAfter(moment('2013-02-01').utcOffset('-05:00'), 'year'), 'local vs zoned moment'); - assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSameOrAfter(moment.parseZone('2013-02-01T00:00:00-06:30'), 'year'), - 'zoned vs (differently) zoned moment'); + test('string with bad month name', function (assert) { + assert.equal( + moment('01-Nam-2012', 'DD-MMM-YYYY').isValid(), + false, + "'Nam' is an invalid month" + ); + assert.equal( + moment('01-Aug-2012', 'DD-MMM-YYYY').isValid(), + true, + "'Aug' is a valid month" + ); }); - test('is same or after with invalid moments', function (assert) { - var m = moment(), invalid = moment.invalid(); - assert.equal(invalid.isSameOrAfter(invalid), false, 'invalid moments are not considered equal'); - assert.equal(m.isSameOrAfter(invalid), false, 'valid moment is not after invalid moment'); - assert.equal(invalid.isSameOrAfter(m), false, 'invalid moment is not after valid moment'); - assert.equal(m.isSameOrAfter(invalid, 'year'), false, 'invalid moment year'); - assert.equal(m.isSameOrAfter(invalid, 'month'), false, 'invalid moment month'); - assert.equal(m.isSameOrAfter(invalid, 'day'), false, 'invalid moment day'); - assert.equal(m.isSameOrAfter(invalid, 'hour'), false, 'invalid moment hour'); - assert.equal(m.isSameOrAfter(invalid, 'minute'), false, 'invalid moment minute'); - assert.equal(m.isSameOrAfter(invalid, 'second'), false, 'invalid moment second'); - assert.equal(m.isSameOrAfter(invalid, 'milliseconds'), false, 'invalid moment milliseconds'); + test('string with spaceless format', function (assert) { + assert.equal( + moment('10Sep2001', 'DDMMMYYYY').isValid(), + true, + 'Parsing 10Sep2001 should result in a valid date' + ); + }); + + test('invalid string iso 8601', function (assert) { + var tests = [ + '2010-00-00', + '2010-01-00', + '2010-01-40', + '2010-01-01T24:01', // 24:00:00 is actually valid + '2010-01-01T23:60', + '2010-01-01T23:59:60', + ], + i; + + for (i = 0; i < tests.length; i++) { + assert.equal( + moment(tests[i], moment.ISO_8601).isValid(), + false, + tests[i] + ' should be invalid' + ); + assert.equal( + moment.utc(tests[i], moment.ISO_8601).isValid(), + false, + tests[i] + ' should be invalid' + ); + } + }); + + test('invalid string iso 8601 + timezone', function (assert) { + var tests = [ + '2010-00-00T+00:00', + '2010-01-00T+00:00', + '2010-01-40T+00:00', + '2010-01-40T24:01+00:00', + '2010-01-40T23:60+00:00', + '2010-01-40T23:59:60+00:00', + '2010-01-40T23:59:59.9999+00:00', + '2010-01-40T23:59:59,9999+00:00', + ], + i; + + for (i = 0; i < tests.length; i++) { + assert.equal( + moment(tests[i], moment.ISO_8601).isValid(), + false, + tests[i] + ' should be invalid' + ); + assert.equal( + moment.utc(tests[i], moment.ISO_8601).isValid(), + false, + tests[i] + ' should be invalid' + ); + } + }); + + test('valid string iso 8601 - not strict', function (assert) { + var tests = [ + '2010-01-30 00:00:00,000Z', + '20100101', + '20100130', + '20100130T23+00:00', + '20100130T2359+0000', + '20100130T235959+0000', + '20100130T235959,999+0000', + '20100130T235959,999-0700', + '20100130T000000,000+0700', + '20100130 000000,000Z', + ], + i; + + for (i = 0; i < tests.length; i++) { + assert.equal( + moment(tests[i]).isValid(), + true, + tests[i] + ' should be valid in normal' + ); + assert.equal( + moment.utc(tests[i]).isValid(), + true, + tests[i] + ' should be valid in normal' + ); + } + }); + + test('valid string iso 8601 + timezone', function (assert) { + var tests = [ + '2010-01-01', + '2010-01-30', + '2010-01-30T23+00:00', + '2010-01-30T23:59+00:00', + '2010-01-30T23:59:59+00:00', + '2010-01-30T23:59:59.999+00:00', + '2010-01-30T23:59:59.999-07:00', + '2010-01-30T00:00:00.000+07:00', + '2010-01-30T23:59:59.999-07', + '2010-01-30T00:00:00.000+07', + '2010-01-30 00:00:00.000Z', + ], + i; + + for (i = 0; i < tests.length; i++) { + assert.equal( + moment(tests[i]).isValid(), + true, + tests[i] + ' should be valid in normal' + ); + assert.equal( + moment.utc(tests[i]).isValid(), + true, + tests[i] + ' should be valid in normal' + ); + assert.equal( + moment(tests[i], moment.ISO_8601, true).isValid(), + true, + tests[i] + ' should be valid in strict' + ); + assert.equal( + moment.utc(tests[i], moment.ISO_8601, true).isValid(), + true, + tests[i] + ' should be valid in strict' + ); + } + }); + + test('invalidAt', function (assert) { + assert.equal( + moment([2000, 12]).invalidAt(), + 1, + 'month 12 is invalid: 0-11' + ); + assert.equal( + moment([2000, 1, 30]).invalidAt(), + 2, + '30 is not a valid february day' + ); + assert.equal( + moment([2000, 1, 29, 25]).invalidAt(), + 3, + '25 is invalid hour' + ); + assert.equal( + moment([2000, 1, 29, 24, 1]).invalidAt(), + 3, + '24:01 is invalid hour' + ); + assert.equal( + moment([2000, 1, 29, 23, 60]).invalidAt(), + 4, + '60 is invalid minute' + ); + assert.equal( + moment([2000, 1, 29, 23, 59, 60]).invalidAt(), + 5, + '60 is invalid second' + ); + assert.equal( + moment([2000, 1, 29, 23, 59, 59, 1000]).invalidAt(), + 6, + '1000 is invalid millisecond' + ); + assert.equal( + moment([2000, 1, 29, 23, 59, 59, 999]).invalidAt(), + -1, + '-1 if everything is fine' + ); + }); + + test('valid Unix timestamp', function (assert) { + assert.equal(moment(1371065286, 'X').isValid(), true, 'number integer'); + assert.equal(moment(1379066897.0, 'X').isValid(), true, 'number whole 1dp'); + assert.equal(moment(1379066897.7, 'X').isValid(), true, 'number 1dp'); + assert.equal(moment(1379066897.0, 'X').isValid(), true, 'number whole 2dp'); + assert.equal(moment(1379066897.07, 'X').isValid(), true, 'number 2dp'); + assert.equal(moment(1379066897.17, 'X').isValid(), true, 'number 2dp'); + assert.equal(moment(1379066897.0, 'X').isValid(), true, 'number whole 3dp'); + assert.equal(moment(1379066897.007, 'X').isValid(), true, 'number 3dp'); + assert.equal(moment(1379066897.017, 'X').isValid(), true, 'number 3dp'); + assert.equal(moment(1379066897.157, 'X').isValid(), true, 'number 3dp'); + assert.equal(moment('1371065286', 'X').isValid(), true, 'string integer'); + assert.equal( + moment('1379066897.', 'X').isValid(), + true, + 'string trailing .' + ); + assert.equal( + moment('1379066897.0', 'X').isValid(), + true, + 'string whole 1dp' + ); + assert.equal(moment('1379066897.7', 'X').isValid(), true, 'string 1dp'); + assert.equal( + moment('1379066897.00', 'X').isValid(), + true, + 'string whole 2dp' + ); + assert.equal(moment('1379066897.07', 'X').isValid(), true, 'string 2dp'); + assert.equal(moment('1379066897.17', 'X').isValid(), true, 'string 2dp'); + assert.equal( + moment('1379066897.000', 'X').isValid(), + true, + 'string whole 3dp' + ); + assert.equal(moment('1379066897.007', 'X').isValid(), true, 'string 3dp'); + assert.equal(moment('1379066897.017', 'X').isValid(), true, 'string 3dp'); + assert.equal(moment('1379066897.157', 'X').isValid(), true, 'string 3dp'); + }); + + test('invalid Unix timestamp', function (assert) { + assert.equal(moment(undefined, 'X').isValid(), false, 'undefined'); + assert.equal(moment('undefined', 'X').isValid(), false, 'string undefined'); + try { + assert.equal(moment(null, 'X').isValid(), false, 'null'); + } catch (e) { + assert.ok(true, 'null'); + } + + assert.equal(moment('null', 'X').isValid(), false, 'string null'); + assert.equal(moment([], 'X').isValid(), false, 'array'); + assert.equal(moment('{}', 'X').isValid(), false, 'object'); + try { + assert.equal(moment('', 'X').isValid(), false, 'string empty'); + } catch (e) { + assert.ok(true, 'string empty'); + } + + assert.equal(moment(' ', 'X').isValid(), false, 'string space'); + }); + + test('valid Unix offset milliseconds', function (assert) { + assert.equal(moment(1234567890123, 'x').isValid(), true, 'number integer'); + assert.equal( + moment('1234567890123', 'x').isValid(), + true, + 'string integer' + ); + }); + + test('invalid Unix offset milliseconds', function (assert) { + assert.equal(moment(undefined, 'x').isValid(), false, 'undefined'); + assert.equal(moment('undefined', 'x').isValid(), false, 'string undefined'); + try { + assert.equal(moment(null, 'x').isValid(), false, 'null'); + } catch (e) { + assert.ok(true, 'null'); + } + + assert.equal(moment('null', 'x').isValid(), false, 'string null'); + assert.equal(moment([], 'x').isValid(), false, 'array'); + assert.equal(moment('{}', 'x').isValid(), false, 'object'); + try { + assert.equal(moment('', 'x').isValid(), false, 'string empty'); + } catch (e) { + assert.ok(true, 'string empty'); + } + + assert.equal(moment(' ', 'x').isValid(), false, 'string space'); + }); + + test('empty', function (assert) { + assert.equal(moment(null).isValid(), false, 'null'); + assert.equal(moment('').isValid(), false, 'empty string'); + assert.equal(moment(null, 'YYYY').isValid(), false, 'format + null'); + assert.equal(moment('', 'YYYY').isValid(), false, 'format + empty string'); + assert.equal( + moment(' ', 'YYYY').isValid(), + false, + 'format + empty when trimmed' + ); + }); + + test('days of the year', function (assert) { + assert.equal( + moment('2010 300', 'YYYY DDDD').isValid(), + true, + 'day 300 of year valid' + ); + assert.equal( + moment('2010 365', 'YYYY DDDD').isValid(), + true, + 'day 365 of year valid' + ); + assert.equal( + moment('2010 366', 'YYYY DDDD').isValid(), + false, + 'day 366 of year invalid' + ); + assert.equal( + moment('2012 365', 'YYYY DDDD').isValid(), + true, + 'day 365 of leap year valid' + ); + assert.equal( + moment('2012 366', 'YYYY DDDD').isValid(), + true, + 'day 366 of leap year valid' + ); + assert.equal( + moment('2012 367', 'YYYY DDDD').isValid(), + false, + 'day 367 of leap year invalid' + ); + }); + + test('24:00:00.000 is valid', function (assert) { + assert.equal( + moment('2014-01-01 24', 'YYYY-MM-DD HH').isValid(), + true, + '24 is valid' + ); + assert.equal( + moment('2014-01-01 24:00', 'YYYY-MM-DD HH:mm').isValid(), + true, + '24:00 is valid' + ); + assert.equal( + moment('2014-01-01 24:01', 'YYYY-MM-DD HH:mm').isValid(), + false, + '24:01 is not valid' + ); + }); + + test('oddball permissiveness', function (assert) { + // https://github.com/moment/moment/issues/1128 + assert.ok( + moment('2010-10-3199', [ + 'MM/DD/YYYY', + 'MM-DD-YYYY', + 'YYYY-MM-DD', + ]).isValid() + ); + + // https://github.com/moment/moment/issues/1122 + assert.ok(moment('3:25', ['h:mma', 'hh:mma', 'H:mm', 'HH:mm']).isValid()); + }); + + test('0 hour is invalid in strict', function (assert) { + assert.equal( + moment('00:01', 'hh:mm', true).isValid(), + false, + '00 hour is invalid in strict' + ); + assert.equal( + moment('00:01', 'hh:mm').isValid(), + true, + '00 hour is valid in normal' + ); + assert.equal( + moment('0:01', 'h:mm', true).isValid(), + false, + '0 hour is invalid in strict' + ); + assert.equal( + moment('0:01', 'h:mm').isValid(), + true, + '0 hour is valid in normal' + ); + }); + + test('format locale', function (assert) { + var a = [ + ['uto 15.05.2018', 'dd DD.MM.YYYY', 'bs'], + ['dt 15.05.2018', 'dd DD.MM.YYYY', 'ca'], + ['Di 15.05.2018', 'dd DD.MM.YYYY', 'de-dt'], + ['Di 15.05.2018', 'dd DD.MM.YYYY', 'de'], + ['mar 15.05.2018', 'dd DD.MM.YYYY', 'es-do'], + ['mar 15.05.2018', 'dd DD.MM.YYYY', 'es-us'], + ['Di 15.05.2018', 'dd DD.MM.YYYY', 'es'], + ['ar 15.05.2018', 'dd DD.MM.YYYY', 'eu'], + ['mar 15.05.2018', 'dd DD.MM.YYYY', 'fr-ca'], + ['mar 15.05.2018', 'dd DD.MM.YYYY', 'fr-ch'], + ['mar 15.05.2018', 'dd DD.MM.YYYY', 'fr'], + ['ti 15.05.2018', 'dd DD.MM.YYYY', 'fy'], + ['mar 15.05.2018', 'dd DD.MM.YYYY', 'gl'], + ['मंगळ 15.05.2018', 'dd DD.MM.YYYY', 'gom-deva'], + ['Mon 15.05.2018', 'dd DD.MM.YYYY', 'gom-latn'], + ['uto 15.05.2018', 'dd DD.MM.YYYY', 'hr'], + ['Dë 15.05.2018', 'dd DD.MM.YYYY', 'lb'], + ['uto 15.05.2018', 'dd DD.MM.YYYY', 'me'], + ['ti 15.05.2018', 'dd DD.MM.YYYY', 'nb'], + ['मङ्गल 15.05.2018', 'dd DD.MM.YYYY', 'ne'], + ['di 15.05.2018', 'dd DD.MM.YYYY', 'nl-be'], + ['di 15.05.2018', 'dd DD.MM.YYYY', 'nl'], + ['ty 15.05.2018', 'dd DD.MM.YYYY', 'nn'], + ['dm 15.05.2018', 'dd DD.MM.YYYY', 'oc-lnc'], + ['tor 15.05.2018', 'dd DD.MM.YYYY', 'sl'], + ['уто 15.05.2018', 'dd DD.MM.YYYY', 'sr-cyrl'], + ['uto 15.05.2018', 'dd DD.MM.YYYY', 'sr'], + ['uto 15.05.2018', 'dd DD.MM.YYYY', 'sr'], + ], + i; + for (i = 0; i < a.length; i++) { + assert.ok(moment(a[i][0], a[i][1], a[i][2]).isValid()); + } }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -73107,27 +132691,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -73137,8 +132726,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -73151,7 +132742,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -73160,214 +132754,43 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('is same or before'); - - test('is same or before without units', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isSameOrBefore(moment(new Date(2012, 3, 2, 3, 5, 5, 10))), true, 'year is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 3, 2, 3, 3, 5, 10))), false, 'year is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10))), true, 'month is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10))), false, 'month is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10))), true, 'day is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 1, 3, 4, 5, 10))), false, 'day is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10))), true, 'hour is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 2, 4, 5, 10))), false, 'hour is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10))), true, 'minute is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10))), false, 'minute is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10))), true, 'second is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 11))), false, 'second is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10))), true, 'millisecond match'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 11))), true, 'millisecond is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 9))), false, 'millisecond is earlier'); - assert.equal(m.isSameOrBefore(m), true, 'moments are the same as themselves'); - assert.equal(+m, +mCopy, 'isSameOrBefore second should not change moment'); - }); - - test('is same or before year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year match'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'years'), true, 'plural should work'); - assert.equal(m.isSameOrBefore(moment(new Date(2012, 5, 6, 7, 8, 9, 10)), 'year'), true, 'year is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 5, 6, 7, 8, 9, 10)), 'year'), false, 'year is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 0, 1, 0, 0, 0, 0)), 'year'), true, 'exact start of year'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 11, 31, 23, 59, 59, 999)), 'year'), true, 'exact end of year'); - assert.equal(m.isSameOrBefore(moment(new Date(2012, 0, 1, 0, 0, 0, 0)), 'year'), true, 'start of next year'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 11, 31, 23, 59, 59, 999)), 'year'), false, 'end of previous year'); - assert.equal(m.isSameOrBefore(m, 'year'), true, 'same moments are in the same year'); - assert.equal(+m, +mCopy, 'isSameOrBefore year should not change moment'); - }); - - test('is same or before month', function (assert) { - var m = moment(new Date(2011, 2, 3, 4, 5, 6, 7)), mCopy = moment(m); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'month'), true, 'month match'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 6, 7, 8, 9, 10)), 'months'), true, 'plural should work'); - assert.equal(m.isSameOrBefore(moment(new Date(2012, 2, 6, 7, 8, 9, 10)), 'month'), true, 'year is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 2, 6, 7, 8, 9, 10)), 'month'), false, 'year is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 5, 6, 7, 8, 9, 10)), 'month'), true, 'month is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 6, 7, 8, 9, 10)), 'month'), false, 'month is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 1, 0, 0, 0, 0)), 'month'), true, 'exact start of month'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 31, 23, 59, 59, 999)), 'month'), true, 'exact end of month'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 1, 0, 0, 0, 0)), 'month'), true, 'start of next month'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 27, 23, 59, 59, 999)), 'month'), false, 'end of previous month'); - assert.equal(m.isSameOrBefore(m, 'month'), true, 'same moments are in the same month'); - assert.equal(+m, +mCopy, 'isSameOrBefore month should not change moment'); - }); - - test('is same or before day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'day'), true, 'day match'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 7, 8, 9, 10)), 'days'), true, 'plural should work'); - assert.equal(m.isSameOrBefore(moment(new Date(2012, 1, 2, 7, 8, 9, 10)), 'day'), true, 'year is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 1, 2, 7, 8, 9, 10)), 'day'), false, 'year is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 7, 8, 9, 10)), 'day'), true, 'month is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 12, 2, 7, 8, 9, 10)), 'day'), false, 'month is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 7, 8, 9, 10)), 'day'), true, 'day is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 7, 8, 9, 10)), 'day'), false, 'day is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 0, 0, 0, 0)), 'day'), true, 'exact start of day'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 23, 59, 59, 999)), 'day'), true, 'exact end of day'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 0, 0, 0, 0)), 'day'), true, 'start of next day'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 23, 59, 59, 999)), 'day'), false, 'end of previous day'); - assert.equal(m.isSameOrBefore(m, 'day'), true, 'same moments are in the same day'); - assert.equal(+m, +mCopy, 'isSameOrBefore day should not change moment'); - }); - - test('is same or before hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'hour match'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 8, 9, 10)), 'hours'), true, 'plural should work'); - assert.equal(m.isSameOrBefore(moment(new Date(2012, 1, 2, 3, 8, 9, 10)), 'hour'), true, 'year is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 1, 2, 3, 8, 9, 10)), 'hour'), false, 'year is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 8, 9, 10)), 'hour'), true, 'month is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 12, 2, 3, 8, 9, 10)), 'hour'), false, 'month is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 3, 8, 9, 10)), 'hour'), true, 'day is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 3, 8, 9, 10)), 'hour'), false, 'day is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 8, 9, 10)), 'hour'), true, 'hour is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 8, 9, 10)), 'hour'), false, 'hour is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 0, 0, 0)), 'hour'), true, 'exact start of hour'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 59, 59, 999)), 'hour'), true, 'exact end of hour'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 0, 0, 0)), 'hour'), true, 'start of next hour'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 59, 59, 999)), 'hour'), false, 'end of previous hour'); - assert.equal(m.isSameOrBefore(m, 'hour'), true, 'same moments are in the same hour'); - assert.equal(+m, +mCopy, 'isSameOrBefore hour should not change moment'); - }); - - test('is same or before minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'minute match'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 9, 10)), 'minutes'), true, 'plural should work'); - assert.equal(m.isSameOrBefore(moment(new Date(2012, 1, 2, 3, 4, 9, 10)), 'minute'), true, 'year is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 1, 2, 3, 4, 9, 10)), 'minute'), false, 'year is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 9, 10)), 'minute'), true, 'month is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 12, 2, 3, 4, 9, 10)), 'minute'), false, 'month is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 3, 4, 9, 10)), 'minute'), true, 'day is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 3, 4, 9, 10)), 'minute'), false, 'day is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 4, 9, 10)), 'minute'), true, 'hour is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 4, 9, 10)), 'minute'), false, 'hour is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 5, 9, 10)), 'minute'), true, 'minute is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 3, 9, 10)), 'minute'), false, 'minute is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 0, 0)), 'minute'), true, 'exact start of minute'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 59, 999)), 'minute'), true, 'exact end of minute'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 5, 0, 0)), 'minute'), true, 'start of next minute'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 3, 59, 999)), 'minute'), false, 'end of previous minute'); - assert.equal(m.isSameOrBefore(m, 'minute'), true, 'same moments are in the same minute'); - assert.equal(+m, +mCopy, 'isSameOrBefore minute should not change moment'); - }); - - test('is same or before second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)), mCopy = moment(m); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'second'), true, 'second match'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 10)), 'seconds'), true, 'plural should work'); - assert.equal(m.isSameOrBefore(moment(new Date(2012, 1, 2, 3, 4, 5, 10)), 'second'), true, 'year is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 1, 2, 3, 4, 5, 10)), 'second'), false, 'year is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'second'), true, 'month is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 12, 2, 3, 4, 5, 10)), 'second'), false, 'month is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 3, 3, 4, 5, 10)), 'second'), true, 'day is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 1, 3, 4, 5, 10)), 'second'), false, 'day is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 4, 4, 5, 10)), 'second'), true, 'hour is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 2, 4, 5, 10)), 'second'), false, 'hour is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 5, 5, 10)), 'second'), true, 'minute is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 3, 5, 10)), 'second'), false, 'minute is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 6, 10)), 'second'), true, 'second is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 4, 10)), 'second'), false, 'second is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 0)), 'second'), true, 'exact start of second'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 5, 999)), 'second'), true, 'exact end of second'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 6, 0)), 'second'), true, 'start of next second'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 1, 2, 3, 4, 4, 999)), 'second'), false, 'end of previous second'); - assert.equal(m.isSameOrBefore(m, 'second'), true, 'same moments are in the same second'); - assert.equal(+m, +mCopy, 'isSameOrBefore second should not change moment'); - }); - - test('is same or before millisecond', function (assert) { - var m = moment(new Date(2011, 3, 2, 3, 4, 5, 10)), mCopy = moment(m); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'millisecond match'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 5, 10)), 'milliseconds'), true, 'plural should work'); - assert.equal(m.isSameOrBefore(moment(new Date(2012, 3, 2, 3, 4, 5, 10)), 'millisecond'), true, 'year is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2010, 3, 2, 3, 4, 5, 10)), 'millisecond'), false, 'year is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 4, 2, 3, 4, 5, 10)), 'millisecond'), true, 'month is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 2, 2, 3, 4, 5, 10)), 'millisecond'), false, 'month is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 3, 3, 4, 5, 10)), 'millisecond'), true, 'day is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 1, 1, 4, 5, 10)), 'millisecond'), false, 'day is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 4, 4, 5, 10)), 'millisecond'), true, 'hour is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 1, 4, 1, 5, 10)), 'millisecond'), false, 'hour is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 5, 5, 10)), 'millisecond'), true, 'minute is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 3, 5, 10)), 'millisecond'), false, 'minute is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 10)), 'millisecond'), true, 'second is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 5)), 'millisecond'), false, 'second is earlier'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 6, 11)), 'millisecond'), true, 'millisecond is later'); - assert.equal(m.isSameOrBefore(moment(new Date(2011, 3, 2, 3, 4, 4, 9)), 'millisecond'), false, 'millisecond is earlier'); - assert.equal(m.isSameOrBefore(m, 'millisecond'), true, 'same moments are in the same millisecond'); - assert.equal(+m, +mCopy, 'isSameOrBefore millisecond should not change moment'); - }); - - test('is same with utc offset moments', function (assert) { - assert.ok(moment.parseZone('2013-02-01T00:00:00-05:00').isSameOrBefore(moment('2013-02-01'), 'year'), 'zoned vs local moment'); - assert.ok(moment('2013-02-01').isSameOrBefore(moment('2013-02-01').utcOffset('-05:00'), 'year'), 'local vs zoned moment'); - assert.ok( - moment.parseZone('2013-02-01T00:00:00-05:00').isSameOrBefore(moment.parseZone('2013-02-01T00:00:00-06:30'), 'year'), - 'zoned vs (differently) zoned moment' - ); - }); + module('leap year'); - test('is same with invalid moments', function (assert) { - var m = moment(), invalid = moment.invalid(); - assert.equal(invalid.isSameOrBefore(invalid), false, 'invalid moments are not considered equal'); - assert.equal(m.isSameOrBefore(invalid), false, 'valid moment is not before invalid moment'); - assert.equal(invalid.isSameOrBefore(m), false, 'invalid moment is not before valid moment'); - assert.equal(m.isSameOrBefore(invalid, 'year'), false, 'invalid moment year'); - assert.equal(m.isSameOrBefore(invalid, 'month'), false, 'invalid moment month'); - assert.equal(m.isSameOrBefore(invalid, 'day'), false, 'invalid moment day'); - assert.equal(m.isSameOrBefore(invalid, 'hour'), false, 'invalid moment hour'); - assert.equal(m.isSameOrBefore(invalid, 'minute'), false, 'invalid moment minute'); - assert.equal(m.isSameOrBefore(invalid, 'second'), false, 'invalid moment second'); - assert.equal(m.isSameOrBefore(invalid, 'milliseconds'), false, 'invalid moment milliseconds'); + test('leap year', function (assert) { + assert.equal(moment([2010, 0, 1]).isLeapYear(), false, '2010'); + assert.equal(moment([2100, 0, 1]).isLeapYear(), false, '2100'); + assert.equal(moment([2008, 0, 1]).isLeapYear(), true, '2008'); + assert.equal(moment([2000, 0, 1]).isLeapYear(), true, '2000'); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -73382,27 +132805,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -73412,8 +132840,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -73426,7 +132856,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -73435,313 +132868,204 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('is valid'); - - test('array bad month', function (assert) { - assert.equal(moment([2010, -1]).isValid(), false, 'month -1 invalid'); - assert.equal(moment([2100, 12]).isValid(), false, 'month 12 invalid'); - }); - - test('array good month', function (assert) { - for (var i = 0; i < 12; i++) { - assert.equal(moment([2010, i]).isValid(), true, 'month ' + i); - assert.equal(moment.utc([2010, i]).isValid(), true, 'month ' + i); - } - }); - - test('Feb 29 0000 is valid', function (assert) { - // https://github.com/moment/moment/issues/3358 - assert.ok(moment({year:0, month:1, date:29}).isValid(), 'Feb 29 0000 must be valid'); - assert.ok(moment({year:0, month:1, date:28}).add(1, 'd').isValid(), 'Feb 28 0000 + 1 day must be valid'); - }); - - test('array bad date', function (assert) { - var tests = [ - moment([2010, 0, 0]), - moment([2100, 0, 32]), - moment.utc([2010, 0, 0]), - moment.utc([2100, 0, 32]) - ], - i, m; - - for (i in tests) { - m = tests[i]; - assert.equal(m.isValid(), false); - } - }); - - test('h/hh with hour > 12', function (assert) { - assert.ok(moment('06/20/2014 11:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), '11 for hh'); - assert.ok(moment('06/20/2014 11:51 AM', 'MM/DD/YYYY hh:mm A', true).isValid(), '11 for hh'); - assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').isValid(), 'non-strict validity 23 for hh'); - assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A').parsingFlags().bigHour, 'non-strict bigHour 23 for hh'); - assert.ok(!moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).isValid(), 'validity 23 for hh'); - assert.ok(moment('06/20/2014 23:51 PM', 'MM/DD/YYYY hh:mm A', true).parsingFlags().bigHour, 'bigHour 23 for hh'); - }); - - test('array bad date leap year', function (assert) { - assert.equal(moment([2010, 1, 29]).isValid(), false, '2010 feb 29'); - assert.equal(moment([2100, 1, 29]).isValid(), false, '2100 feb 29'); - assert.equal(moment([2008, 1, 30]).isValid(), false, '2008 feb 30'); - assert.equal(moment([2000, 1, 30]).isValid(), false, '2000 feb 30'); - - assert.equal(moment.utc([2010, 1, 29]).isValid(), false, 'utc 2010 feb 29'); - assert.equal(moment.utc([2100, 1, 29]).isValid(), false, 'utc 2100 feb 29'); - assert.equal(moment.utc([2008, 1, 30]).isValid(), false, 'utc 2008 feb 30'); - assert.equal(moment.utc([2000, 1, 30]).isValid(), false, 'utc 2000 feb 30'); - }); - - test('string + formats bad date', function (assert) { - assert.equal(moment('2020-00-00', []).isValid(), false, 'invalid on empty array'); - assert.equal(moment('2020-00-00', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), false, 'invalid on all in array'); - assert.equal(moment('2020-00-00', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'invalid on all in array'); - assert.equal(moment('2020-01-01', ['YYYY-MM-DD', 'DD-MM-YYYY']).isValid(), true, 'valid on first'); - assert.equal(moment('2020-01-01', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), true, 'valid on last'); - assert.equal(moment('2020-01-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on both'); - assert.equal(moment('2020-13-01', ['YYYY-MM-DD', 'YYYY-DD-MM']).isValid(), true, 'valid on last'); - - assert.equal(moment('12-13-2012', ['DD-MM-YYYY', 'YYYY-MM-DD']).isValid(), false, 'month rollover'); - assert.equal(moment('12-13-2012', ['DD-MM-YYYY', 'DD-MM-YYYY']).isValid(), false, 'month rollover'); - assert.equal(moment('38-12-2012', ['DD-MM-YYYY']).isValid(), false, 'day rollover'); - }); - - test('string nonsensical with format', function (assert) { - assert.equal(moment('fail', 'MM-DD-YYYY').isValid(), false, 'string \'fail\' with format \'MM-DD-YYYY\''); - assert.equal(moment('xx-xx-2001', 'DD-MM-YYY').isValid(), true, 'string \'xx-xx-2001\' with format \'MM-DD-YYYY\''); - }); - - test('string with bad month name', function (assert) { - assert.equal(moment('01-Nam-2012', 'DD-MMM-YYYY').isValid(), false, '\'Nam\' is an invalid month'); - assert.equal(moment('01-Aug-2012', 'DD-MMM-YYYY').isValid(), true, '\'Aug\' is a valid month'); - }); - - test('string with spaceless format', function (assert) { - assert.equal(moment('10Sep2001', 'DDMMMYYYY').isValid(), true, 'Parsing 10Sep2001 should result in a valid date'); - }); - - test('invalid string iso 8601', function (assert) { - var tests = [ - '2010-00-00', - '2010-01-00', - '2010-01-40', - '2010-01-01T24:01', // 24:00:00 is actually valid - '2010-01-01T23:60', - '2010-01-01T23:59:60' - ], i; - - for (i = 0; i < tests.length; i++) { - assert.equal(moment(tests[i], moment.ISO_8601).isValid(), false, tests[i] + ' should be invalid'); - assert.equal(moment.utc(tests[i], moment.ISO_8601).isValid(), false, tests[i] + ' should be invalid'); - } - }); - - test('invalid string iso 8601 + timezone', function (assert) { - var tests = [ - '2010-00-00T+00:00', - '2010-01-00T+00:00', - '2010-01-40T+00:00', - '2010-01-40T24:01+00:00', - '2010-01-40T23:60+00:00', - '2010-01-40T23:59:60+00:00', - '2010-01-40T23:59:59.9999+00:00', - '2010-01-40T23:59:59,9999+00:00' - ], i; - - for (i = 0; i < tests.length; i++) { - assert.equal(moment(tests[i], moment.ISO_8601).isValid(), false, tests[i] + ' should be invalid'); - assert.equal(moment.utc(tests[i], moment.ISO_8601).isValid(), false, tests[i] + ' should be invalid'); - } - }); - - test('valid string iso 8601 - not strict', function (assert) { - var tests = [ - '2010-01-30 00:00:00,000Z', - '20100101', - '20100130', - '20100130T23+00:00', - '20100130T2359+0000', - '20100130T235959+0000', - '20100130T235959,999+0000', - '20100130T235959,999-0700', - '20100130T000000,000+0700', - '20100130 000000,000Z' - ]; - - for (var i = 0; i < tests.length; i++) { - assert.equal(moment(tests[i]).isValid(), true, tests[i] + ' should be valid in normal'); - assert.equal(moment.utc(tests[i]).isValid(), true, tests[i] + ' should be valid in normal'); - } - }); - - test('valid string iso 8601 + timezone', function (assert) { - var tests = [ - '2010-01-01', - '2010-01-30', - '2010-01-30T23+00:00', - '2010-01-30T23:59+00:00', - '2010-01-30T23:59:59+00:00', - '2010-01-30T23:59:59.999+00:00', - '2010-01-30T23:59:59.999-07:00', - '2010-01-30T00:00:00.000+07:00', - '2010-01-30T23:59:59.999-07', - '2010-01-30T00:00:00.000+07', - '2010-01-30 00:00:00.000Z' - ], i; - - for (i = 0; i < tests.length; i++) { - assert.equal(moment(tests[i]).isValid(), true, tests[i] + ' should be valid in normal'); - assert.equal(moment.utc(tests[i]).isValid(), true, tests[i] + ' should be valid in normal'); - assert.equal(moment(tests[i], moment.ISO_8601, true).isValid(), true, tests[i] + ' should be valid in strict'); - assert.equal(moment.utc(tests[i], moment.ISO_8601, true).isValid(), true, tests[i] + ' should be valid in strict'); - } - }); + module('listers'); - test('invalidAt', function (assert) { - assert.equal(moment([2000, 12]).invalidAt(), 1, 'month 12 is invalid: 0-11'); - assert.equal(moment([2000, 1, 30]).invalidAt(), 2, '30 is not a valid february day'); - assert.equal(moment([2000, 1, 29, 25]).invalidAt(), 3, '25 is invalid hour'); - assert.equal(moment([2000, 1, 29, 24, 1]).invalidAt(), 3, '24:01 is invalid hour'); - assert.equal(moment([2000, 1, 29, 23, 60]).invalidAt(), 4, '60 is invalid minute'); - assert.equal(moment([2000, 1, 29, 23, 59, 60]).invalidAt(), 5, '60 is invalid second'); - assert.equal(moment([2000, 1, 29, 23, 59, 59, 1000]).invalidAt(), 6, '1000 is invalid millisecond'); - assert.equal(moment([2000, 1, 29, 23, 59, 59, 999]).invalidAt(), -1, '-1 if everything is fine'); + test('default', function (assert) { + assert.deepEqual(moment.months(), [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ]); + assert.deepEqual(moment.monthsShort(), [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ]); + assert.deepEqual(moment.weekdays(), [ + 'Sunday', + 'Monday', + 'Tuesday', + 'Wednesday', + 'Thursday', + 'Friday', + 'Saturday', + ]); + assert.deepEqual(moment.weekdaysShort(), [ + 'Sun', + 'Mon', + 'Tue', + 'Wed', + 'Thu', + 'Fri', + 'Sat', + ]); + assert.deepEqual(moment.weekdaysMin(), [ + 'Su', + 'Mo', + 'Tu', + 'We', + 'Th', + 'Fr', + 'Sa', + ]); }); - test('valid Unix timestamp', function (assert) { - assert.equal(moment(1371065286, 'X').isValid(), true, 'number integer'); - assert.equal(moment(1379066897.0, 'X').isValid(), true, 'number whole 1dp'); - assert.equal(moment(1379066897.7, 'X').isValid(), true, 'number 1dp'); - assert.equal(moment(1379066897.00, 'X').isValid(), true, 'number whole 2dp'); - assert.equal(moment(1379066897.07, 'X').isValid(), true, 'number 2dp'); - assert.equal(moment(1379066897.17, 'X').isValid(), true, 'number 2dp'); - assert.equal(moment(1379066897.000, 'X').isValid(), true, 'number whole 3dp'); - assert.equal(moment(1379066897.007, 'X').isValid(), true, 'number 3dp'); - assert.equal(moment(1379066897.017, 'X').isValid(), true, 'number 3dp'); - assert.equal(moment(1379066897.157, 'X').isValid(), true, 'number 3dp'); - assert.equal(moment('1371065286', 'X').isValid(), true, 'string integer'); - assert.equal(moment('1379066897.', 'X').isValid(), true, 'string trailing .'); - assert.equal(moment('1379066897.0', 'X').isValid(), true, 'string whole 1dp'); - assert.equal(moment('1379066897.7', 'X').isValid(), true, 'string 1dp'); - assert.equal(moment('1379066897.00', 'X').isValid(), true, 'string whole 2dp'); - assert.equal(moment('1379066897.07', 'X').isValid(), true, 'string 2dp'); - assert.equal(moment('1379066897.17', 'X').isValid(), true, 'string 2dp'); - assert.equal(moment('1379066897.000', 'X').isValid(), true, 'string whole 3dp'); - assert.equal(moment('1379066897.007', 'X').isValid(), true, 'string 3dp'); - assert.equal(moment('1379066897.017', 'X').isValid(), true, 'string 3dp'); - assert.equal(moment('1379066897.157', 'X').isValid(), true, 'string 3dp'); + test('index', function (assert) { + assert.equal(moment.months(0), 'January'); + assert.equal(moment.months(2), 'March'); + assert.equal(moment.monthsShort(0), 'Jan'); + assert.equal(moment.monthsShort(2), 'Mar'); + assert.equal(moment.weekdays(0), 'Sunday'); + assert.equal(moment.weekdays(2), 'Tuesday'); + assert.equal(moment.weekdaysShort(0), 'Sun'); + assert.equal(moment.weekdaysShort(2), 'Tue'); + assert.equal(moment.weekdaysMin(0), 'Su'); + assert.equal(moment.weekdaysMin(2), 'Tu'); }); - test('invalid Unix timestamp', function (assert) { - assert.equal(moment(undefined, 'X').isValid(), false, 'undefined'); - assert.equal(moment('undefined', 'X').isValid(), false, 'string undefined'); - try { - assert.equal(moment(null, 'X').isValid(), false, 'null'); - } catch (e) { - assert.ok(true, 'null'); - } - - assert.equal(moment('null', 'X').isValid(), false, 'string null'); - assert.equal(moment([], 'X').isValid(), false, 'array'); - assert.equal(moment('{}', 'X').isValid(), false, 'object'); - try { - assert.equal(moment('', 'X').isValid(), false, 'string empty'); - } catch (e) { - assert.ok(true, 'string empty'); - } + test('localized', function (assert) { + var months = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split( + '_' + ), + monthsShort = 'on_tw_th_fo_fi_si_se_ei_ni_te_el_tw'.split('_'), + weekdays = 'one_two_three_four_five_six_seven'.split('_'), + weekdaysShort = 'on_tw_th_fo_fi_si_se'.split('_'), + weekdaysMin = '1_2_3_4_5_6_7'.split('_'), + weekdaysLocale = 'four_five_six_seven_one_two_three'.split('_'), + weekdaysShortLocale = 'fo_fi_si_se_on_tw_th'.split('_'), + weekdaysMinLocale = '4_5_6_7_1_2_3'.split('_'), + week = { + dow: 3, + doy: 6, + }; - assert.equal(moment(' ', 'X').isValid(), false, 'string space'); - }); + moment.locale('numerologists', { + months: months, + monthsShort: monthsShort, + weekdays: weekdays, + weekdaysShort: weekdaysShort, + weekdaysMin: weekdaysMin, + week: week, + }); - test('valid Unix offset milliseconds', function (assert) { - assert.equal(moment(1234567890123, 'x').isValid(), true, 'number integer'); - assert.equal(moment('1234567890123', 'x').isValid(), true, 'string integer'); - }); + assert.deepEqual(moment.months(), months); + assert.deepEqual(moment.monthsShort(), monthsShort); + assert.deepEqual(moment.weekdays(), weekdays); + assert.deepEqual(moment.weekdaysShort(), weekdaysShort); + assert.deepEqual(moment.weekdaysMin(), weekdaysMin); - test('invalid Unix offset milliseconds', function (assert) { - assert.equal(moment(undefined, 'x').isValid(), false, 'undefined'); - assert.equal(moment('undefined', 'x').isValid(), false, 'string undefined'); - try { - assert.equal(moment(null, 'x').isValid(), false, 'null'); - } catch (e) { - assert.ok(true, 'null'); - } + assert.equal(moment.months(0), 'one'); + assert.equal(moment.monthsShort(0), 'on'); + assert.equal(moment.weekdays(0), 'one'); + assert.equal(moment.weekdaysShort(0), 'on'); + assert.equal(moment.weekdaysMin(0), '1'); - assert.equal(moment('null', 'x').isValid(), false, 'string null'); - assert.equal(moment([], 'x').isValid(), false, 'array'); - assert.equal(moment('{}', 'x').isValid(), false, 'object'); - try { - assert.equal(moment('', 'x').isValid(), false, 'string empty'); - } catch (e) { - assert.ok(true, 'string empty'); - } + assert.equal(moment.months(2), 'three'); + assert.equal(moment.monthsShort(2), 'th'); + assert.equal(moment.weekdays(2), 'three'); + assert.equal(moment.weekdaysShort(2), 'th'); + assert.equal(moment.weekdaysMin(2), '3'); - assert.equal(moment(' ', 'x').isValid(), false, 'string space'); - }); + assert.deepEqual(moment.weekdays(true), weekdaysLocale); + assert.deepEqual(moment.weekdaysShort(true), weekdaysShortLocale); + assert.deepEqual(moment.weekdaysMin(true), weekdaysMinLocale); - test('empty', function (assert) { - assert.equal(moment(null).isValid(), false, 'null'); - assert.equal(moment('').isValid(), false, 'empty string'); - assert.equal(moment(null, 'YYYY').isValid(), false, 'format + null'); - assert.equal(moment('', 'YYYY').isValid(), false, 'format + empty string'); - assert.equal(moment(' ', 'YYYY').isValid(), false, 'format + empty when trimmed'); - }); + assert.equal(moment.weekdays(true, 0), 'four'); + assert.equal(moment.weekdaysShort(true, 0), 'fo'); + assert.equal(moment.weekdaysMin(true, 0), '4'); - test('days of the year', function (assert) { - assert.equal(moment('2010 300', 'YYYY DDDD').isValid(), true, 'day 300 of year valid'); - assert.equal(moment('2010 365', 'YYYY DDDD').isValid(), true, 'day 365 of year valid'); - assert.equal(moment('2010 366', 'YYYY DDDD').isValid(), false, 'day 366 of year invalid'); - assert.equal(moment('2012 365', 'YYYY DDDD').isValid(), true, 'day 365 of leap year valid'); - assert.equal(moment('2012 366', 'YYYY DDDD').isValid(), true, 'day 366 of leap year valid'); - assert.equal(moment('2012 367', 'YYYY DDDD').isValid(), false, 'day 367 of leap year invalid'); + assert.equal(moment.weekdays(false, 2), 'three'); + assert.equal(moment.weekdaysShort(false, 2), 'th'); + assert.equal(moment.weekdaysMin(false, 2), '3'); }); - test('24:00:00.000 is valid', function (assert) { - assert.equal(moment('2014-01-01 24', 'YYYY-MM-DD HH').isValid(), true, '24 is valid'); - assert.equal(moment('2014-01-01 24:00', 'YYYY-MM-DD HH:mm').isValid(), true, '24:00 is valid'); - assert.equal(moment('2014-01-01 24:01', 'YYYY-MM-DD HH:mm').isValid(), false, '24:01 is not valid'); - }); + test('with functions', function (assert) { + var monthsShort = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split( + '_' + ), + monthsShortWeird = 'onesy_twosy_threesy_foursy_fivesy_sixsy_sevensy_eightsy_ninesy_tensy_elevensy_twelvesy'.split( + '_' + ); - test('oddball permissiveness', function (assert) { - // https://github.com/moment/moment/issues/1128 - assert.ok(moment('2010-10-3199', ['MM/DD/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD']).isValid()); + moment.locale('difficult', { + monthsShort: function (m, format) { + var arr = format.match(/-MMM-/) ? monthsShortWeird : monthsShort; + return arr[m.month()]; + }, + }); - // https://github.com/moment/moment/issues/1122 - assert.ok(moment('3:25', ['h:mma', 'hh:mma', 'H:mm', 'HH:mm']).isValid()); + assert.deepEqual(moment.monthsShort(), monthsShort); + assert.deepEqual(moment.monthsShort('MMM'), monthsShort); + assert.deepEqual(moment.monthsShort('-MMM-'), monthsShortWeird); + + assert.deepEqual(moment.monthsShort('MMM', 2), 'three'); + assert.deepEqual(moment.monthsShort('-MMM-', 2), 'threesy'); + assert.deepEqual(moment.monthsShort(2), 'three'); }); - test('0 hour is invalid in strict', function (assert) { - assert.equal(moment('00:01', 'hh:mm', true).isValid(), false, '00 hour is invalid in strict'); - assert.equal(moment('00:01', 'hh:mm').isValid(), true, '00 hour is valid in normal'); - assert.equal(moment('0:01', 'h:mm', true).isValid(), false, '0 hour is invalid in strict'); - assert.equal(moment('0:01', 'h:mm').isValid(), true, '0 hour is valid in normal'); + test('with locale data', function (assert) { + var months = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split( + '_' + ), + monthsShort = 'on_tw_th_fo_fi_si_se_ei_ni_te_el_tw'.split('_'), + weekdays = 'one_two_three_four_five_six_seven'.split('_'), + weekdaysShort = 'on_tw_th_fo_fi_si_se'.split('_'), + weekdaysMin = '1_2_3_4_5_6_7'.split('_'), + customLocale = moment.localeData('numerologists'); + + assert.deepEqual(customLocale.months(), months); + assert.deepEqual(customLocale.monthsShort(), monthsShort); + assert.deepEqual(customLocale.weekdays(), weekdays); + assert.deepEqual(customLocale.weekdaysShort(), weekdaysShort); + assert.deepEqual(customLocale.weekdaysMin(), weekdaysMin); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -73756,27 +133080,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -73786,8 +133115,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -73800,7 +133131,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -73809,41 +133143,364 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('leap year'); + module('locale inheritance'); - test('leap year', function (assert) { - assert.equal(moment([2010, 0, 1]).isLeapYear(), false, '2010'); - assert.equal(moment([2100, 0, 1]).isLeapYear(), false, '2100'); - assert.equal(moment([2008, 0, 1]).isLeapYear(), true, '2008'); - assert.equal(moment([2000, 0, 1]).isLeapYear(), true, '2000'); + test('calendar', function (assert) { + moment.defineLocale('base-cal', { + calendar: { + sameDay: '[Today at] HH:mm', + nextDay: '[Tomorrow at] HH:mm', + nextWeek: '[Next week at] HH:mm', + lastDay: '[Yesterday at] HH:mm', + lastWeek: '[Last week at] HH:mm', + sameElse: '[whatever]', + }, + }); + moment.defineLocale('child-cal', { + parentLocale: 'base-cal', + calendar: { + sameDay: '[Today] HH:mm', + nextDay: '[Tomorrow] HH:mm', + nextWeek: '[Next week] HH:mm', + }, + }); + + moment.locale('child-cal'); + var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601); + assert.equal( + anchor.clone().add(3, 'hours').calendar(anchor), + 'Today 15:00', + 'today uses child version' + ); + assert.equal( + anchor.clone().add(1, 'day').calendar(anchor), + 'Tomorrow 12:00', + 'tomorrow uses child version' + ); + assert.equal( + anchor.clone().add(3, 'days').calendar(anchor), + 'Next week 12:00', + 'next week uses child version' + ); + + assert.equal( + anchor.clone().subtract(1, 'day').calendar(anchor), + 'Yesterday at 12:00', + 'yesterday uses parent version' + ); + assert.equal( + anchor.clone().subtract(3, 'days').calendar(anchor), + 'Last week at 12:00', + 'last week uses parent version' + ); + assert.equal( + anchor.clone().subtract(7, 'days').calendar(anchor), + 'whatever', + 'sameElse uses parent version -' + ); + assert.equal( + anchor.clone().add(7, 'days').calendar(anchor), + 'whatever', + 'sameElse uses parent version +' + ); + }); + + test('missing', function (assert) { + moment.defineLocale('base-cal-2', { + calendar: { + sameDay: '[Today at] HH:mm', + nextDay: '[Tomorrow at] HH:mm', + nextWeek: '[Next week at] HH:mm', + lastDay: '[Yesterday at] HH:mm', + lastWeek: '[Last week at] HH:mm', + sameElse: '[whatever]', + }, + }); + moment.defineLocale('child-cal-2', { + parentLocale: 'base-cal-2', + }); + moment.locale('child-cal-2'); + var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601); + assert.equal( + anchor.clone().add(3, 'hours').calendar(anchor), + 'Today at 15:00', + 'today uses parent version' + ); + assert.equal( + anchor.clone().add(1, 'day').calendar(anchor), + 'Tomorrow at 12:00', + 'tomorrow uses parent version' + ); + assert.equal( + anchor.clone().add(3, 'days').calendar(anchor), + 'Next week at 12:00', + 'next week uses parent version' + ); + assert.equal( + anchor.clone().subtract(1, 'day').calendar(anchor), + 'Yesterday at 12:00', + 'yesterday uses parent version' + ); + assert.equal( + anchor.clone().subtract(3, 'days').calendar(anchor), + 'Last week at 12:00', + 'last week uses parent version' + ); + assert.equal( + anchor.clone().subtract(7, 'days').calendar(anchor), + 'whatever', + 'sameElse uses parent version -' + ); + assert.equal( + anchor.clone().add(7, 'days').calendar(anchor), + 'whatever', + 'sameElse uses parent version +' + ); + }); + + // Test function vs obj both directions + + test('long date format', function (assert) { + moment.defineLocale('base-ldf', { + 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', + }, + }); + moment.defineLocale('child-ldf', { + parentLocale: 'base-ldf', + longDateFormat: { + LLL: '[SUMMER child] MMMM D, YYYY h:mm A', + LLLL: '[SUMMER child] dddd, MMMM D, YYYY h:mm A', + }, + }); + + moment.locale('child-ldf'); + var anchor = moment.utc('2015-09-06T12:34:56', moment.ISO_8601); + assert.equal(anchor.format('LTS'), '12:34:56 PM', 'LTS uses base'); + assert.equal(anchor.format('LT'), '12:34 PM', 'LT uses base'); + assert.equal(anchor.format('L'), '09/06/2015', 'L uses base'); + assert.equal(anchor.format('l'), '9/6/2015', 'l uses base'); + assert.equal(anchor.format('LL'), 'September 6, 2015', 'LL uses base'); + assert.equal(anchor.format('ll'), 'Sep 6, 2015', 'll uses base'); + assert.equal( + anchor.format('LLL'), + 'SUMMER child September 6, 2015 12:34 PM', + 'LLL uses child' + ); + assert.equal( + anchor.format('lll'), + 'SUMMER child Sep 6, 2015 12:34 PM', + 'lll uses child' + ); + assert.equal( + anchor.format('LLLL'), + 'SUMMER child Sunday, September 6, 2015 12:34 PM', + 'LLLL uses child' + ); + assert.equal( + anchor.format('llll'), + 'SUMMER child Sun, Sep 6, 2015 12:34 PM', + 'llll uses child' + ); + }); + + test('ordinal', function (assert) { + moment.defineLocale('base-ordinal-1', { + ordinal: '%dx', + }); + moment.defineLocale('child-ordinal-1', { + parentLocale: 'base-ordinal-1', + ordinal: '%dy', + }); + + assert.equal( + moment.utc('2015-02-03', moment.ISO_8601).format('Do'), + '3y', + 'ordinal uses child string' + ); + + moment.defineLocale('base-ordinal-2', { + ordinal: '%dx', + }); + moment.defineLocale('child-ordinal-2', { + parentLocale: 'base-ordinal-2', + ordinal: function (num) { + return num + 'y'; + }, + }); + + assert.equal( + moment.utc('2015-02-03', moment.ISO_8601).format('Do'), + '3y', + 'ordinal uses child function' + ); + + moment.defineLocale('base-ordinal-3', { + ordinal: function (num) { + return num + 'x'; + }, + }); + moment.defineLocale('child-ordinal-3', { + parentLocale: 'base-ordinal-3', + ordinal: '%dy', + }); + + assert.equal( + moment.utc('2015-02-03', moment.ISO_8601).format('Do'), + '3y', + 'ordinal uses child string (overwrite parent function)' + ); + }); + + test('ordinal parse', function (assert) { + moment.defineLocale('base-ordinal-parse-1', { + dayOfMonthOrdinalParse: /\d{1,2}x/, + }); + moment.defineLocale('child-ordinal-parse-1', { + parentLocale: 'base-ordinal-parse-1', + dayOfMonthOrdinalParse: /\d{1,2}y/, + }); + + assert.ok( + moment.utc('2015-01-1y', 'YYYY-MM-Do', true).isValid(), + 'ordinal parse uses child' + ); + + moment.defineLocale('base-ordinal-parse-2', { + dayOfMonthOrdinalParse: /\d{1,2}x/, + }); + moment.defineLocale('child-ordinal-parse-2', { + parentLocale: 'base-ordinal-parse-2', + dayOfMonthOrdinalParse: /\d{1,2}/, + }); + + assert.ok( + moment.utc('2015-01-1', 'YYYY-MM-Do', true).isValid(), + 'ordinal parse uses child (default)' + ); + }); + + test('months', function (assert) { + moment.defineLocale('base-months', { + months: 'One_Two_Three_Four_Five_Six_Seven_Eight_Nine_Ten_Eleven_Twelve'.split( + '_' + ), + }); + moment.defineLocale('child-months', { + parentLocale: 'base-months', + months: 'First_Second_Third_Fourth_Fifth_Sixth_Seventh_Eighth_Ninth_Tenth_Eleventh_Twelfth '.split( + '_' + ), + }); + assert.ok( + moment.utc('2015-01-01', 'YYYY-MM-DD').format('MMMM'), + 'First', + 'months uses child' + ); + }); + + test('define child locale before parent', function (assert) { + moment.defineLocale('months-x', null); + moment.defineLocale('base-months-x', null); + + moment.defineLocale('months-x', { + parentLocale: 'base-months-x', + months: 'First_Second_Third_Fourth_Fifth_Sixth_Seventh_Eighth_Ninth_Tenth_Eleventh_Twelfth '.split( + '_' + ), + }); + assert.equal( + moment.locale(), + 'en', + 'failed to set a locale requiring missing parent' + ); + + assert.equal( + moment( + '00:00:00 01/January/2017', + 'HH:mm:ss DD/MMM/YYYY', + 'months-x' + ).locale(), + 'en', + 'creating moment using child with undefined parent defaults to global' + ); + + moment.defineLocale('base-months-x', { + months: 'One_Two_Three_Four_Five_Six_Seven_Eight_Nine_Ten_Eleven_Twelve'.split( + '_' + ), + }); + assert.equal( + moment.locale(), + 'base-months-x', + 'defineLocale should also set the locale (regardless of child locales)' + ); + + assert.equal( + moment().locale('months-x').month(0).format('MMMM'), + 'First', + 'loading child before parent locale works' + ); + }); + + test('lazy load parentLocale', function (assert) { + moment.defineLocale('de_test', { + parentLocale: 'de', + monthsShort: [ + 'M1', + 'M2', + 'M3', + 'M4', + 'M5', + 'M6', + 'M7', + 'M8', + 'M9', + 'M10', + 'M11', + 'M12', + ], + }); + assert.equal( + moment.locale(), + 'de_test', + 'failed to lazy load parentLocale' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -73858,27 +133515,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -73888,8 +133550,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -73902,7 +133566,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -73911,146 +133578,353 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('listers'); + module('locale update'); - test('default', function (assert) { - assert.deepEqual(moment.months(), ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']); - assert.deepEqual(moment.monthsShort(), ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']); - assert.deepEqual(moment.weekdays(), ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']); - assert.deepEqual(moment.weekdaysShort(), ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']); - assert.deepEqual(moment.weekdaysMin(), ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']); + test('calendar', function (assert) { + moment.defineLocale('cal', null); + moment.defineLocale('cal', { + calendar: { + sameDay: '[Today at] HH:mm', + nextDay: '[Tomorrow at] HH:mm', + nextWeek: '[Next week at] HH:mm', + lastDay: '[Yesterday at] HH:mm', + lastWeek: '[Last week at] HH:mm', + sameElse: '[whatever]', + }, + }); + moment.updateLocale('cal', { + calendar: { + sameDay: '[Today] HH:mm', + nextDay: '[Tomorrow] HH:mm', + nextWeek: '[Next week] HH:mm', + }, + }); + + moment.locale('cal'); + var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601); + assert.equal( + anchor.clone().add(3, 'hours').calendar(anchor), + 'Today 15:00', + 'today uses child version' + ); + assert.equal( + anchor.clone().add(1, 'day').calendar(anchor), + 'Tomorrow 12:00', + 'tomorrow uses child version' + ); + assert.equal( + anchor.clone().add(3, 'days').calendar(anchor), + 'Next week 12:00', + 'next week uses child version' + ); + + assert.equal( + anchor.clone().subtract(1, 'day').calendar(anchor), + 'Yesterday at 12:00', + 'yesterday uses parent version' + ); + assert.equal( + anchor.clone().subtract(3, 'days').calendar(anchor), + 'Last week at 12:00', + 'last week uses parent version' + ); + assert.equal( + anchor.clone().subtract(7, 'days').calendar(anchor), + 'whatever', + 'sameElse uses parent version -' + ); + assert.equal( + anchor.clone().add(7, 'days').calendar(anchor), + 'whatever', + 'sameElse uses parent version +' + ); }); - test('index', function (assert) { - assert.equal(moment.months(0), 'January'); - assert.equal(moment.months(2), 'March'); - assert.equal(moment.monthsShort(0), 'Jan'); - assert.equal(moment.monthsShort(2), 'Mar'); - assert.equal(moment.weekdays(0), 'Sunday'); - assert.equal(moment.weekdays(2), 'Tuesday'); - assert.equal(moment.weekdaysShort(0), 'Sun'); - assert.equal(moment.weekdaysShort(2), 'Tue'); - assert.equal(moment.weekdaysMin(0), 'Su'); - assert.equal(moment.weekdaysMin(2), 'Tu'); + test('missing', function (assert) { + moment.defineLocale('cal-2', null); + moment.defineLocale('cal-2', { + calendar: { + sameDay: '[Today at] HH:mm', + nextDay: '[Tomorrow at] HH:mm', + nextWeek: '[Next week at] HH:mm', + lastDay: '[Yesterday at] HH:mm', + lastWeek: '[Last week at] HH:mm', + sameElse: '[whatever]', + }, + }); + moment.updateLocale('cal-2', {}); + moment.locale('cal-2'); + var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601); + assert.equal( + anchor.clone().add(3, 'hours').calendar(anchor), + 'Today at 15:00', + 'today uses parent version' + ); + assert.equal( + anchor.clone().add(1, 'day').calendar(anchor), + 'Tomorrow at 12:00', + 'tomorrow uses parent version' + ); + assert.equal( + anchor.clone().add(3, 'days').calendar(anchor), + 'Next week at 12:00', + 'next week uses parent version' + ); + assert.equal( + anchor.clone().subtract(1, 'day').calendar(anchor), + 'Yesterday at 12:00', + 'yesterday uses parent version' + ); + assert.equal( + anchor.clone().subtract(3, 'days').calendar(anchor), + 'Last week at 12:00', + 'last week uses parent version' + ); + assert.equal( + anchor.clone().subtract(7, 'days').calendar(anchor), + 'whatever', + 'sameElse uses parent version -' + ); + assert.equal( + anchor.clone().add(7, 'days').calendar(anchor), + 'whatever', + 'sameElse uses parent version +' + ); }); - test('localized', function (assert) { - var months = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), - monthsShort = 'on_tw_th_fo_fi_si_se_ei_ni_te_el_tw'.split('_'), - weekdays = 'one_two_three_four_five_six_seven'.split('_'), - weekdaysShort = 'on_tw_th_fo_fi_si_se'.split('_'), - weekdaysMin = '1_2_3_4_5_6_7'.split('_'), - weekdaysLocale = 'four_five_six_seven_one_two_three'.split('_'), - weekdaysShortLocale = 'fo_fi_si_se_on_tw_th'.split('_'), - weekdaysMinLocale = '4_5_6_7_1_2_3'.split('_'), - week = { - dow : 3, - doy : 6 - }; + // Test function vs obj both directions - moment.locale('numerologists', { - months : months, - monthsShort : monthsShort, - weekdays : weekdays, - weekdaysShort: weekdaysShort, - weekdaysMin: weekdaysMin, - week : week + test('long date format', function (assert) { + moment.defineLocale('ldf', null); + moment.defineLocale('ldf', { + 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', + }, + }); + moment.updateLocale('ldf', { + longDateFormat: { + LLL: '[child] MMMM D, YYYY h:mm A', + LLLL: '[child] dddd, MMMM D, YYYY h:mm A', + }, }); - assert.deepEqual(moment.months(), months); - assert.deepEqual(moment.monthsShort(), monthsShort); - assert.deepEqual(moment.weekdays(), weekdays); - assert.deepEqual(moment.weekdaysShort(), weekdaysShort); - assert.deepEqual(moment.weekdaysMin(), weekdaysMin); + moment.locale('ldf'); + var anchor = moment.utc('2015-09-06T12:34:56', moment.ISO_8601); + assert.equal(anchor.format('LTS'), '12:34:56 PM', 'LTS uses base'); + assert.equal(anchor.format('LT'), '12:34 PM', 'LT uses base'); + assert.equal(anchor.format('L'), '09/06/2015', 'L uses base'); + assert.equal(anchor.format('l'), '9/6/2015', 'l uses base'); + assert.equal(anchor.format('LL'), 'September 6, 2015', 'LL uses base'); + assert.equal(anchor.format('ll'), 'Sep 6, 2015', 'll uses base'); + assert.equal( + anchor.format('LLL'), + 'child September 6, 2015 12:34 PM', + 'LLL uses child' + ); + assert.equal( + anchor.format('lll'), + 'child Sep 6, 2015 12:34 PM', + 'lll uses child' + ); + assert.equal( + anchor.format('LLLL'), + 'child Sunday, September 6, 2015 12:34 PM', + 'LLLL uses child' + ); + assert.equal( + anchor.format('llll'), + 'child Sun, Sep 6, 2015 12:34 PM', + 'llll uses child' + ); + }); - assert.equal(moment.months(0), 'one'); - assert.equal(moment.monthsShort(0), 'on'); - assert.equal(moment.weekdays(0), 'one'); - assert.equal(moment.weekdaysShort(0), 'on'); - assert.equal(moment.weekdaysMin(0), '1'); + test('ordinal', function (assert) { + moment.defineLocale('ordinal-1', null); + moment.defineLocale('ordinal-1', { + ordinal: '%dx', + }); + moment.updateLocale('ordinal-1', { + ordinal: '%dy', + }); - assert.equal(moment.months(2), 'three'); - assert.equal(moment.monthsShort(2), 'th'); - assert.equal(moment.weekdays(2), 'three'); - assert.equal(moment.weekdaysShort(2), 'th'); - assert.equal(moment.weekdaysMin(2), '3'); + assert.equal( + moment.utc('2015-02-03', moment.ISO_8601).format('Do'), + '3y', + 'ordinal uses child string' + ); - assert.deepEqual(moment.weekdays(true), weekdaysLocale); - assert.deepEqual(moment.weekdaysShort(true), weekdaysShortLocale); - assert.deepEqual(moment.weekdaysMin(true), weekdaysMinLocale); + moment.defineLocale('ordinal-2', null); + moment.defineLocale('ordinal-2', { + ordinal: '%dx', + }); + moment.updateLocale('ordinal-2', { + ordinal: function (num) { + return num + 'y'; + }, + }); - assert.equal(moment.weekdays(true, 0), 'four'); - assert.equal(moment.weekdaysShort(true, 0), 'fo'); - assert.equal(moment.weekdaysMin(true, 0), '4'); + assert.equal( + moment.utc('2015-02-03', moment.ISO_8601).format('Do'), + '3y', + 'ordinal uses child function' + ); - assert.equal(moment.weekdays(false, 2), 'three'); - assert.equal(moment.weekdaysShort(false, 2), 'th'); - assert.equal(moment.weekdaysMin(false, 2), '3'); + moment.defineLocale('ordinal-3', null); + moment.defineLocale('ordinal-3', { + ordinal: function (num) { + return num + 'x'; + }, + }); + moment.updateLocale('ordinal-3', { + ordinal: '%dy', + }); + + assert.equal( + moment.utc('2015-02-03', moment.ISO_8601).format('Do'), + '3y', + 'ordinal uses child string (overwrite parent function)' + ); }); - test('with functions', function (assert) { - var monthsShort = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), - monthsShortWeird = 'onesy_twosy_threesy_foursy_fivesy_sixsy_sevensy_eightsy_ninesy_tensy_elevensy_twelvesy'.split('_'); + test('ordinal parse', function (assert) { + moment.defineLocale('ordinal-parse-1', null); + moment.defineLocale('ordinal-parse-1', { + dayOfMonthOrdinalParse: /\d{1,2}x/, + }); + moment.updateLocale('ordinal-parse-1', { + dayOfMonthOrdinalParse: /\d{1,2}y/, + }); - moment.locale('difficult', { + assert.ok( + moment.utc('2015-01-1y', 'YYYY-MM-Do', true).isValid(), + 'ordinal parse uses child' + ); - monthsShort: function (m, format) { - var arr = format.match(/-MMM-/) ? monthsShortWeird : monthsShort; - return arr[m.month()]; - } + moment.defineLocale('ordinal-parse-2', null); + moment.defineLocale('ordinal-parse-2', { + dayOfMonthOrdinalParse: /\d{1,2}x/, + }); + moment.updateLocale('ordinal-parse-2', { + dayOfMonthOrdinalParse: /\d{1,2}/, }); - assert.deepEqual(moment.monthsShort(), monthsShort); - assert.deepEqual(moment.monthsShort('MMM'), monthsShort); - assert.deepEqual(moment.monthsShort('-MMM-'), monthsShortWeird); + assert.ok( + moment.utc('2015-01-1', 'YYYY-MM-Do', true).isValid(), + 'ordinal parse uses child (default)' + ); + }); - assert.deepEqual(moment.monthsShort('MMM', 2), 'three'); - assert.deepEqual(moment.monthsShort('-MMM-', 2), 'threesy'); - assert.deepEqual(moment.monthsShort(2), 'three'); + test('months', function (assert) { + moment.defineLocale('months', null); + moment.defineLocale('months', { + months: 'One_Two_Three_Four_Five_Six_Seven_Eight_Nine_Ten_Eleven_Twelve'.split( + '_' + ), + }); + moment.updateLocale('months', { + parentLocale: 'base-months', + months: 'First_Second_Third_Fourth_Fifth_Sixth_Seventh_Eighth_Ninth_Tenth_Eleventh_Twelfth '.split( + '_' + ), + }); + assert.ok( + moment.utc('2015-01-01', 'YYYY-MM-DD').format('MMMM'), + 'First', + 'months uses child' + ); }); - test('with locale data', function (assert) { - var months = 'one_two_three_four_five_six_seven_eight_nine_ten_eleven_twelve'.split('_'), - monthsShort = 'on_tw_th_fo_fi_si_se_ei_ni_te_el_tw'.split('_'), - weekdays = 'one_two_three_four_five_six_seven'.split('_'), - weekdaysShort = 'on_tw_th_fo_fi_si_se'.split('_'), - weekdaysMin = '1_2_3_4_5_6_7'.split('_'); + test('update existing locale', function (assert) { + moment.updateLocale('de', { + monthsShort: [ + 'JAN', + 'FEB', + 'MÄR', + 'APR', + 'MAI', + 'JUN', + 'JUL', + 'AUG', + 'SEP', + 'OKT', + 'NOV', + 'DEZ', + ], + }); + assert.equal( + moment('2017-02-01').format('YYYY MMM MMMM'), + '2017 FEB Februar' + ); + moment.updateLocale('de', null); + }); - var customLocale = moment.localeData('numerologists'); + test('update non-existing locale', function (assert) { + moment.locale('en'); + moment.updateLocale('dude', { months: ['Movember'] }); + assert.equal(moment.locale(), 'dude'); + assert.equal(moment().locale('dude').locale(), 'dude'); + moment.defineLocale('dude', null); + }); - assert.deepEqual(customLocale.months(), months); - assert.deepEqual(customLocale.monthsShort(), monthsShort); - assert.deepEqual(customLocale.weekdays(), weekdays); - assert.deepEqual(customLocale.weekdaysShort(), weekdaysShort); - assert.deepEqual(customLocale.weekdaysMin(), weekdaysMin); + test('reset locale', function (assert) { + moment.locale('de'); + var resultBeforeUpdate = moment('2017-02-01').format('YYYY MMM MMMM'); + moment.updateLocale('de', { + monthsShort: [ + 'JAN', + 'FEB', + 'MÄR', + 'APR', + 'MAI', + 'JUN', + 'JUL', + 'AUG', + 'SEP', + 'OKT', + 'NOV', + 'DEZ', + ], + }); + moment.updateLocale('de', null); + assert.equal( + moment('2017-02-01').format('YYYY MMM MMMM'), + resultBeforeUpdate + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -74065,27 +133939,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -74095,8 +133974,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -74109,7 +133990,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -74118,26 +134002,27 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } @@ -74158,42 +134043,61 @@ }; } - module$1('locale', { - setup : function () { + module('locale', { + setup: function () { // TODO: Remove once locales are switched to ES6 - each([{ - name: 'en-gb', - data: {} - }, { - name: 'en-ca', - data: {} - }, { - name: 'es', - data: { - relativeTime: {past: 'hace %s', s: 'unos segundos', d: 'un día'}, - months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_') - } - }, { - name: 'fr', - data: {} - }, { - name: 'fr-ca', - data: {} - }, { - name: 'it', - data: {} - }, { - name: 'zh-cn', - data: { - months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_') - } - }], function (locale) { - if (moment.locale(locale.name) !== locale.name) { - moment.defineLocale(locale.name, locale.data); + each( + [ + { + name: 'en-gb', + data: {}, + }, + { + name: 'en-ca', + data: {}, + }, + { + name: 'es', + data: { + relativeTime: { + past: 'hace %s', + s: 'unos segundos', + d: 'un día', + }, + months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( + '_' + ), + }, + }, + { + name: 'fr', + data: {}, + }, + { + name: 'fr-ca', + data: {}, + }, + { + name: 'it', + data: {}, + }, + { + name: 'zh-cn', + data: { + months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( + '_' + ), + }, + }, + ], + function (locale) { + if (moment.locale(locale.name) !== locale.name) { + moment.defineLocale(locale.name, locale.data); + } } - }); + ); moment.locale('en'); - } + }, }); test('library getters and setters', function (assert) { @@ -74203,10 +134107,18 @@ assert.equal(moment.locale(), 'en', 'locale should return en by default'); moment.locale('fr'); - assert.equal(moment.locale(), 'fr', 'locale should return the changed locale'); + assert.equal( + moment.locale(), + 'fr', + 'locale should return the changed locale' + ); moment.locale('en-gb'); - assert.equal(moment.locale(), 'en-gb', 'locale should return the changed locale'); + assert.equal( + moment.locale(), + 'en-gb', + 'locale should return the changed locale' + ); moment.locale('en'); assert.equal(moment.locale(), 'en', 'locale should reset'); @@ -74222,66 +134134,144 @@ }); test('library setter array of locales', function (assert) { - assert.equal(moment.locale(['non-existent', 'fr', 'also-non-existent']), 'fr', 'passing an array uses the first valid locale'); - assert.equal(moment.locale(['es', 'fr', 'also-non-existent']), 'es', 'passing an array uses the first valid locale'); + assert.equal( + moment.locale(['non-existent', 'fr', 'also-non-existent']), + 'fr', + 'passing an array uses the first valid locale' + ); + assert.equal( + moment.locale(['es', 'fr', 'also-non-existent']), + 'es', + 'passing an array uses the first valid locale' + ); }); test('library setter locale substrings', function (assert) { assert.equal(moment.locale('fr-crap'), 'fr', 'use substrings'); - assert.equal(moment.locale('fr-does-not-exist'), 'fr', 'uses deep substrings'); - assert.equal(moment.locale('fr-CA-does-not-exist'), 'fr-ca', 'uses deepest substring'); + assert.equal( + moment.locale('fr-does-not-exist'), + 'fr', + 'uses deep substrings' + ); + assert.equal( + moment.locale('fr-CA-does-not-exist'), + 'fr-ca', + 'uses deepest substring' + ); }); test('library getter locale array and substrings', function (assert) { - assert.equal(moment.locale(['en-CH', 'fr']), 'en', 'prefer root locale to shallower ones'); - assert.equal(moment.locale(['en-gb-leeds', 'en-CA']), 'en-gb', 'prefer root locale to shallower ones'); - assert.equal(moment.locale(['en-fake', 'en-CA']), 'en-ca', 'prefer alternatives with shared roots'); - assert.equal(moment.locale(['en-fake', 'en-fake2', 'en-ca']), 'en-ca', 'prefer alternatives with shared roots'); - assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr']), 'fr', 'always find something if possible'); - assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr']), 'fr', 'always find something if possible'); - assert.equal(moment.locale(['fake-CA', 'fake-MX', 'fr-fake-fake-fake']), 'fr', 'always find something if possible'); - assert.equal(moment.locale(['en', 'en-CA']), 'en', 'prefer earlier if it works'); + assert.equal( + moment.locale(['en-CH', 'fr']), + 'en', + 'prefer root locale to shallower ones' + ); + assert.equal( + moment.locale(['en-gb-leeds', 'en-CA']), + 'en-gb', + 'prefer root locale to shallower ones' + ); + assert.equal( + moment.locale(['en-fake', 'en-CA']), + 'en-ca', + 'prefer alternatives with shared roots' + ); + assert.equal( + moment.locale(['en-fake', 'en-fake2', 'en-ca']), + 'en-ca', + 'prefer alternatives with shared roots' + ); + assert.equal( + moment.locale(['fake-CA', 'fake-MX', 'fr']), + 'fr', + 'always find something if possible' + ); + assert.equal( + moment.locale(['fake-CA', 'fake-MX', 'fr']), + 'fr', + 'always find something if possible' + ); + assert.equal( + moment.locale(['fake-CA', 'fake-MX', 'fr-fake-fake-fake']), + 'fr', + 'always find something if possible' + ); + assert.equal( + moment.locale(['en', 'en-CA']), + 'en', + 'prefer earlier if it works' + ); }); test('library ensure inheritance', function (assert) { moment.locale('made-up', { // I put them out of order - months : 'February_March_April_May_June_July_August_September_October_November_December_January'.split('_') + months: 'February_March_April_May_June_July_August_September_October_November_December_January'.split( + '_' + ), // the rest of the properties should be inherited. }); - assert.equal(moment([2012, 5, 6]).format('MMMM'), 'July', 'Override some of the configs'); - assert.equal(moment([2012, 5, 6]).format('MMM'), 'Jun', 'But not all of them'); + assert.equal( + moment([2012, 5, 6]).format('MMMM'), + 'July', + 'Override some of the configs' + ); + assert.equal( + moment([2012, 5, 6]).format('MMM'), + 'Jun', + 'But not all of them' + ); }); test('library ensure inheritance LT L LL LLL LLLL', function (assert) { var locale = 'test-inherit-lt'; moment.defineLocale(locale, { - longDateFormat : { - LT : '-[LT]-', - L : '-[L]-', - LL : '-[LL]-', - LLL : '-[LLL]-', - LLLL : '-[LLLL]-' + longDateFormat: { + LT: '-[LT]-', + L: '-[L]-', + LL: '-[LL]-', + LLL: '-[LLL]-', + LLLL: '-[LLLL]-', + }, + calendar: { + sameDay: '[sameDay] LT', + nextDay: '[nextDay] L', + nextWeek: '[nextWeek] LL', + lastDay: '[lastDay] LLL', + lastWeek: '[lastWeek] LLLL', + sameElse: 'L', }, - calendar : { - sameDay : '[sameDay] LT', - nextDay : '[nextDay] L', - nextWeek : '[nextWeek] LL', - lastDay : '[lastDay] LLL', - lastWeek : '[lastWeek] LLLL', - sameElse : 'L' - } }); moment.locale('es'); - assert.equal(moment().locale(locale).calendar(), 'sameDay -LT-', 'Should use instance locale in LT formatting'); - assert.equal(moment().add(1, 'days').locale(locale).calendar(), 'nextDay -L-', 'Should use instance locale in L formatting'); - assert.equal(moment().add(-1, 'days').locale(locale).calendar(), 'lastDay -LLL-', 'Should use instance locale in LL formatting'); - assert.equal(moment().add(4, 'days').locale(locale).calendar(), 'nextWeek -LL-', 'Should use instance locale in LLL formatting'); - assert.equal(moment().add(-4, 'days').locale(locale).calendar(), 'lastWeek -LLLL-', 'Should use instance locale in LLLL formatting'); + assert.equal( + moment().locale(locale).calendar(), + 'sameDay -LT-', + 'Should use instance locale in LT formatting' + ); + assert.equal( + moment().add(1, 'days').locale(locale).calendar(), + 'nextDay -L-', + 'Should use instance locale in L formatting' + ); + assert.equal( + moment().add(-1, 'days').locale(locale).calendar(), + 'lastDay -LLL-', + 'Should use instance locale in LL formatting' + ); + assert.equal( + moment().add(4, 'days').locale(locale).calendar(), + 'nextWeek -LL-', + 'Should use instance locale in LLL formatting' + ); + assert.equal( + moment().add(-4, 'days').locale(locale).calendar(), + 'lastWeek -LLLL-', + 'Should use instance locale in LLLL formatting' + ); }); test('library localeData', function (assert) { @@ -74289,44 +134279,76 @@ var jan = moment([2000, 0]); - assert.equal(moment.localeData().months(jan), 'January', 'no arguments returns global'); - assert.equal(moment.localeData('zh-cn').months(jan), '一月', 'a string returns the locale based on key'); - assert.equal(moment.localeData(moment().locale('es')).months(jan), 'enero', 'if you pass in a moment it uses the moment\'s locale'); + assert.equal( + moment.localeData().months(jan), + 'January', + 'no arguments returns global' + ); + assert.equal( + moment.localeData('zh-cn').months(jan), + '一月', + 'a string returns the locale based on key' + ); + assert.equal( + moment.localeData(moment().locale('es')).months(jan), + 'enero', + "if you pass in a moment it uses the moment's locale" + ); }); test('library deprecations', function (assert) { test.expectedDeprecations('moment.lang'); - moment.lang('dude', {months: ['Movember']}); + moment.lang('dude', { months: ['Movember'] }); assert.equal(moment.locale(), 'dude', 'setting the lang sets the locale'); assert.equal(moment.lang(), moment.locale()); - assert.equal(moment.langData(), moment.localeData(), 'langData is localeData'); + assert.equal( + moment.langData(), + moment.localeData(), + 'langData is localeData' + ); moment.defineLocale('dude', null); }); test('defineLocale', function (assert) { moment.locale('en'); - moment.defineLocale('dude', {months: ['Movember']}); + moment.defineLocale('dude', { months: ['Movember'] }); assert.equal(moment().locale(), 'dude', 'defineLocale also sets it'); - assert.equal(moment().locale('dude').locale(), 'dude', 'defineLocale defines a locale'); + assert.equal( + moment().locale('dude').locale(), + 'dude', + 'defineLocale defines a locale' + ); moment.defineLocale('dude', null); }); test('locales', function (assert) { - moment.defineLocale('dude', {months: ['Movember']}); - assert.equal(true, !!~indexOf.call(moment.locales(), 'dude'), 'locales returns an array of defined locales'); - assert.equal(true, !!~indexOf.call(moment.locales(), 'en'), 'locales should always include english'); + moment.defineLocale('dude', { months: ['Movember'] }); + assert.equal( + true, + !!~indexOf.call(moment.locales(), 'dude'), + 'locales returns an array of defined locales' + ); + assert.equal( + true, + !!~indexOf.call(moment.locales(), 'en'), + 'locales should always include english' + ); moment.defineLocale('dude', null); }); test('library convenience', function (assert) { - moment.locale('something', {week: {dow: 3}}); + moment.locale('something', { week: { dow: 3 } }); moment.locale('something'); - assert.equal(moment.locale(), 'something', 'locale can be used to create the locale too'); + assert.equal( + moment.locale(), + 'something', + 'locale can be used to create the locale too' + ); moment.defineLocale('something', null); }); test('firstDayOfWeek firstDayOfYear locale getters', function (assert) { - moment.locale('something', {week: {dow: 3, doy: 4}}); + moment.locale('something', { week: { dow: 3, doy: 4 } }); moment.locale('something'); assert.equal(moment.localeData().firstDayOfWeek(), 3, 'firstDayOfWeek'); assert.equal(moment.localeData().firstDayOfYear(), 4, 'firstDayOfYear'); @@ -74336,16 +134358,36 @@ test('instance locale method', function (assert) { moment.locale('en'); - assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Normally default to global'); - assert.equal(moment([2012, 5, 6]).locale('es').format('MMMM'), 'junio', 'Use the instance specific locale'); - assert.equal(moment([2012, 5, 6]).format('MMMM'), 'June', 'Using an instance specific locale does not affect other moments'); + assert.equal( + moment([2012, 5, 6]).format('MMMM'), + 'June', + 'Normally default to global' + ); + assert.equal( + moment([2012, 5, 6]).locale('es').format('MMMM'), + 'junio', + 'Use the instance specific locale' + ); + assert.equal( + moment([2012, 5, 6]).format('MMMM'), + 'June', + 'Using an instance specific locale does not affect other moments' + ); }); test('instance locale method with array', function (assert) { var m = moment().locale(['non-existent', 'fr', 'also-non-existent']); - assert.equal(m.locale(), 'fr', 'passing an array uses the first valid locale'); + assert.equal( + m.locale(), + 'fr', + 'passing an array uses the first valid locale' + ); m = moment().locale(['es', 'fr', 'also-non-existent']); - assert.equal(m.locale(), 'es', 'passing an array uses the first valid locale'); + assert.equal( + m.locale(), + 'es', + 'passing an array uses the first valid locale' + ); }); test('instance getter locale substrings', function (assert) { @@ -74361,17 +134403,28 @@ test('instance locale persists with manipulation', function (assert) { moment.locale('en'); - assert.equal(moment([2012, 5, 6]).locale('es').add({days: 1}).format('MMMM'), 'junio', 'With addition'); - assert.equal(moment([2012, 5, 6]).locale('es').day(0).format('MMMM'), 'junio', 'With day getter'); - assert.equal(moment([2012, 5, 6]).locale('es').endOf('day').format('MMMM'), 'junio', 'With endOf'); + assert.equal( + moment([2012, 5, 6]).locale('es').add({ days: 1 }).format('MMMM'), + 'junio', + 'With addition' + ); + assert.equal( + moment([2012, 5, 6]).locale('es').day(0).format('MMMM'), + 'junio', + 'With day getter' + ); + assert.equal( + moment([2012, 5, 6]).locale('es').endOf('day').format('MMMM'), + 'junio', + 'With endOf' + ); }); test('instance locale persists with cloning', function (assert) { moment.locale('en'); var a = moment([2012, 5, 6]).locale('es'), - b = a.clone(), - c = moment(a); + b = a.clone(); assert.equal(b.format('MMMM'), 'junio', 'using moment.fn.clone()'); assert.equal(b.format('MMMM'), 'junio', 'using moment()'); @@ -74380,21 +134433,33 @@ test('duration locale method', function (assert) { moment.locale('en'); - assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Normally default to global'); - assert.equal(moment.duration({seconds: 44}).locale('es').humanize(), 'unos segundos', 'Use the instance specific locale'); - assert.equal(moment.duration({seconds: 44}).humanize(), 'a few seconds', 'Using an instance specific locale does not affect other durations'); + assert.equal( + moment.duration({ seconds: 44 }).humanize(), + 'a few seconds', + 'Normally default to global' + ); + assert.equal( + moment.duration({ seconds: 44 }).locale('es').humanize(), + 'unos segundos', + 'Use the instance specific locale' + ); + assert.equal( + moment.duration({ seconds: 44 }).humanize(), + 'a few seconds', + 'Using an instance specific locale does not affect other durations' + ); }); test('duration locale persists with cloning', function (assert) { moment.locale('en'); - var a = moment.duration({seconds: 44}).locale('es'), + var a = moment.duration({ seconds: 44 }).locale('es'), b = moment.duration(a); assert.equal(b.humanize(), 'unos segundos', 'using moment.duration()'); }); - test('changing the global locale doesn\'t affect existing duration instances', function (assert) { + test("changing the global locale doesn't affect existing duration instances", function (assert) { var mom = moment.duration(); moment.locale('fr'); assert.equal('en', mom.locale()); @@ -74402,82 +134467,334 @@ test('duration deprecations', function (assert) { test.expectedDeprecations('moment().lang()'); - assert.equal(moment.duration().lang(), moment.duration().localeData(), 'duration.lang is the same as duration.localeData'); + assert.equal( + moment.duration().lang(), + moment.duration().localeData(), + 'duration.lang is the same as duration.localeData' + ); }); test('from and fromNow with invalid date', function (assert) { - assert.equal(moment(NaN).from(), 'Invalid date', 'moment.from with invalid moment'); - assert.equal(moment(NaN).fromNow(), 'Invalid date', 'moment.fromNow with invalid moment'); + assert.equal( + moment(NaN).from(), + 'Invalid date', + 'moment.from with invalid moment' + ); + assert.equal( + moment(NaN).fromNow(), + 'Invalid date', + 'moment.fromNow with invalid moment' + ); }); test('from relative time future', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 44})), 'in a few seconds', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 45})), 'in a minute', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 89})), 'in a minute', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({s: 90})), 'in 2 minutes', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 44})), 'in 44 minutes', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 45})), 'in an hour', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 89})), 'in an hour', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({m: 90})), 'in 2 hours', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 5})), 'in 5 hours', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 21})), 'in 21 hours', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 22})), 'in a day', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 35})), 'in a day', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({h: 36})), 'in 2 days', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 1})), 'in a day', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 5})), 'in 5 days', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 25})), 'in 25 days', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 26})), 'in a month', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 30})), 'in a month', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 45})), 'in a month', '45 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 47})), 'in 2 months', '47 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 74})), 'in 2 months', '74 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 78})), 'in 3 months', '78 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({M: 1})), 'in a month', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({M: 5})), 'in 5 months', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 315})), 'in 10 months', '315 days = 10 months'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 344})), 'in a year', '344 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 345})), 'in a year', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({d: 548})), 'in 2 years', '548 days = in 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({y: 1})), 'in a year', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).subtract({y: 5})), 'in 5 years', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ s: 44 })), + 'in a few seconds', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ s: 45 })), + 'in a minute', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ s: 89 })), + 'in a minute', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ s: 90 })), + 'in 2 minutes', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ m: 44 })), + 'in 44 minutes', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ m: 45 })), + 'in an hour', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ m: 89 })), + 'in an hour', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ m: 90 })), + 'in 2 hours', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ h: 5 })), + 'in 5 hours', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ h: 21 })), + 'in 21 hours', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ h: 22 })), + 'in a day', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ h: 35 })), + 'in a day', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ h: 36 })), + 'in 2 days', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 1 })), + 'in a day', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 5 })), + 'in 5 days', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 25 })), + 'in 25 days', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 26 })), + 'in a month', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 30 })), + 'in a month', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 45 })), + 'in a month', + '45 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 47 })), + 'in 2 months', + '47 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 74 })), + 'in 2 months', + '74 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 78 })), + 'in 3 months', + '78 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ M: 1 })), + 'in a month', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ M: 5 })), + 'in 5 months', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 315 })), + 'in 10 months', + '315 days = 10 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 344 })), + 'in a year', + '344 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 345 })), + 'in a year', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ d: 548 })), + 'in 2 years', + '548 days = in 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ y: 1 })), + 'in a year', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).subtract({ y: 5 })), + 'in 5 years', + '5 years = 5 years' + ); }); test('from relative time past', function (assert) { var start = moment([2007, 1, 28]); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 44})), 'a few seconds ago', '44 seconds = a few seconds'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 45})), 'a minute ago', '45 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 89})), 'a minute ago', '89 seconds = a minute'); - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90})), '2 minutes ago', '90 seconds = 2 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 44})), '44 minutes ago', '44 minutes = 44 minutes'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 45})), 'an hour ago', '45 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 89})), 'an hour ago', '89 minutes = an hour'); - assert.equal(start.from(moment([2007, 1, 28]).add({m: 90})), '2 hours ago', '90 minutes = 2 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 5})), '5 hours ago', '5 hours = 5 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 21})), '21 hours ago', '21 hours = 21 hours'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 22})), 'a day ago', '22 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 35})), 'a day ago', '35 hours = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({h: 36})), '2 days ago', '36 hours = 2 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 1})), 'a day ago', '1 day = a day'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 5})), '5 days ago', '5 days = 5 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 25})), '25 days ago', '25 days = 25 days'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 26})), 'a month ago', '26 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 30})), 'a month ago', '30 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 43})), 'a month ago', '43 days = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 46})), '2 months ago', '46 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 74})), '2 months ago', '75 days = 2 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 76})), '3 months ago', '76 days = 3 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 1})), 'a month ago', '1 month = a month'); - assert.equal(start.from(moment([2007, 1, 28]).add({M: 5})), '5 months ago', '5 months = 5 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 315})), '10 months ago', '315 days = 10 months'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 344})), 'a year ago', '344 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 345})), 'a year ago', '345 days = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({d: 548})), '2 years ago', '548 days = 2 years'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 1})), 'a year ago', '1 year = a year'); - assert.equal(start.from(moment([2007, 1, 28]).add({y: 5})), '5 years ago', '5 years = 5 years'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 44 })), + 'a few seconds ago', + '44 seconds = a few seconds' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 45 })), + 'a minute ago', + '45 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 89 })), + 'a minute ago', + '89 seconds = a minute' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 })), + '2 minutes ago', + '90 seconds = 2 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 44 })), + '44 minutes ago', + '44 minutes = 44 minutes' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 45 })), + 'an hour ago', + '45 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 89 })), + 'an hour ago', + '89 minutes = an hour' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ m: 90 })), + '2 hours ago', + '90 minutes = 2 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 5 })), + '5 hours ago', + '5 hours = 5 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 21 })), + '21 hours ago', + '21 hours = 21 hours' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 22 })), + 'a day ago', + '22 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 35 })), + 'a day ago', + '35 hours = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ h: 36 })), + '2 days ago', + '36 hours = 2 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 1 })), + 'a day ago', + '1 day = a day' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 5 })), + '5 days ago', + '5 days = 5 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 25 })), + '25 days ago', + '25 days = 25 days' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 26 })), + 'a month ago', + '26 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 30 })), + 'a month ago', + '30 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 43 })), + 'a month ago', + '43 days = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 46 })), + '2 months ago', + '46 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 74 })), + '2 months ago', + '75 days = 2 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 76 })), + '3 months ago', + '76 days = 3 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 1 })), + 'a month ago', + '1 month = a month' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ M: 5 })), + '5 months ago', + '5 months = 5 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 315 })), + '10 months ago', + '315 days = 10 months' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 344 })), + 'a year ago', + '344 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 345 })), + 'a year ago', + '345 days = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ d: 548 })), + '2 years ago', + '548 days = 2 years' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 1 })), + 'a year ago', + '1 year = a year' + ); + assert.equal( + start.from(moment([2007, 1, 28]).add({ y: 5 })), + '5 years ago', + '5 years = 5 years' + ); }); test('instance locale used with from', function (assert) { @@ -74487,11 +134804,15 @@ b = moment([2012, 5, 7]); assert.equal(a.from(b), 'hace un día', 'preserve locale of first moment'); - assert.equal(b.from(a), 'in a day', 'do not preserve locale of second moment'); + assert.equal( + b.from(a), + 'in a day', + 'do not preserve locale of second moment' + ); }); test('instance localeData', function (assert) { - moment.defineLocale('dude', {week: {dow: 3}}); + moment.defineLocale('dude', { week: { dow: 3 } }); assert.equal(moment().locale('dude').localeData()._week.dow, 3); moment.defineLocale('dude', null); }); @@ -74508,66 +134829,102 @@ } moment.locale('made-up-2', { - months : fakeReplace, - monthsShort : fakeReplace, - weekdays : fakeReplace, - weekdaysShort : fakeReplace, - weekdaysMin : fakeReplace + months: fakeReplace, + monthsShort: fakeReplace, + weekdays: fakeReplace, + weekdaysShort: fakeReplace, + weekdaysMin: fakeReplace, }); - assert.equal(moment().format('[test] dd ddd dddd MMM MMMM'), 'test test test test test test', 'format month name function should be able to access the format string'); - assert.equal(moment([2011, 0, 1]).format('dd ddd dddd MMM MMMM'), 'date date date date date', 'format month name function should be able to access the moment object'); - assert.equal(moment([2011, 0, 2]).format('dd ddd dddd MMM MMMM'), 'default default default default default', 'format month name function should be able to access the moment object'); + assert.equal( + moment().format('[test] dd ddd dddd MMM MMMM'), + 'test test test test test test', + 'format month name function should be able to access the format string' + ); + assert.equal( + moment([2011, 0, 1]).format('dd ddd dddd MMM MMMM'), + 'date date date date date', + 'format month name function should be able to access the moment object' + ); + assert.equal( + moment([2011, 0, 2]).format('dd ddd dddd MMM MMMM'), + 'default default default default default', + 'format month name function should be able to access the moment object' + ); }); test('changing parts of a locale config', function (assert) { test.expectedDeprecations('defineLocaleOverride'); moment.locale('partial-lang', { - months : 'a b c d e f g h i j k l'.split(' ') + months: 'a b c d e f g h i j k l'.split(' '), }); - assert.equal(moment([2011, 0, 1]).format('MMMM'), 'a', 'should be able to set locale values when creating the localeuage'); + assert.equal( + moment([2011, 0, 1]).format('MMMM'), + 'a', + 'should be able to set locale values when creating the localeuage' + ); moment.locale('partial-lang', { - monthsShort : 'A B C D E F G H I J K L'.split(' ') + monthsShort: 'A B C D E F G H I J K L'.split(' '), }); - assert.equal(moment([2011, 0, 1]).format('MMMM MMM'), 'a A', 'should be able to set locale values after creating the localeuage'); + assert.equal( + moment([2011, 0, 1]).format('MMMM MMM'), + 'a A', + 'should be able to set locale values after creating the localeuage' + ); moment.defineLocale('partial-lang', null); }); test('start/endOf week feature for first-day-is-monday locales', function (assert) { moment.locale('monday-lang', { - week : { - dow : 1 // Monday is the first day of the week - } + week: { + dow: 1, // Monday is the first day of the week + }, }); moment.locale('monday-lang'); - assert.equal(moment([2013, 0, 1]).startOf('week').day(), 1, 'for locale monday-lang first day of the week should be monday'); - assert.equal(moment([2013, 0, 1]).endOf('week').day(), 0, 'for locale monday-lang last day of the week should be sunday'); + assert.equal( + moment([2013, 0, 1]).startOf('week').day(), + 1, + 'for locale monday-lang first day of the week should be monday' + ); + assert.equal( + moment([2013, 0, 1]).endOf('week').day(), + 0, + 'for locale monday-lang last day of the week should be sunday' + ); moment.defineLocale('monday-lang', null); }); test('meridiem parsing', function (assert) { moment.locale('meridiem-parsing', { - meridiemParse : /[bd]/i, - isPM : function (input) { + meridiemParse: /[bd]/i, + isPM: function (input) { return input === 'b'; - } + }, }); moment.locale('meridiem-parsing'); - assert.equal(moment('2012-01-01 3b', 'YYYY-MM-DD ha').hour(), 15, 'Custom parsing of meridiem should work'); - assert.equal(moment('2012-01-01 3d', 'YYYY-MM-DD ha').hour(), 3, 'Custom parsing of meridiem should work'); + assert.equal( + moment('2012-01-01 3b', 'YYYY-MM-DD ha').hour(), + 15, + 'Custom parsing of meridiem should work' + ); + assert.equal( + moment('2012-01-01 3d', 'YYYY-MM-DD ha').hour(), + 3, + 'Custom parsing of meridiem should work' + ); moment.defineLocale('meridiem-parsing', null); }); test('invalid date formatting', function (assert) { moment.locale('has-invalid', { - invalidDate: 'KHAAAAAAAAAAAN!' + invalidDate: 'KHAAAAAAAAAAAN!', }); assert.equal(moment.invalid().format(), 'KHAAAAAAAAAAAN!'); @@ -74579,10 +134936,10 @@ var registered = moment.locale('return-this', {}); assert.equal(registered, 'return-this', 'returns the locale configured'); - moment.locale('return-this', null); + moment.defineLocale('return-this', null); }); - test('changing the global locale doesn\'t affect existing instances', function (assert) { + test("changing the global locale doesn't affect existing instances", function (assert) { var mom = moment(); moment.locale('fr'); assert.equal('en', mom.locale()); @@ -74592,8 +134949,16 @@ test.expectedDeprecations('moment().lang()'); var mom = moment(); - assert.equal(mom.lang('fr'), mom, 'setting the language (lang) returns the original moment for chaining'); - assert.equal(mom.locale('it'), mom, 'setting the language (locale) returns the original moment for chaining'); + assert.equal( + mom.lang('fr'), + mom, + 'setting the language (lang) returns the original moment for chaining' + ); + assert.equal( + mom.locale('it'), + mom, + 'setting the language (locale) returns the original moment for chaining' + ); }); test('lang(key) changes the language of the instance', function (assert) { @@ -74615,22 +134980,30 @@ assert.equal(m.locale(), 'fr', 'instance locale reset to global locale'); }); - test('moment().locale with missing key doesn\'t change locale', function (assert) { - assert.equal(moment().locale('boo').localeData(), moment.localeData(), - 'preserve global locale in case of bad locale id'); + test("moment().locale with missing key doesn't change locale", function (assert) { + assert.equal( + moment().locale('boo').localeData(), + moment.localeData(), + 'preserve global locale in case of bad locale id' + ); }); - test('moment().lang with missing key doesn\'t change locale', function (assert) { + test("moment().lang with missing key doesn't change locale", function (assert) { test.expectedDeprecations('moment().lang()'); - assert.equal(moment().lang('boo').localeData(), moment.localeData(), - 'preserve global locale in case of bad locale id'); + assert.equal( + moment().lang('boo').localeData(), + moment.localeData(), + 'preserve global locale in case of bad locale id' + ); }); test('when in strict mode with inexact parsing, treat periods in short weekdays literally, not as the regex-period', function (assert) { moment.defineLocale('periods-in-short-weekdays', { - weekdays : 'Monday_Tuesday_Wednesday_Thursday_Friday_Saturday_Sunday'.split('_'), - weekdaysShort : 'mon_t...s_wed_thurs_fri_sat_sun'.split('_'), - weekdaysParseExact : false + weekdays: 'Monday_Tuesday_Wednesday_Thursday_Friday_Saturday_Sunday'.split( + '_' + ), + weekdaysShort: 'mon_t...s_wed_thurs_fri_sat_sun'.split('_'), + weekdaysParseExact: false, }); moment().locale('periods-in-short-weekdays'); @@ -74639,9 +135012,11 @@ test('when in strict mode with inexact parsing, treat periods in full weekdays literally, not as the regex-period', function (assert) { moment.defineLocale('periods-in-full-weekdays', { - weekdays : 'Monday_T....day_Wednesday_Thursday_Friday_Saturday_Sunday'.split('_'), - weekdaysShort : 'mon_tues_wed_thurs_fri_sat_sun'.split('_'), - weekdaysParseExact : false + weekdays: 'Monday_T....day_Wednesday_Thursday_Friday_Saturday_Sunday'.split( + '_' + ), + weekdaysShort: 'mon_tues_wed_thurs_fri_sat_sun'.split('_'), + weekdaysParseExact: false, }); moment().locale('periods-in-full-weekdays'); @@ -74650,51 +135025,357 @@ test('when in strict mode with inexact parsing, treat periods in min-weekdays literally, not as the regex-period', function (assert) { moment.defineLocale('periods-in-min-weekdays', { - weekdays : 'Monday_Tuesday_Wednesday_Thursday_Friday_Saturday_Sunday'.split('_'), - weekdaysMin : 'mon_t...s_wed_thurs_fri_sat_sun'.split('_'), - weekdaysParseExact : false + weekdays: 'Monday_Tuesday_Wednesday_Thursday_Friday_Saturday_Sunday'.split( + '_' + ), + weekdaysMin: 'mon_t...s_wed_thurs_fri_sat_sun'.split('_'), + weekdaysParseExact: false, + }); + + moment().locale('periods-in-min-weekdays'); + assert.equal(moment('thurs', 'dd', true).format('dddd'), 'Thursday'); + }); + + // TODO: Enable this after fixing pl months parse hack hack + // test('monthsParseExact', function (assert) { + // var locale = 'test-months-parse-exact'; + + // moment.defineLocale(locale, { + // monthsParseExact: true, + // months: 'A_AA_AAA_B_B B_BB B_C_C-C_C,C2C_D_D+D_D`D*D'.split('_'), + // monthsShort: 'E_EE_EEE_F_FF_FFF_G_GG_GGG_H_HH_HHH'.split('_') + // }); + + // assert.equal(moment('A', 'MMMM', true).month(), 0, 'parse long month 0 with MMMM'); + // assert.equal(moment('AA', 'MMMM', true).month(), 1, 'parse long month 1 with MMMM'); + // assert.equal(moment('AAA', 'MMMM', true).month(), 2, 'parse long month 2 with MMMM'); + // assert.equal(moment('B B', 'MMMM', true).month(), 4, 'parse long month 4 with MMMM'); + // assert.equal(moment('BB B', 'MMMM', true).month(), 5, 'parse long month 5 with MMMM'); + // assert.equal(moment('C-C', 'MMMM', true).month(), 7, 'parse long month 7 with MMMM'); + // assert.equal(moment('C,C2C', 'MMMM', true).month(), 8, 'parse long month 8 with MMMM'); + // assert.equal(moment('D+D', 'MMMM', true).month(), 10, 'parse long month 10 with MMMM'); + // assert.equal(moment('D`D*D', 'MMMM', true).month(), 11, 'parse long month 11 with MMMM'); + + // assert.equal(moment('E', 'MMM', true).month(), 0, 'parse long month 0 with MMM'); + // assert.equal(moment('EE', 'MMM', true).month(), 1, 'parse long month 1 with MMM'); + // assert.equal(moment('EEE', 'MMM', true).month(), 2, 'parse long month 2 with MMM'); + + // assert.equal(moment('A', 'MMM').month(), 0, 'non-strict parse long month 0 with MMM'); + // assert.equal(moment('AA', 'MMM').month(), 1, 'non-strict parse long month 1 with MMM'); + // assert.equal(moment('AAA', 'MMM').month(), 2, 'non-strict parse long month 2 with MMM'); + // assert.equal(moment('E', 'MMMM').month(), 0, 'non-strict parse short month 0 with MMMM'); + // assert.equal(moment('EE', 'MMMM').month(), 1, 'non-strict parse short month 1 with MMMM'); + // assert.equal(moment('EEE', 'MMMM').month(), 2, 'non-strict parse short month 2 with MMMM'); + // }); + +}))); + + + +;(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 module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, }); + } + + module('min max'); + + test('min', function (assert) { + var now = moment(), + future = now.clone().add(1, 'month'), + past = now.clone().subtract(1, 'month'), + invalid = moment.invalid(); + + assert.equal(moment.min(now, future, past), past, 'min(now, future, past)'); + assert.equal(moment.min(future, now, past), past, 'min(future, now, past)'); + assert.equal(moment.min(future, past, now), past, 'min(future, past, now)'); + assert.equal(moment.min(past, future, now), past, 'min(past, future, now)'); + assert.equal(moment.min(now, past), past, 'min(now, past)'); + assert.equal(moment.min(past, now), past, 'min(past, now)'); + assert.equal(moment.min(now), now, 'min(now, past)'); + + assert.equal( + moment.min([now, future, past]), + past, + 'min([now, future, past])' + ); + assert.equal(moment.min([now, past]), past, 'min(now, past)'); + assert.equal(moment.min([now]), now, 'min(now)'); + + assert.equal(moment.min([now, invalid]), invalid, 'min(now, invalid)'); + assert.equal(moment.min([invalid, now]), invalid, 'min(invalid, now)'); + }); + + test('max', function (assert) { + var now = moment(), + future = now.clone().add(1, 'month'), + past = now.clone().subtract(1, 'month'), + invalid = moment.invalid(); + + assert.equal( + moment.max(now, future, past), + future, + 'max(now, future, past)' + ); + assert.equal( + moment.max(future, now, past), + future, + 'max(future, now, past)' + ); + assert.equal( + moment.max(future, past, now), + future, + 'max(future, past, now)' + ); + assert.equal( + moment.max(past, future, now), + future, + 'max(past, future, now)' + ); + assert.equal(moment.max(now, past), now, 'max(now, past)'); + assert.equal(moment.max(past, now), now, 'max(past, now)'); + assert.equal(moment.max(now), now, 'max(now, past)'); + + assert.equal( + moment.max([now, future, past]), + future, + 'max([now, future, past])' + ); + assert.equal(moment.max([now, past]), now, 'max(now, past)'); + assert.equal(moment.max([now]), now, 'max(now)'); + + assert.equal(moment.max([now, invalid]), invalid, 'max(now, invalid)'); + assert.equal(moment.max([invalid, now]), invalid, 'max(invalid, now)'); + }); + +}))); + + + +;(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; + } - moment().locale('periods-in-min-weekdays'); - assert.equal(moment('thurs', 'dd', true).format('dddd'), 'Thursday'); - }); + /*global QUnit:false*/ + var test = QUnit.test, + only = QUnit.only; - // TODO: Enable this after fixing pl months parse hack hack - // test('monthsParseExact', function (assert) { - // var locale = 'test-months-parse-exact'; + function module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } - // moment.defineLocale(locale, { - // monthsParseExact: true, - // months: 'A_AA_AAA_B_B B_BB B_C_C-C_C,C2C_D_D+D_D`D*D'.split('_'), - // monthsShort: 'E_EE_EEE_F_FF_FFF_G_GG_GGG_H_HH_HHH'.split('_') - // }); + module('mutable'); - // assert.equal(moment('A', 'MMMM', true).month(), 0, 'parse long month 0 with MMMM'); - // assert.equal(moment('AA', 'MMMM', true).month(), 1, 'parse long month 1 with MMMM'); - // assert.equal(moment('AAA', 'MMMM', true).month(), 2, 'parse long month 2 with MMMM'); - // assert.equal(moment('B B', 'MMMM', true).month(), 4, 'parse long month 4 with MMMM'); - // assert.equal(moment('BB B', 'MMMM', true).month(), 5, 'parse long month 5 with MMMM'); - // assert.equal(moment('C-C', 'MMMM', true).month(), 7, 'parse long month 7 with MMMM'); - // assert.equal(moment('C,C2C', 'MMMM', true).month(), 8, 'parse long month 8 with MMMM'); - // assert.equal(moment('D+D', 'MMMM', true).month(), 10, 'parse long month 10 with MMMM'); - // assert.equal(moment('D`D*D', 'MMMM', true).month(), 11, 'parse long month 11 with MMMM'); + test('manipulation methods', function (assert) { + var m = moment(); - // assert.equal(moment('E', 'MMM', true).month(), 0, 'parse long month 0 with MMM'); - // assert.equal(moment('EE', 'MMM', true).month(), 1, 'parse long month 1 with MMM'); - // assert.equal(moment('EEE', 'MMM', true).month(), 2, 'parse long month 2 with MMM'); + assert.equal(m, m.year(2011), 'year() should be mutable'); + assert.equal(m, m.month(1), 'month() should be mutable'); + assert.equal(m, m.hours(7), 'hours() should be mutable'); + assert.equal(m, m.minutes(33), 'minutes() should be mutable'); + assert.equal(m, m.seconds(44), 'seconds() should be mutable'); + assert.equal(m, m.milliseconds(55), 'milliseconds() should be mutable'); + assert.equal(m, m.day(2), 'day() should be mutable'); + assert.equal(m, m.startOf('week'), 'startOf() should be mutable'); + assert.equal(m, m.add(1, 'days'), 'add() should be mutable'); + assert.equal(m, m.subtract(2, 'years'), 'subtract() should be mutable'); + assert.equal(m, m.local(), 'local() should be mutable'); + assert.equal(m, m.utc(), 'utc() should be mutable'); + }); - // assert.equal(moment('A', 'MMM').month(), 0, 'non-strict parse long month 0 with MMM'); - // assert.equal(moment('AA', 'MMM').month(), 1, 'non-strict parse long month 1 with MMM'); - // assert.equal(moment('AAA', 'MMM').month(), 2, 'non-strict parse long month 2 with MMM'); - // assert.equal(moment('E', 'MMMM').month(), 0, 'non-strict parse short month 0 with MMMM'); - // assert.equal(moment('EE', 'MMMM').month(), 1, 'non-strict parse short month 1 with MMMM'); - // assert.equal(moment('EEE', 'MMMM').month(), 2, 'non-strict parse short month 2 with MMMM'); - // }); + test('non mutable methods', function (assert) { + var m = moment(); + assert.notEqual(m, m.clone(), 'clone() should not be mutable'); + }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -74709,27 +135390,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -74739,8 +135425,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -74753,7 +135441,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -74762,223 +135453,318 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('locale inheritance'); - - test('calendar', function (assert) { - moment.defineLocale('base-cal', { - calendar : { - sameDay: '[Today at] HH:mm', - nextDay: '[Tomorrow at] HH:mm', - nextWeek: '[Next week at] HH:mm', - lastDay: '[Yesterday at] HH:mm', - lastWeek: '[Last week at] HH:mm', - sameElse: '[whatever]' - } - }); - moment.defineLocale('child-cal', { - parentLocale: 'base-cal', - calendar: { - sameDay: '[Today] HH:mm', - nextDay: '[Tomorrow] HH:mm', - nextWeek: '[Next week] HH:mm' - } - }); - - moment.locale('child-cal'); - var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601); - assert.equal(anchor.clone().add(3, 'hours').calendar(anchor), 'Today 15:00', 'today uses child version'); - assert.equal(anchor.clone().add(1, 'day').calendar(anchor), 'Tomorrow 12:00', 'tomorrow uses child version'); - assert.equal(anchor.clone().add(3, 'days').calendar(anchor), 'Next week 12:00', 'next week uses child version'); + module('normalize units'); - assert.equal(anchor.clone().subtract(1, 'day').calendar(anchor), 'Yesterday at 12:00', 'yesterday uses parent version'); - assert.equal(anchor.clone().subtract(3, 'days').calendar(anchor), 'Last week at 12:00', 'last week uses parent version'); - assert.equal(anchor.clone().subtract(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version -'); - assert.equal(anchor.clone().add(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version +'); - }); + test('normalize units', function (assert) { + var fullKeys = [ + 'year', + 'quarter', + 'month', + 'isoWeek', + 'week', + 'day', + 'hour', + 'minute', + 'second', + 'millisecond', + 'date', + 'dayOfYear', + 'weekday', + 'isoWeekday', + 'weekYear', + 'isoWeekYear', + ], + aliases = [ + 'y', + 'Q', + 'M', + 'W', + 'w', + 'd', + 'h', + 'm', + 's', + 'ms', + 'D', + 'DDD', + 'e', + 'E', + 'gg', + 'GG', + ], + length = fullKeys.length, + fullKey, + fullKeyCaps, + fullKeyPlural, + fullKeyCapsPlural, + alias, + index; - test('missing', function (assert) { - moment.defineLocale('base-cal-2', { - calendar: { - sameDay: '[Today at] HH:mm', - nextDay: '[Tomorrow at] HH:mm', - nextWeek: '[Next week at] HH:mm', - lastDay: '[Yesterday at] HH:mm', - lastWeek: '[Last week at] HH:mm', - sameElse: '[whatever]' - } - }); - moment.defineLocale('child-cal-2', { - parentLocale: 'base-cal-2' - }); - moment.locale('child-cal-2'); - var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601); - assert.equal(anchor.clone().add(3, 'hours').calendar(anchor), 'Today at 15:00', 'today uses parent version'); - assert.equal(anchor.clone().add(1, 'day').calendar(anchor), 'Tomorrow at 12:00', 'tomorrow uses parent version'); - assert.equal(anchor.clone().add(3, 'days').calendar(anchor), 'Next week at 12:00', 'next week uses parent version'); - assert.equal(anchor.clone().subtract(1, 'day').calendar(anchor), 'Yesterday at 12:00', 'yesterday uses parent version'); - assert.equal(anchor.clone().subtract(3, 'days').calendar(anchor), 'Last week at 12:00', 'last week uses parent version'); - assert.equal(anchor.clone().subtract(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version -'); - assert.equal(anchor.clone().add(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version +'); + for (index = 0; index < length; index += 1) { + fullKey = fullKeys[index]; + fullKeyCaps = fullKey.toUpperCase(); + fullKeyPlural = fullKey + 's'; + fullKeyCapsPlural = fullKeyCaps + 's'; + alias = aliases[index]; + assert.equal( + moment.normalizeUnits(fullKey), + fullKey, + 'Testing full key ' + fullKey + ); + assert.equal( + moment.normalizeUnits(fullKeyCaps), + fullKey, + 'Testing full key capitalised ' + fullKey + ); + assert.equal( + moment.normalizeUnits(fullKeyPlural), + fullKey, + 'Testing full key plural ' + fullKey + ); + assert.equal( + moment.normalizeUnits(fullKeyCapsPlural), + fullKey, + 'Testing full key capitalised and plural ' + fullKey + ); + assert.equal( + moment.normalizeUnits(alias), + fullKey, + 'Testing alias ' + fullKey + ); + } }); - // Test function vs obj both directions +}))); - test('long date format', function (assert) { - moment.defineLocale('base-ldf', { - 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' - } - }); - moment.defineLocale('child-ldf', { - parentLocale: 'base-ldf', - longDateFormat: { - LLL : '[child] MMMM D, YYYY h:mm A', - LLLL : '[child] dddd, MMMM D, YYYY h:mm A' - } - }); - moment.locale('child-ldf'); - var anchor = moment.utc('2015-09-06T12:34:56', moment.ISO_8601); - assert.equal(anchor.format('LTS'), '12:34:56 PM', 'LTS uses base'); - assert.equal(anchor.format('LT'), '12:34 PM', 'LT uses base'); - assert.equal(anchor.format('L'), '09/06/2015', 'L uses base'); - assert.equal(anchor.format('l'), '9/6/2015', 'l uses base'); - assert.equal(anchor.format('LL'), 'September 6, 2015', 'LL uses base'); - assert.equal(anchor.format('ll'), 'Sep 6, 2015', 'll uses base'); - assert.equal(anchor.format('LLL'), 'child September 6, 2015 12:34 PM', 'LLL uses child'); - assert.equal(anchor.format('lll'), 'child Sep 6, 2015 12:34 PM', 'lll uses child'); - assert.equal(anchor.format('LLLL'), 'child Sunday, September 6, 2015 12:34 PM', 'LLLL uses child'); - assert.equal(anchor.format('llll'), 'child Sun, Sep 6, 2015 12:34 PM', 'llll uses child'); - }); - test('ordinal', function (assert) { - moment.defineLocale('base-ordinal-1', { - ordinal : '%dx' - }); - moment.defineLocale('child-ordinal-1', { - parentLocale: 'base-ordinal-1', - ordinal : '%dy' - }); +;(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'; - assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child string'); + function each(array, callback) { + var i; + for (i = 0; i < array.length; i++) { + callback(array[i], i, array); + } + } - moment.defineLocale('base-ordinal-2', { - ordinal : '%dx' - }); - moment.defineLocale('child-ordinal-2', { - parentLocale: 'base-ordinal-2', - ordinal : function (num) { - return num + 'y'; + 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; + }; + } - assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child function'); + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; - moment.defineLocale('base-ordinal-3', { - ordinal : function (num) { - return num + 'x'; + 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(' ') + ); } - }); - moment.defineLocale('child-ordinal-3', { - parentLocale: 'base-ordinal-3', - ordinal : '%dy' - }); + } + } - assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child string (overwrite parent function)'); - }); + 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; + } - test('ordinal parse', function (assert) { - moment.defineLocale('base-ordinal-parse-1', { - dayOfMonthOrdinalParse : /\d{1,2}x/ - }); - moment.defineLocale('child-ordinal-parse-1', { - parentLocale: 'base-ordinal-parse-1', - dayOfMonthOrdinalParse : /\d{1,2}y/ - }); + /*global QUnit:false*/ - assert.ok(moment.utc('2015-01-1y', 'YYYY-MM-Do', true).isValid(), 'ordinal parse uses child'); + var test = QUnit.test, + only = QUnit.only; - moment.defineLocale('base-ordinal-parse-2', { - dayOfMonthOrdinalParse : /\d{1,2}x/ - }); - moment.defineLocale('child-ordinal-parse-2', { - parentLocale: 'base-ordinal-parse-2', - dayOfMonthOrdinalParse : /\d{1,2}/ + function module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, }); + } - assert.ok(moment.utc('2015-01-1', 'YYYY-MM-Do', true).isValid(), 'ordinal parse uses child (default)'); - }); + module('now'); - test('months', function (assert) { - moment.defineLocale('base-months', { - months : 'One_Two_Three_Four_Five_Six_Seven_Eight_Nine_Ten_Eleven_Twelve'.split('_') - }); - moment.defineLocale('child-months', { - parentLocale: 'base-months', - months : 'First_Second_Third_Fourth_Fifth_Sixth_Seventh_Eighth_Ninth_Tenth_Eleventh_Twelveth '.split('_') - }); - assert.ok(moment.utc('2015-01-01', 'YYYY-MM-DD').format('MMMM'), 'First', 'months uses child'); + test('now', function (assert) { + var startOfTest = new Date().valueOf(), + momentNowTime = moment.now(), + afterMomentCreationTime = new Date().valueOf(); + + assert.ok( + startOfTest <= momentNowTime, + 'moment now() time should be now, not in the past' + ); + assert.ok( + momentNowTime <= afterMomentCreationTime, + 'moment now() time should be now, not in the future' + ); }); - test('define child locale before parent', function (assert) { - moment.defineLocale('months-x', null); - moment.defineLocale('base-months-x', null); + test('now - Date mocked', function (assert) { + var RealDate = Date, + customTimeMs = moment('2015-01-01T01:30:00.000Z').valueOf(); - moment.defineLocale('months-x', { - parentLocale: 'base-months-x', - months : 'First_Second_Third_Fourth_Fifth_Sixth_Seventh_Eighth_Ninth_Tenth_Eleventh_Twelveth '.split('_') - }); - assert.equal(moment.locale(), 'en', 'failed to set a locale requiring missing parent'); + function MockDate() { + return new RealDate(customTimeMs); + } + + MockDate.now = function () { + return new MockDate().valueOf(); + }; - assert.equal(moment('00:00:00 01/January/2017', 'HH:mm:ss DD/MMM/YYYY', 'months-x').locale(), 'en', 'creating moment using child with undefined parent defaults to global'); + MockDate.prototype = RealDate.prototype; - moment.defineLocale('base-months-x', { - months : 'One_Two_Three_Four_Five_Six_Seven_Eight_Nine_Ten_Eleven_Twelve'.split('_') - }); - assert.equal(moment.locale(), 'base-months-x', 'defineLocale should also set the locale (regardless of child locales)'); + // eslint-disable-next-line + Date = MockDate; - assert.equal(moment().locale('months-x').month(0).format('MMMM'), 'First', 'loading child before parent locale works'); + try { + assert.equal( + moment().valueOf(), + customTimeMs, + 'moment now() time should use the global Date object' + ); + } finally { + // eslint-disable-next-line + Date = RealDate; + } }); - test('lazy load parentLocale', function (assert) { - moment.defineLocale('de_test', { - parentLocale: 'de', - monthsShort: ['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'M10', 'M11', 'M12'] - }); - assert.equal(moment.locale(), 'de_test', 'failed to lazy load parentLocale'); + test('now - custom value', function (assert) { + var customTimeStr = '2015-01-01T01:30:00.000Z', + customTime = moment(customTimeStr, moment.ISO_8601).valueOf(), + oldFn = moment.now; + + moment.now = function () { + return customTime; + }; + + try { + assert.equal( + moment().toISOString(), + customTimeStr, + 'moment() constructor should use the function defined by moment.now, but it did not' + ); + assert.equal( + moment.utc().toISOString(), + customTimeStr, + 'moment() constructor should use the function defined by moment.now, but it did not' + ); + } finally { + moment.now = oldFn; + } + }); + + test('empty object, empty array', function (assert) { + function assertIsNow(gen, msg) { + var before = +new Date(), + mid = gen(), + after = +new Date(); + assert.ok(before <= +mid && +mid <= after, 'should be now : ' + msg); + } + assertIsNow(function () { + return moment(); + }, 'moment()'); + assertIsNow(function () { + return moment([]); + }, 'moment([])'); + assertIsNow(function () { + return moment({}); + }, 'moment({})'); + assertIsNow(function () { + return moment.utc(); + }, 'moment.utc()'); + assertIsNow(function () { + return moment.utc([]); + }, 'moment.utc([])'); + assertIsNow(function () { + return moment.utc({}); + }, 'moment.utc({})'); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -74993,27 +135779,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -75023,8 +135814,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -75037,7 +135830,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -75046,204 +135842,466 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('locale update'); + module('parsing flags'); - test('calendar', function (assert) { - moment.defineLocale('cal', null); - moment.defineLocale('cal', { - calendar : { - sameDay: '[Today at] HH:mm', - nextDay: '[Tomorrow at] HH:mm', - nextWeek: '[Next week at] HH:mm', - lastDay: '[Yesterday at] HH:mm', - lastWeek: '[Last week at] HH:mm', - sameElse: '[whatever]' - } - }); - moment.updateLocale('cal', { - calendar: { - sameDay: '[Today] HH:mm', - nextDay: '[Tomorrow] HH:mm', - nextWeek: '[Next week] HH:mm' - } - }); + function flags() { + return moment.apply(null, arguments).parsingFlags(); + } - moment.locale('cal'); - var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601); - assert.equal(anchor.clone().add(3, 'hours').calendar(anchor), 'Today 15:00', 'today uses child version'); - assert.equal(anchor.clone().add(1, 'day').calendar(anchor), 'Tomorrow 12:00', 'tomorrow uses child version'); - assert.equal(anchor.clone().add(3, 'days').calendar(anchor), 'Next week 12:00', 'next week uses child version'); + test('overflow with array', function (assert) { + //months + assert.equal(flags([2010, 0]).overflow, -1, 'month 0 valid'); + assert.equal(flags([2010, 1]).overflow, -1, 'month 1 valid'); + assert.equal(flags([2010, -1]).overflow, 1, 'month -1 invalid'); + assert.equal(flags([2100, 12]).overflow, 1, 'month 12 invalid'); - assert.equal(anchor.clone().subtract(1, 'day').calendar(anchor), 'Yesterday at 12:00', 'yesterday uses parent version'); - assert.equal(anchor.clone().subtract(3, 'days').calendar(anchor), 'Last week at 12:00', 'last week uses parent version'); - assert.equal(anchor.clone().subtract(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version -'); - assert.equal(anchor.clone().add(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version +'); - }); + //days + assert.equal(flags([2010, 1, 16]).overflow, -1, 'date valid'); + assert.equal(flags([2010, 1, -1]).overflow, 2, 'date -1 invalid'); + assert.equal(flags([2010, 1, 0]).overflow, 2, 'date 0 invalid'); + assert.equal(flags([2010, 1, 32]).overflow, 2, 'date 32 invalid'); + assert.equal(flags([2012, 1, 29]).overflow, -1, 'date leap year valid'); + assert.equal(flags([2010, 1, 29]).overflow, 2, 'date leap year invalid'); - test('missing', function (assert) { - moment.defineLocale('cal-2', null); - moment.defineLocale('cal-2', { - calendar: { - sameDay: '[Today at] HH:mm', - nextDay: '[Tomorrow at] HH:mm', - nextWeek: '[Next week at] HH:mm', - lastDay: '[Yesterday at] HH:mm', - lastWeek: '[Last week at] HH:mm', - sameElse: '[whatever]' - } - }); - moment.updateLocale('cal-2', { - }); - moment.locale('cal-2'); - var anchor = moment.utc('2015-05-05T12:00:00', moment.ISO_8601); - assert.equal(anchor.clone().add(3, 'hours').calendar(anchor), 'Today at 15:00', 'today uses parent version'); - assert.equal(anchor.clone().add(1, 'day').calendar(anchor), 'Tomorrow at 12:00', 'tomorrow uses parent version'); - assert.equal(anchor.clone().add(3, 'days').calendar(anchor), 'Next week at 12:00', 'next week uses parent version'); - assert.equal(anchor.clone().subtract(1, 'day').calendar(anchor), 'Yesterday at 12:00', 'yesterday uses parent version'); - assert.equal(anchor.clone().subtract(3, 'days').calendar(anchor), 'Last week at 12:00', 'last week uses parent version'); - assert.equal(anchor.clone().subtract(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version -'); - assert.equal(anchor.clone().add(7, 'days').calendar(anchor), 'whatever', 'sameElse uses parent version +'); - }); + //hours + assert.equal(flags([2010, 1, 1, 8]).overflow, -1, 'hour valid'); + assert.equal(flags([2010, 1, 1, 0]).overflow, -1, 'hour 0 valid'); + assert.equal(flags([2010, 1, 1, -1]).overflow, 3, 'hour -1 invalid'); + assert.equal(flags([2010, 1, 1, 25]).overflow, 3, 'hour 25 invalid'); + assert.equal(flags([2010, 1, 1, 24, 1]).overflow, 3, 'hour 24:01 invalid'); - // Test function vs obj both directions + //minutes + assert.equal(flags([2010, 1, 1, 8, 15]).overflow, -1, 'minute valid'); + assert.equal(flags([2010, 1, 1, 8, 0]).overflow, -1, 'minute 0 valid'); + assert.equal(flags([2010, 1, 1, 8, -1]).overflow, 4, 'minute -1 invalid'); + assert.equal(flags([2010, 1, 1, 8, 60]).overflow, 4, 'minute 60 invalid'); - test('long date format', function (assert) { - moment.defineLocale('ldf', null); - moment.defineLocale('ldf', { - 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' - } - }); - moment.updateLocale('ldf', { - longDateFormat: { - LLL : '[child] MMMM D, YYYY h:mm A', - LLLL : '[child] dddd, MMMM D, YYYY h:mm A' - } - }); + //seconds + assert.equal(flags([2010, 1, 1, 8, 15, 12]).overflow, -1, 'second valid'); + assert.equal(flags([2010, 1, 1, 8, 15, 0]).overflow, -1, 'second 0 valid'); + assert.equal( + flags([2010, 1, 1, 8, 15, -1]).overflow, + 5, + 'second -1 invalid' + ); + assert.equal( + flags([2010, 1, 1, 8, 15, 60]).overflow, + 5, + 'second 60 invalid' + ); - moment.locale('ldf'); - var anchor = moment.utc('2015-09-06T12:34:56', moment.ISO_8601); - assert.equal(anchor.format('LTS'), '12:34:56 PM', 'LTS uses base'); - assert.equal(anchor.format('LT'), '12:34 PM', 'LT uses base'); - assert.equal(anchor.format('L'), '09/06/2015', 'L uses base'); - assert.equal(anchor.format('l'), '9/6/2015', 'l uses base'); - assert.equal(anchor.format('LL'), 'September 6, 2015', 'LL uses base'); - assert.equal(anchor.format('ll'), 'Sep 6, 2015', 'll uses base'); - assert.equal(anchor.format('LLL'), 'child September 6, 2015 12:34 PM', 'LLL uses child'); - assert.equal(anchor.format('lll'), 'child Sep 6, 2015 12:34 PM', 'lll uses child'); - assert.equal(anchor.format('LLLL'), 'child Sunday, September 6, 2015 12:34 PM', 'LLLL uses child'); - assert.equal(anchor.format('llll'), 'child Sun, Sep 6, 2015 12:34 PM', 'llll uses child'); + //milliseconds + assert.equal( + flags([2010, 1, 1, 8, 15, 12, 345]).overflow, + -1, + 'millisecond valid' + ); + assert.equal( + flags([2010, 1, 1, 8, 15, 12, 0]).overflow, + -1, + 'millisecond 0 valid' + ); + assert.equal( + flags([2010, 1, 1, 8, 15, 12, -1]).overflow, + 6, + 'millisecond -1 invalid' + ); + assert.equal( + flags([2010, 1, 1, 8, 15, 12, 1000]).overflow, + 6, + 'millisecond 1000 invalid' + ); + + // 24 hrs + assert.equal( + flags([2010, 1, 1, 24, 0, 0, 0]).overflow, + -1, + '24:00:00.000 is fine' + ); + assert.equal( + flags([2010, 1, 1, 24, 1, 0, 0]).overflow, + 3, + '24:01:00.000 is wrong hour' + ); + assert.equal( + flags([2010, 1, 1, 24, 0, 1, 0]).overflow, + 3, + '24:00:01.000 is wrong hour' + ); + assert.equal( + flags([2010, 1, 1, 24, 0, 0, 1]).overflow, + 3, + '24:00:00.001 is wrong hour' + ); }); - test('ordinal', function (assert) { - moment.defineLocale('ordinal-1', null); - moment.defineLocale('ordinal-1', { - ordinal : '%dx' - }); - moment.updateLocale('ordinal-1', { - ordinal : '%dy' - }); + test('overflow without format', function (assert) { + //months + assert.equal(flags('2001-01', 'YYYY-MM').overflow, -1, 'month 1 valid'); + assert.equal(flags('2001-12', 'YYYY-MM').overflow, -1, 'month 12 valid'); + assert.equal(flags('2001-13', 'YYYY-MM').overflow, 1, 'month 13 invalid'); - assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child string'); + //days + assert.equal( + flags('2010-01-16', 'YYYY-MM-DD').overflow, + -1, + 'date 16 valid' + ); + assert.equal( + flags('2010-01-0', 'YYYY-MM-DD').overflow, + 2, + 'date 0 invalid' + ); + assert.equal( + flags('2010-01-32', 'YYYY-MM-DD').overflow, + 2, + 'date 32 invalid' + ); + assert.equal( + flags('2012-02-29', 'YYYY-MM-DD').overflow, + -1, + 'date leap year valid' + ); + assert.equal( + flags('2010-02-29', 'YYYY-MM-DD').overflow, + 2, + 'date leap year invalid' + ); - moment.defineLocale('ordinal-2', null); - moment.defineLocale('ordinal-2', { - ordinal : '%dx' - }); - moment.updateLocale('ordinal-2', { - ordinal : function (num) { - return num + 'y'; - } - }); + //days of the year + assert.equal( + flags('2010 300', 'YYYY DDDD').overflow, + -1, + 'day 300 of year valid' + ); + assert.equal( + flags('2010 365', 'YYYY DDDD').overflow, + -1, + 'day 365 of year valid' + ); + assert.equal( + flags('2010 366', 'YYYY DDDD').overflow, + 2, + 'day 366 of year invalid' + ); + assert.equal( + flags('2012 366', 'YYYY DDDD').overflow, + -1, + 'day 366 of leap year valid' + ); + assert.equal( + flags('2012 367', 'YYYY DDDD').overflow, + 2, + 'day 367 of leap year invalid' + ); + + //hours + assert.equal(flags('08', 'HH').overflow, -1, 'hour valid'); + assert.equal(flags('00', 'HH').overflow, -1, 'hour 0 valid'); + assert.equal(flags('25', 'HH').overflow, 3, 'hour 25 invalid'); + assert.equal(flags('24:01', 'HH:mm').overflow, 3, 'hour 24:01 invalid'); + + //minutes + assert.equal(flags('08:15', 'HH:mm').overflow, -1, 'minute valid'); + assert.equal(flags('08:00', 'HH:mm').overflow, -1, 'minute 0 valid'); + assert.equal(flags('08:60', 'HH:mm').overflow, 4, 'minute 60 invalid'); + + //seconds + assert.equal(flags('08:15:12', 'HH:mm:ss').overflow, -1, 'second valid'); + assert.equal(flags('08:15:00', 'HH:mm:ss').overflow, -1, 'second 0 valid'); + assert.equal( + flags('08:15:60', 'HH:mm:ss').overflow, + 5, + 'second 60 invalid' + ); + + //milliseconds + assert.equal( + flags('08:15:12:345', 'HH:mm:ss:SSSS').overflow, + -1, + 'millisecond valid' + ); + assert.equal( + flags('08:15:12:000', 'HH:mm:ss:SSSS').overflow, + -1, + 'millisecond 0 valid' + ); + + //this is OK because we don't match the last digit, so it's 100 ms + assert.equal( + flags('08:15:12:1000', 'HH:mm:ss:SSSS').overflow, + -1, + 'millisecond 1000 actually valid' + ); + }); + + test('extra tokens', function (assert) { + assert.deepEqual( + flags('1982-05-25', 'YYYY-MM-DD').unusedTokens, + [], + 'nothing extra' + ); + assert.deepEqual( + flags('1982-05', 'YYYY-MM-DD').unusedTokens, + ['DD'], + 'extra formatting token' + ); + assert.deepEqual( + flags('1982', 'YYYY-MM-DD').unusedTokens, + ['MM', 'DD'], + 'multiple extra formatting tokens' + ); + assert.deepEqual( + flags('1982-05', 'YYYY-MM-').unusedTokens, + [], + 'extra non-formatting token' + ); + assert.deepEqual( + flags('1982-05-', 'YYYY-MM-DD').unusedTokens, + ['DD'], + 'non-extra non-formatting token' + ); + assert.deepEqual( + flags('1982 05 1982', 'YYYY-MM-DD').unusedTokens, + [], + 'different non-formatting token' + ); + }); - assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child function'); + test('extra tokens strict', function (assert) { + assert.deepEqual( + flags('1982-05-25', 'YYYY-MM-DD', true).unusedTokens, + [], + 'nothing extra' + ); + assert.deepEqual( + flags('1982-05', 'YYYY-MM-DD', true).unusedTokens, + ['-', 'DD'], + 'extra formatting token' + ); + assert.deepEqual( + flags('1982', 'YYYY-MM-DD', true).unusedTokens, + ['-', 'MM', '-', 'DD'], + 'multiple extra formatting tokens' + ); + assert.deepEqual( + flags('1982-05', 'YYYY-MM-', true).unusedTokens, + ['-'], + 'extra non-formatting token' + ); + assert.deepEqual( + flags('1982-05-', 'YYYY-MM-DD', true).unusedTokens, + ['DD'], + 'non-extra non-formatting token' + ); + assert.deepEqual( + flags('1982 05 1982', 'YYYY-MM-DD', true).unusedTokens, + ['-', '-'], + 'different non-formatting token' + ); + }); - moment.defineLocale('ordinal-3', null); - moment.defineLocale('ordinal-3', { - ordinal : function (num) { - return num + 'x'; - } - }); - moment.updateLocale('ordinal-3', { - ordinal : '%dy' - }); + test('unused input', function (assert) { + assert.deepEqual( + flags('1982-05-25', 'YYYY-MM-DD').unusedInput, + [], + 'normal input' + ); + assert.deepEqual( + flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').unusedInput, + [' this is more stuff'], + 'trailing nonsense' + ); + assert.deepEqual( + flags('1982-05-25 09:30', 'YYYY-MM-DD').unusedInput, + [' 09:30'], + ['trailing legit-looking input'] + ); + assert.deepEqual( + flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]').unusedInput, + [], + 'junk that actually gets matched' + ); + assert.deepEqual( + flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').unusedInput, + ['stuff at beginning '], + 'leading junk' + ); + assert.deepEqual( + flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD') + .unusedInput, + ['junk ', ' more junk ', ' yet more junk'], + 'interstitial junk' + ); + }); - assert.equal(moment.utc('2015-02-03', moment.ISO_8601).format('Do'), '3y', 'ordinal uses child string (overwrite parent function)'); + test('unused input strict', function (assert) { + assert.deepEqual( + flags('1982-05-25', 'YYYY-MM-DD', true).unusedInput, + [], + 'normal input' + ); + assert.deepEqual( + flags('1982-05-25 this is more stuff', 'YYYY-MM-DD', true).unusedInput, + [' this is more stuff'], + 'trailing nonsense' + ); + assert.deepEqual( + flags('1982-05-25 09:30', 'YYYY-MM-DD', true).unusedInput, + [' 09:30'], + ['trailing legit-looking input'] + ); + assert.deepEqual( + flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]', true) + .unusedInput, + [], + 'junk that actually gets matched' + ); + assert.deepEqual( + flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD', true).unusedInput, + ['stuff at beginning '], + 'leading junk' + ); + assert.deepEqual( + flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD', true) + .unusedInput, + ['junk ', ' more junk ', ' yet more junk'], + 'interstitial junk' + ); }); - test('ordinal parse', function (assert) { - moment.defineLocale('ordinal-parse-1', null); - moment.defineLocale('ordinal-parse-1', { - dayOfMonthOrdinalParse : /\d{1,2}x/ - }); - moment.updateLocale('ordinal-parse-1', { - dayOfMonthOrdinalParse : /\d{1,2}y/ - }); + test('chars left over', function (assert) { + assert.equal( + flags('1982-05-25', 'YYYY-MM-DD').charsLeftOver, + 0, + 'normal input' + ); + assert.equal( + flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').charsLeftOver, + ' this is more stuff'.length, + 'trailing nonsense' + ); + assert.equal( + flags('1982-05-25 09:30', 'YYYY-MM-DD').charsLeftOver, + ' 09:30'.length, + 'trailing legit-looking input' + ); + assert.equal( + flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').charsLeftOver, + 'stuff at beginning '.length, + 'leading junk' + ); + assert.equal( + flags('1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, + [' junk ', ' more junk'].join('').length, + 'interstitial junk' + ); + assert.equal( + flags('stuff at beginning 1982 junk 05 more junk25', 'YYYY-MM-DD') + .charsLeftOver, + ['stuff at beginning ', ' junk ', ' more junk'].join('').length, + 'leading and interstitial junk' + ); + }); - assert.ok(moment.utc('2015-01-1y', 'YYYY-MM-Do', true).isValid(), 'ordinal parse uses child'); + test('empty', function (assert) { + assert.equal( + flags('1982-05-25', 'YYYY-MM-DD').empty, + false, + 'normal input' + ); + assert.equal( + flags('nothing here', 'YYYY-MM-DD').empty, + true, + 'pure garbage' + ); + assert.equal( + flags('junk but has the number 2000 in it', 'YYYY-MM-DD').empty, + false, + 'only mostly garbage' + ); + assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'empty string'); + assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'blank string'); + }); - moment.defineLocale('ordinal-parse-2', null); - moment.defineLocale('ordinal-parse-2', { - dayOfMonthOrdinalParse : /\d{1,2}x/ - }); - moment.updateLocale('ordinal-parse-2', { - dayOfMonthOrdinalParse : /\d{1,2}/ - }); + test('null', function (assert) { + assert.equal( + flags('1982-05-25', 'YYYY-MM-DD').nullInput, + false, + 'normal input' + ); + assert.equal(flags(null).nullInput, true, 'just null'); + assert.equal(flags(null, 'YYYY-MM-DD').nullInput, true, 'null with format'); + }); - assert.ok(moment.utc('2015-01-1', 'YYYY-MM-Do', true).isValid(), 'ordinal parse uses child (default)'); + test('invalid month', function (assert) { + assert.equal( + flags('1982 May', 'YYYY MMMM').invalidMonth, + null, + 'normal input' + ); + assert.equal( + flags('1982 Laser', 'YYYY MMMM').invalidMonth, + 'Laser', + 'bad month name' + ); }); - test('months', function (assert) { - moment.defineLocale('months', null); - moment.defineLocale('months', { - months : 'One_Two_Three_Four_Five_Six_Seven_Eight_Nine_Ten_Eleven_Twelve'.split('_') - }); - moment.updateLocale('months', { - parentLocale: 'base-months', - months : 'First_Second_Third_Fourth_Fifth_Sixth_Seventh_Eighth_Ninth_Tenth_Eleventh_Twelveth '.split('_') - }); - assert.ok(moment.utc('2015-01-01', 'YYYY-MM-DD').format('MMMM'), 'First', 'months uses child'); + test('empty format array', function (assert) { + assert.equal( + flags('1982 May', ['YYYY MMM']).invalidFormat, + false, + 'empty format array' + ); + assert.equal( + flags('1982 May', []).invalidFormat, + true, + 'empty format array' + ); }); - test('update existing locale', function (assert) { - moment.updateLocale('de', { - monthsShort: ['JAN', 'FEB', 'MÄR', 'APR', 'MAI', 'JUN', 'JUL', 'AUG', 'SEP', 'OKT', 'NOV', 'DEZ'] - }); - assert.equal(moment('2017-02-01').format('YYYY MMM MMMM'), '2017 FEB Februar'); - moment.updateLocale('de', null); + test('weekday mismatch', function (assert) { + // string with format + assert.equal( + flags('Wed 08-10-2017', 'ddd MM-DD-YYYY').weekdayMismatch, + true, + 'day of week does not match date' + ); + assert.equal( + flags('Thu 08-10-2017', 'ddd MM-DD-YYYY').weekdayMismatch, + false, + 'day of week matches date' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -75258,27 +136316,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -75288,8 +136351,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -75302,7 +136367,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -75311,78 +136379,153 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('min max'); - - test('min', function (assert) { - var now = moment(), - future = now.clone().add(1, 'month'), - past = now.clone().subtract(1, 'month'), - invalid = moment.invalid(); + var symbolMap = { + '1': '!', + '2': '@', + '3': '#', + '4': '$', + '5': '%', + '6': '^', + '7': '&', + '8': '*', + '9': '(', + '0': ')', + }, + numberMap = { + '!': '1', + '@': '2', + '#': '3', + $: '4', + '%': '5', + '^': '6', + '&': '7', + '*': '8', + '(': '9', + ')': '0', + }; - assert.equal(moment.min(now, future, past), past, 'min(now, future, past)'); - assert.equal(moment.min(future, now, past), past, 'min(future, now, past)'); - assert.equal(moment.min(future, past, now), past, 'min(future, past, now)'); - assert.equal(moment.min(past, future, now), past, 'min(past, future, now)'); - assert.equal(moment.min(now, past), past, 'min(now, past)'); - assert.equal(moment.min(past, now), past, 'min(past, now)'); - assert.equal(moment.min(now), now, 'min(now, past)'); + module('preparse and postformat', { + setup: function () { + moment.locale('symbol', { + preparse: function (string) { + return string.replace(/[!@#$%\^&*()]/g, function (match) { + return numberMap[match]; + }); + }, - assert.equal(moment.min([now, future, past]), past, 'min([now, future, past])'); - assert.equal(moment.min([now, past]), past, 'min(now, past)'); - assert.equal(moment.min([now]), now, 'min(now)'); + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + }); + }, + teardown: function () { + moment.defineLocale('symbol', null); + }, + }); - assert.equal(moment.min([now, invalid]), invalid, 'min(now, invalid)'); - assert.equal(moment.min([invalid, now]), invalid, 'min(invalid, now)'); + test('transform', function (assert) { + assert.equal( + moment.utc('@)!@-)*-@&', 'YYYY-MM-DD').unix(), + 1346025600, + 'preparse string + format' + ); + assert.equal( + moment.utc('@)!@-)*-@&').unix(), + 1346025600, + 'preparse ISO8601 string' + ); + assert.equal( + moment.unix(1346025600).utc().format('YYYY-MM-DD'), + '@)!@-)*-@&', + 'postformat' + ); }); - test('max', function (assert) { - var now = moment(), - future = now.clone().add(1, 'month'), - past = now.clone().subtract(1, 'month'), - invalid = moment.invalid(); + test('transform from', function (assert) { + var start = moment([2007, 1, 28]); - assert.equal(moment.max(now, future, past), future, 'max(now, future, past)'); - assert.equal(moment.max(future, now, past), future, 'max(future, now, past)'); - assert.equal(moment.max(future, past, now), future, 'max(future, past, now)'); - assert.equal(moment.max(past, future, now), future, 'max(past, future, now)'); - assert.equal(moment.max(now, past), now, 'max(now, past)'); - assert.equal(moment.max(past, now), now, 'max(past, now)'); - assert.equal(moment.max(now), now, 'max(now, past)'); + assert.equal( + start.from(moment([2007, 1, 28]).add({ s: 90 }), true), + '@ minutes', + 'postformat should work on moment.fn.from' + ); + assert.equal( + moment().add(6, 'd').fromNow(true), + '^ days', + 'postformat should work on moment.fn.fromNow' + ); + assert.equal( + moment.duration(10, 'h').humanize(), + '!) hours', + 'postformat should work on moment.duration.fn.humanize' + ); + }); - assert.equal(moment.max([now, future, past]), future, 'max([now, future, past])'); - assert.equal(moment.max([now, past]), now, 'max(now, past)'); - assert.equal(moment.max([now]), now, 'max(now)'); + test('calendar day', function (assert) { + var a = moment().hours(12).minutes(0).seconds(0); - assert.equal(moment.max([now, invalid]), invalid, 'max(now, invalid)'); - assert.equal(moment.max([invalid, now]), invalid, 'max(invalid, now)'); + assert.equal( + moment(a).calendar(), + 'Today at !@:)) PM', + 'today at the same time' + ); + assert.equal( + moment(a).add({ m: 25 }).calendar(), + 'Today at !@:@% PM', + 'Now plus 25 min' + ); + assert.equal( + moment(a).add({ h: 1 }).calendar(), + 'Today at !:)) PM', + 'Now plus 1 hour' + ); + assert.equal( + moment(a).add({ d: 1 }).calendar(), + 'Tomorrow at !@:)) PM', + 'tomorrow at the same time' + ); + assert.equal( + moment(a).subtract({ h: 1 }).calendar(), + 'Today at !!:)) AM', + 'Now minus 1 hour' + ); + assert.equal( + moment(a).subtract({ d: 1 }).calendar(), + 'Yesterday at !@:)) PM', + 'yesterday at the same time' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -75397,27 +136540,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -75427,8 +136575,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -75441,7 +136591,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -75450,56 +136603,149 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('mutable'); + module('quarter'); - test('manipulation methods', function (assert) { - var m = moment(); + test('library quarter getter', function (assert) { + assert.equal(moment([1985, 1, 4]).quarter(), 1, 'Feb 4 1985 is Q1'); + assert.equal(moment([2029, 8, 18]).quarter(), 3, 'Sep 18 2029 is Q3'); + assert.equal(moment([2013, 3, 24]).quarter(), 2, 'Apr 24 2013 is Q2'); + assert.equal(moment([2015, 2, 5]).quarter(), 1, 'Mar 5 2015 is Q1'); + assert.equal(moment([1970, 0, 2]).quarter(), 1, 'Jan 2 1970 is Q1'); + assert.equal(moment([2001, 11, 12]).quarter(), 4, 'Dec 12 2001 is Q4'); + assert.equal(moment([2000, 0, 2]).quarter(), 1, 'Jan 2 2000 is Q1'); + }); - assert.equal(m, m.year(2011), 'year() should be mutable'); - assert.equal(m, m.month(1), 'month() should be mutable'); - assert.equal(m, m.hours(7), 'hours() should be mutable'); - assert.equal(m, m.minutes(33), 'minutes() should be mutable'); - assert.equal(m, m.seconds(44), 'seconds() should be mutable'); - assert.equal(m, m.milliseconds(55), 'milliseconds() should be mutable'); - assert.equal(m, m.day(2), 'day() should be mutable'); - assert.equal(m, m.startOf('week'), 'startOf() should be mutable'); - assert.equal(m, m.add(1, 'days'), 'add() should be mutable'); - assert.equal(m, m.subtract(2, 'years'), 'subtract() should be mutable'); - assert.equal(m, m.local(), 'local() should be mutable'); - assert.equal(m, m.utc(), 'utc() should be mutable'); + test('quarter setter singular', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.quarter(2).month(), 4, 'set same quarter'); + assert.equal(m.quarter(3).month(), 7, 'set 3rd quarter'); + assert.equal(m.quarter(1).month(), 1, 'set 1st quarter'); + assert.equal(m.quarter(4).month(), 10, 'set 4th quarter'); }); - test('non mutable methods', function (assert) { - var m = moment(); - assert.notEqual(m, m.clone(), 'clone() should not be mutable'); + test('quarter setter plural', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.quarters(2).month(), 4, 'set same quarter'); + assert.equal(m.quarters(3).month(), 7, 'set 3rd quarter'); + assert.equal(m.quarters(1).month(), 1, 'set 1st quarter'); + assert.equal(m.quarters(4).month(), 10, 'set 4th quarter'); + }); + + test('quarter setter programmatic', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.set('quarter', 2).month(), 4, 'set same quarter'); + assert.equal(m.set('quarter', 3).month(), 7, 'set 3rd quarter'); + assert.equal(m.set('quarter', 1).month(), 1, 'set 1st quarter'); + assert.equal(m.set('quarter', 4).month(), 10, 'set 4th quarter'); + }); + + test('quarter setter programmatic plural', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.set('quarters', 2).month(), 4, 'set same quarter'); + assert.equal(m.set('quarters', 3).month(), 7, 'set 3rd quarter'); + assert.equal(m.set('quarters', 1).month(), 1, 'set 1st quarter'); + assert.equal(m.set('quarters', 4).month(), 10, 'set 4th quarter'); + }); + + test('quarter setter programmatic abbr', function (assert) { + var m = moment([2014, 4, 11]); + assert.equal(m.set('Q', 2).month(), 4, 'set same quarter'); + assert.equal(m.set('Q', 3).month(), 7, 'set 3rd quarter'); + assert.equal(m.set('Q', 1).month(), 1, 'set 1st quarter'); + assert.equal(m.set('Q', 4).month(), 10, 'set 4th quarter'); + }); + + test('quarter setter only month changes', function (assert) { + var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(4); + assert.equal(m.year(), 2014, 'keep year'); + assert.equal(m.month(), 10, 'set month'); + assert.equal(m.date(), 11, 'keep date'); + assert.equal(m.hour(), 1, 'keep hour'); + assert.equal(m.minute(), 2, 'keep minutes'); + assert.equal(m.second(), 3, 'keep seconds'); + assert.equal(m.millisecond(), 4, 'keep milliseconds'); + }); + + test('quarter setter bubble to next year', function (assert) { + var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(7); + assert.equal(m.year(), 2015, 'year bubbled'); + assert.equal(m.month(), 7, 'set month'); + assert.equal(m.date(), 11, 'keep date'); + assert.equal(m.hour(), 1, 'keep hour'); + assert.equal(m.minute(), 2, 'keep minutes'); + assert.equal(m.second(), 3, 'keep seconds'); + assert.equal(m.millisecond(), 4, 'keep milliseconds'); + }); + + test('quarter diff', function (assert) { + assert.equal( + moment('2014-01-01').diff(moment('2014-04-01'), 'quarter'), + -1, + 'diff -1 quarter' + ); + assert.equal( + moment('2014-04-01').diff(moment('2014-01-01'), 'quarter'), + 1, + 'diff 1 quarter' + ); + assert.equal( + moment('2014-05-01').diff(moment('2014-01-01'), 'quarter'), + 1, + 'diff 1 quarter' + ); + assert.ok( + Math.abs( + 4 / 3 - + moment('2014-05-01').diff(moment('2014-01-01'), 'quarter', true) + ) < 0.00001, + 'diff 1 1/3 quarter' + ); + assert.equal( + moment('2015-01-01').diff(moment('2014-01-01'), 'quarter'), + 4, + 'diff 4 quarters' + ); + }); + + test('quarter setter bubble to previous year', function (assert) { + var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(-3); + assert.equal(m.year(), 2013, 'year bubbled'); + assert.equal(m.month(), 1, 'set month'); + assert.equal(m.date(), 11, 'keep date'); + assert.equal(m.hour(), 1, 'keep hour'); + assert.equal(m.minute(), 2, 'keep minutes'); + assert.equal(m.second(), 3, 'keep seconds'); + assert.equal(m.millisecond(), 4, 'keep milliseconds'); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -75514,27 +136760,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -75544,8 +136795,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -75558,7 +136811,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -75567,234 +136823,456 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('normalize units'); + module('relative time'); - test('normalize units', function (assert) { - var fullKeys = ['year', 'quarter', 'month', 'isoWeek', 'week', 'day', 'hour', 'minute', 'second', 'millisecond', 'date', 'dayOfYear', 'weekday', 'isoWeekday', 'weekYear', 'isoWeekYear'], - aliases = ['y', 'Q', 'M', 'W', 'w', 'd', 'h', 'm', 's', 'ms', 'D', 'DDD', 'e', 'E', 'gg', 'GG'], - length = fullKeys.length, - fullKey, - fullKeyCaps, - fullKeyPlural, - fullKeyCapsPlural, - fullKeyLower, - alias, - index; + test('default thresholds fromNow', function (assert) { + var a = moment(); - for (index = 0; index < length; index += 1) { - fullKey = fullKeys[index]; - fullKeyCaps = fullKey.toUpperCase(); - fullKeyLower = fullKey.toLowerCase(); - fullKeyPlural = fullKey + 's'; - fullKeyCapsPlural = fullKeyCaps + 's'; - alias = aliases[index]; - assert.equal(moment.normalizeUnits(fullKey), fullKey, 'Testing full key ' + fullKey); - assert.equal(moment.normalizeUnits(fullKeyCaps), fullKey, 'Testing full key capitalised ' + fullKey); - assert.equal(moment.normalizeUnits(fullKeyPlural), fullKey, 'Testing full key plural ' + fullKey); - assert.equal(moment.normalizeUnits(fullKeyCapsPlural), fullKey, 'Testing full key capitalised and plural ' + fullKey); - assert.equal(moment.normalizeUnits(alias), fullKey, 'Testing alias ' + fullKey); - } + // Seconds to minutes threshold + a.subtract(44, 'seconds'); + assert.equal( + a.fromNow(), + 'a few seconds ago', + 'Below default seconds to minutes threshold' + ); + a.subtract(1, 'seconds'); + assert.equal( + a.fromNow(), + 'a minute ago', + 'Above default seconds to minutes threshold' + ); + + // Minutes to hours threshold + a = moment(); + a.subtract(44, 'minutes'); + assert.equal( + a.fromNow(), + '44 minutes ago', + 'Below default minute to hour threshold' + ); + a.subtract(1, 'minutes'); + assert.equal( + a.fromNow(), + 'an hour ago', + 'Above default minute to hour threshold' + ); + + // Hours to days threshold + a = moment(); + a.subtract(21, 'hours'); + assert.equal( + a.fromNow(), + '21 hours ago', + 'Below default hours to day threshold' + ); + a.subtract(1, 'hours'); + assert.equal( + a.fromNow(), + 'a day ago', + 'Above default hours to day threshold' + ); + + // Days to month threshold + a = moment(); + a.subtract(25, 'days'); + assert.equal( + a.fromNow(), + '25 days ago', + 'Below default days to month (singular) threshold' + ); + a.subtract(1, 'days'); + assert.equal( + a.fromNow(), + 'a month ago', + 'Above default days to month (singular) threshold' + ); + + // months to year threshold + a = moment(); + a.subtract(10, 'months'); + assert.equal( + a.fromNow(), + '10 months ago', + 'Below default days to years threshold' + ); + a.subtract(1, 'month'); + assert.equal( + a.fromNow(), + 'a year ago', + 'Above default days to years threshold' + ); }); -}))); + test('default thresholds toNow', function (assert) { + var a = moment(); + // Seconds to minutes threshold + a.subtract(44, 'seconds'); + assert.equal( + a.toNow(), + 'in a few seconds', + 'Below default seconds to minutes threshold' + ); + a.subtract(1, 'seconds'); + assert.equal( + a.toNow(), + 'in a minute', + 'Above default seconds to minutes threshold' + ); -;(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'; + // Minutes to hours threshold + a = moment(); + a.subtract(44, 'minutes'); + assert.equal( + a.toNow(), + 'in 44 minutes', + 'Below default minute to hour threshold' + ); + a.subtract(1, 'minutes'); + assert.equal( + a.toNow(), + 'in an hour', + 'Above default minute to hour threshold' + ); + + // Hours to days threshold + a = moment(); + a.subtract(21, 'hours'); + assert.equal( + a.toNow(), + 'in 21 hours', + 'Below default hours to day threshold' + ); + a.subtract(1, 'hours'); + assert.equal(a.toNow(), 'in a day', 'Above default hours to day threshold'); + + // Days to month threshold + a = moment(); + a.subtract(25, 'days'); + assert.equal( + a.toNow(), + 'in 25 days', + 'Below default days to month (singular) threshold' + ); + a.subtract(1, 'days'); + assert.equal( + a.toNow(), + 'in a month', + 'Above default days to month (singular) threshold' + ); + + // months to year threshold + a = moment(); + a.subtract(10, 'months'); + assert.equal( + a.toNow(), + 'in 10 months', + 'Below default days to years threshold' + ); + a.subtract(1, 'month'); + assert.equal( + a.toNow(), + 'in a year', + 'Above default days to years threshold' + ); + }); + + test('custom thresholds', function (assert) { + var a, dd; + + // including weeks + moment.relativeTimeThreshold('w', 4); + dd = moment.relativeTimeThreshold('d'); + moment.relativeTimeThreshold('d', 7); + // threshold for days to weeks with including weeks + a = moment(); + a.subtract(6, 'days'); + assert.equal(a.fromNow(), '6 days ago', 'Below threshold days for weeks'); + a.subtract(1, 'days'); + assert.equal(a.fromNow(), 'a week ago', 'Above threshold days for weeks'); + + // threshold for days to weeks with including weeks + a = moment(); + a.subtract(3, 'weeks'); + assert.equal( + a.fromNow(), + '3 weeks ago', + 'Below threshold weeks for months' + ); + a.subtract(1, 'week'); + assert.equal( + a.fromNow(), + 'a month ago', + 'Above threshold weeks for months' + ); + // moment.relativeTimeIncludeWeeks(false); + moment.relativeTimeThreshold('w', null); + moment.relativeTimeThreshold('d', dd); + // Seconds to minute threshold, under 30 + moment.relativeTimeThreshold('s', 25); + + a = moment(); + a.subtract(24, 'seconds'); + assert.equal( + a.fromNow(), + 'a few seconds ago', + 'Below custom seconds to minute threshold, s < 30' + ); + a.subtract(1, 'seconds'); + assert.equal( + a.fromNow(), + 'a minute ago', + 'Above custom seconds to minute threshold, s < 30' + ); + + // Seconds to minutes threshold + moment.relativeTimeThreshold('s', 55); + + a = moment(); + a.subtract(54, 'seconds'); + assert.equal( + a.fromNow(), + 'a few seconds ago', + 'Below custom seconds to minutes threshold' + ); + a.subtract(1, 'seconds'); + assert.equal( + a.fromNow(), + 'a minute ago', + 'Above custom seconds to minutes threshold' + ); + + moment.relativeTimeThreshold('s', 45); + + // A few seconds to seconds threshold + moment.relativeTimeThreshold('ss', 3); + + a = moment(); + a.subtract(3, 'seconds'); + assert.equal( + a.fromNow(), + 'a few seconds ago', + 'Below custom a few seconds to seconds threshold' + ); + a.subtract(1, 'seconds'); + assert.equal( + a.fromNow(), + '4 seconds ago', + 'Above custom a few seconds to seconds threshold' + ); + + moment.relativeTimeThreshold('ss', 44); + + // Minutes to hours threshold + moment.relativeTimeThreshold('m', 55); + a = moment(); + a.subtract(54, 'minutes'); + assert.equal( + a.fromNow(), + '54 minutes ago', + 'Below custom minutes to hours threshold' + ); + a.subtract(1, 'minutes'); + assert.equal( + a.fromNow(), + 'an hour ago', + 'Above custom minutes to hours threshold' + ); + moment.relativeTimeThreshold('m', 45); - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } + // Hours to days threshold + moment.relativeTimeThreshold('h', 24); + a = moment(); + a.subtract(23, 'hours'); + assert.equal( + a.fromNow(), + '23 hours ago', + 'Below custom hours to days threshold' + ); + a.subtract(1, 'hours'); + assert.equal( + a.fromNow(), + 'a day ago', + 'Above custom hours to days threshold' + ); + moment.relativeTimeThreshold('h', 22); - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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; - }; - } + // Days to month threshold + moment.relativeTimeThreshold('d', 28); + a = moment(); + a.subtract(27, 'days'); + assert.equal( + a.fromNow(), + '27 days ago', + 'Below custom days to month (singular) threshold' + ); + a.subtract(1, 'days'); + assert.equal( + a.fromNow(), + 'a month ago', + 'Above custom days to month (singular) threshold' + ); + moment.relativeTimeThreshold('d', 26); - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + // months to years threshold + moment.relativeTimeThreshold('M', 9); + a = moment(); + a.subtract(8, 'months'); + assert.equal( + a.fromNow(), + '8 months ago', + 'Below custom days to years threshold' + ); + a.subtract(1, 'months'); + assert.equal( + a.fromNow(), + 'a year ago', + 'Above custom days to years threshold' + ); + moment.relativeTimeThreshold('M', 11); - 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(' ')); - } - } - } + // multiple thresholds + moment.relativeTimeThreshold('ss', 3); + a = moment(); + a.subtract(4, 'seconds'); + assert.equal( + a.fromNow(), + '4 seconds ago', + 'Before setting s relative time threshold' + ); + moment.relativeTimeThreshold('s', 59); + assert.equal( + a.fromNow(), + 'a few seconds ago', + 'After setting s relative time threshold' + ); + moment.relativeTimeThreshold('ss', 44); + moment.relativeTimeThreshold('s', 45); + }); - 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; - } + test('custom rounding', function (assert) { + var roundingDefault = moment.relativeTimeRounding(), + a, + retainValue; - /*global QUnit:false*/ + // Round relative time evaluation down + moment.relativeTimeRounding(Math.floor); - var test = QUnit.test; + moment.relativeTimeThreshold('s', 60); + moment.relativeTimeThreshold('m', 60); + moment.relativeTimeThreshold('h', 24); + moment.relativeTimeThreshold('d', 27); + moment.relativeTimeThreshold('M', 12); - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } + a = moment.utc(); + a.subtract({ minutes: 59, seconds: 59 }); + assert.equal( + a.toNow(), + 'in 59 minutes', + 'Round down towards the nearest minute' + ); - module$1('now'); + a = moment.utc(); + a.subtract({ hours: 23, minutes: 59, seconds: 59 }); + assert.equal( + a.toNow(), + 'in 23 hours', + 'Round down towards the nearest hour' + ); - test('now', function (assert) { - var startOfTest = new Date().valueOf(), - momentNowTime = moment.now(), - afterMomentCreationTime = new Date().valueOf(); + a = moment.utc(); + a.subtract({ days: 26, hours: 23, minutes: 59 }); + assert.equal( + a.toNow(), + 'in 26 days', + 'Round down towards the nearest day (just under)' + ); - assert.ok(startOfTest <= momentNowTime, 'moment now() time should be now, not in the past'); - assert.ok(momentNowTime <= afterMomentCreationTime, 'moment now() time should be now, not in the future'); - }); + a = moment.utc(); + a.subtract({ days: 27 }); + assert.equal( + a.toNow(), + 'in a month', + 'Round down towards the nearest day (just over)' + ); - test('now - Date mocked', function (assert) { - // We need to test mocking the global Date object, so disable 'Read Only' jshint check - /* jshint -W020 */ - var RealDate = Date, - customTimeMs = moment('2015-01-01T01:30:00.000Z').valueOf(); + a = moment.utc(); + a.subtract({ days: 364 }); + assert.equal( + a.toNow(), + 'in 11 months', + 'Round down towards the nearest month' + ); - function MockDate() { - return new RealDate(customTimeMs); - } + a = moment.utc(); + a.subtract({ years: 1, days: 364 }); + assert.equal(a.toNow(), 'in a year', 'Round down towards the nearest year'); - MockDate.now = function () { - return new MockDate().valueOf(); + // Do not round relative time evaluation + retainValue = function (value) { + return value.toFixed(3); }; + moment.relativeTimeRounding(retainValue); - MockDate.prototype = RealDate.prototype; - - Date = MockDate; + a = moment.utc(); + a.subtract({ hours: 39 }); + assert.equal( + a.toNow(), + 'in 1.625 days', + 'Round down towards the nearest year' + ); - try { - assert.equal(moment().valueOf(), customTimeMs, 'moment now() time should use the global Date object'); - } finally { - Date = RealDate; - } + // Restore defaults + moment.relativeTimeThreshold('s', 45); + moment.relativeTimeThreshold('m', 45); + moment.relativeTimeThreshold('h', 22); + moment.relativeTimeThreshold('d', 26); + moment.relativeTimeThreshold('M', 11); + moment.relativeTimeRounding(roundingDefault); }); - test('now - custom value', function (assert) { - var customTimeStr = '2015-01-01T01:30:00.000Z', - customTime = moment(customTimeStr, moment.ISO_8601).valueOf(), - oldFn = moment.now; - - moment.now = function () { - return customTime; - }; + test('retrieve rounding settings', function (assert) { + moment.relativeTimeRounding(Math.round); + var roundingFunction = moment.relativeTimeRounding(); - try { - assert.equal(moment().toISOString(), customTimeStr, 'moment() constructor should use the function defined by moment.now, but it did not'); - assert.equal(moment.utc().toISOString(), customTimeStr, 'moment() constructor should use the function defined by moment.now, but it did not'); - } finally { - moment.now = oldFn; - } + assert.equal(roundingFunction, Math.round, 'Can retrieve rounding setting'); }); - test('empty object, empty array', function (assert) { - function assertIsNow(gen, msg) { - var before = +(new Date()), - mid = gen(), - after = +(new Date()); - assert.ok(before <= +mid && +mid <= after, 'should be now : ' + msg); - } - assertIsNow(function () { - return moment(); - }, 'moment()'); - assertIsNow(function () { - return moment([]); - }, 'moment([])'); - assertIsNow(function () { - return moment({}); - }, 'moment({})'); - assertIsNow(function () { - return moment.utc(); - }, 'moment.utc()'); - assertIsNow(function () { - return moment.utc([]); - }, 'moment.utc([])'); - assertIsNow(function () { - return moment.utc({}); - }, 'moment.utc({})'); + test('retrieve threshold settings', function (assert) { + moment.relativeTimeThreshold('m', 45); + var minuteThreshold = moment.relativeTimeThreshold('m'); + + assert.equal(minuteThreshold, 45, 'Can retrieve minute setting'); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -75809,27 +137287,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -75839,8 +137322,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -75853,7 +137338,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -75862,368 +137350,570 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('parsing flags'); - - function flags () { - return moment.apply(null, arguments).parsingFlags(); - } - - test('overflow with array', function (assert) { - //months - assert.equal(flags([2010, 0]).overflow, -1, 'month 0 valid'); - assert.equal(flags([2010, 1]).overflow, -1, 'month 1 valid'); - assert.equal(flags([2010, -1]).overflow, 1, 'month -1 invalid'); - assert.equal(flags([2100, 12]).overflow, 1, 'month 12 invalid'); + module('start and end of units'); - //days - assert.equal(flags([2010, 1, 16]).overflow, -1, 'date valid'); - assert.equal(flags([2010, 1, -1]).overflow, 2, 'date -1 invalid'); - assert.equal(flags([2010, 1, 0]).overflow, 2, 'date 0 invalid'); - assert.equal(flags([2010, 1, 32]).overflow, 2, 'date 32 invalid'); - assert.equal(flags([2012, 1, 29]).overflow, -1, 'date leap year valid'); - assert.equal(flags([2010, 1, 29]).overflow, 2, 'date leap year invalid'); + test('start of year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('year'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('years'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('y'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 0, 'strip out the month'); + assert.equal(m.date(), 1, 'strip out the day'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); - //hours - assert.equal(flags([2010, 1, 1, 8]).overflow, -1, 'hour valid'); - assert.equal(flags([2010, 1, 1, 0]).overflow, -1, 'hour 0 valid'); - assert.equal(flags([2010, 1, 1, -1]).overflow, 3, 'hour -1 invalid'); - assert.equal(flags([2010, 1, 1, 25]).overflow, 3, 'hour 25 invalid'); - assert.equal(flags([2010, 1, 1, 24, 1]).overflow, 3, 'hour 24:01 invalid'); + test('end of year', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('year'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('years'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('y'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 11, 'set the month'); + assert.equal(m.date(), 31, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); - //minutes - assert.equal(flags([2010, 1, 1, 8, 15]).overflow, -1, 'minute valid'); - assert.equal(flags([2010, 1, 1, 8, 0]).overflow, -1, 'minute 0 valid'); - assert.equal(flags([2010, 1, 1, 8, -1]).overflow, 4, 'minute -1 invalid'); - assert.equal(flags([2010, 1, 1, 8, 60]).overflow, 4, 'minute 60 invalid'); + test('start of quarter', function (assert) { + var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarter'), + ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarters'), + ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('Q'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.quarter(), 2, 'keep the quarter'); + assert.equal(m.month(), 3, 'strip out the month'); + assert.equal(m.date(), 1, 'strip out the day'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); - //seconds - assert.equal(flags([2010, 1, 1, 8, 15, 12]).overflow, -1, 'second valid'); - assert.equal(flags([2010, 1, 1, 8, 15, 0]).overflow, -1, 'second 0 valid'); - assert.equal(flags([2010, 1, 1, 8, 15, -1]).overflow, 5, 'second -1 invalid'); - assert.equal(flags([2010, 1, 1, 8, 15, 60]).overflow, 5, 'second 60 invalid'); + test('end of quarter', function (assert) { + var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarter'), + ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarters'), + ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('Q'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.quarter(), 2, 'keep the quarter'); + assert.equal(m.month(), 5, 'set the month'); + assert.equal(m.date(), 30, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); - //milliseconds - assert.equal(flags([2010, 1, 1, 8, 15, 12, 345]).overflow, -1, 'millisecond valid'); - assert.equal(flags([2010, 1, 1, 8, 15, 12, 0]).overflow, -1, 'millisecond 0 valid'); - assert.equal(flags([2010, 1, 1, 8, 15, 12, -1]).overflow, 6, 'millisecond -1 invalid'); - assert.equal(flags([2010, 1, 1, 8, 15, 12, 1000]).overflow, 6, 'millisecond 1000 invalid'); + test('start of month', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('month'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('months'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('M'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 1, 'strip out the day'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); - // 24 hrs - assert.equal(flags([2010, 1, 1, 24, 0, 0, 0]).overflow, -1, '24:00:00.000 is fine'); - assert.equal(flags([2010, 1, 1, 24, 1, 0, 0]).overflow, 3, '24:01:00.000 is wrong hour'); - assert.equal(flags([2010, 1, 1, 24, 0, 1, 0]).overflow, 3, '24:00:01.000 is wrong hour'); - assert.equal(flags([2010, 1, 1, 24, 0, 0, 1]).overflow, 3, '24:00:00.001 is wrong hour'); + test('end of month', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('month'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('months'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('M'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 28, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); }); - test('overflow without format', function (assert) { - //months - assert.equal(flags('2001-01', 'YYYY-MM').overflow, -1, 'month 1 valid'); - assert.equal(flags('2001-12', 'YYYY-MM').overflow, -1, 'month 12 valid'); - assert.equal(flags('2001-13', 'YYYY-MM').overflow, 1, 'month 13 invalid'); + test('start of week', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('week'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('weeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('w'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 0, 'rolls back to January'); + assert.equal(m.day(), 0, 'set day of week'); + assert.equal(m.date(), 30, 'set correct date'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); - //days - assert.equal(flags('2010-01-16', 'YYYY-MM-DD').overflow, -1, 'date 16 valid'); - assert.equal(flags('2010-01-0', 'YYYY-MM-DD').overflow, 2, 'date 0 invalid'); - assert.equal(flags('2010-01-32', 'YYYY-MM-DD').overflow, 2, 'date 32 invalid'); - assert.equal(flags('2012-02-29', 'YYYY-MM-DD').overflow, -1, 'date leap year valid'); - assert.equal(flags('2010-02-29', 'YYYY-MM-DD').overflow, 2, 'date leap year invalid'); + test('end of week', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('week'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.day(), 6, 'set the day of the week'); + assert.equal(m.date(), 5, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); - //days of the year - assert.equal(flags('2010 300', 'YYYY DDDD').overflow, -1, 'day 300 of year valid'); - assert.equal(flags('2010 365', 'YYYY DDDD').overflow, -1, 'day 365 of year valid'); - assert.equal(flags('2010 366', 'YYYY DDDD').overflow, 2, 'day 366 of year invalid'); - assert.equal(flags('2012 366', 'YYYY DDDD').overflow, -1, 'day 366 of leap year valid'); - assert.equal(flags('2012 367', 'YYYY DDDD').overflow, 2, 'day 367 of leap year invalid'); + test('start of iso-week', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeek'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('W'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 0, 'rollback to January'); + assert.equal(m.isoWeekday(), 1, 'set day of iso-week'); + assert.equal(m.date(), 31, 'set correct date'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); - //hours - assert.equal(flags('08', 'HH').overflow, -1, 'hour valid'); - assert.equal(flags('00', 'HH').overflow, -1, 'hour 0 valid'); - assert.equal(flags('25', 'HH').overflow, 3, 'hour 25 invalid'); - assert.equal(flags('24:01', 'HH:mm').overflow, 3, 'hour 24:01 invalid'); + test('end of iso-week', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeek'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeeks'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('W'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.isoWeekday(), 7, 'set the day of the week'); + assert.equal(m.date(), 6, 'set the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); - //minutes - assert.equal(flags('08:15', 'HH:mm').overflow, -1, 'minute valid'); - assert.equal(flags('08:00', 'HH:mm').overflow, -1, 'minute 0 valid'); - assert.equal(flags('08:60', 'HH:mm').overflow, 4, 'minute 60 invalid'); + test('start of day', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('day'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('days'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('d'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + }); - //seconds - assert.equal(flags('08:15:12', 'HH:mm:ss').overflow, -1, 'second valid'); - assert.equal(flags('08:15:00', 'HH:mm:ss').overflow, -1, 'second 0 valid'); - assert.equal(flags('08:15:60', 'HH:mm:ss').overflow, 5, 'second 60 invalid'); + test('end of day', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('day'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('days'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('d'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); + }); - //milliseconds - assert.equal(flags('08:15:12:345', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond valid'); - assert.equal(flags('08:15:12:000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 0 valid'); + test('start of date', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('date'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('dates'); - //this is OK because we don't match the last digit, so it's 100 ms - assert.equal(flags('08:15:12:1000', 'HH:mm:ss:SSSS').overflow, -1, 'millisecond 1000 actually valid'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 0, 'strip out the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); }); - test('extra tokens', function (assert) { - assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedTokens, [], 'nothing extra'); - assert.deepEqual(flags('1982-05', 'YYYY-MM-DD').unusedTokens, ['DD'], 'extra formatting token'); - assert.deepEqual(flags('1982', 'YYYY-MM-DD').unusedTokens, ['MM', 'DD'], 'multiple extra formatting tokens'); - assert.deepEqual(flags('1982-05', 'YYYY-MM-').unusedTokens, [], 'extra non-formatting token'); - assert.deepEqual(flags('1982-05-', 'YYYY-MM-DD').unusedTokens, ['DD'], 'non-extra non-formatting token'); - assert.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD').unusedTokens, [], 'different non-formatting token'); + test('end of date', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('date'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('dates'); + + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 23, 'set the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); }); - test('extra tokens strict', function (assert) { - assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedTokens, [], 'nothing extra'); - assert.deepEqual(flags('1982-05', 'YYYY-MM-DD', true).unusedTokens, ['-', 'DD'], 'extra formatting token'); - assert.deepEqual(flags('1982', 'YYYY-MM-DD', true).unusedTokens, ['-', 'MM', '-', 'DD'], 'multiple extra formatting tokens'); - assert.deepEqual(flags('1982-05', 'YYYY-MM-', true).unusedTokens, ['-'], 'extra non-formatting token'); - assert.deepEqual(flags('1982-05-', 'YYYY-MM-DD', true).unusedTokens, ['DD'], 'non-extra non-formatting token'); - assert.deepEqual(flags('1982 05 1982', 'YYYY-MM-DD', true).unusedTokens, ['-', '-'], 'different non-formatting token'); + test('start of hour', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hour'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hours'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('h'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 0, 'strip out the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); }); - test('unused input', function (assert) { - assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD').unusedInput, [], 'normal input'); - assert.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').unusedInput, [' this is more stuff'], 'trailing nonsense'); - assert.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD').unusedInput, [' 09:30'], ['trailing legit-looking input']); - assert.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]').unusedInput, [], 'junk that actually gets matched'); - assert.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').unusedInput, ['stuff at beginning '], 'leading junk'); - assert.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD').unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk'); + test('end of hour', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hour'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hours'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('h'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 59, 'set the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); }); - test('unused input strict', function (assert) { - assert.deepEqual(flags('1982-05-25', 'YYYY-MM-DD', true).unusedInput, [], 'normal input'); - assert.deepEqual(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD', true).unusedInput, [' this is more stuff'], 'trailing nonsense'); - assert.deepEqual(flags('1982-05-25 09:30', 'YYYY-MM-DD', true).unusedInput, [' 09:30'], ['trailing legit-looking input']); - assert.deepEqual(flags('1982-05-25 some junk', 'YYYY-MM-DD [some junk]', true).unusedInput, [], 'junk that actually gets matched'); - assert.deepEqual(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD', true).unusedInput, ['stuff at beginning '], 'leading junk'); - assert.deepEqual(flags('junk 1982 more junk 05 yet more junk25', 'YYYY-MM-DD', true).unusedInput, ['junk ', ' more junk ', ' yet more junk'], 'interstitial junk'); + test('start of minute', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minute'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minutes'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('m'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 4, 'keep the minutes'); + assert.equal(m.seconds(), 0, 'strip out the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); }); - test('chars left over', function (assert) { - assert.equal(flags('1982-05-25', 'YYYY-MM-DD').charsLeftOver, 0, 'normal input'); - assert.equal(flags('1982-05-25 this is more stuff', 'YYYY-MM-DD').charsLeftOver, ' this is more stuff'.length, 'trailing nonsense'); - assert.equal(flags('1982-05-25 09:30', 'YYYY-MM-DD').charsLeftOver, ' 09:30'.length, 'trailing legit-looking input'); - assert.equal(flags('stuff at beginning 1982-05-25', 'YYYY-MM-DD').charsLeftOver, 'stuff at beginning '.length, 'leading junk'); - assert.equal(flags('1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, [' junk ', ' more junk'].join('').length, 'interstitial junk'); - assert.equal(flags('stuff at beginning 1982 junk 05 more junk25', 'YYYY-MM-DD').charsLeftOver, ['stuff at beginning ', ' junk ', ' more junk'].join('').length, 'leading and interstitial junk'); + test('end of minute', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minute'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minutes'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('m'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 4, 'keep the minutes'); + assert.equal(m.seconds(), 59, 'set the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); }); - test('empty', function (assert) { - assert.equal(flags('1982-05-25', 'YYYY-MM-DD').empty, false, 'normal input'); - assert.equal(flags('nothing here', 'YYYY-MM-DD').empty, true, 'pure garbage'); - assert.equal(flags('junk but has the number 2000 in it', 'YYYY-MM-DD').empty, false, 'only mostly garbage'); - assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'empty string'); - assert.equal(flags('', 'YYYY-MM-DD').empty, true, 'blank string'); + test('start of second', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('second'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('seconds'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('s'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 4, 'keep the minutes'); + assert.equal(m.seconds(), 5, 'keep the seconds'); + assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); }); - test('null', function (assert) { - assert.equal(flags('1982-05-25', 'YYYY-MM-DD').nullInput, false, 'normal input'); - assert.equal(flags(null).nullInput, true, 'just null'); - assert.equal(flags(null, 'YYYY-MM-DD').nullInput, true, 'null with format'); + test('end of second', function (assert) { + var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('second'), + ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('seconds'), + ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('s'); + assert.equal(+m, +ms, 'Plural or singular should work'); + assert.equal(+m, +ma, 'Full or abbreviated should work'); + assert.equal(m.year(), 2011, 'keep the year'); + assert.equal(m.month(), 1, 'keep the month'); + assert.equal(m.date(), 2, 'keep the day'); + assert.equal(m.hours(), 3, 'keep the hours'); + assert.equal(m.minutes(), 4, 'keep the minutes'); + assert.equal(m.seconds(), 5, 'keep the seconds'); + assert.equal(m.milliseconds(), 999, 'set the seconds'); }); - test('invalid month', function (assert) { - assert.equal(flags('1982 May', 'YYYY MMMM').invalidMonth, null, 'normal input'); - assert.equal(flags('1982 Laser', 'YYYY MMMM').invalidMonth, 'Laser', 'bad month name'); - }); + test('startOf across DST +1', function (assert) { + var oldUpdateOffset = moment.updateOffset, + // Based on a real story somewhere in America/Los_Angeles + dstAt = moment('2014-03-09T02:00:00-08:00').parseZone(), + m; - test('empty format array', function (assert) { - assert.equal(flags('1982 May', ['YYYY MMM']).invalidFormat, false, 'empty format array'); - assert.equal(flags('1982 May', []).invalidFormat, true, 'empty format array'); - }); + moment.updateOffset = function (mom, keepTime) { + if (mom.isBefore(dstAt)) { + mom.utcOffset(-8, keepTime); + } else { + mom.utcOffset(-7, keepTime); + } + }; - test('weekday mismatch', function (assert) { - // string with format - assert.equal(flags('Wed 08-10-2017', 'ddd MM-DD-YYYY').weekdayMismatch, true, 'day of week does not match date'); - assert.equal(flags('Thu 08-10-2017', 'ddd MM-DD-YYYY').weekdayMismatch, false, 'day of week matches date'); - }); + m = moment('2014-03-15T00:00:00-07:00').parseZone(); + m.startOf('y'); + assert.equal( + m.format(), + '2014-01-01T00:00:00-08:00', + "startOf('year') across +1" + ); -}))); + m = moment('2014-03-15T00:00:00-07:00').parseZone(); + m.startOf('M'); + assert.equal( + m.format(), + '2014-03-01T00:00:00-08:00', + "startOf('month') across +1" + ); + m = moment('2014-03-09T09:00:00-07:00').parseZone(); + m.startOf('d'); + assert.equal( + m.format(), + '2014-03-09T00:00:00-08:00', + "startOf('day') across +1" + ); -;(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'; + m = moment('2014-03-09T03:05:00-07:00').parseZone(); + m.startOf('h'); + assert.equal( + m.format(), + '2014-03-09T03:00:00-07:00', + "startOf('hour') after +1" + ); - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } + m = moment('2014-03-09T01:35:00-08:00').parseZone(); + m.startOf('h'); + assert.equal( + m.format(), + '2014-03-09T01:00:00-08:00', + "startOf('hour') before +1" + ); - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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; - }; - } + // There is no such time as 2:30-7 to try startOf('hour') across that - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + moment.updateOffset = oldUpdateOffset; + }); - 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(' ')); - } - } - } + test('startOf across DST -1', function (assert) { + var oldUpdateOffset = moment.updateOffset, + // Based on a real story somewhere in America/Los_Angeles + dstAt = moment('2014-11-02T02:00:00-07:00').parseZone(), + m; - 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; + moment.updateOffset = function (mom, keepTime) { + if (mom.isBefore(dstAt)) { + mom.utcOffset(-7, keepTime); + } else { + mom.utcOffset(-8, keepTime); } - } - return -1; - } + }; - /*global QUnit:false*/ + m = moment('2014-11-15T00:00:00-08:00').parseZone(); + m.startOf('y'); + assert.equal( + m.format(), + '2014-01-01T00:00:00-07:00', + "startOf('year') across -1" + ); - var test = QUnit.test; + m = moment('2014-11-15T00:00:00-08:00').parseZone(); + m.startOf('M'); + assert.equal( + m.format(), + '2014-11-01T00:00:00-07:00', + "startOf('month') across -1" + ); - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } + m = moment('2014-11-02T09:00:00-08:00').parseZone(); + m.startOf('d'); + assert.equal( + m.format(), + '2014-11-02T00:00:00-07:00', + "startOf('day') across -1" + ); - var symbolMap = { - '1': '!', - '2': '@', - '3': '#', - '4': '$', - '5': '%', - '6': '^', - '7': '&', - '8': '*', - '9': '(', - '0': ')' - }, - numberMap = { - '!': '1', - '@': '2', - '#': '3', - '$': '4', - '%': '5', - '^': '6', - '&': '7', - '*': '8', - '(': '9', - ')': '0' - }; + // note that utc offset is -8 + m = moment('2014-11-02T01:30:00-08:00').parseZone(); + m.startOf('h'); + assert.equal( + m.format(), + '2014-11-02T01:00:00-08:00', + "startOf('hour') after +1" + ); - module$1('preparse and postformat', { - setup: function () { - moment.locale('symbol', { - preparse: function (string) { - return string.replace(/[!@#$%\^&*()]/g, function (match) { - return numberMap[match]; - }); - }, + // note that utc offset is -7 + m = moment('2014-11-02T01:30:00-07:00').parseZone(); + m.startOf('h'); + assert.equal( + m.format(), + '2014-11-02T01:00:00-07:00', + "startOf('hour') before +1" + ); - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - } - }); - }, - teardown: function () { - moment.defineLocale('symbol', null); - } + moment.updateOffset = oldUpdateOffset; }); - test('transform', function (assert) { - assert.equal(moment.utc('@)!@-)*-@&', 'YYYY-MM-DD').unix(), 1346025600, 'preparse string + format'); - assert.equal(moment.utc('@)!@-)*-@&').unix(), 1346025600, 'preparse ISO8601 string'); - assert.equal(moment.unix(1346025600).utc().format('YYYY-MM-DD'), '@)!@-)*-@&', 'postformat'); + test('endOf millisecond and no-arg', function (assert) { + var m = moment(); + assert.equal( + +m, + +m.clone().endOf(), + 'endOf without argument should change time' + ); + assert.equal( + +m, + +m.clone().endOf('ms'), + 'endOf with ms argument should change time' + ); + assert.equal( + +m, + +m.clone().endOf('millisecond'), + 'endOf with millisecond argument should change time' + ); + assert.equal( + +m, + +m.clone().endOf('milliseconds'), + 'endOf with milliseconds argument should change time' + ); }); - test('transform from', function (assert) { - var start = moment([2007, 1, 28]); - - assert.equal(start.from(moment([2007, 1, 28]).add({s: 90}), true), '@ minutes', 'postformat should work on moment.fn.from'); - assert.equal(moment().add(6, 'd').fromNow(true), '^ days', 'postformat should work on moment.fn.fromNow'); - assert.equal(moment.duration(10, 'h').humanize(), '!) hours', 'postformat should work on moment.duration.fn.humanize'); + test('startOf for year zero', function (assert) { + var m = moment('0000-02-29T12:34:56.789Z').parseZone(); + assert.equal( + m.clone().startOf('ms').toISOString(), + '0000-02-29T12:34:56.789Z', + 'startOf millisecond should preserve year' + ); + assert.equal( + m.clone().startOf('s').toISOString(), + '0000-02-29T12:34:56.000Z', + 'startOf second should preserve year' + ); + assert.equal( + m.clone().startOf('m').toISOString(), + '0000-02-29T12:34:00.000Z', + 'startOf minute should preserve year' + ); + assert.equal( + m.clone().startOf('h').toISOString(), + '0000-02-29T12:00:00.000Z', + 'startOf hour should preserve year' + ); + assert.equal( + m.clone().startOf('d').toISOString(), + '0000-02-29T00:00:00.000Z', + 'startOf day should preserve year' + ); + assert.equal( + m.clone().startOf('M').toISOString(), + '0000-02-01T00:00:00.000Z', + 'startOf month should preserve year' + ); + assert.equal( + m.clone().startOf('Q').toISOString(), + '0000-01-01T00:00:00.000Z', + 'startOf quarter should preserve year' + ); + assert.equal( + m.clone().startOf('y').toISOString(), + '0000-01-01T00:00:00.000Z', + 'startOf year should preserve year' + ); }); - test('calendar day', function (assert) { - var a = moment().hours(12).minutes(0).seconds(0); - - assert.equal(moment(a).calendar(), 'Today at !@:)) PM', 'today at the same time'); - assert.equal(moment(a).add({m: 25}).calendar(), 'Today at !@:@% PM', 'Now plus 25 min'); - assert.equal(moment(a).add({h: 1}).calendar(), 'Today at !:)) PM', 'Now plus 1 hour'); - assert.equal(moment(a).add({d: 1}).calendar(), 'Tomorrow at !@:)) PM', 'tomorrow at the same time'); - assert.equal(moment(a).subtract({h: 1}).calendar(), 'Today at !!:)) AM', 'Now minus 1 hour'); - assert.equal(moment(a).subtract({d: 1}).calendar(), 'Yesterday at !@:)) PM', 'yesterday at the same time'); + test('endOf for year zero', function (assert) { + var m = moment('0000-02-29T12:34:56.789Z').parseZone(); + assert.equal( + m.clone().endOf('ms').toISOString(), + '0000-02-29T12:34:56.789Z', + 'endOf millisecond should preserve year' + ); + assert.equal( + m.clone().endOf('s').toISOString(), + '0000-02-29T12:34:56.999Z', + 'endOf second should preserve year' + ); + assert.equal( + m.clone().endOf('m').toISOString(), + '0000-02-29T12:34:59.999Z', + 'endOf minute should preserve year' + ); + assert.equal( + m.clone().endOf('h').toISOString(), + '0000-02-29T12:59:59.999Z', + 'endOf hour should preserve year' + ); + assert.equal( + m.clone().endOf('d').toISOString(), + '0000-02-29T23:59:59.999Z', + 'endOf day should preserve year' + ); + assert.equal( + m.clone().endOf('M').toISOString(), + '0000-02-29T23:59:59.999Z', + 'endOf month should preserve year' + ); + assert.equal( + m.clone().endOf('Q').toISOString(), + '0000-03-31T23:59:59.999Z', + 'endOf quarter should preserve year' + ); + assert.equal( + m.clone().endOf('y').toISOString(), + '0000-12-31T23:59:59.999Z', + 'endOf year should preserve year' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -76238,27 +137928,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -76268,8 +137963,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -76282,7 +137979,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -76291,131 +137991,49 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('quarter'); - - test('library quarter getter', function (assert) { - assert.equal(moment([1985, 1, 4]).quarter(), 1, 'Feb 4 1985 is Q1'); - assert.equal(moment([2029, 8, 18]).quarter(), 3, 'Sep 18 2029 is Q3'); - assert.equal(moment([2013, 3, 24]).quarter(), 2, 'Apr 24 2013 is Q2'); - assert.equal(moment([2015, 2, 5]).quarter(), 1, 'Mar 5 2015 is Q1'); - assert.equal(moment([1970, 0, 2]).quarter(), 1, 'Jan 2 1970 is Q1'); - assert.equal(moment([2001, 11, 12]).quarter(), 4, 'Dec 12 2001 is Q4'); - assert.equal(moment([2000, 0, 2]).quarter(), 1, 'Jan 2 2000 is Q1'); - }); - - test('quarter setter singular', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.quarter(2).month(), 4, 'set same quarter'); - assert.equal(m.quarter(3).month(), 7, 'set 3rd quarter'); - assert.equal(m.quarter(1).month(), 1, 'set 1st quarter'); - assert.equal(m.quarter(4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter plural', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.quarters(2).month(), 4, 'set same quarter'); - assert.equal(m.quarters(3).month(), 7, 'set 3rd quarter'); - assert.equal(m.quarters(1).month(), 1, 'set 1st quarter'); - assert.equal(m.quarters(4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter programmatic', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.set('quarter', 2).month(), 4, 'set same quarter'); - assert.equal(m.set('quarter', 3).month(), 7, 'set 3rd quarter'); - assert.equal(m.set('quarter', 1).month(), 1, 'set 1st quarter'); - assert.equal(m.set('quarter', 4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter programmatic plural', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.set('quarters', 2).month(), 4, 'set same quarter'); - assert.equal(m.set('quarters', 3).month(), 7, 'set 3rd quarter'); - assert.equal(m.set('quarters', 1).month(), 1, 'set 1st quarter'); - assert.equal(m.set('quarters', 4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter programmatic abbr', function (assert) { - var m = moment([2014, 4, 11]); - assert.equal(m.set('Q', 2).month(), 4, 'set same quarter'); - assert.equal(m.set('Q', 3).month(), 7, 'set 3rd quarter'); - assert.equal(m.set('Q', 1).month(), 1, 'set 1st quarter'); - assert.equal(m.set('Q', 4).month(), 10, 'set 4th quarter'); - }); - - test('quarter setter only month changes', function (assert) { - var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(4); - assert.equal(m.year(), 2014, 'keep year'); - assert.equal(m.month(), 10, 'set month'); - assert.equal(m.date(), 11, 'keep date'); - assert.equal(m.hour(), 1, 'keep hour'); - assert.equal(m.minute(), 2, 'keep minutes'); - assert.equal(m.second(), 3, 'keep seconds'); - assert.equal(m.millisecond(), 4, 'keep milliseconds'); - }); + module('string prototype'); - test('quarter setter bubble to next year', function (assert) { - var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(7); - assert.equal(m.year(), 2015, 'year bubbled'); - assert.equal(m.month(), 7, 'set month'); - assert.equal(m.date(), 11, 'keep date'); - assert.equal(m.hour(), 1, 'keep hour'); - assert.equal(m.minute(), 2, 'keep minutes'); - assert.equal(m.second(), 3, 'keep seconds'); - assert.equal(m.millisecond(), 4, 'keep milliseconds'); - }); + test('string prototype overrides call', function (assert) { + var prior = String.prototype.call, + b; + String.prototype.call = function () { + return null; + }; - test('quarter diff', function (assert) { - assert.equal(moment('2014-01-01').diff(moment('2014-04-01'), 'quarter'), - -1, 'diff -1 quarter'); - assert.equal(moment('2014-04-01').diff(moment('2014-01-01'), 'quarter'), - 1, 'diff 1 quarter'); - assert.equal(moment('2014-05-01').diff(moment('2014-01-01'), 'quarter'), - 1, 'diff 1 quarter'); - assert.ok(Math.abs((4 / 3) - moment('2014-05-01').diff( - moment('2014-01-01'), 'quarter', true)) < 0.00001, - 'diff 1 1/3 quarter'); - assert.equal(moment('2015-01-01').diff(moment('2014-01-01'), 'quarter'), - 4, 'diff 4 quarters'); - }); + b = moment(new Date(2011, 7, 28, 15, 25, 50, 125)); + assert.equal(b.format('MMMM Do YYYY, h:mm a'), 'August 28th 2011, 3:25 pm'); - test('quarter setter bubble to previous year', function (assert) { - var m = moment([2014, 4, 11, 1, 2, 3, 4]).quarter(-3); - assert.equal(m.year(), 2013, 'year bubbled'); - assert.equal(m.month(), 1, 'set month'); - assert.equal(m.date(), 11, 'keep date'); - assert.equal(m.hour(), 1, 'keep hour'); - assert.equal(m.minute(), 2, 'keep minutes'); - assert.equal(m.second(), 3, 'keep seconds'); - assert.equal(m.millisecond(), 4, 'keep milliseconds'); + String.prototype.call = prior; }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -76430,27 +138048,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -76460,8 +138083,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -76474,269 +138099,97 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; - } - } - return -1; - } - - /*global QUnit:false*/ - - var test = QUnit.test; - - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } - - module$1('relative time'); - - test('default thresholds fromNow', function (assert) { - var a = moment(); - - // Seconds to minutes threshold - a.subtract(44, 'seconds'); - assert.equal(a.fromNow(), 'a few seconds ago', 'Below default seconds to minutes threshold'); - a.subtract(1, 'seconds'); - assert.equal(a.fromNow(), 'a minute ago', 'Above default seconds to minutes threshold'); - - // Minutes to hours threshold - a = moment(); - a.subtract(44, 'minutes'); - assert.equal(a.fromNow(), '44 minutes ago', 'Below default minute to hour threshold'); - a.subtract(1, 'minutes'); - assert.equal(a.fromNow(), 'an hour ago', 'Above default minute to hour threshold'); - - // Hours to days threshold - a = moment(); - a.subtract(21, 'hours'); - assert.equal(a.fromNow(), '21 hours ago', 'Below default hours to day threshold'); - a.subtract(1, 'hours'); - assert.equal(a.fromNow(), 'a day ago', 'Above default hours to day threshold'); - - // Days to month threshold - a = moment(); - a.subtract(25, 'days'); - assert.equal(a.fromNow(), '25 days ago', 'Below default days to month (singular) threshold'); - a.subtract(1, 'days'); - assert.equal(a.fromNow(), 'a month ago', 'Above default days to month (singular) threshold'); - - // months to year threshold - a = moment(); - a.subtract(10, 'months'); - assert.equal(a.fromNow(), '10 months ago', 'Below default days to years threshold'); - a.subtract(1, 'month'); - assert.equal(a.fromNow(), 'a year ago', 'Above default days to years threshold'); - }); - - test('default thresholds toNow', function (assert) { - var a = moment(); - - // Seconds to minutes threshold - a.subtract(44, 'seconds'); - assert.equal(a.toNow(), 'in a few seconds', 'Below default seconds to minutes threshold'); - a.subtract(1, 'seconds'); - assert.equal(a.toNow(), 'in a minute', 'Above default seconds to minutes threshold'); - - // Minutes to hours threshold - a = moment(); - a.subtract(44, 'minutes'); - assert.equal(a.toNow(), 'in 44 minutes', 'Below default minute to hour threshold'); - a.subtract(1, 'minutes'); - assert.equal(a.toNow(), 'in an hour', 'Above default minute to hour threshold'); - - // Hours to days threshold - a = moment(); - a.subtract(21, 'hours'); - assert.equal(a.toNow(), 'in 21 hours', 'Below default hours to day threshold'); - a.subtract(1, 'hours'); - assert.equal(a.toNow(), 'in a day', 'Above default hours to day threshold'); - - // Days to month threshold - a = moment(); - a.subtract(25, 'days'); - assert.equal(a.toNow(), 'in 25 days', 'Below default days to month (singular) threshold'); - a.subtract(1, 'days'); - assert.equal(a.toNow(), 'in a month', 'Above default days to month (singular) threshold'); - - // months to year threshold - a = moment(); - a.subtract(10, 'months'); - assert.equal(a.toNow(), 'in 10 months', 'Below default days to years threshold'); - a.subtract(1, 'month'); - assert.equal(a.toNow(), 'in a year', 'Above default days to years threshold'); - }); - - test('custom thresholds', function (assert) { - var a; - - // Seconds to minute threshold, under 30 - moment.relativeTimeThreshold('s', 25); - - a = moment(); - a.subtract(24, 'seconds'); - assert.equal(a.fromNow(), 'a few seconds ago', 'Below custom seconds to minute threshold, s < 30'); - a.subtract(1, 'seconds'); - assert.equal(a.fromNow(), 'a minute ago', 'Above custom seconds to minute threshold, s < 30'); - - // Seconds to minutes threshold - moment.relativeTimeThreshold('s', 55); - - a = moment(); - a.subtract(54, 'seconds'); - assert.equal(a.fromNow(), 'a few seconds ago', 'Below custom seconds to minutes threshold'); - a.subtract(1, 'seconds'); - assert.equal(a.fromNow(), 'a minute ago', 'Above custom seconds to minutes threshold'); - - moment.relativeTimeThreshold('s', 45); - - // A few seconds to seconds threshold - moment.relativeTimeThreshold('ss', 3); - - a = moment(); - a.subtract(3, 'seconds'); - assert.equal(a.fromNow(), 'a few seconds ago', 'Below custom a few seconds to seconds threshold'); - a.subtract(1, 'seconds'); - assert.equal(a.fromNow(), '4 seconds ago', 'Above custom a few seconds to seconds threshold'); - - moment.relativeTimeThreshold('ss', 44); - - // Minutes to hours threshold - moment.relativeTimeThreshold('m', 55); - a = moment(); - a.subtract(54, 'minutes'); - assert.equal(a.fromNow(), '54 minutes ago', 'Below custom minutes to hours threshold'); - a.subtract(1, 'minutes'); - assert.equal(a.fromNow(), 'an hour ago', 'Above custom minutes to hours threshold'); - moment.relativeTimeThreshold('m', 45); - - // Hours to days threshold - moment.relativeTimeThreshold('h', 24); - a = moment(); - a.subtract(23, 'hours'); - assert.equal(a.fromNow(), '23 hours ago', 'Below custom hours to days threshold'); - a.subtract(1, 'hours'); - assert.equal(a.fromNow(), 'a day ago', 'Above custom hours to days threshold'); - moment.relativeTimeThreshold('h', 22); - - // Days to month threshold - moment.relativeTimeThreshold('d', 28); - a = moment(); - a.subtract(27, 'days'); - assert.equal(a.fromNow(), '27 days ago', 'Below custom days to month (singular) threshold'); - a.subtract(1, 'days'); - assert.equal(a.fromNow(), 'a month ago', 'Above custom days to month (singular) threshold'); - moment.relativeTimeThreshold('d', 26); - - // months to years threshold - moment.relativeTimeThreshold('M', 9); - a = moment(); - a.subtract(8, 'months'); - assert.equal(a.fromNow(), '8 months ago', 'Below custom days to years threshold'); - a.subtract(1, 'months'); - assert.equal(a.fromNow(), 'a year ago', 'Above custom days to years threshold'); - moment.relativeTimeThreshold('M', 11); - - // multiple thresholds - moment.relativeTimeThreshold('ss', 3); - a = moment(); - a.subtract(4, 'seconds'); - assert.equal(a.fromNow(), '4 seconds ago', 'Before setting s relative time threshold'); - moment.relativeTimeThreshold('s', 59); - assert.equal(a.fromNow(), 'a few seconds ago', 'After setting s relative time threshold'); - moment.relativeTimeThreshold('ss', 44); - moment.relativeTimeThreshold('s', 45); - }); - - test('custom rounding', function (assert) { - var roundingDefault = moment.relativeTimeRounding(); - - // Round relative time evaluation down - moment.relativeTimeRounding(Math.floor); - - moment.relativeTimeThreshold('s', 60); - moment.relativeTimeThreshold('m', 60); - moment.relativeTimeThreshold('h', 24); - moment.relativeTimeThreshold('d', 27); - moment.relativeTimeThreshold('M', 12); - - var a = moment.utc(); - a.subtract({minutes: 59, seconds: 59}); - assert.equal(a.toNow(), 'in 59 minutes', 'Round down towards the nearest minute'); - - a = moment.utc(); - a.subtract({hours: 23, minutes: 59, seconds: 59}); - assert.equal(a.toNow(), 'in 23 hours', 'Round down towards the nearest hour'); + } + } + return -1; + } - a = moment.utc(); - a.subtract({days: 26, hours: 23, minutes: 59}); - assert.equal(a.toNow(), 'in 26 days', 'Round down towards the nearest day (just under)'); + /*global QUnit:false*/ - a = moment.utc(); - a.subtract({days: 27}); - assert.equal(a.toNow(), 'in a month', 'Round down towards the nearest day (just over)'); + var test = QUnit.test, + only = QUnit.only; - a = moment.utc(); - a.subtract({days: 364}); - assert.equal(a.toNow(), 'in 11 months', 'Round down towards the nearest month'); + function module(name, lifecycle) { + QUnit.module(name, { + beforeEach: function () { + moment.locale('en'); + 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 () { + teardownDeprecationHandler(test, moment); + if (lifecycle && lifecycle.teardown) { + lifecycle.teardown(); + } + }, + }); + } - a = moment.utc(); - a.subtract({years: 1, days: 364}); - assert.equal(a.toNow(), 'in a year', 'Round down towards the nearest year'); + module('to type'); - // Do not round relative time evaluation - var retainValue = function (value) { - return value.toFixed(3); + test('toObject', function (assert) { + var expected = { + years: 2010, + months: 3, + date: 5, + hours: 15, + minutes: 10, + seconds: 3, + milliseconds: 123, }; - moment.relativeTimeRounding(retainValue); - - a = moment.utc(); - a.subtract({hours: 39}); - assert.equal(a.toNow(), 'in 1.625 days', 'Round down towards the nearest year'); - - // Restore defaults - moment.relativeTimeThreshold('s', 45); - moment.relativeTimeThreshold('m', 45); - moment.relativeTimeThreshold('h', 22); - moment.relativeTimeThreshold('d', 26); - moment.relativeTimeThreshold('M', 11); - moment.relativeTimeRounding(roundingDefault); + assert.deepEqual(moment(expected).toObject(), expected, 'toObject invalid'); }); - test('retrieve rounding settings', function (assert) { - moment.relativeTimeRounding(Math.round); - var roundingFunction = moment.relativeTimeRounding(); + test('toArray', function (assert) { + var expected = [2014, 11, 26, 11, 46, 58, 17]; + assert.deepEqual(moment(expected).toArray(), expected, 'toArray invalid'); + }); - assert.equal(roundingFunction, Math.round, 'Can retrieve rounding setting'); + test('toDate returns a copy of the internal date', function (assert) { + var m = moment(), + d = m.toDate(); + m.year(0); + assert.notEqual(d, m.toDate()); }); - test('retrieve threshold settings', function (assert) { - moment.relativeTimeThreshold('m', 45); - var minuteThreshold = moment.relativeTimeThreshold('m'); + test('toJSON', function (assert) { + if (Date.prototype.toISOString) { + var expected = new Date().toISOString(); + assert.deepEqual(moment(expected).toJSON(), expected, 'toJSON invalid'); + } else { + // IE8 + assert.expect(0); + } + }); - assert.equal(minuteThreshold, 45, 'Can retrieve minute setting'); + test('toJSON works when moment is frozen', function (assert) { + if (Date.prototype.toISOString) { + var expected = new Date().toISOString(), + m = moment(expected); + if (Object.freeze != null) { + Object.freeze(m); + } + assert.deepEqual(m.toJSON(), expected, 'toJSON when frozen invalid'); + } else { + // IE8 + assert.expect(0); + } }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -76751,27 +138204,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -76781,8 +138239,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -76795,7 +138255,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -76804,700 +138267,926 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('start and end of units'); + module('utc offset'); - test('start of year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('year'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('years'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('y'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 0, 'strip out the month'); - assert.equal(m.date(), 1, 'strip out the day'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); - }); + test('setter / getter blackbox', function (assert) { + var m = moment([2010]); - test('end of year', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('year'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('years'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('y'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 11, 'set the month'); - assert.equal(m.date(), 31, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); - }); + assert.equal(m.clone().utcOffset(0).utcOffset(), 0, 'utcOffset 0'); - test('start of quarter', function (assert) { - var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarter'), - ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('quarters'), - ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).startOf('Q'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.quarter(), 2, 'keep the quarter'); - assert.equal(m.month(), 3, 'strip out the month'); - assert.equal(m.date(), 1, 'strip out the day'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + assert.equal(m.clone().utcOffset(1).utcOffset(), 60, 'utcOffset 1 is 60'); + assert.equal(m.clone().utcOffset(60).utcOffset(), 60, 'utcOffset 60'); + assert.equal( + m.clone().utcOffset('+01:00').utcOffset(), + 60, + 'utcOffset +01:00 is 60' + ); + assert.equal( + m.clone().utcOffset('+0100').utcOffset(), + 60, + 'utcOffset +0100 is 60' + ); + + assert.equal( + m.clone().utcOffset(-1).utcOffset(), + -60, + 'utcOffset -1 is -60' + ); + assert.equal(m.clone().utcOffset(-60).utcOffset(), -60, 'utcOffset -60'); + assert.equal( + m.clone().utcOffset('-01:00').utcOffset(), + -60, + 'utcOffset -01:00 is -60' + ); + assert.equal( + m.clone().utcOffset('-0100').utcOffset(), + -60, + 'utcOffset -0100 is -60' + ); + + assert.equal( + m.clone().utcOffset(1.5).utcOffset(), + 90, + 'utcOffset 1.5 is 90' + ); + assert.equal( + m.clone().utcOffset(90).utcOffset(), + 90, + 'utcOffset 1.5 is 90' + ); + assert.equal( + m.clone().utcOffset('+01:30').utcOffset(), + 90, + 'utcOffset +01:30 is 90' + ); + assert.equal( + m.clone().utcOffset('+0130').utcOffset(), + 90, + 'utcOffset +0130 is 90' + ); + + assert.equal(m.clone().utcOffset(-1.5).utcOffset(), -90, 'utcOffset -1.5'); + assert.equal(m.clone().utcOffset(-90).utcOffset(), -90, 'utcOffset -90'); + assert.equal( + m.clone().utcOffset('-01:30').utcOffset(), + -90, + 'utcOffset +01:30 is 90' + ); + assert.equal( + m.clone().utcOffset('-0130').utcOffset(), + -90, + 'utcOffset +0130 is 90' + ); + assert.equal( + m.clone().utcOffset('+00:10').utcOffset(), + 10, + 'utcOffset +00:10 is 10' + ); + assert.equal( + m.clone().utcOffset('-00:10').utcOffset(), + -10, + 'utcOffset +00:10 is 10' + ); + assert.equal( + m.clone().utcOffset('+0010').utcOffset(), + 10, + 'utcOffset +0010 is 10' + ); + assert.equal( + m.clone().utcOffset('-0010').utcOffset(), + -10, + 'utcOffset +0010 is 10' + ); }); - test('end of quarter', function (assert) { - var m = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarter'), - ms = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('quarters'), - ma = moment(new Date(2011, 4, 2, 3, 4, 5, 6)).endOf('Q'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.quarter(), 2, 'keep the quarter'); - assert.equal(m.month(), 5, 'set the month'); - assert.equal(m.date(), 30, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); + test('utcOffset shorthand hours -> minutes', function (assert) { + var i; + for (i = -15; i <= 15; ++i) { + assert.equal( + moment().utcOffset(i).utcOffset(), + i * 60, + '' + i + ' -> ' + i * 60 + ); + } + assert.equal(moment().utcOffset(-16).utcOffset(), -16, '-16 -> -16'); + assert.equal(moment().utcOffset(16).utcOffset(), 16, '16 -> 16'); }); - test('start of month', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('month'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('months'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('M'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 1, 'strip out the day'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + test('isLocal, isUtc, isUtcOffset', function (assert) { + assert.ok(moment().isLocal(), 'moment() creates objects in local time'); + assert.ok( + !moment.utc().isLocal(), + 'moment.utc creates objects NOT in local time' + ); + assert.ok( + moment.utc().local().isLocal(), + 'moment.fn.local() converts to local time' + ); + assert.ok( + !moment().utcOffset(5).isLocal(), + 'moment.fn.utcOffset(N) puts objects NOT in local time' + ); + assert.ok( + moment().utcOffset(5).local().isLocal(), + 'moment.fn.local() converts to local time' + ); + + assert.ok(moment.utc().isUtc(), 'moment.utc() creates objects in utc time'); + assert.ok( + moment().utcOffset(0).isUtc(), + 'utcOffset(0) is equivalent to utc mode' + ); + assert.ok( + !moment().utcOffset(1).isUtc(), + 'utcOffset(1) is NOT equivalent to utc mode' + ); + + assert.ok( + !moment().isUtcOffset(), + 'moment() creates objects NOT in utc-offset mode' + ); + assert.ok( + moment.utc().isUtcOffset(), + 'moment.utc() creates objects in utc-offset mode' + ); + assert.ok( + moment().utcOffset(3).isUtcOffset(), + 'utcOffset(N != 0) creates objects in utc-offset mode' + ); + assert.ok( + moment().utcOffset(0).isUtcOffset(), + 'utcOffset(0) creates objects in utc-offset mode' + ); }); - test('end of month', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('month'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('months'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('M'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 28, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); + test('isUTC', function (assert) { + assert.ok(moment.utc().isUTC(), 'moment.utc() creates objects in utc time'); + assert.ok( + moment().utcOffset(0).isUTC(), + 'utcOffset(0) is equivalent to utc mode' + ); + assert.ok( + !moment().utcOffset(1).isUTC(), + 'utcOffset(1) is NOT equivalent to utc mode' + ); }); - test('start of week', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('week'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('weeks'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('w'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 0, 'rolls back to January'); - assert.equal(m.day(), 0, 'set day of week'); - assert.equal(m.date(), 30, 'set correct date'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + test('change hours when changing the utc offset', function (assert) { + var m = moment.utc([2000, 0, 1, 6]); + assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000'); + + // sanity check + m.utcOffset(0); + assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000'); + + m.utcOffset(-60); + assert.equal(m.hour(), 5, 'UTC 6AM should be 5AM at -0100'); + + m.utcOffset(60); + assert.equal(m.hour(), 7, 'UTC 6AM should be 7AM at +0100'); }); - test('end of week', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('week'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('weeks'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.day(), 6, 'set the day of the week'); - assert.equal(m.date(), 5, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); + test('change minutes when changing the utc offset', function (assert) { + var m = moment.utc([2000, 0, 1, 6, 31]); + + m.utcOffset(0); + assert.equal( + m.format('HH:mm'), + '06:31', + 'UTC 6:31AM should be 6:31AM at +0000' + ); + + m.utcOffset(-30); + assert.equal( + m.format('HH:mm'), + '06:01', + 'UTC 6:31AM should be 6:01AM at -0030' + ); + + m.utcOffset(30); + assert.equal( + m.format('HH:mm'), + '07:01', + 'UTC 6:31AM should be 7:01AM at +0030' + ); + + m.utcOffset(-1380); + assert.equal( + m.format('HH:mm'), + '07:31', + 'UTC 6:31AM should be 7:31AM at +1380' + ); }); - test('start of iso-week', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeek'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('isoWeeks'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('W'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 0, 'rollback to January'); - assert.equal(m.isoWeekday(), 1, 'set day of iso-week'); - assert.equal(m.date(), 31, 'set correct date'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + test('distance from the unix epoch', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA), + zoneC = moment(zoneA), + zoneD = moment(zoneA), + zoneE = moment(zoneA); + + zoneB.utc(); + assert.equal(+zoneA, +zoneB, 'moment should equal moment.utc'); + + zoneC.utcOffset(60); + assert.equal(+zoneA, +zoneC, 'moment should equal moment.utcOffset(60)'); + + zoneD.utcOffset(-480); + assert.equal(+zoneA, +zoneD, 'moment should equal moment.utcOffset(-480)'); + + zoneE.utcOffset(-1000); + assert.equal(+zoneA, +zoneE, 'moment should equal moment.utcOffset(-1000)'); }); - test('end of iso-week', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeek'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('isoWeeks'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('W'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.isoWeekday(), 7, 'set the day of the week'); - assert.equal(m.date(), 6, 'set the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); + test('update offset after changing any values', function (assert) { + var oldOffset = moment.updateOffset, + m = moment.utc([2000, 6, 1]); + + moment.updateOffset = function (mom, keepTime) { + if (mom.__doChange) { + if (+mom > 962409600000) { + mom.utcOffset(-120, keepTime); + } else { + mom.utcOffset(-60, keepTime); + } + } + }; + + assert.equal(m.format('ZZ'), '+0000', 'should be at +0000'); + assert.equal( + m.format('HH:mm'), + '00:00', + 'should start 12AM at +0000 timezone' + ); + + m.__doChange = true; + m.add(1, 'h'); + + assert.equal(m.format('ZZ'), '-0200', 'should be at -0200'); + assert.equal( + m.format('HH:mm'), + '23:00', + '1AM at +0000 should be 11PM at -0200 timezone' + ); + + m.subtract(1, 'h'); + + assert.equal(m.format('ZZ'), '-0100', 'should be at -0100'); + assert.equal( + m.format('HH:mm'), + '23:00', + '12AM at +0000 should be 11PM at -0100 timezone' + ); + + moment.updateOffset = oldOffset; }); - test('start of day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('day'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('days'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('d'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + ////////////////// + test('getters and setters', function (assert) { + var a = moment([2011, 5, 20]); + + assert.equal( + a.clone().utcOffset(-120).year(2012).year(), + 2012, + 'should get and set year correctly' + ); + assert.equal( + a.clone().utcOffset(-120).month(1).month(), + 1, + 'should get and set month correctly' + ); + assert.equal( + a.clone().utcOffset(-120).date(2).date(), + 2, + 'should get and set date correctly' + ); + assert.equal( + a.clone().utcOffset(-120).day(1).day(), + 1, + 'should get and set day correctly' + ); + assert.equal( + a.clone().utcOffset(-120).hour(1).hour(), + 1, + 'should get and set hour correctly' + ); + assert.equal( + a.clone().utcOffset(-120).minute(1).minute(), + 1, + 'should get and set minute correctly' + ); }); - test('end of day', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('day'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('days'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('d'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); + test('getters', function (assert) { + var a = moment.utc([2012, 0, 1, 0, 0, 0]); + + assert.equal( + a.clone().utcOffset(-120).year(), + 2011, + 'should get year correctly' + ); + assert.equal( + a.clone().utcOffset(-120).month(), + 11, + 'should get month correctly' + ); + assert.equal( + a.clone().utcOffset(-120).date(), + 31, + 'should get date correctly' + ); + assert.equal( + a.clone().utcOffset(-120).hour(), + 22, + 'should get hour correctly' + ); + assert.equal( + a.clone().utcOffset(-120).minute(), + 0, + 'should get minute correctly' + ); + + assert.equal( + a.clone().utcOffset(120).year(), + 2012, + 'should get year correctly' + ); + assert.equal( + a.clone().utcOffset(120).month(), + 0, + 'should get month correctly' + ); + assert.equal( + a.clone().utcOffset(120).date(), + 1, + 'should get date correctly' + ); + assert.equal( + a.clone().utcOffset(120).hour(), + 2, + 'should get hour correctly' + ); + assert.equal( + a.clone().utcOffset(120).minute(), + 0, + 'should get minute correctly' + ); + + assert.equal( + a.clone().utcOffset(90).year(), + 2012, + 'should get year correctly' + ); + assert.equal( + a.clone().utcOffset(90).month(), + 0, + 'should get month correctly' + ); + assert.equal( + a.clone().utcOffset(90).date(), + 1, + 'should get date correctly' + ); + assert.equal( + a.clone().utcOffset(90).hour(), + 1, + 'should get hour correctly' + ); + assert.equal( + a.clone().utcOffset(90).minute(), + 30, + 'should get minute correctly' + ); }); - test('start of date', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('date'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('dates'); + test('from', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA).utcOffset(-720), + zoneC = moment(zoneA).utcOffset(-360), + zoneD = moment(zoneA).utcOffset(690), + other = moment(zoneA).add(35, 'm'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 0, 'strip out the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + assert.equal( + zoneA.from(other), + zoneB.from(other), + 'moment#from should be the same in all zones' + ); + assert.equal( + zoneA.from(other), + zoneC.from(other), + 'moment#from should be the same in all zones' + ); + assert.equal( + zoneA.from(other), + zoneD.from(other), + 'moment#from should be the same in all zones' + ); }); - test('end of date', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('date'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('dates'); + test('diff', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA).utcOffset(-720), + zoneC = moment(zoneA).utcOffset(-360), + zoneD = moment(zoneA).utcOffset(690), + other = moment(zoneA).add(35, 'm'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 23, 'set the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); + assert.equal( + zoneA.diff(other), + zoneB.diff(other), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other), + zoneC.diff(other), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other), + zoneD.diff(other), + 'moment#diff should be the same in all zones' + ); + + assert.equal( + zoneA.diff(other, 'minute', true), + zoneB.diff(other, 'minute', true), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other, 'minute', true), + zoneC.diff(other, 'minute', true), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other, 'minute', true), + zoneD.diff(other, 'minute', true), + 'moment#diff should be the same in all zones' + ); + + assert.equal( + zoneA.diff(other, 'hour', true), + zoneB.diff(other, 'hour', true), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other, 'hour', true), + zoneC.diff(other, 'hour', true), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other, 'hour', true), + zoneD.diff(other, 'hour', true), + 'moment#diff should be the same in all zones' + ); }); + test('unix offset and timestamp', function (assert) { + var zoneA = moment(), + zoneB = moment(zoneA).utcOffset(-720), + zoneC = moment(zoneA).utcOffset(-360), + zoneD = moment(zoneA).utcOffset(690); - test('start of hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hour'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('hours'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('h'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 0, 'strip out the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + assert.equal( + zoneA.unix(), + zoneB.unix(), + 'moment#unix should be the same in all zones' + ); + assert.equal( + zoneA.unix(), + zoneC.unix(), + 'moment#unix should be the same in all zones' + ); + assert.equal( + zoneA.unix(), + zoneD.unix(), + 'moment#unix should be the same in all zones' + ); + + assert.equal( + +zoneA, + +zoneB, + 'moment#valueOf should be the same in all zones' + ); + assert.equal( + +zoneA, + +zoneC, + 'moment#valueOf should be the same in all zones' + ); + assert.equal( + +zoneA, + +zoneD, + 'moment#valueOf should be the same in all zones' + ); }); - test('end of hour', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hour'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('hours'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('h'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 59, 'set the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); + test('cloning', function (assert) { + assert.equal( + moment().utcOffset(-120).clone().utcOffset(), + -120, + 'explicit cloning should retain the offset' + ); + assert.equal( + moment().utcOffset(120).clone().utcOffset(), + 120, + 'explicit cloning should retain the offset' + ); + assert.equal( + moment(moment().utcOffset(-120)).utcOffset(), + -120, + 'implicit cloning should retain the offset' + ); + assert.equal( + moment(moment().utcOffset(120)).utcOffset(), + 120, + 'implicit cloning should retain the offset' + ); }); - test('start of minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minute'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('minutes'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('m'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 4, 'keep the minutes'); - assert.equal(m.seconds(), 0, 'strip out the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + test('start of / end of', function (assert) { + var a = moment.utc([2010, 1, 2, 0, 0, 0]).utcOffset(-450); + + assert.equal( + a.clone().startOf('day').hour(), + 0, + 'start of day should work on moments with utc offset' + ); + assert.equal( + a.clone().startOf('day').minute(), + 0, + 'start of day should work on moments with utc offset' + ); + assert.equal( + a.clone().startOf('hour').minute(), + 0, + 'start of hour should work on moments with utc offset' + ); + + assert.equal( + a.clone().endOf('day').hour(), + 23, + 'end of day should work on moments with utc offset' + ); + assert.equal( + a.clone().endOf('day').minute(), + 59, + 'end of day should work on moments with utc offset' + ); + assert.equal( + a.clone().endOf('hour').minute(), + 59, + 'end of hour should work on moments with utc offset' + ); }); - test('end of minute', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minute'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('minutes'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('m'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 4, 'keep the minutes'); - assert.equal(m.seconds(), 59, 'set the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); + test('reset offset with moment#utc', function (assert) { + var a = moment.utc([2012]).utcOffset(-480); + + assert.equal( + a.clone().hour(), + 16, + 'different utc offset should have different hour' + ); + assert.equal( + a.clone().utc().hour(), + 0, + 'calling moment#utc should reset the offset' + ); }); - test('start of second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('second'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('seconds'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).startOf('s'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 4, 'keep the minutes'); - assert.equal(m.seconds(), 5, 'keep the seconds'); - assert.equal(m.milliseconds(), 0, 'strip out the milliseconds'); + test('reset offset with moment#local', function (assert) { + var a = moment([2012]).utcOffset(-480); + + assert.equal( + a.clone().local().hour(), + 0, + 'calling moment#local should reset the offset' + ); }); - test('end of second', function (assert) { - var m = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('second'), - ms = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('seconds'), - ma = moment(new Date(2011, 1, 2, 3, 4, 5, 6)).endOf('s'); - assert.equal(+m, +ms, 'Plural or singular should work'); - assert.equal(+m, +ma, 'Full or abbreviated should work'); - assert.equal(m.year(), 2011, 'keep the year'); - assert.equal(m.month(), 1, 'keep the month'); - assert.equal(m.date(), 2, 'keep the day'); - assert.equal(m.hours(), 3, 'keep the hours'); - assert.equal(m.minutes(), 4, 'keep the minutes'); - assert.equal(m.seconds(), 5, 'keep the seconds'); - assert.equal(m.milliseconds(), 999, 'set the seconds'); + test('toDate', function (assert) { + var zoneA = new Date(), + zoneB = moment(zoneA).utcOffset(-720).toDate(), + zoneC = moment(zoneA).utcOffset(-360).toDate(), + zoneD = moment(zoneA).utcOffset(690).toDate(); + + assert.equal( + +zoneA, + +zoneB, + 'moment#toDate should output a date with the right unix timestamp' + ); + assert.equal( + +zoneA, + +zoneC, + 'moment#toDate should output a date with the right unix timestamp' + ); + assert.equal( + +zoneA, + +zoneD, + 'moment#toDate should output a date with the right unix timestamp' + ); }); - test('startOf across DST +1', function (assert) { - var oldUpdateOffset = moment.updateOffset, - // Based on a real story somewhere in America/Los_Angeles - dstAt = moment('2014-03-09T02:00:00-08:00').parseZone(), - m; + test('same / before / after', function (assert) { + var zoneA = moment().utc(), + zoneB = moment(zoneA).utcOffset(-120), + zoneC = moment(zoneA).utcOffset(120); - moment.updateOffset = function (mom, keepTime) { - if (mom.isBefore(dstAt)) { - mom.utcOffset(-8, keepTime); - } else { - mom.utcOffset(-7, keepTime); - } - }; + assert.ok( + zoneA.isSame(zoneB), + 'two moments with different offsets should be the same' + ); + assert.ok( + zoneA.isSame(zoneC), + 'two moments with different offsets should be the same' + ); - m = moment('2014-03-15T00:00:00-07:00').parseZone(); - m.startOf('y'); - assert.equal(m.format(), '2014-01-01T00:00:00-08:00', 'startOf(\'year\') across +1'); + assert.ok( + zoneA.isSame(zoneB, 'hour'), + 'two moments with different offsets should be the same hour' + ); + assert.ok( + zoneA.isSame(zoneC, 'hour'), + 'two moments with different offsets should be the same hour' + ); - m = moment('2014-03-15T00:00:00-07:00').parseZone(); - m.startOf('M'); - assert.equal(m.format(), '2014-03-01T00:00:00-08:00', 'startOf(\'month\') across +1'); + zoneA.add(1, 'hour'); - m = moment('2014-03-09T09:00:00-07:00').parseZone(); - m.startOf('d'); - assert.equal(m.format(), '2014-03-09T00:00:00-08:00', 'startOf(\'day\') across +1'); + assert.ok( + zoneA.isAfter(zoneB), + 'isAfter should work with two moments with different offsets' + ); + assert.ok( + zoneA.isAfter(zoneC), + 'isAfter should work with two moments with different offsets' + ); - m = moment('2014-03-09T03:05:00-07:00').parseZone(); - m.startOf('h'); - assert.equal(m.format(), '2014-03-09T03:00:00-07:00', 'startOf(\'hour\') after +1'); + assert.ok( + zoneA.isAfter(zoneB, 'hour'), + 'isAfter:hour should work with two moments with different offsets' + ); + assert.ok( + zoneA.isAfter(zoneC, 'hour'), + 'isAfter:hour should work with two moments with different offsets' + ); - m = moment('2014-03-09T01:35:00-08:00').parseZone(); - m.startOf('h'); - assert.equal(m.format(), '2014-03-09T01:00:00-08:00', 'startOf(\'hour\') before +1'); + zoneA.subtract(2, 'hour'); - // There is no such time as 2:30-7 to try startOf('hour') across that + assert.ok( + zoneA.isBefore(zoneB), + 'isBefore should work with two moments with different offsets' + ); + assert.ok( + zoneA.isBefore(zoneC), + 'isBefore should work with two moments with different offsets' + ); - moment.updateOffset = oldUpdateOffset; + assert.ok( + zoneA.isBefore(zoneB, 'hour'), + 'isBefore:hour should work with two moments with different offsets' + ); + assert.ok( + zoneA.isBefore(zoneC, 'hour'), + 'isBefore:hour should work with two moments with different offsets' + ); }); - test('startOf across DST -1', function (assert) { - var oldUpdateOffset = moment.updateOffset, - // Based on a real story somewhere in America/Los_Angeles - dstAt = moment('2014-11-02T02:00:00-07:00').parseZone(), - m; + test('add / subtract over dst', function (assert) { + var oldOffset = moment.updateOffset, + m = moment.utc([2000, 2, 31, 3]); moment.updateOffset = function (mom, keepTime) { - if (mom.isBefore(dstAt)) { - mom.utcOffset(-7, keepTime); + if (mom.clone().utc().month() > 2) { + mom.utcOffset(60, keepTime); } else { - mom.utcOffset(-8, keepTime); + mom.utcOffset(0, keepTime); } }; - m = moment('2014-11-15T00:00:00-08:00').parseZone(); - m.startOf('y'); - assert.equal(m.format(), '2014-01-01T00:00:00-07:00', 'startOf(\'year\') across -1'); - - m = moment('2014-11-15T00:00:00-08:00').parseZone(); - m.startOf('M'); - assert.equal(m.format(), '2014-11-01T00:00:00-07:00', 'startOf(\'month\') across -1'); + assert.equal(m.hour(), 3, 'should start at 00:00'); - m = moment('2014-11-02T09:00:00-08:00').parseZone(); - m.startOf('d'); - assert.equal(m.format(), '2014-11-02T00:00:00-07:00', 'startOf(\'day\') across -1'); + m.add(24, 'hour'); - // note that utc offset is -8 - m = moment('2014-11-02T01:30:00-08:00').parseZone(); - m.startOf('h'); - assert.equal(m.format(), '2014-11-02T01:00:00-08:00', 'startOf(\'hour\') after +1'); + assert.equal(m.hour(), 4, 'adding 24 hours should disregard dst'); - // note that utc offset is -7 - m = moment('2014-11-02T01:30:00-07:00').parseZone(); - m.startOf('h'); - assert.equal(m.format(), '2014-11-02T01:00:00-07:00', 'startOf(\'hour\') before +1'); + m.subtract(24, 'hour'); - moment.updateOffset = oldUpdateOffset; - }); + assert.equal(m.hour(), 3, 'subtracting 24 hours should disregard dst'); - test('endOf millisecond and no-arg', function (assert) { - var m = moment(); - assert.equal(+m, +m.clone().endOf(), 'endOf without argument should change time'); - assert.equal(+m, +m.clone().endOf('ms'), 'endOf with ms argument should change time'); - assert.equal(+m, +m.clone().endOf('millisecond'), 'endOf with millisecond argument should change time'); - assert.equal(+m, +m.clone().endOf('milliseconds'), 'endOf with milliseconds argument should change time'); - }); + m.add(1, 'day'); - test('startOf for year zero', function (assert) { - var m = moment('0000-02-29T12:34:56.789Z').parseZone(); - assert.equal(m.clone().startOf('ms').toISOString(), '0000-02-29T12:34:56.789Z', 'startOf millisecond should preserve year'); - assert.equal(m.clone().startOf('s').toISOString(), '0000-02-29T12:34:56.000Z', 'startOf second should preserve year'); - assert.equal(m.clone().startOf('m').toISOString(), '0000-02-29T12:34:00.000Z', 'startOf minute should preserve year'); - assert.equal(m.clone().startOf('h').toISOString(), '0000-02-29T12:00:00.000Z', 'startOf hour should preserve year'); - assert.equal(m.clone().startOf('d').toISOString(), '0000-02-29T00:00:00.000Z', 'startOf day should preserve year'); - assert.equal(m.clone().startOf('M').toISOString(), '0000-02-01T00:00:00.000Z', 'startOf month should preserve year'); - assert.equal(m.clone().startOf('Q').toISOString(), '0000-01-01T00:00:00.000Z', 'startOf quarter should preserve year'); - assert.equal(m.clone().startOf('y').toISOString(), '0000-01-01T00:00:00.000Z', 'startOf year should preserve year'); - }); + assert.equal(m.hour(), 3, 'adding 1 day should have the same hour'); - test('endOf for year zero', function (assert) { - var m = moment('0000-02-29T12:34:56.789Z').parseZone(); - assert.equal(m.clone().endOf('ms').toISOString(), '0000-02-29T12:34:56.789Z', 'endOf millisecond should preserve year'); - assert.equal(m.clone().endOf('s').toISOString(), '0000-02-29T12:34:56.999Z', 'endOf second should preserve year'); - assert.equal(m.clone().endOf('m').toISOString(), '0000-02-29T12:34:59.999Z', 'endOf minute should preserve year'); - assert.equal(m.clone().endOf('h').toISOString(), '0000-02-29T12:59:59.999Z', 'endOf hour should preserve year'); - assert.equal(m.clone().endOf('d').toISOString(), '0000-02-29T23:59:59.999Z', 'endOf day should preserve year'); - assert.equal(m.clone().endOf('M').toISOString(), '0000-02-29T23:59:59.999Z', 'endOf month should preserve year'); - assert.equal(m.clone().endOf('Q').toISOString(), '0000-03-31T23:59:59.999Z', 'endOf quarter should preserve year'); - assert.equal(m.clone().endOf('y').toISOString(), '0000-12-31T23:59:59.999Z', 'endOf year should preserve year'); - }); + m.subtract(1, 'day'); -}))); + assert.equal(m.hour(), 3, 'subtracting 1 day should have the same hour'); + m.add(1, 'month'); -;(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'; + assert.equal(m.hour(), 3, 'adding 1 month should have the same hour'); - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } + m.subtract(1, 'month'); - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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; - }; - } + assert.equal(m.hour(), 3, 'subtracting 1 month should have the same hour'); - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + moment.updateOffset = oldOffset; + }); - 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(' ')); - } - } - } + test('isDST', function (assert) { + var oldOffset = moment.updateOffset; - 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; + moment.updateOffset = function (mom, keepTime) { + if (mom.month() > 2 && mom.month() < 9) { + mom.utcOffset(60, keepTime); + } else { + mom.utcOffset(0, keepTime); } - } - return -1; - } - - /*global QUnit:false*/ + }; - var test = QUnit.test; + assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst'); + assert.ok(moment().month(6).isDST(), 'Jul should be summer dst'); + assert.ok(!moment().month(11).isDST(), 'Dec should not be summer dst'); - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } + moment.updateOffset = function (mom) { + if (mom.month() > 2 && mom.month() < 9) { + mom.utcOffset(0); + } else { + mom.utcOffset(60); } - }); - } + }; - module$1('string prototype'); + assert.ok(moment().month(0).isDST(), 'Jan should be winter dst'); + assert.ok(!moment().month(6).isDST(), 'Jul should not be winter dst'); + assert.ok(moment().month(11).isDST(), 'Dec should be winter dst'); - test('string prototype overrides call', function (assert) { - var prior = String.prototype.call, b; - String.prototype.call = function () { - return null; - }; + moment.updateOffset = oldOffset; + }); - b = moment(new Date(2011, 7, 28, 15, 25, 50, 125)); - assert.equal(b.format('MMMM Do YYYY, h:mm a'), 'August 28th 2011, 3:25 pm'); + test('zone names', function (assert) { + assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty'); + assert.equal( + moment().format('z'), + '', + 'Local zone formatted abbr should be empty' + ); + assert.equal(moment().zoneName(), '', 'Local zone name should be empty'); + assert.equal( + moment().format('zz'), + '', + 'Local zone formatted name should be empty' + ); - String.prototype.call = prior; + assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC'); + assert.equal( + moment.utc().format('z'), + 'UTC', + 'UTC zone formatted abbr should be UTC' + ); + assert.equal( + moment.utc().zoneName(), + 'Coordinated Universal Time', + 'UTC zone abbr should be Coordinated Universal Time' + ); + assert.equal( + moment.utc().format('zz'), + 'Coordinated Universal Time', + 'UTC zone formatted abbr should be Coordinated Universal Time' + ); }); -}))); + test('hours alignment with UTC', function (assert) { + assert.equal(moment().utcOffset(-120).hasAlignedHourOffset(), true); + assert.equal(moment().utcOffset(180).hasAlignedHourOffset(), true); + assert.equal(moment().utcOffset(-90).hasAlignedHourOffset(), false); + assert.equal(moment().utcOffset(90).hasAlignedHourOffset(), false); + }); + test('hours alignment with other zone', function (assert) { + var m = moment().utcOffset(-120); -;(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'; + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false); - function each(array, callback) { - var i; - for (i = 0; i < array.length; i++) { - callback(array[i], i, array); - } - } + m = moment().utcOffset(-90); - function setupDeprecationHandler(test, moment$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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; - }; - } + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-30)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(30)), true); - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + m = moment().utcOffset(60); - 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(' ')); - } - } - } + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false); - 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; - } + m = moment().utcOffset(-25); - /*global QUnit:false*/ + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(35)), true); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-85)), true); - var test = QUnit.test; + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-35)), false); + assert.equal(m.hasAlignedHourOffset(moment().utcOffset(85)), false); + }); - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } - }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } - }); - } + test('parse zone', function (assert) { + var m = moment('2013-01-01T00:00:00-13:00').parseZone(); + assert.equal(m.utcOffset(), -13 * 60); + assert.equal(m.hours(), 0); + }); - module$1('to type'); + test('parse UTC zone', function (assert) { + var m = moment('2013-01-01T05:00:00+00:00').parseZone(); + assert.equal(m.utcOffset(), 0); + assert.equal(m.hours(), 5); + }); - test('toObject', function (assert) { - var expected = { - years:2010, - months:3, - date:5, - hours:15, - minutes:10, - seconds:3, - milliseconds:123 - }; - assert.deepEqual(moment(expected).toObject(), expected, 'toObject invalid'); + test('parse zone static', function (assert) { + var m = moment.parseZone('2013-01-01T00:00:00-13:00'); + assert.equal(m.utcOffset(), -13 * 60); + assert.equal(m.hours(), 0); }); - test('toArray', function (assert) { - var expected = [2014, 11, 26, 11, 46, 58, 17]; - assert.deepEqual(moment(expected).toArray(), expected, 'toArray invalid'); + test('parse zone with more arguments', function (assert) { + var m; + m = moment.parseZone('2013 01 01 05 -13:00', 'YYYY MM DD HH ZZ'); + assert.equal( + m.format(), + '2013-01-01T05:00:00-13:00', + 'accept input and format' + ); + m = moment.parseZone('2013-01-01-13:00', 'YYYY MM DD ZZ', true); + assert.equal(m.isValid(), false, 'accept input, format and strict flag'); + m = moment.parseZone('2013-01-01-13:00', [ + 'DD MM YYYY ZZ', + 'YYYY MM DD ZZ', + ]); + assert.equal( + m.format(), + '2013-01-01T00:00:00-13:00', + 'accept input and array of formats' + ); }); - test('toDate returns a copy of the internal date', function (assert) { - var m = moment(); - var d = m.toDate(); - m.year(0); - assert.notEqual(d, m.toDate()); + test('parse zone with a timezone from the format string', function (assert) { + var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY ZZ #####').parseZone(); + + assert.equal(m.utcOffset(), -4 * 60); }); - test('toJSON', function (assert) { - if (Date.prototype.toISOString) { - var expected = new Date().toISOString(); - assert.deepEqual(moment(expected).toJSON(), expected, 'toJSON invalid'); - } else { - // IE8 - assert.expect(0); - } + test('parse zone without a timezone included in the format string', function (assert) { + var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY').parseZone(); + + assert.equal(m.utcOffset(), 11 * 60); }); - test('toJSON works when moment is frozen', function (assert) { - if (Date.prototype.toISOString) { - var expected = new Date().toISOString(); - var m = moment(expected); - if (Object.freeze != null) { - Object.freeze(m); - } - assert.deepEqual(m.toJSON(), expected, 'toJSON when frozen invalid'); - } else { - // IE8 - assert.expect(0); - } + test('timezone format', function (assert) { + assert.equal(moment().utcOffset(60).format('ZZ'), '+0100', '-60 -> +0100'); + assert.equal(moment().utcOffset(90).format('ZZ'), '+0130', '-90 -> +0130'); + assert.equal( + moment().utcOffset(120).format('ZZ'), + '+0200', + '-120 -> +0200' + ); + + assert.equal(moment().utcOffset(-60).format('ZZ'), '-0100', '+60 -> -0100'); + assert.equal(moment().utcOffset(-90).format('ZZ'), '-0130', '+90 -> -0130'); + assert.equal( + moment().utcOffset(-120).format('ZZ'), + '-0200', + '+120 -> -0200' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -77512,27 +139201,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -77542,8 +139236,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -77556,7 +139252,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -77565,33 +139264,36 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('utc'); + module('utc'); test('utc and local', function (assert) { - var m = moment(Date.UTC(2011, 1, 2, 3, 4, 5, 6)), offset, expected; + var m = moment(Date.UTC(2011, 1, 2, 3, 4, 5, 6)), + offset, + expected; m.utc(); // utc assert.equal(m.date(), 2, 'the day should be correct for utc'); @@ -77609,8 +139311,16 @@ } offset = Math.floor(m.utcOffset() / 60); expected = (24 + 3 + offset) % 24; - assert.equal(m.hours(), expected, 'the hours (' + m.hours() + ') should be correct for local'); - assert.equal(moment().utc().utcOffset(), 0, 'timezone in utc should always be zero'); + assert.equal( + m.hours(), + expected, + 'the hours (' + m.hours() + ') should be correct for local' + ); + assert.equal( + moment().utc().utcOffset(), + 0, + 'timezone in utc should always be zero' + ); }); test('creating with utc and no arguments', function (assert) { @@ -77618,8 +139328,14 @@ momentDefaultUtcTime = moment.utc().valueOf(), afterMomentCreationTime = new Date().valueOf(); - assert.ok(startOfTest <= momentDefaultUtcTime, 'moment UTC default time should be now, not in the past'); - assert.ok(momentDefaultUtcTime <= afterMomentCreationTime, 'moment UTC default time should be now, not in the future'); + assert.ok( + startOfTest <= momentDefaultUtcTime, + 'moment UTC default time should be now, not in the past' + ); + assert.ok( + momentDefaultUtcTime <= afterMomentCreationTime, + 'moment UTC default time should be now, not in the future' + ); }); test('creating with utc and a date parameter array', function (assert) { @@ -77628,45 +139344,90 @@ assert.equal(m.hours(), 3, 'the hours should be correct for utc array'); m = moment.utc('2011-02-02 3:04:05', 'YYYY-MM-DD HH:mm:ss'); - assert.equal(m.date(), 2, 'the day should be correct for utc parsing format'); - assert.equal(m.hours(), 3, 'the hours should be correct for utc parsing format'); + assert.equal( + m.date(), + 2, + 'the day should be correct for utc parsing format' + ); + assert.equal( + m.hours(), + 3, + 'the hours should be correct for utc parsing format' + ); m = moment.utc('2011-02-02T03:04:05+00:00'); assert.equal(m.date(), 2, 'the day should be correct for utc parsing iso'); - assert.equal(m.hours(), 3, 'the hours should be correct for utc parsing iso'); + assert.equal( + m.hours(), + 3, + 'the hours should be correct for utc parsing iso' + ); }); test('creating with utc without timezone', function (assert) { var m = moment.utc('2012-01-02T08:20:00'); - assert.equal(m.date(), 2, 'the day should be correct for utc parse without timezone'); - assert.equal(m.hours(), 8, 'the hours should be correct for utc parse without timezone'); + assert.equal( + m.date(), + 2, + 'the day should be correct for utc parse without timezone' + ); + assert.equal( + m.hours(), + 8, + 'the hours should be correct for utc parse without timezone' + ); m = moment.utc('2012-01-02T08:20:00+09:00'); - assert.equal(m.date(), 1, 'the day should be correct for utc parse with timezone'); - assert.equal(m.hours(), 23, 'the hours should be correct for utc parse with timezone'); + assert.equal( + m.date(), + 1, + 'the day should be correct for utc parse with timezone' + ); + assert.equal( + m.hours(), + 23, + 'the hours should be correct for utc parse with timezone' + ); }); test('cloning with utc offset', function (assert) { var m = moment.utc('2012-01-02T08:20:00'); - assert.equal(moment.utc(m)._isUTC, true, 'the local offset should be converted to UTC'); - assert.equal(moment.utc(m.clone().utc())._isUTC, true, 'the local offset should stay in UTC'); + assert.equal( + moment.utc(m)._isUTC, + true, + 'the local offset should be converted to UTC' + ); + assert.equal( + moment.utc(m.clone().utc())._isUTC, + true, + 'the local offset should stay in UTC' + ); m.utcOffset(120); - assert.equal(moment.utc(m)._isUTC, true, 'the explicit utc offset should stay in UTC'); - assert.equal(moment.utc(m).utcOffset(), 0, 'the explicit utc offset should have an offset of 0'); + assert.equal( + moment.utc(m)._isUTC, + true, + 'the explicit utc offset should stay in UTC' + ); + assert.equal( + moment.utc(m).utcOffset(), + 0, + 'the explicit utc offset should have an offset of 0' + ); }); test('weekday with utc', function (assert) { assert.equal( moment('2013-09-15T00:00:00Z').utc().weekday(), // first minute of the day moment('2013-09-15T23:59:00Z').utc().weekday(), // last minute of the day - 'a UTC-moment\'s .weekday() should not be affected by the local timezone' + "a UTC-moment's .weekday() should not be affected by the local timezone" ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -77681,27 +139442,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -77711,8 +139477,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -77725,7 +139493,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -77734,514 +139505,1107 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('utc offset'); - - test('setter / getter blackbox', function (assert) { - var m = moment([2010]); - - assert.equal(m.clone().utcOffset(0).utcOffset(), 0, 'utcOffset 0'); - - assert.equal(m.clone().utcOffset(1).utcOffset(), 60, 'utcOffset 1 is 60'); - assert.equal(m.clone().utcOffset(60).utcOffset(), 60, 'utcOffset 60'); - assert.equal(m.clone().utcOffset('+01:00').utcOffset(), 60, 'utcOffset +01:00 is 60'); - assert.equal(m.clone().utcOffset('+0100').utcOffset(), 60, 'utcOffset +0100 is 60'); - - assert.equal(m.clone().utcOffset(-1).utcOffset(), -60, 'utcOffset -1 is -60'); - assert.equal(m.clone().utcOffset(-60).utcOffset(), -60, 'utcOffset -60'); - assert.equal(m.clone().utcOffset('-01:00').utcOffset(), -60, 'utcOffset -01:00 is -60'); - assert.equal(m.clone().utcOffset('-0100').utcOffset(), -60, 'utcOffset -0100 is -60'); - - assert.equal(m.clone().utcOffset(1.5).utcOffset(), 90, 'utcOffset 1.5 is 90'); - assert.equal(m.clone().utcOffset(90).utcOffset(), 90, 'utcOffset 1.5 is 90'); - assert.equal(m.clone().utcOffset('+01:30').utcOffset(), 90, 'utcOffset +01:30 is 90'); - assert.equal(m.clone().utcOffset('+0130').utcOffset(), 90, 'utcOffset +0130 is 90'); - - assert.equal(m.clone().utcOffset(-1.5).utcOffset(), -90, 'utcOffset -1.5'); - assert.equal(m.clone().utcOffset(-90).utcOffset(), -90, 'utcOffset -90'); - assert.equal(m.clone().utcOffset('-01:30').utcOffset(), -90, 'utcOffset +01:30 is 90'); - assert.equal(m.clone().utcOffset('-0130').utcOffset(), -90, 'utcOffset +0130 is 90'); - assert.equal(m.clone().utcOffset('+00:10').utcOffset(), 10, 'utcOffset +00:10 is 10'); - assert.equal(m.clone().utcOffset('-00:10').utcOffset(), -10, 'utcOffset +00:10 is 10'); - assert.equal(m.clone().utcOffset('+0010').utcOffset(), 10, 'utcOffset +0010 is 10'); - assert.equal(m.clone().utcOffset('-0010').utcOffset(), -10, 'utcOffset +0010 is 10'); - }); - - test('utcOffset shorthand hours -> minutes', function (assert) { - var i; - for (i = -15; i <= 15; ++i) { - assert.equal(moment().utcOffset(i).utcOffset(), i * 60, - '' + i + ' -> ' + i * 60); - } - assert.equal(moment().utcOffset(-16).utcOffset(), -16, '-16 -> -16'); - assert.equal(moment().utcOffset(16).utcOffset(), 16, '16 -> 16'); - }); - - test('isLocal, isUtc, isUtcOffset', function (assert) { - assert.ok(moment().isLocal(), 'moment() creates objects in local time'); - assert.ok(!moment.utc().isLocal(), 'moment.utc creates objects NOT in local time'); - assert.ok(moment.utc().local().isLocal(), 'moment.fn.local() converts to local time'); - assert.ok(!moment().utcOffset(5).isLocal(), 'moment.fn.utcOffset(N) puts objects NOT in local time'); - assert.ok(moment().utcOffset(5).local().isLocal(), 'moment.fn.local() converts to local time'); - - assert.ok(moment.utc().isUtc(), 'moment.utc() creates objects in utc time'); - assert.ok(moment().utcOffset(0).isUtc(), 'utcOffset(0) is equivalent to utc mode'); - assert.ok(!moment().utcOffset(1).isUtc(), 'utcOffset(1) is NOT equivalent to utc mode'); - - assert.ok(!moment().isUtcOffset(), 'moment() creates objects NOT in utc-offset mode'); - assert.ok(moment.utc().isUtcOffset(), 'moment.utc() creates objects in utc-offset mode'); - assert.ok(moment().utcOffset(3).isUtcOffset(), 'utcOffset(N != 0) creates objects in utc-offset mode'); - assert.ok(moment().utcOffset(0).isUtcOffset(), 'utcOffset(0) creates objects in utc-offset mode'); - }); - - test('isUTC', function (assert) { - assert.ok(moment.utc().isUTC(), 'moment.utc() creates objects in utc time'); - assert.ok(moment().utcOffset(0).isUTC(), 'utcOffset(0) is equivalent to utc mode'); - assert.ok(!moment().utcOffset(1).isUTC(), 'utcOffset(1) is NOT equivalent to utc mode'); - }); - - test('change hours when changing the utc offset', function (assert) { - var m = moment.utc([2000, 0, 1, 6]); - assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000'); - - // sanity check - m.utcOffset(0); - assert.equal(m.hour(), 6, 'UTC 6AM should be 6AM at +0000'); - - m.utcOffset(-60); - assert.equal(m.hour(), 5, 'UTC 6AM should be 5AM at -0100'); - - m.utcOffset(60); - assert.equal(m.hour(), 7, 'UTC 6AM should be 7AM at +0100'); - }); - - test('change minutes when changing the utc offset', function (assert) { - var m = moment.utc([2000, 0, 1, 6, 31]); - - m.utcOffset(0); - assert.equal(m.format('HH:mm'), '06:31', 'UTC 6:31AM should be 6:31AM at +0000'); - - m.utcOffset(-30); - assert.equal(m.format('HH:mm'), '06:01', 'UTC 6:31AM should be 6:01AM at -0030'); - - m.utcOffset(30); - assert.equal(m.format('HH:mm'), '07:01', 'UTC 6:31AM should be 7:01AM at +0030'); + module('week year'); - m.utcOffset(-1380); - assert.equal(m.format('HH:mm'), '07:31', 'UTC 6:31AM should be 7:31AM at +1380'); + test('iso week year', function (assert) { + // Some examples taken from https://en.wikipedia.org/wiki/ISO_week + assert.equal(moment([2005, 0, 1]).isoWeekYear(), 2004); + assert.equal(moment([2005, 0, 2]).isoWeekYear(), 2004); + assert.equal(moment([2005, 0, 3]).isoWeekYear(), 2005); + assert.equal(moment([2005, 11, 31]).isoWeekYear(), 2005); + assert.equal(moment([2006, 0, 1]).isoWeekYear(), 2005); + assert.equal(moment([2006, 0, 2]).isoWeekYear(), 2006); + assert.equal(moment([2007, 0, 1]).isoWeekYear(), 2007); + assert.equal(moment([2007, 11, 30]).isoWeekYear(), 2007); + assert.equal(moment([2007, 11, 31]).isoWeekYear(), 2008); + assert.equal(moment([2008, 0, 1]).isoWeekYear(), 2008); + assert.equal(moment([2008, 11, 28]).isoWeekYear(), 2008); + assert.equal(moment([2008, 11, 29]).isoWeekYear(), 2009); + assert.equal(moment([2008, 11, 30]).isoWeekYear(), 2009); + assert.equal(moment([2008, 11, 31]).isoWeekYear(), 2009); + assert.equal(moment([2009, 0, 1]).isoWeekYear(), 2009); + assert.equal(moment([2010, 0, 1]).isoWeekYear(), 2009); + assert.equal(moment([2010, 0, 2]).isoWeekYear(), 2009); + assert.equal(moment([2010, 0, 3]).isoWeekYear(), 2009); + assert.equal(moment([2010, 0, 4]).isoWeekYear(), 2010); }); - test('distance from the unix epoch', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA), - zoneC = moment(zoneA), - zoneD = moment(zoneA), - zoneE = moment(zoneA); - - zoneB.utc(); - assert.equal(+zoneA, +zoneB, 'moment should equal moment.utc'); - - zoneC.utcOffset(60); - assert.equal(+zoneA, +zoneC, 'moment should equal moment.utcOffset(60)'); - - zoneD.utcOffset(-480); - assert.equal(+zoneA, +zoneD, - 'moment should equal moment.utcOffset(-480)'); + test('week year', function (assert) { + // Some examples taken from https://en.wikipedia.org/wiki/ISO_week + moment.locale('dow: 1,doy: 4', { week: { dow: 1, doy: 4 } }); // like iso + assert.equal(moment([2005, 0, 1]).weekYear(), 2004); + assert.equal(moment([2005, 0, 2]).weekYear(), 2004); + assert.equal(moment([2005, 0, 3]).weekYear(), 2005); + assert.equal(moment([2005, 11, 31]).weekYear(), 2005); + assert.equal(moment([2006, 0, 1]).weekYear(), 2005); + assert.equal(moment([2006, 0, 2]).weekYear(), 2006); + assert.equal(moment([2007, 0, 1]).weekYear(), 2007); + assert.equal(moment([2007, 11, 30]).weekYear(), 2007); + assert.equal(moment([2007, 11, 31]).weekYear(), 2008); + assert.equal(moment([2008, 0, 1]).weekYear(), 2008); + assert.equal(moment([2008, 11, 28]).weekYear(), 2008); + assert.equal(moment([2008, 11, 29]).weekYear(), 2009); + assert.equal(moment([2008, 11, 30]).weekYear(), 2009); + assert.equal(moment([2008, 11, 31]).weekYear(), 2009); + assert.equal(moment([2009, 0, 1]).weekYear(), 2009); + assert.equal(moment([2010, 0, 1]).weekYear(), 2009); + assert.equal(moment([2010, 0, 2]).weekYear(), 2009); + assert.equal(moment([2010, 0, 3]).weekYear(), 2009); + assert.equal(moment([2010, 0, 4]).weekYear(), 2010); - zoneE.utcOffset(-1000); - assert.equal(+zoneA, +zoneE, - 'moment should equal moment.utcOffset(-1000)'); + moment.locale('dow: 1,doy: 7', { week: { dow: 1, doy: 7 } }); + assert.equal(moment([2004, 11, 26]).weekYear(), 2004); + assert.equal(moment([2004, 11, 27]).weekYear(), 2005); + assert.equal(moment([2005, 11, 25]).weekYear(), 2005); + assert.equal(moment([2005, 11, 26]).weekYear(), 2006); + assert.equal(moment([2006, 11, 31]).weekYear(), 2006); + assert.equal(moment([2007, 0, 1]).weekYear(), 2007); + assert.equal(moment([2007, 11, 30]).weekYear(), 2007); + assert.equal(moment([2007, 11, 31]).weekYear(), 2008); + assert.equal(moment([2008, 11, 28]).weekYear(), 2008); + assert.equal(moment([2008, 11, 29]).weekYear(), 2009); + assert.equal(moment([2009, 11, 27]).weekYear(), 2009); + assert.equal(moment([2009, 11, 28]).weekYear(), 2010); }); - test('update offset after changing any values', function (assert) { - var oldOffset = moment.updateOffset, - m = moment.utc([2000, 6, 1]); - - moment.updateOffset = function (mom, keepTime) { - if (mom.__doChange) { - if (+mom > 962409600000) { - mom.utcOffset(-120, keepTime); - } else { - mom.utcOffset(-60, keepTime); + // Verifies that the week number, week day computation is correct for all dow, doy combinations + test('week year roundtrip', function (assert) { + var dow, doy, wd, m, localeName; + for (dow = 0; dow < 7; ++dow) { + for (doy = dow; doy < dow + 7; ++doy) { + for (wd = 0; wd < 7; ++wd) { + localeName = 'dow: ' + dow + ', doy: ' + doy; + moment.locale(localeName, { week: { dow: dow, doy: doy } }); + // We use the 10th week as the 1st one can spill to the previous year + m = moment('2015 10 ' + wd, 'gggg w d', true); + assert.equal( + m.format('gggg w d'), + '2015 10 ' + wd, + 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd + ); + m = moment('2015 10 ' + wd, 'gggg w e', true); + assert.equal( + m.format('gggg w e'), + '2015 10 ' + wd, + 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd + ); + moment.defineLocale(localeName, null); } } - }; - - assert.equal(m.format('ZZ'), '+0000', 'should be at +0000'); - assert.equal(m.format('HH:mm'), '00:00', 'should start 12AM at +0000 timezone'); - - m.__doChange = true; - m.add(1, 'h'); - - assert.equal(m.format('ZZ'), '-0200', 'should be at -0200'); - assert.equal(m.format('HH:mm'), '23:00', '1AM at +0000 should be 11PM at -0200 timezone'); - - m.subtract(1, 'h'); - - assert.equal(m.format('ZZ'), '-0100', 'should be at -0100'); - assert.equal(m.format('HH:mm'), '23:00', '12AM at +0000 should be 11PM at -0100 timezone'); - - moment.updateOffset = oldOffset; - }); - - ////////////////// - test('getters and setters', function (assert) { - var a = moment([2011, 5, 20]); - - assert.equal(a.clone().utcOffset(-120).year(2012).year(), 2012, 'should get and set year correctly'); - assert.equal(a.clone().utcOffset(-120).month(1).month(), 1, 'should get and set month correctly'); - assert.equal(a.clone().utcOffset(-120).date(2).date(), 2, 'should get and set date correctly'); - assert.equal(a.clone().utcOffset(-120).day(1).day(), 1, 'should get and set day correctly'); - assert.equal(a.clone().utcOffset(-120).hour(1).hour(), 1, 'should get and set hour correctly'); - assert.equal(a.clone().utcOffset(-120).minute(1).minute(), 1, 'should get and set minute correctly'); - }); - - test('getters', function (assert) { - var a = moment.utc([2012, 0, 1, 0, 0, 0]); - - assert.equal(a.clone().utcOffset(-120).year(), 2011, 'should get year correctly'); - assert.equal(a.clone().utcOffset(-120).month(), 11, 'should get month correctly'); - assert.equal(a.clone().utcOffset(-120).date(), 31, 'should get date correctly'); - assert.equal(a.clone().utcOffset(-120).hour(), 22, 'should get hour correctly'); - assert.equal(a.clone().utcOffset(-120).minute(), 0, 'should get minute correctly'); - - assert.equal(a.clone().utcOffset(120).year(), 2012, 'should get year correctly'); - assert.equal(a.clone().utcOffset(120).month(), 0, 'should get month correctly'); - assert.equal(a.clone().utcOffset(120).date(), 1, 'should get date correctly'); - assert.equal(a.clone().utcOffset(120).hour(), 2, 'should get hour correctly'); - assert.equal(a.clone().utcOffset(120).minute(), 0, 'should get minute correctly'); - - assert.equal(a.clone().utcOffset(90).year(), 2012, 'should get year correctly'); - assert.equal(a.clone().utcOffset(90).month(), 0, 'should get month correctly'); - assert.equal(a.clone().utcOffset(90).date(), 1, 'should get date correctly'); - assert.equal(a.clone().utcOffset(90).hour(), 1, 'should get hour correctly'); - assert.equal(a.clone().utcOffset(90).minute(), 30, 'should get minute correctly'); - }); - - test('from', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA).utcOffset(-720), - zoneC = moment(zoneA).utcOffset(-360), - zoneD = moment(zoneA).utcOffset(690), - other = moment(zoneA).add(35, 'm'); - - assert.equal(zoneA.from(other), zoneB.from(other), 'moment#from should be the same in all zones'); - assert.equal(zoneA.from(other), zoneC.from(other), 'moment#from should be the same in all zones'); - assert.equal(zoneA.from(other), zoneD.from(other), 'moment#from should be the same in all zones'); - }); - - test('diff', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA).utcOffset(-720), - zoneC = moment(zoneA).utcOffset(-360), - zoneD = moment(zoneA).utcOffset(690), - other = moment(zoneA).add(35, 'm'); - - assert.equal(zoneA.diff(other), zoneB.diff(other), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other), zoneC.diff(other), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other), zoneD.diff(other), 'moment#diff should be the same in all zones'); - - assert.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - - assert.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - }); - - test('unix offset and timestamp', function (assert) { - var zoneA = moment(), - zoneB = moment(zoneA).utcOffset(-720), - zoneC = moment(zoneA).utcOffset(-360), - zoneD = moment(zoneA).utcOffset(690); - - assert.equal(zoneA.unix(), zoneB.unix(), 'moment#unix should be the same in all zones'); - assert.equal(zoneA.unix(), zoneC.unix(), 'moment#unix should be the same in all zones'); - assert.equal(zoneA.unix(), zoneD.unix(), 'moment#unix should be the same in all zones'); - - assert.equal(+zoneA, +zoneB, 'moment#valueOf should be the same in all zones'); - assert.equal(+zoneA, +zoneC, 'moment#valueOf should be the same in all zones'); - assert.equal(+zoneA, +zoneD, 'moment#valueOf should be the same in all zones'); - }); - - test('cloning', function (assert) { - assert.equal(moment().utcOffset(-120).clone().utcOffset(), -120, - 'explicit cloning should retain the offset'); - assert.equal(moment().utcOffset(120).clone().utcOffset(), 120, - 'explicit cloning should retain the offset'); - assert.equal(moment(moment().utcOffset(-120)).utcOffset(), -120, - 'implicit cloning should retain the offset'); - assert.equal(moment(moment().utcOffset(120)).utcOffset(), 120, - 'implicit cloning should retain the offset'); - }); - - test('start of / end of', function (assert) { - var a = moment.utc([2010, 1, 2, 0, 0, 0]).utcOffset(-450); - - assert.equal(a.clone().startOf('day').hour(), 0, - 'start of day should work on moments with utc offset'); - assert.equal(a.clone().startOf('day').minute(), 0, - 'start of day should work on moments with utc offset'); - assert.equal(a.clone().startOf('hour').minute(), 0, - 'start of hour should work on moments with utc offset'); - - assert.equal(a.clone().endOf('day').hour(), 23, - 'end of day should work on moments with utc offset'); - assert.equal(a.clone().endOf('day').minute(), 59, - 'end of day should work on moments with utc offset'); - assert.equal(a.clone().endOf('hour').minute(), 59, - 'end of hour should work on moments with utc offset'); - }); - - test('reset offset with moment#utc', function (assert) { - var a = moment.utc([2012]).utcOffset(-480); - - assert.equal(a.clone().hour(), 16, 'different utc offset should have different hour'); - assert.equal(a.clone().utc().hour(), 0, 'calling moment#utc should reset the offset'); - }); - - test('reset offset with moment#local', function (assert) { - var a = moment([2012]).utcOffset(-480); - - assert.equal(a.clone().local().hour(), 0, 'calling moment#local should reset the offset'); - }); - - test('toDate', function (assert) { - var zoneA = new Date(), - zoneB = moment(zoneA).utcOffset(-720).toDate(), - zoneC = moment(zoneA).utcOffset(-360).toDate(), - zoneD = moment(zoneA).utcOffset(690).toDate(); - - assert.equal(+zoneA, +zoneB, 'moment#toDate should output a date with the right unix timestamp'); - assert.equal(+zoneA, +zoneC, 'moment#toDate should output a date with the right unix timestamp'); - assert.equal(+zoneA, +zoneD, 'moment#toDate should output a date with the right unix timestamp'); - }); - - test('same / before / after', function (assert) { - var zoneA = moment().utc(), - zoneB = moment(zoneA).utcOffset(-120), - zoneC = moment(zoneA).utcOffset(120); - - assert.ok(zoneA.isSame(zoneB), 'two moments with different offsets should be the same'); - assert.ok(zoneA.isSame(zoneC), 'two moments with different offsets should be the same'); - - assert.ok(zoneA.isSame(zoneB, 'hour'), 'two moments with different offsets should be the same hour'); - assert.ok(zoneA.isSame(zoneC, 'hour'), 'two moments with different offsets should be the same hour'); - - zoneA.add(1, 'hour'); - - assert.ok(zoneA.isAfter(zoneB), 'isAfter should work with two moments with different offsets'); - assert.ok(zoneA.isAfter(zoneC), 'isAfter should work with two moments with different offsets'); - - assert.ok(zoneA.isAfter(zoneB, 'hour'), 'isAfter:hour should work with two moments with different offsets'); - assert.ok(zoneA.isAfter(zoneC, 'hour'), 'isAfter:hour should work with two moments with different offsets'); - - zoneA.subtract(2, 'hour'); - - assert.ok(zoneA.isBefore(zoneB), 'isBefore should work with two moments with different offsets'); - assert.ok(zoneA.isBefore(zoneC), 'isBefore should work with two moments with different offsets'); - - assert.ok(zoneA.isBefore(zoneB, 'hour'), 'isBefore:hour should work with two moments with different offsets'); - assert.ok(zoneA.isBefore(zoneC, 'hour'), 'isBefore:hour should work with two moments with different offsets'); - }); - - test('add / subtract over dst', function (assert) { - var oldOffset = moment.updateOffset, - m = moment.utc([2000, 2, 31, 3]); - - moment.updateOffset = function (mom, keepTime) { - if (mom.clone().utc().month() > 2) { - mom.utcOffset(60, keepTime); - } else { - mom.utcOffset(0, keepTime); - } - }; - - assert.equal(m.hour(), 3, 'should start at 00:00'); - - m.add(24, 'hour'); - - assert.equal(m.hour(), 4, 'adding 24 hours should disregard dst'); - - m.subtract(24, 'hour'); - - assert.equal(m.hour(), 3, 'subtracting 24 hours should disregard dst'); - - m.add(1, 'day'); - - assert.equal(m.hour(), 3, 'adding 1 day should have the same hour'); - - m.subtract(1, 'day'); - - assert.equal(m.hour(), 3, 'subtracting 1 day should have the same hour'); - - m.add(1, 'month'); - - assert.equal(m.hour(), 3, 'adding 1 month should have the same hour'); - - m.subtract(1, 'month'); - - assert.equal(m.hour(), 3, 'subtracting 1 month should have the same hour'); - - moment.updateOffset = oldOffset; - }); - - test('isDST', function (assert) { - var oldOffset = moment.updateOffset; - - moment.updateOffset = function (mom, keepTime) { - if (mom.month() > 2 && mom.month() < 9) { - mom.utcOffset(60, keepTime); - } else { - mom.utcOffset(0, keepTime); - } - }; - - assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst'); - assert.ok(moment().month(6).isDST(), 'Jul should be summer dst'); - assert.ok(!moment().month(11).isDST(), 'Dec should not be summer dst'); - - moment.updateOffset = function (mom) { - if (mom.month() > 2 && mom.month() < 9) { - mom.utcOffset(0); - } else { - mom.utcOffset(60); - } - }; - - assert.ok(moment().month(0).isDST(), 'Jan should be winter dst'); - assert.ok(!moment().month(6).isDST(), 'Jul should not be winter dst'); - assert.ok(moment().month(11).isDST(), 'Dec should be winter dst'); - - moment.updateOffset = oldOffset; + } }); - test('zone names', function (assert) { - assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty'); - assert.equal(moment().format('z'), '', 'Local zone formatted abbr should be empty'); - assert.equal(moment().zoneName(), '', 'Local zone name should be empty'); - assert.equal(moment().format('zz'), '', 'Local zone formatted name should be empty'); - - assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC'); - assert.equal(moment.utc().format('z'), 'UTC', 'UTC zone formatted abbr should be UTC'); - assert.equal(moment.utc().zoneName(), 'Coordinated Universal Time', 'UTC zone abbr should be Coordinated Universal Time'); - assert.equal(moment.utc().format('zz'), 'Coordinated Universal Time', 'UTC zone formatted abbr should be Coordinated Universal Time'); + test('week numbers 2012/2013', function (assert) { + moment.locale('dow: 6, doy: 12', { week: { dow: 6, doy: 12 } }); + assert.equal( + 52, + moment('2012-12-28', 'YYYY-MM-DD').week(), + '2012-12-28 is week 52' + ); // 51 -- should be 52? + assert.equal( + 1, + moment('2012-12-29', 'YYYY-MM-DD').week(), + '2012-12-29 is week 1' + ); // 52 -- should be 1 + assert.equal( + 1, + moment('2013-01-01', 'YYYY-MM-DD').week(), + '2013-01-01 is week 1' + ); // 52 -- should be 1 + assert.equal( + 2, + moment('2013-01-08', 'YYYY-MM-DD').week(), + '2013-01-08 is week 2' + ); // 53 -- should be 2 + assert.equal( + 2, + moment('2013-01-11', 'YYYY-MM-DD').week(), + '2013-01-11 is week 2' + ); // 53 -- should be 2 + assert.equal( + 3, + moment('2013-01-12', 'YYYY-MM-DD').week(), + '2013-01-12 is week 3' + ); // 1 -- should be 3 + assert.equal( + 52, + moment('2012-01-01', 'YYYY-MM-DD').weeksInYear(), + 'weeks in 2012 are 52' + ); // 52 + moment.defineLocale('dow: 6, doy: 12', null); }); - test('hours alignment with UTC', function (assert) { - assert.equal(moment().utcOffset(-120).hasAlignedHourOffset(), true); - assert.equal(moment().utcOffset(180).hasAlignedHourOffset(), true); - assert.equal(moment().utcOffset(-90).hasAlignedHourOffset(), false); - assert.equal(moment().utcOffset(90).hasAlignedHourOffset(), false); + test('weeks numbers dow:1 doy:4', function (assert) { + moment.locale('dow: 1, doy: 4', { week: { dow: 1, doy: 4 } }); + assert.equal( + moment([2012, 0, 1]).week(), + 52, + 'Jan 1 2012 should be week 52' + ); + assert.equal( + moment([2012, 0, 2]).week(), + 1, + 'Jan 2 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).week(), + 1, + 'Jan 8 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 9]).week(), + 2, + 'Jan 9 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).week(), + 2, + 'Jan 15 2012 should be week 2' + ); + assert.equal( + moment([2007, 0, 1]).week(), + 1, + 'Jan 1 2007 should be week 1' + ); + assert.equal( + moment([2007, 0, 7]).week(), + 1, + 'Jan 7 2007 should be week 1' + ); + assert.equal( + moment([2007, 0, 8]).week(), + 2, + 'Jan 8 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 14]).week(), + 2, + 'Jan 14 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 15]).week(), + 3, + 'Jan 15 2007 should be week 3' + ); + assert.equal( + moment([2007, 11, 31]).week(), + 1, + 'Dec 31 2007 should be week 1' + ); + assert.equal( + moment([2008, 0, 1]).week(), + 1, + 'Jan 1 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 6]).week(), + 1, + 'Jan 6 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 7]).week(), + 2, + 'Jan 7 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 13]).week(), + 2, + 'Jan 13 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 14]).week(), + 3, + 'Jan 14 2008 should be week 3' + ); + assert.equal( + moment([2002, 11, 30]).week(), + 1, + 'Dec 30 2002 should be week 1' + ); + assert.equal( + moment([2003, 0, 1]).week(), + 1, + 'Jan 1 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 5]).week(), + 1, + 'Jan 5 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 6]).week(), + 2, + 'Jan 6 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 12]).week(), + 2, + 'Jan 12 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 13]).week(), + 3, + 'Jan 13 2003 should be week 3' + ); + assert.equal( + moment([2008, 11, 29]).week(), + 1, + 'Dec 29 2008 should be week 1' + ); + assert.equal( + moment([2009, 0, 1]).week(), + 1, + 'Jan 1 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 4]).week(), + 1, + 'Jan 4 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 5]).week(), + 2, + 'Jan 5 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 11]).week(), + 2, + 'Jan 11 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 13]).week(), + 3, + 'Jan 12 2009 should be week 3' + ); + assert.equal( + moment([2009, 11, 28]).week(), + 53, + 'Dec 28 2009 should be week 53' + ); + assert.equal( + moment([2010, 0, 1]).week(), + 53, + 'Jan 1 2010 should be week 53' + ); + assert.equal( + moment([2010, 0, 3]).week(), + 53, + 'Jan 3 2010 should be week 53' + ); + assert.equal( + moment([2010, 0, 4]).week(), + 1, + 'Jan 4 2010 should be week 1' + ); + assert.equal( + moment([2010, 0, 10]).week(), + 1, + 'Jan 10 2010 should be week 1' + ); + assert.equal( + moment([2010, 0, 11]).week(), + 2, + 'Jan 11 2010 should be week 2' + ); + assert.equal( + moment([2010, 11, 27]).week(), + 52, + 'Dec 27 2010 should be week 52' + ); + assert.equal( + moment([2011, 0, 1]).week(), + 52, + 'Jan 1 2011 should be week 52' + ); + assert.equal( + moment([2011, 0, 2]).week(), + 52, + 'Jan 2 2011 should be week 52' + ); + assert.equal( + moment([2011, 0, 3]).week(), + 1, + 'Jan 3 2011 should be week 1' + ); + assert.equal( + moment([2011, 0, 9]).week(), + 1, + 'Jan 9 2011 should be week 1' + ); + assert.equal( + moment([2011, 0, 10]).week(), + 2, + 'Jan 10 2011 should be week 2' + ); + moment.defineLocale('dow: 1, doy: 4', null); }); - test('hours alignment with other zone', function (assert) { - var m = moment().utcOffset(-120); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false); - - m = moment().utcOffset(-90); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-30)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(30)), true); - - m = moment().utcOffset(60); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-180)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(180)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-90)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(90)), false); - - m = moment().utcOffset(-25); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(35)), true); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-85)), true); - - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(-35)), false); - assert.equal(m.hasAlignedHourOffset(moment().utcOffset(85)), false); + test('weeks numbers dow:6 doy:12', function (assert) { + moment.locale('dow: 6, doy: 12', { week: { dow: 6, doy: 12 } }); + assert.equal( + moment([2011, 11, 31]).week(), + 1, + 'Dec 31 2011 should be week 1' + ); + assert.equal( + moment([2012, 0, 6]).week(), + 1, + 'Jan 6 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 7]).week(), + 2, + 'Jan 7 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 13]).week(), + 2, + 'Jan 13 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 14]).week(), + 3, + 'Jan 14 2012 should be week 3' + ); + assert.equal( + moment([2006, 11, 30]).week(), + 1, + 'Dec 30 2006 should be week 1' + ); + assert.equal( + moment([2007, 0, 5]).week(), + 1, + 'Jan 5 2007 should be week 1' + ); + assert.equal( + moment([2007, 0, 6]).week(), + 2, + 'Jan 6 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 12]).week(), + 2, + 'Jan 12 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 13]).week(), + 3, + 'Jan 13 2007 should be week 3' + ); + assert.equal( + moment([2007, 11, 29]).week(), + 1, + 'Dec 29 2007 should be week 1' + ); + assert.equal( + moment([2008, 0, 1]).week(), + 1, + 'Jan 1 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 4]).week(), + 1, + 'Jan 4 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 5]).week(), + 2, + 'Jan 5 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 11]).week(), + 2, + 'Jan 11 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 12]).week(), + 3, + 'Jan 12 2008 should be week 3' + ); + assert.equal( + moment([2002, 11, 28]).week(), + 1, + 'Dec 28 2002 should be week 1' + ); + assert.equal( + moment([2003, 0, 1]).week(), + 1, + 'Jan 1 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 3]).week(), + 1, + 'Jan 3 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 4]).week(), + 2, + 'Jan 4 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 10]).week(), + 2, + 'Jan 10 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 11]).week(), + 3, + 'Jan 11 2003 should be week 3' + ); + assert.equal( + moment([2008, 11, 27]).week(), + 1, + 'Dec 27 2008 should be week 1' + ); + assert.equal( + moment([2009, 0, 1]).week(), + 1, + 'Jan 1 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 2]).week(), + 1, + 'Jan 2 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 3]).week(), + 2, + 'Jan 3 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 9]).week(), + 2, + 'Jan 9 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 10]).week(), + 3, + 'Jan 10 2009 should be week 3' + ); + assert.equal( + moment([2009, 11, 26]).week(), + 1, + 'Dec 26 2009 should be week 1' + ); + assert.equal( + moment([2010, 0, 1]).week(), + 1, + 'Jan 1 2010 should be week 1' + ); + assert.equal( + moment([2010, 0, 2]).week(), + 2, + 'Jan 2 2010 should be week 2' + ); + assert.equal( + moment([2010, 0, 8]).week(), + 2, + 'Jan 8 2010 should be week 2' + ); + assert.equal( + moment([2010, 0, 9]).week(), + 3, + 'Jan 9 2010 should be week 3' + ); + assert.equal( + moment([2011, 0, 1]).week(), + 1, + 'Jan 1 2011 should be week 1' + ); + assert.equal( + moment([2011, 0, 7]).week(), + 1, + 'Jan 7 2011 should be week 1' + ); + assert.equal( + moment([2011, 0, 8]).week(), + 2, + 'Jan 8 2011 should be week 2' + ); + assert.equal( + moment([2011, 0, 14]).week(), + 2, + 'Jan 14 2011 should be week 2' + ); + assert.equal( + moment([2011, 0, 15]).week(), + 3, + 'Jan 15 2011 should be week 3' + ); + moment.defineLocale('dow: 6, doy: 12', null); }); - test('parse zone', function (assert) { - var m = moment('2013-01-01T00:00:00-13:00').parseZone(); - assert.equal(m.utcOffset(), -13 * 60); - assert.equal(m.hours(), 0); + test('weeks numbers dow:1 doy:7', function (assert) { + moment.locale('dow: 1, doy: 7', { week: { dow: 1, doy: 7 } }); + assert.equal( + moment([2011, 11, 26]).week(), + 1, + 'Dec 26 2011 should be week 1' + ); + assert.equal( + moment([2012, 0, 1]).week(), + 1, + 'Jan 1 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 2]).week(), + 2, + 'Jan 2 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 8]).week(), + 2, + 'Jan 8 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 9]).week(), + 3, + 'Jan 9 2012 should be week 3' + ); + assert.equal( + moment([2007, 0, 1]).week(), + 1, + 'Jan 1 2007 should be week 1' + ); + assert.equal( + moment([2007, 0, 7]).week(), + 1, + 'Jan 7 2007 should be week 1' + ); + assert.equal( + moment([2007, 0, 8]).week(), + 2, + 'Jan 8 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 14]).week(), + 2, + 'Jan 14 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 15]).week(), + 3, + 'Jan 15 2007 should be week 3' + ); + assert.equal( + moment([2007, 11, 31]).week(), + 1, + 'Dec 31 2007 should be week 1' + ); + assert.equal( + moment([2008, 0, 1]).week(), + 1, + 'Jan 1 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 6]).week(), + 1, + 'Jan 6 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 7]).week(), + 2, + 'Jan 7 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 13]).week(), + 2, + 'Jan 13 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 14]).week(), + 3, + 'Jan 14 2008 should be week 3' + ); + assert.equal( + moment([2002, 11, 30]).week(), + 1, + 'Dec 30 2002 should be week 1' + ); + assert.equal( + moment([2003, 0, 1]).week(), + 1, + 'Jan 1 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 5]).week(), + 1, + 'Jan 5 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 6]).week(), + 2, + 'Jan 6 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 12]).week(), + 2, + 'Jan 12 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 13]).week(), + 3, + 'Jan 13 2003 should be week 3' + ); + assert.equal( + moment([2008, 11, 29]).week(), + 1, + 'Dec 29 2008 should be week 1' + ); + assert.equal( + moment([2009, 0, 1]).week(), + 1, + 'Jan 1 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 4]).week(), + 1, + 'Jan 4 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 5]).week(), + 2, + 'Jan 5 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 11]).week(), + 2, + 'Jan 11 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 12]).week(), + 3, + 'Jan 12 2009 should be week 3' + ); + assert.equal( + moment([2009, 11, 28]).week(), + 1, + 'Dec 28 2009 should be week 1' + ); + assert.equal( + moment([2010, 0, 1]).week(), + 1, + 'Jan 1 2010 should be week 1' + ); + assert.equal( + moment([2010, 0, 3]).week(), + 1, + 'Jan 3 2010 should be week 1' + ); + assert.equal( + moment([2010, 0, 4]).week(), + 2, + 'Jan 4 2010 should be week 2' + ); + assert.equal( + moment([2010, 0, 10]).week(), + 2, + 'Jan 10 2010 should be week 2' + ); + assert.equal( + moment([2010, 0, 11]).week(), + 3, + 'Jan 11 2010 should be week 3' + ); + assert.equal( + moment([2010, 11, 27]).week(), + 1, + 'Dec 27 2010 should be week 1' + ); + assert.equal( + moment([2011, 0, 1]).week(), + 1, + 'Jan 1 2011 should be week 1' + ); + assert.equal( + moment([2011, 0, 2]).week(), + 1, + 'Jan 2 2011 should be week 1' + ); + assert.equal( + moment([2011, 0, 3]).week(), + 2, + 'Jan 3 2011 should be week 2' + ); + assert.equal( + moment([2011, 0, 9]).week(), + 2, + 'Jan 9 2011 should be week 2' + ); + assert.equal( + moment([2011, 0, 10]).week(), + 3, + 'Jan 10 2011 should be week 3' + ); + moment.defineLocale('dow: 1, doy: 7', null); }); - test('parse UTC zone', function (assert) { - var m = moment('2013-01-01T05:00:00+00:00').parseZone(); - assert.equal(m.utcOffset(), 0); - assert.equal(m.hours(), 5); + test('weeks numbers dow:0 doy:6', function (assert) { + moment.locale('dow: 0, doy: 6', { week: { dow: 0, doy: 6 } }); + assert.equal( + moment([2012, 0, 1]).week(), + 1, + 'Jan 1 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 7]).week(), + 1, + 'Jan 7 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).week(), + 2, + 'Jan 8 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 14]).week(), + 2, + 'Jan 14 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).week(), + 3, + 'Jan 15 2012 should be week 3' + ); + assert.equal( + moment([2006, 11, 31]).week(), + 1, + 'Dec 31 2006 should be week 1' + ); + assert.equal( + moment([2007, 0, 1]).week(), + 1, + 'Jan 1 2007 should be week 1' + ); + assert.equal( + moment([2007, 0, 6]).week(), + 1, + 'Jan 6 2007 should be week 1' + ); + assert.equal( + moment([2007, 0, 7]).week(), + 2, + 'Jan 7 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 13]).week(), + 2, + 'Jan 13 2007 should be week 2' + ); + assert.equal( + moment([2007, 0, 14]).week(), + 3, + 'Jan 14 2007 should be week 3' + ); + assert.equal( + moment([2007, 11, 29]).week(), + 52, + 'Dec 29 2007 should be week 52' + ); + assert.equal( + moment([2008, 0, 1]).week(), + 1, + 'Jan 1 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 5]).week(), + 1, + 'Jan 5 2008 should be week 1' + ); + assert.equal( + moment([2008, 0, 6]).week(), + 2, + 'Jan 6 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 12]).week(), + 2, + 'Jan 12 2008 should be week 2' + ); + assert.equal( + moment([2008, 0, 13]).week(), + 3, + 'Jan 13 2008 should be week 3' + ); + assert.equal( + moment([2002, 11, 29]).week(), + 1, + 'Dec 29 2002 should be week 1' + ); + assert.equal( + moment([2003, 0, 1]).week(), + 1, + 'Jan 1 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 4]).week(), + 1, + 'Jan 4 2003 should be week 1' + ); + assert.equal( + moment([2003, 0, 5]).week(), + 2, + 'Jan 5 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 11]).week(), + 2, + 'Jan 11 2003 should be week 2' + ); + assert.equal( + moment([2003, 0, 12]).week(), + 3, + 'Jan 12 2003 should be week 3' + ); + assert.equal( + moment([2008, 11, 28]).week(), + 1, + 'Dec 28 2008 should be week 1' + ); + assert.equal( + moment([2009, 0, 1]).week(), + 1, + 'Jan 1 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 3]).week(), + 1, + 'Jan 3 2009 should be week 1' + ); + assert.equal( + moment([2009, 0, 4]).week(), + 2, + 'Jan 4 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 10]).week(), + 2, + 'Jan 10 2009 should be week 2' + ); + assert.equal( + moment([2009, 0, 11]).week(), + 3, + 'Jan 11 2009 should be week 3' + ); + assert.equal( + moment([2009, 11, 27]).week(), + 1, + 'Dec 27 2009 should be week 1' + ); + assert.equal( + moment([2010, 0, 1]).week(), + 1, + 'Jan 1 2010 should be week 1' + ); + assert.equal( + moment([2010, 0, 2]).week(), + 1, + 'Jan 2 2010 should be week 1' + ); + assert.equal( + moment([2010, 0, 3]).week(), + 2, + 'Jan 3 2010 should be week 2' + ); + assert.equal( + moment([2010, 0, 9]).week(), + 2, + 'Jan 9 2010 should be week 2' + ); + assert.equal( + moment([2010, 0, 10]).week(), + 3, + 'Jan 10 2010 should be week 3' + ); + assert.equal( + moment([2010, 11, 26]).week(), + 1, + 'Dec 26 2010 should be week 1' + ); + assert.equal( + moment([2011, 0, 1]).week(), + 1, + 'Jan 1 2011 should be week 1' + ); + assert.equal( + moment([2011, 0, 2]).week(), + 2, + 'Jan 2 2011 should be week 2' + ); + assert.equal( + moment([2011, 0, 8]).week(), + 2, + 'Jan 8 2011 should be week 2' + ); + assert.equal( + moment([2011, 0, 9]).week(), + 3, + 'Jan 9 2011 should be week 3' + ); + moment.defineLocale('dow: 0, doy: 6', null); }); - test('parse zone static', function (assert) { - var m = moment.parseZone('2013-01-01T00:00:00-13:00'); - assert.equal(m.utcOffset(), -13 * 60); - assert.equal(m.hours(), 0); + test('week year overflows', function (assert) { + assert.equal( + '2005-01-01', + moment.utc('2004-W53-6', moment.ISO_8601, true).format('YYYY-MM-DD'), + '2004-W53-6 is 1st Jan 2005' + ); + assert.equal( + '2007-12-31', + moment.utc('2008-W01-1', moment.ISO_8601, true).format('YYYY-MM-DD'), + '2008-W01-1 is 31st Dec 2007' + ); }); - test('parse zone with more arguments', function (assert) { - var m; - m = moment.parseZone('2013 01 01 05 -13:00', 'YYYY MM DD HH ZZ'); - assert.equal(m.format(), '2013-01-01T05:00:00-13:00', 'accept input and format'); - m = moment.parseZone('2013-01-01-13:00', 'YYYY MM DD ZZ', true); - assert.equal(m.isValid(), false, 'accept input, format and strict flag'); - m = moment.parseZone('2013-01-01-13:00', ['DD MM YYYY ZZ', 'YYYY MM DD ZZ']); - assert.equal(m.format(), '2013-01-01T00:00:00-13:00', 'accept input and array of formats'); + test('weeks overflow', function (assert) { + assert.equal( + 7, + moment.utc('2004-W54-1', moment.ISO_8601, true).parsingFlags().overflow, + '2004 has only 53 weeks' + ); + assert.equal( + 7, + moment.utc('2004-W00-1', moment.ISO_8601, true).parsingFlags().overflow, + 'there is no 0th week' + ); }); - test('parse zone with a timezone from the format string', function (assert) { - var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY ZZ #####').parseZone(); - - assert.equal(m.utcOffset(), -4 * 60); + test('weekday overflow', function (assert) { + assert.equal( + 8, + moment.utc('2004-W30-0', moment.ISO_8601, true).parsingFlags().overflow, + 'there is no 0 iso weekday' + ); + assert.equal( + 8, + moment.utc('2004-W30-8', moment.ISO_8601, true).parsingFlags().overflow, + 'there is no 8 iso weekday' + ); + assert.equal( + 8, + moment.utc('2004-w30-7', 'gggg-[w]ww-e', true).parsingFlags().overflow, + "there is no 7 'e' weekday" + ); + assert.equal( + 8, + moment.utc('2004-w30-7', 'gggg-[w]ww-d', true).parsingFlags().overflow, + "there is no 7 'd' weekday" + ); }); - test('parse zone without a timezone included in the format string', function (assert) { - var m = moment('11-12-2013 -0400 +1100', 'DD-MM-YYYY').parseZone(); - - assert.equal(m.utcOffset(), 11 * 60); - }); + test('week year setter works', function (assert) { + for (var year = 2000; year <= 2020; year += 1) { + assert.equal( + moment + .utc('2012-12-31T00:00:00.000Z') + .isoWeekYear(year) + .isoWeekYear(), + year, + 'setting iso-week-year to ' + year + ); + assert.equal( + moment.utc('2012-12-31T00:00:00.000Z').weekYear(year).weekYear(), + year, + 'setting week-year to ' + year + ); + } - test('timezone format', function (assert) { - assert.equal(moment().utcOffset(60).format('ZZ'), '+0100', '-60 -> +0100'); - assert.equal(moment().utcOffset(90).format('ZZ'), '+0130', '-90 -> +0130'); - assert.equal(moment().utcOffset(120).format('ZZ'), '+0200', '-120 -> +0200'); + assert.equal( + moment + .utc('2004-W53-1', moment.ISO_8601, true) + .isoWeekYear(2013) + .format('GGGG-[W]WW-E'), + '2013-W52-1', + '2004-W53-1 to 2013' + ); + assert.equal( + moment + .utc('2004-W53-1', moment.ISO_8601, true) + .isoWeekYear(2020) + .format('GGGG-[W]WW-E'), + '2020-W53-1', + '2004-W53-1 to 2020' + ); + assert.equal( + moment + .utc('2005-W52-1', moment.ISO_8601, true) + .isoWeekYear(2004) + .format('GGGG-[W]WW-E'), + '2004-W52-1', + '2005-W52-1 to 2004' + ); + assert.equal( + moment + .utc('2013-W30-4', moment.ISO_8601, true) + .isoWeekYear(2015) + .format('GGGG-[W]WW-E'), + '2015-W30-4', + '2013-W30-4 to 2015' + ); - assert.equal(moment().utcOffset(-60).format('ZZ'), '-0100', '+60 -> -0100'); - assert.equal(moment().utcOffset(-90).format('ZZ'), '-0130', '+90 -> -0130'); - assert.equal(moment().utcOffset(-120).format('ZZ'), '-0200', '+120 -> -0200'); + assert.equal( + moment + .utc('2005-w53-0', 'gggg-[w]ww-e', true) + .weekYear(2013) + .format('gggg-[w]ww-e'), + '2013-w52-0', + '2005-w53-0 to 2013' + ); + assert.equal( + moment + .utc('2005-w53-0', 'gggg-[w]ww-e', true) + .weekYear(2016) + .format('gggg-[w]ww-e'), + '2016-w53-0', + '2005-w53-0 to 2016' + ); + assert.equal( + moment + .utc('2004-w52-0', 'gggg-[w]ww-e', true) + .weekYear(2005) + .format('gggg-[w]ww-e'), + '2005-w52-0', + '2004-w52-0 to 2005' + ); + assert.equal( + moment + .utc('2013-w30-4', 'gggg-[w]ww-e', true) + .weekYear(2015) + .format('gggg-[w]ww-e'), + '2015-w30-4', + '2013-w30-4 to 2015' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -78256,27 +140620,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -78286,8 +140655,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -78300,7 +140671,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -78309,338 +140683,502 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('week year'); + module('week day'); - test('iso week year', function (assert) { - // Some examples taken from https://en.wikipedia.org/wiki/ISO_week - assert.equal(moment([2005, 0, 1]).isoWeekYear(), 2004); - assert.equal(moment([2005, 0, 2]).isoWeekYear(), 2004); - assert.equal(moment([2005, 0, 3]).isoWeekYear(), 2005); - assert.equal(moment([2005, 11, 31]).isoWeekYear(), 2005); - assert.equal(moment([2006, 0, 1]).isoWeekYear(), 2005); - assert.equal(moment([2006, 0, 2]).isoWeekYear(), 2006); - assert.equal(moment([2007, 0, 1]).isoWeekYear(), 2007); - assert.equal(moment([2007, 11, 30]).isoWeekYear(), 2007); - assert.equal(moment([2007, 11, 31]).isoWeekYear(), 2008); - assert.equal(moment([2008, 0, 1]).isoWeekYear(), 2008); - assert.equal(moment([2008, 11, 28]).isoWeekYear(), 2008); - assert.equal(moment([2008, 11, 29]).isoWeekYear(), 2009); - assert.equal(moment([2008, 11, 30]).isoWeekYear(), 2009); - assert.equal(moment([2008, 11, 31]).isoWeekYear(), 2009); - assert.equal(moment([2009, 0, 1]).isoWeekYear(), 2009); - assert.equal(moment([2010, 0, 1]).isoWeekYear(), 2009); - assert.equal(moment([2010, 0, 2]).isoWeekYear(), 2009); - assert.equal(moment([2010, 0, 3]).isoWeekYear(), 2009); - assert.equal(moment([2010, 0, 4]).isoWeekYear(), 2010); + test('iso weekday', function (assert) { + var i; + + for (i = 0; i < 7; ++i) { + moment.locale('dow:' + i + ',doy: 6', { week: { dow: i, doy: 6 } }); + assert.equal( + moment([1985, 1, 4]).isoWeekday(), + 1, + 'Feb 4 1985 is Monday -- 1st day' + ); + assert.equal( + moment([2029, 8, 18]).isoWeekday(), + 2, + 'Sep 18 2029 is Tuesday -- 2nd day' + ); + assert.equal( + moment([2013, 3, 24]).isoWeekday(), + 3, + 'Apr 24 2013 is Wednesday -- 3rd day' + ); + assert.equal( + moment([2015, 2, 5]).isoWeekday(), + 4, + 'Mar 5 2015 is Thursday -- 4th day' + ); + assert.equal( + moment([1970, 0, 2]).isoWeekday(), + 5, + 'Jan 2 1970 is Friday -- 5th day' + ); + assert.equal( + moment([2001, 4, 12]).isoWeekday(), + 6, + 'May 12 2001 is Saturday -- 6th day' + ); + assert.equal( + moment([2000, 0, 2]).isoWeekday(), + 7, + 'Jan 2 2000 is Sunday -- 7th day' + ); + } }); - test('week year', function (assert) { - // Some examples taken from https://en.wikipedia.org/wiki/ISO_week - moment.locale('dow: 1,doy: 4', {week: {dow: 1, doy: 4}}); // like iso - assert.equal(moment([2005, 0, 1]).weekYear(), 2004); - assert.equal(moment([2005, 0, 2]).weekYear(), 2004); - assert.equal(moment([2005, 0, 3]).weekYear(), 2005); - assert.equal(moment([2005, 11, 31]).weekYear(), 2005); - assert.equal(moment([2006, 0, 1]).weekYear(), 2005); - assert.equal(moment([2006, 0, 2]).weekYear(), 2006); - assert.equal(moment([2007, 0, 1]).weekYear(), 2007); - assert.equal(moment([2007, 11, 30]).weekYear(), 2007); - assert.equal(moment([2007, 11, 31]).weekYear(), 2008); - assert.equal(moment([2008, 0, 1]).weekYear(), 2008); - assert.equal(moment([2008, 11, 28]).weekYear(), 2008); - assert.equal(moment([2008, 11, 29]).weekYear(), 2009); - assert.equal(moment([2008, 11, 30]).weekYear(), 2009); - assert.equal(moment([2008, 11, 31]).weekYear(), 2009); - assert.equal(moment([2009, 0, 1]).weekYear(), 2009); - assert.equal(moment([2010, 0, 1]).weekYear(), 2009); - assert.equal(moment([2010, 0, 2]).weekYear(), 2009); - assert.equal(moment([2010, 0, 3]).weekYear(), 2009); - assert.equal(moment([2010, 0, 4]).weekYear(), 2010); + test('iso weekday setter', function (assert) { + var a = moment([2011, 0, 10]); + assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from mon to mon'); + assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from mon to thu'); + assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from mon to sun'); + assert.equal( + moment(a).isoWeekday(-6).date(), + 3, + 'set from mon to last mon' + ); + assert.equal( + moment(a).isoWeekday(-3).date(), + 6, + 'set from mon to last thu' + ); + assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from mon to last sun'); + assert.equal( + moment(a).isoWeekday(8).date(), + 17, + 'set from mon to next mon' + ); + assert.equal( + moment(a).isoWeekday(11).date(), + 20, + 'set from mon to next thu' + ); + assert.equal( + moment(a).isoWeekday(14).date(), + 23, + 'set from mon to next sun' + ); - moment.locale('dow: 1,doy: 7', {week: {dow: 1, doy: 7}}); - assert.equal(moment([2004, 11, 26]).weekYear(), 2004); - assert.equal(moment([2004, 11, 27]).weekYear(), 2005); - assert.equal(moment([2005, 11, 25]).weekYear(), 2005); - assert.equal(moment([2005, 11, 26]).weekYear(), 2006); - assert.equal(moment([2006, 11, 31]).weekYear(), 2006); - assert.equal(moment([2007, 0, 1]).weekYear(), 2007); - assert.equal(moment([2007, 11, 30]).weekYear(), 2007); - assert.equal(moment([2007, 11, 31]).weekYear(), 2008); - assert.equal(moment([2008, 11, 28]).weekYear(), 2008); - assert.equal(moment([2008, 11, 29]).weekYear(), 2009); - assert.equal(moment([2009, 11, 27]).weekYear(), 2009); - assert.equal(moment([2009, 11, 28]).weekYear(), 2010); - }); + a = moment([2011, 0, 13]); + assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from thu to mon'); + assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from thu to thu'); + assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from thu to sun'); + assert.equal( + moment(a).isoWeekday(-6).date(), + 3, + 'set from thu to last mon' + ); + assert.equal( + moment(a).isoWeekday(-3).date(), + 6, + 'set from thu to last thu' + ); + assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from thu to last sun'); + assert.equal( + moment(a).isoWeekday(8).date(), + 17, + 'set from thu to next mon' + ); + assert.equal( + moment(a).isoWeekday(11).date(), + 20, + 'set from thu to next thu' + ); + assert.equal( + moment(a).isoWeekday(14).date(), + 23, + 'set from thu to next sun' + ); - // Verifies that the week number, week day computation is correct for all dow, doy combinations - test('week year roundtrip', function (assert) { - var dow, doy, wd, m, localeName; - for (dow = 0; dow < 7; ++dow) { - for (doy = dow; doy < dow + 7; ++doy) { - for (wd = 0; wd < 7; ++wd) { - localeName = 'dow: ' + dow + ', doy: ' + doy; - moment.locale(localeName, {week: {dow: dow, doy: doy}}); - // We use the 10th week as the 1st one can spill to the previous year - m = moment('2015 10 ' + wd, 'gggg w d', true); - assert.equal(m.format('gggg w d'), '2015 10 ' + wd, 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd); - m = moment('2015 10 ' + wd, 'gggg w e', true); - assert.equal(m.format('gggg w e'), '2015 10 ' + wd, 'dow: ' + dow + ' doy: ' + doy + ' wd: ' + wd); - moment.defineLocale(localeName, null); - } - } - } + a = moment([2011, 0, 16]); + assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from sun to mon'); + assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from sun to thu'); + assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from sun to sun'); + assert.equal( + moment(a).isoWeekday(-6).date(), + 3, + 'set from sun to last mon' + ); + assert.equal( + moment(a).isoWeekday(-3).date(), + 6, + 'set from sun to last thu' + ); + assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from sun to last sun'); + assert.equal( + moment(a).isoWeekday(8).date(), + 17, + 'set from sun to next mon' + ); + assert.equal( + moment(a).isoWeekday(11).date(), + 20, + 'set from sun to next thu' + ); + assert.equal( + moment(a).isoWeekday(14).date(), + 23, + 'set from sun to next sun' + ); }); - test('week numbers 2012/2013', function (assert) { - moment.locale('dow: 6, doy: 12', {week: {dow: 6, doy: 12}}); - assert.equal(52, moment('2012-12-28', 'YYYY-MM-DD').week(), '2012-12-28 is week 52'); // 51 -- should be 52? - assert.equal(1, moment('2012-12-29', 'YYYY-MM-DD').week(), '2012-12-29 is week 1'); // 52 -- should be 1 - assert.equal(1, moment('2013-01-01', 'YYYY-MM-DD').week(), '2013-01-01 is week 1'); // 52 -- should be 1 - assert.equal(2, moment('2013-01-08', 'YYYY-MM-DD').week(), '2013-01-08 is week 2'); // 53 -- should be 2 - assert.equal(2, moment('2013-01-11', 'YYYY-MM-DD').week(), '2013-01-11 is week 2'); // 53 -- should be 2 - assert.equal(3, moment('2013-01-12', 'YYYY-MM-DD').week(), '2013-01-12 is week 3'); // 1 -- should be 3 - assert.equal(52, moment('2012-01-01', 'YYYY-MM-DD').weeksInYear(), 'weeks in 2012 are 52'); // 52 - moment.defineLocale('dow: 6, doy: 12', null); - }); + test('iso weekday setter with day name', function (assert) { + moment.locale('en'); - test('weeks numbers dow:1 doy:4', function (assert) { - moment.locale('dow: 1, doy: 4', {week: {dow: 1, doy: 4}}); - assert.equal(moment([2012, 0, 1]).week(), 52, 'Jan 1 2012 should be week 52'); - assert.equal(moment([2012, 0, 2]).week(), 1, 'Jan 2 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 1, 'Jan 8 2012 should be week 1'); - assert.equal(moment([2012, 0, 9]).week(), 2, 'Jan 9 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 2, 'Jan 15 2012 should be week 2'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 13]).week(), 3, 'Jan 12 2009 should be week 3'); - assert.equal(moment([2009, 11, 28]).week(), 53, 'Dec 28 2009 should be week 53'); - assert.equal(moment([2010, 0, 1]).week(), 53, 'Jan 1 2010 should be week 53'); - assert.equal(moment([2010, 0, 3]).week(), 53, 'Jan 3 2010 should be week 53'); - assert.equal(moment([2010, 0, 4]).week(), 1, 'Jan 4 2010 should be week 1'); - assert.equal(moment([2010, 0, 10]).week(), 1, 'Jan 10 2010 should be week 1'); - assert.equal(moment([2010, 0, 11]).week(), 2, 'Jan 11 2010 should be week 2'); - assert.equal(moment([2010, 11, 27]).week(), 52, 'Dec 27 2010 should be week 52'); - assert.equal(moment([2011, 0, 1]).week(), 52, 'Jan 1 2011 should be week 52'); - assert.equal(moment([2011, 0, 2]).week(), 52, 'Jan 2 2011 should be week 52'); - assert.equal(moment([2011, 0, 3]).week(), 1, 'Jan 3 2011 should be week 1'); - assert.equal(moment([2011, 0, 9]).week(), 1, 'Jan 9 2011 should be week 1'); - assert.equal(moment([2011, 0, 10]).week(), 2, 'Jan 10 2011 should be week 2'); - moment.defineLocale('dow: 1, doy: 4', null); + var a = moment([2011, 0, 10]); + assert.equal( + moment(a).isoWeekday('Monday').date(), + 10, + 'set from mon to mon' + ); + assert.equal( + moment(a).isoWeekday('Thursday').date(), + 13, + 'set from mon to thu' + ); + assert.equal( + moment(a).isoWeekday('Sunday').date(), + 16, + 'set from mon to sun' + ); + + a = moment([2011, 0, 13]); + assert.equal( + moment(a).isoWeekday('Monday').date(), + 10, + 'set from thu to mon' + ); + assert.equal( + moment(a).isoWeekday('Thursday').date(), + 13, + 'set from thu to thu' + ); + assert.equal( + moment(a).isoWeekday('Sunday').date(), + 16, + 'set from thu to sun' + ); + + a = moment([2011, 0, 16]); + assert.equal( + moment(a).isoWeekday('Monday').date(), + 10, + 'set from sun to mon' + ); + assert.equal( + moment(a).isoWeekday('Thursday').date(), + 13, + 'set from sun to thu' + ); + assert.equal( + moment(a).isoWeekday('Sunday').date(), + 16, + 'set from sun to sun' + ); }); - test('weeks numbers dow:6 doy:12', function (assert) { - moment.locale('dow: 6, doy: 12', {week: {dow: 6, doy: 12}}); - assert.equal(moment([2011, 11, 31]).week(), 1, 'Dec 31 2011 should be week 1'); - assert.equal(moment([2012, 0, 6]).week(), 1, 'Jan 6 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 2, 'Jan 7 2012 should be week 2'); - assert.equal(moment([2012, 0, 13]).week(), 2, 'Jan 13 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 3, 'Jan 14 2012 should be week 3'); - assert.equal(moment([2006, 11, 30]).week(), 1, 'Dec 30 2006 should be week 1'); - assert.equal(moment([2007, 0, 5]).week(), 1, 'Jan 5 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 2, 'Jan 6 2007 should be week 2'); - assert.equal(moment([2007, 0, 12]).week(), 2, 'Jan 12 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 3, 'Jan 13 2007 should be week 3'); - assert.equal(moment([2007, 11, 29]).week(), 1, 'Dec 29 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 4]).week(), 1, 'Jan 4 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 2, 'Jan 5 2008 should be week 2'); - assert.equal(moment([2008, 0, 11]).week(), 2, 'Jan 11 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 3, 'Jan 12 2008 should be week 3'); - assert.equal(moment([2002, 11, 28]).week(), 1, 'Dec 28 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 3]).week(), 1, 'Jan 3 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 2, 'Jan 4 2003 should be week 2'); - assert.equal(moment([2003, 0, 10]).week(), 2, 'Jan 10 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 3, 'Jan 11 2003 should be week 3'); - assert.equal(moment([2008, 11, 27]).week(), 1, 'Dec 27 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 2]).week(), 1, 'Jan 2 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 2, 'Jan 3 2009 should be week 2'); - assert.equal(moment([2009, 0, 9]).week(), 2, 'Jan 9 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 3, 'Jan 10 2009 should be week 3'); - assert.equal(moment([2009, 11, 26]).week(), 1, 'Dec 26 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 2, 'Jan 2 2010 should be week 2'); - assert.equal(moment([2010, 0, 8]).week(), 2, 'Jan 8 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 3, 'Jan 9 2010 should be week 3'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 7]).week(), 1, 'Jan 7 2011 should be week 1'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 14]).week(), 2, 'Jan 14 2011 should be week 2'); - assert.equal(moment([2011, 0, 15]).week(), 3, 'Jan 15 2011 should be week 3'); - moment.defineLocale('dow: 6, doy: 12', null); + test('weekday first day of week Sunday (dow 0)', function (assert) { + moment.locale('dow: 0,doy: 6', { week: { dow: 0, doy: 6 } }); + assert.equal( + moment([1985, 1, 3]).weekday(), + 0, + 'Feb 3 1985 is Sunday -- 0th day' + ); + assert.equal( + moment([2029, 8, 17]).weekday(), + 1, + 'Sep 17 2029 is Monday -- 1st day' + ); + assert.equal( + moment([2013, 3, 23]).weekday(), + 2, + 'Apr 23 2013 is Tuesday -- 2nd day' + ); + assert.equal( + moment([2015, 2, 4]).weekday(), + 3, + 'Mar 4 2015 is Wednesday -- 3nd day' + ); + assert.equal( + moment([1970, 0, 1]).weekday(), + 4, + 'Jan 1 1970 is Thursday -- 4th day' + ); + assert.equal( + moment([2001, 4, 11]).weekday(), + 5, + 'May 11 2001 is Friday -- 5th day' + ); + assert.equal( + moment([2000, 0, 1]).weekday(), + 6, + 'Jan 1 2000 is Saturday -- 6th day' + ); }); - test('weeks numbers dow:1 doy:7', function (assert) { - moment.locale('dow: 1, doy: 7', {week: {dow: 1, doy: 7}}); - assert.equal(moment([2011, 11, 26]).week(), 1, 'Dec 26 2011 should be week 1'); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 2]).week(), 2, 'Jan 2 2012 should be week 2'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 9]).week(), 3, 'Jan 9 2012 should be week 3'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 1, 'Jan 7 2007 should be week 1'); - assert.equal(moment([2007, 0, 8]).week(), 2, 'Jan 8 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 2, 'Jan 14 2007 should be week 2'); - assert.equal(moment([2007, 0, 15]).week(), 3, 'Jan 15 2007 should be week 3'); - assert.equal(moment([2007, 11, 31]).week(), 1, 'Dec 31 2007 should be week 1'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 1, 'Jan 6 2008 should be week 1'); - assert.equal(moment([2008, 0, 7]).week(), 2, 'Jan 7 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 2, 'Jan 13 2008 should be week 2'); - assert.equal(moment([2008, 0, 14]).week(), 3, 'Jan 14 2008 should be week 3'); - assert.equal(moment([2002, 11, 30]).week(), 1, 'Dec 30 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 1, 'Jan 5 2003 should be week 1'); - assert.equal(moment([2003, 0, 6]).week(), 2, 'Jan 6 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 2, 'Jan 12 2003 should be week 2'); - assert.equal(moment([2003, 0, 13]).week(), 3, 'Jan 13 2003 should be week 3'); - assert.equal(moment([2008, 11, 29]).week(), 1, 'Dec 29 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 1, 'Jan 4 2009 should be week 1'); - assert.equal(moment([2009, 0, 5]).week(), 2, 'Jan 5 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 2, 'Jan 11 2009 should be week 2'); - assert.equal(moment([2009, 0, 12]).week(), 3, 'Jan 12 2009 should be week 3'); - assert.equal(moment([2009, 11, 28]).week(), 1, 'Dec 28 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 1, 'Jan 3 2010 should be week 1'); - assert.equal(moment([2010, 0, 4]).week(), 2, 'Jan 4 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 2, 'Jan 10 2010 should be week 2'); - assert.equal(moment([2010, 0, 11]).week(), 3, 'Jan 11 2010 should be week 3'); - assert.equal(moment([2010, 11, 27]).week(), 1, 'Dec 27 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 1, 'Jan 2 2011 should be week 1'); - assert.equal(moment([2011, 0, 3]).week(), 2, 'Jan 3 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 2, 'Jan 9 2011 should be week 2'); - assert.equal(moment([2011, 0, 10]).week(), 3, 'Jan 10 2011 should be week 3'); - moment.defineLocale('dow: 1, doy: 7', null); + test('weekday first day of week Monday (dow 1)', function (assert) { + moment.locale('dow: 1,doy: 6', { week: { dow: 1, doy: 6 } }); + assert.equal( + moment([1985, 1, 4]).weekday(), + 0, + 'Feb 4 1985 is Monday -- 0th day' + ); + assert.equal( + moment([2029, 8, 18]).weekday(), + 1, + 'Sep 18 2029 is Tuesday -- 1st day' + ); + assert.equal( + moment([2013, 3, 24]).weekday(), + 2, + 'Apr 24 2013 is Wednesday -- 2nd day' + ); + assert.equal( + moment([2015, 2, 5]).weekday(), + 3, + 'Mar 5 2015 is Thursday -- 3nd day' + ); + assert.equal( + moment([1970, 0, 2]).weekday(), + 4, + 'Jan 2 1970 is Friday -- 4th day' + ); + assert.equal( + moment([2001, 4, 12]).weekday(), + 5, + 'May 12 2001 is Saturday -- 5th day' + ); + assert.equal( + moment([2000, 0, 2]).weekday(), + 6, + 'Jan 2 2000 is Sunday -- 6th day' + ); }); - test('weeks numbers dow:0 doy:6', function (assert) { - moment.locale('dow: 0, doy: 6', {week: {dow: 0, doy: 6}}); - assert.equal(moment([2012, 0, 1]).week(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).week(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).week(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).week(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).week(), 3, 'Jan 15 2012 should be week 3'); - assert.equal(moment([2006, 11, 31]).week(), 1, 'Dec 31 2006 should be week 1'); - assert.equal(moment([2007, 0, 1]).week(), 1, 'Jan 1 2007 should be week 1'); - assert.equal(moment([2007, 0, 6]).week(), 1, 'Jan 6 2007 should be week 1'); - assert.equal(moment([2007, 0, 7]).week(), 2, 'Jan 7 2007 should be week 2'); - assert.equal(moment([2007, 0, 13]).week(), 2, 'Jan 13 2007 should be week 2'); - assert.equal(moment([2007, 0, 14]).week(), 3, 'Jan 14 2007 should be week 3'); - assert.equal(moment([2007, 11, 29]).week(), 52, 'Dec 29 2007 should be week 52'); - assert.equal(moment([2008, 0, 1]).week(), 1, 'Jan 1 2008 should be week 1'); - assert.equal(moment([2008, 0, 5]).week(), 1, 'Jan 5 2008 should be week 1'); - assert.equal(moment([2008, 0, 6]).week(), 2, 'Jan 6 2008 should be week 2'); - assert.equal(moment([2008, 0, 12]).week(), 2, 'Jan 12 2008 should be week 2'); - assert.equal(moment([2008, 0, 13]).week(), 3, 'Jan 13 2008 should be week 3'); - assert.equal(moment([2002, 11, 29]).week(), 1, 'Dec 29 2002 should be week 1'); - assert.equal(moment([2003, 0, 1]).week(), 1, 'Jan 1 2003 should be week 1'); - assert.equal(moment([2003, 0, 4]).week(), 1, 'Jan 4 2003 should be week 1'); - assert.equal(moment([2003, 0, 5]).week(), 2, 'Jan 5 2003 should be week 2'); - assert.equal(moment([2003, 0, 11]).week(), 2, 'Jan 11 2003 should be week 2'); - assert.equal(moment([2003, 0, 12]).week(), 3, 'Jan 12 2003 should be week 3'); - assert.equal(moment([2008, 11, 28]).week(), 1, 'Dec 28 2008 should be week 1'); - assert.equal(moment([2009, 0, 1]).week(), 1, 'Jan 1 2009 should be week 1'); - assert.equal(moment([2009, 0, 3]).week(), 1, 'Jan 3 2009 should be week 1'); - assert.equal(moment([2009, 0, 4]).week(), 2, 'Jan 4 2009 should be week 2'); - assert.equal(moment([2009, 0, 10]).week(), 2, 'Jan 10 2009 should be week 2'); - assert.equal(moment([2009, 0, 11]).week(), 3, 'Jan 11 2009 should be week 3'); - assert.equal(moment([2009, 11, 27]).week(), 1, 'Dec 27 2009 should be week 1'); - assert.equal(moment([2010, 0, 1]).week(), 1, 'Jan 1 2010 should be week 1'); - assert.equal(moment([2010, 0, 2]).week(), 1, 'Jan 2 2010 should be week 1'); - assert.equal(moment([2010, 0, 3]).week(), 2, 'Jan 3 2010 should be week 2'); - assert.equal(moment([2010, 0, 9]).week(), 2, 'Jan 9 2010 should be week 2'); - assert.equal(moment([2010, 0, 10]).week(), 3, 'Jan 10 2010 should be week 3'); - assert.equal(moment([2010, 11, 26]).week(), 1, 'Dec 26 2010 should be week 1'); - assert.equal(moment([2011, 0, 1]).week(), 1, 'Jan 1 2011 should be week 1'); - assert.equal(moment([2011, 0, 2]).week(), 2, 'Jan 2 2011 should be week 2'); - assert.equal(moment([2011, 0, 8]).week(), 2, 'Jan 8 2011 should be week 2'); - assert.equal(moment([2011, 0, 9]).week(), 3, 'Jan 9 2011 should be week 3'); - moment.defineLocale('dow: 0, doy: 6', null); + test('weekday first day of week Tuesday (dow 2)', function (assert) { + moment.locale('dow: 2,doy: 6', { week: { dow: 2, doy: 6 } }); + assert.equal( + moment([1985, 1, 5]).weekday(), + 0, + 'Feb 5 1985 is Tuesday -- 0th day' + ); + assert.equal( + moment([2029, 8, 19]).weekday(), + 1, + 'Sep 19 2029 is Wednesday -- 1st day' + ); + assert.equal( + moment([2013, 3, 25]).weekday(), + 2, + 'Apr 25 2013 is Thursday -- 2nd day' + ); + assert.equal( + moment([2015, 2, 6]).weekday(), + 3, + 'Mar 6 2015 is Friday -- 3nd day' + ); + assert.equal( + moment([1970, 0, 3]).weekday(), + 4, + 'Jan 3 1970 is Saturday -- 4th day' + ); + assert.equal( + moment([2001, 4, 13]).weekday(), + 5, + 'May 13 2001 is Sunday -- 5th day' + ); + assert.equal( + moment([2000, 0, 3]).weekday(), + 6, + 'Jan 3 2000 is Monday -- 6th day' + ); }); - test('week year overflows', function (assert) { - assert.equal('2005-01-01', moment.utc('2004-W53-6', moment.ISO_8601, true).format('YYYY-MM-DD'), '2004-W53-6 is 1st Jan 2005'); - assert.equal('2007-12-31', moment.utc('2008-W01-1', moment.ISO_8601, true).format('YYYY-MM-DD'), '2008-W01-1 is 31st Dec 2007'); + test('weekday first day of week Wednesday (dow 3)', function (assert) { + moment.locale('dow: 3,doy: 6', { week: { dow: 3, doy: 6 } }); + assert.equal( + moment([1985, 1, 6]).weekday(), + 0, + 'Feb 6 1985 is Wednesday -- 0th day' + ); + assert.equal( + moment([2029, 8, 20]).weekday(), + 1, + 'Sep 20 2029 is Thursday -- 1st day' + ); + assert.equal( + moment([2013, 3, 26]).weekday(), + 2, + 'Apr 26 2013 is Friday -- 2nd day' + ); + assert.equal( + moment([2015, 2, 7]).weekday(), + 3, + 'Mar 7 2015 is Saturday -- 3nd day' + ); + assert.equal( + moment([1970, 0, 4]).weekday(), + 4, + 'Jan 4 1970 is Sunday -- 4th day' + ); + assert.equal( + moment([2001, 4, 14]).weekday(), + 5, + 'May 14 2001 is Monday -- 5th day' + ); + assert.equal( + moment([2000, 0, 4]).weekday(), + 6, + 'Jan 4 2000 is Tuesday -- 6th day' + ); }); - test('weeks overflow', function (assert) { - assert.equal(7, moment.utc('2004-W54-1', moment.ISO_8601, true).parsingFlags().overflow, '2004 has only 53 weeks'); - assert.equal(7, moment.utc('2004-W00-1', moment.ISO_8601, true).parsingFlags().overflow, 'there is no 0th week'); + test('weekday first day of week Thursday (dow 4)', function (assert) { + moment.locale('dow: 4,doy: 6', { week: { dow: 4, doy: 6 } }); + assert.equal( + moment([1985, 1, 7]).weekday(), + 0, + 'Feb 7 1985 is Thursday -- 0th day' + ); + assert.equal( + moment([2029, 8, 21]).weekday(), + 1, + 'Sep 21 2029 is Friday -- 1st day' + ); + assert.equal( + moment([2013, 3, 27]).weekday(), + 2, + 'Apr 27 2013 is Saturday -- 2nd day' + ); + assert.equal( + moment([2015, 2, 8]).weekday(), + 3, + 'Mar 8 2015 is Sunday -- 3nd day' + ); + assert.equal( + moment([1970, 0, 5]).weekday(), + 4, + 'Jan 5 1970 is Monday -- 4th day' + ); + assert.equal( + moment([2001, 4, 15]).weekday(), + 5, + 'May 15 2001 is Tuesday -- 5th day' + ); + assert.equal( + moment([2000, 0, 5]).weekday(), + 6, + 'Jan 5 2000 is Wednesday -- 6th day' + ); }); - test('weekday overflow', function (assert) { - assert.equal(8, moment.utc('2004-W30-0', moment.ISO_8601, true).parsingFlags().overflow, 'there is no 0 iso weekday'); - assert.equal(8, moment.utc('2004-W30-8', moment.ISO_8601, true).parsingFlags().overflow, 'there is no 8 iso weekday'); - assert.equal(8, moment.utc('2004-w30-7', 'gggg-[w]ww-e', true).parsingFlags().overflow, 'there is no 7 \'e\' weekday'); - assert.equal(8, moment.utc('2004-w30-7', 'gggg-[w]ww-d', true).parsingFlags().overflow, 'there is no 7 \'d\' weekday'); + test('weekday first day of week Friday (dow 5)', function (assert) { + moment.locale('dow: 5,doy: 6', { week: { dow: 5, doy: 6 } }); + assert.equal( + moment([1985, 1, 8]).weekday(), + 0, + 'Feb 8 1985 is Friday -- 0th day' + ); + assert.equal( + moment([2029, 8, 22]).weekday(), + 1, + 'Sep 22 2029 is Saturday -- 1st day' + ); + assert.equal( + moment([2013, 3, 28]).weekday(), + 2, + 'Apr 28 2013 is Sunday -- 2nd day' + ); + assert.equal( + moment([2015, 2, 9]).weekday(), + 3, + 'Mar 9 2015 is Monday -- 3nd day' + ); + assert.equal( + moment([1970, 0, 6]).weekday(), + 4, + 'Jan 6 1970 is Tuesday -- 4th day' + ); + assert.equal( + moment([2001, 4, 16]).weekday(), + 5, + 'May 16 2001 is Wednesday -- 5th day' + ); + assert.equal( + moment([2000, 0, 6]).weekday(), + 6, + 'Jan 6 2000 is Thursday -- 6th day' + ); }); - test('week year setter works', function (assert) { - for (var year = 2000; year <= 2020; year += 1) { - assert.equal(moment.utc('2012-12-31T00:00:00.000Z').isoWeekYear(year).isoWeekYear(), year, 'setting iso-week-year to ' + year); - assert.equal(moment.utc('2012-12-31T00:00:00.000Z').weekYear(year).weekYear(), year, 'setting week-year to ' + year); - } - - assert.equal(moment.utc('2004-W53-1', moment.ISO_8601, true).isoWeekYear(2013).format('GGGG-[W]WW-E'), '2013-W52-1', '2004-W53-1 to 2013'); - assert.equal(moment.utc('2004-W53-1', moment.ISO_8601, true).isoWeekYear(2020).format('GGGG-[W]WW-E'), '2020-W53-1', '2004-W53-1 to 2020'); - assert.equal(moment.utc('2005-W52-1', moment.ISO_8601, true).isoWeekYear(2004).format('GGGG-[W]WW-E'), '2004-W52-1', '2005-W52-1 to 2004'); - assert.equal(moment.utc('2013-W30-4', moment.ISO_8601, true).isoWeekYear(2015).format('GGGG-[W]WW-E'), '2015-W30-4', '2013-W30-4 to 2015'); - - assert.equal(moment.utc('2005-w53-0', 'gggg-[w]ww-e', true).weekYear(2013).format('gggg-[w]ww-e'), '2013-w52-0', '2005-w53-0 to 2013'); - assert.equal(moment.utc('2005-w53-0', 'gggg-[w]ww-e', true).weekYear(2016).format('gggg-[w]ww-e'), '2016-w53-0', '2005-w53-0 to 2016'); - assert.equal(moment.utc('2004-w52-0', 'gggg-[w]ww-e', true).weekYear(2005).format('gggg-[w]ww-e'), '2005-w52-0', '2004-w52-0 to 2005'); - assert.equal(moment.utc('2013-w30-4', 'gggg-[w]ww-e', true).weekYear(2015).format('gggg-[w]ww-e'), '2015-w30-4', '2013-w30-4 to 2015'); + test('weekday first day of week Saturday (dow 6)', function (assert) { + moment.locale('dow: 6,doy: 6', { week: { dow: 6, doy: 6 } }); + assert.equal( + moment([1985, 1, 9]).weekday(), + 0, + 'Feb 9 1985 is Saturday -- 0th day' + ); + assert.equal( + moment([2029, 8, 23]).weekday(), + 1, + 'Sep 23 2029 is Sunday -- 1st day' + ); + assert.equal( + moment([2013, 3, 29]).weekday(), + 2, + 'Apr 29 2013 is Monday -- 2nd day' + ); + assert.equal( + moment([2015, 2, 10]).weekday(), + 3, + 'Mar 10 2015 is Tuesday -- 3nd day' + ); + assert.equal( + moment([1970, 0, 7]).weekday(), + 4, + 'Jan 7 1970 is Wednesday -- 4th day' + ); + assert.equal( + moment([2001, 4, 17]).weekday(), + 5, + 'May 17 2001 is Thursday -- 5th day' + ); + assert.equal( + moment([2000, 0, 7]).weekday(), + 6, + 'Jan 7 2000 is Friday -- 6th day' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -78655,27 +141193,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -78685,8 +141228,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -78699,7 +141244,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -78708,181 +141256,256 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('week day'); + module('weeks in year'); - test('iso weekday', function (assert) { - var i; - - for (i = 0; i < 7; ++i) { - moment.locale('dow:' + i + ',doy: 6', {week: {dow: i, doy: 6}}); - assert.equal(moment([1985, 1, 4]).isoWeekday(), 1, 'Feb 4 1985 is Monday -- 1st day'); - assert.equal(moment([2029, 8, 18]).isoWeekday(), 2, 'Sep 18 2029 is Tuesday -- 2nd day'); - assert.equal(moment([2013, 3, 24]).isoWeekday(), 3, 'Apr 24 2013 is Wednesday -- 3rd day'); - assert.equal(moment([2015, 2, 5]).isoWeekday(), 4, 'Mar 5 2015 is Thursday -- 4th day'); - assert.equal(moment([1970, 0, 2]).isoWeekday(), 5, 'Jan 2 1970 is Friday -- 5th day'); - assert.equal(moment([2001, 4, 12]).isoWeekday(), 6, 'May 12 2001 is Saturday -- 6th day'); - assert.equal(moment([2000, 0, 2]).isoWeekday(), 7, 'Jan 2 2000 is Sunday -- 7th day'); - } + test('isoWeeksInYear', function (assert) { + assert.equal( + moment([2005]).isoWeeksInYear(), + 52, + 'ISO year 2005 has 52 iso weeks' + ); + assert.equal( + moment([2006]).isoWeeksInYear(), + 52, + 'ISO year 2006 has 52 iso weeks' + ); + assert.equal( + moment([2009]).isoWeeksInYear(), + 53, + 'ISO year 2009 has 53 iso weeks' + ); + assert.equal( + moment([2010]).isoWeeksInYear(), + 52, + 'ISO year 2010 has 52 iso weeks' + ); }); - test('iso weekday setter', function (assert) { - var a = moment([2011, 0, 10]); - assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from mon to mon'); - assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from mon to thu'); - assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from mon to sun'); - assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from mon to last mon'); - assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from mon to last thu'); - assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from mon to last sun'); - assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from mon to next mon'); - assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from mon to next thu'); - assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from mon to next sun'); - - a = moment([2011, 0, 13]); - assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from thu to mon'); - assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from thu to thu'); - assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from thu to sun'); - assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from thu to last mon'); - assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from thu to last thu'); - assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from thu to last sun'); - assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from thu to next mon'); - assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from thu to next thu'); - assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from thu to next sun'); - - a = moment([2011, 0, 16]); - assert.equal(moment(a).isoWeekday(1).date(), 10, 'set from sun to mon'); - assert.equal(moment(a).isoWeekday(4).date(), 13, 'set from sun to thu'); - assert.equal(moment(a).isoWeekday(7).date(), 16, 'set from sun to sun'); - assert.equal(moment(a).isoWeekday(-6).date(), 3, 'set from sun to last mon'); - assert.equal(moment(a).isoWeekday(-3).date(), 6, 'set from sun to last thu'); - assert.equal(moment(a).isoWeekday(0).date(), 9, 'set from sun to last sun'); - assert.equal(moment(a).isoWeekday(8).date(), 17, 'set from sun to next mon'); - assert.equal(moment(a).isoWeekday(11).date(), 20, 'set from sun to next thu'); - assert.equal(moment(a).isoWeekday(14).date(), 23, 'set from sun to next sun'); + test('isoWeeksInISOWeekYear first day of ISO Year', function (assert) { + assert.equal( + moment('2003-12-29').isoWeeksInISOWeekYear(), + 53, + 'ISO year 2004 has 53 iso weeks' + ); + assert.equal( + moment('2005-01-03').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2005 has 53 iso weeks' + ); + assert.equal( + moment('2006-01-02').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2006 has 53 iso weeks' + ); + assert.equal( + moment('2007-01-01').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2007 has 52 iso weeks' + ); + assert.equal( + moment('2007-12-31').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2008 has 53 iso weeks' + ); + assert.equal( + moment('2008-12-29').isoWeeksInISOWeekYear(), + 53, + 'ISO year 2009 has 53 iso weeks' + ); + assert.equal( + moment('2010-01-04').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2010 has 52 iso weeks' + ); + assert.equal( + moment('2011-01-03').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2011 has 52 iso weeks' + ); + assert.equal( + moment('2012-01-02').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2012 has 52 iso weeks' + ); + assert.equal( + moment('2012-12-31').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2013 has 52 iso weeks' + ); + assert.equal( + moment('2013-12-30').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2014 has 52 iso weeks' + ); + assert.equal( + moment('2014-12-29').isoWeeksInISOWeekYear(), + 53, + 'ISO year 2015 has 53 iso weeks' + ); + assert.equal( + moment('2016-01-04').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2016 has 52 iso weeks' + ); + assert.equal( + moment('2017-01-02').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2017 has 52 iso weeks' + ); + assert.equal( + moment('2018-01-01').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2018 has 52 iso weeks' + ); + assert.equal( + moment('2018-12-31').isoWeeksInISOWeekYear(), + 52, + 'ISO year 2019 has 52 iso weeks' + ); + assert.equal( + moment('2019-12-30').isoWeeksInISOWeekYear(), + 53, + 'ISO year 2020 has 53 iso weeks' + ); }); - test('iso weekday setter with day name', function (assert) { - moment.locale('en'); - - var a = moment([2011, 0, 10]); - assert.equal(moment(a).isoWeekday('Monday').date(), 10, 'set from mon to mon'); - assert.equal(moment(a).isoWeekday('Thursday').date(), 13, 'set from mon to thu'); - assert.equal(moment(a).isoWeekday('Sunday').date(), 16, 'set from mon to sun'); - - a = moment([2011, 0, 13]); - assert.equal(moment(a).isoWeekday('Monday').date(), 10, 'set from thu to mon'); - assert.equal(moment(a).isoWeekday('Thursday').date(), 13, 'set from thu to thu'); - assert.equal(moment(a).isoWeekday('Sunday').date(), 16, 'set from thu to sun'); + test('weeksInYear doy/dow = 1/4', function (assert) { + moment.locale('1/4', { week: { dow: 1, doy: 4 } }); - a = moment([2011, 0, 16]); - assert.equal(moment(a).isoWeekday('Monday').date(), 10, 'set from sun to mon'); - assert.equal(moment(a).isoWeekday('Thursday').date(), 13, 'set from sun to thu'); - assert.equal(moment(a).isoWeekday('Sunday').date(), 16, 'set from sun to sun'); + assert.equal(moment('2004-01-01').weeksInYear(), 53, '2004 has 53 weeks'); + assert.equal(moment('2005-01-01').weeksInYear(), 52, '2005 has 52 weeks'); + assert.equal( + moment('2005-01-01').weeksInWeekYear(), + 53, + '2005-01-01 is weekYear 2014, which has 53 weeks' + ); + assert.equal(moment('2006-01-01').weeksInYear(), 52, '2006 has 52 weeks'); + assert.equal(moment('2007-01-01').weeksInYear(), 52, '2007 has 52 weeks'); + assert.equal(moment('2008-01-01').weeksInYear(), 52, '2008 has 52 weeks'); + assert.equal(moment('2009-01-01').weeksInYear(), 53, '2009 has 53 weeks'); + assert.equal(moment('2010-01-01').weeksInYear(), 52, '2010 has 52 weeks'); + assert.equal( + moment('2010-01-01').weeksInWeekYear(), + 53, + '2010-01-01 is weekYear 2009, which has 53 weeks' + ); + assert.equal(moment('2011-01-01').weeksInYear(), 52, '2011 has 52 weeks'); + assert.equal(moment('2012-01-01').weeksInYear(), 52, '2012 has 52 weeks'); + assert.equal(moment('2013-01-01').weeksInYear(), 52, '2013 has 52 weeks'); + assert.equal(moment('2014-01-01').weeksInYear(), 52, '2014 has 52 weeks'); + assert.equal(moment('2015-01-01').weeksInYear(), 53, '2015 has 53 weeks'); + assert.equal(moment('2016-01-01').weeksInYear(), 52, '2016 has 52 weeks'); + assert.equal( + moment('2016-01-01').weeksInWeekYear(), + 53, + '2016-01-01 is weekYear 2015, which has 53 weeks' + ); }); - test('weekday first day of week Sunday (dow 0)', function (assert) { - moment.locale('dow: 0,doy: 6', {week: {dow: 0, doy: 6}}); - assert.equal(moment([1985, 1, 3]).weekday(), 0, 'Feb 3 1985 is Sunday -- 0th day'); - assert.equal(moment([2029, 8, 17]).weekday(), 1, 'Sep 17 2029 is Monday -- 1st day'); - assert.equal(moment([2013, 3, 23]).weekday(), 2, 'Apr 23 2013 is Tuesday -- 2nd day'); - assert.equal(moment([2015, 2, 4]).weekday(), 3, 'Mar 4 2015 is Wednesday -- 3nd day'); - assert.equal(moment([1970, 0, 1]).weekday(), 4, 'Jan 1 1970 is Thursday -- 4th day'); - assert.equal(moment([2001, 4, 11]).weekday(), 5, 'May 11 2001 is Friday -- 5th day'); - assert.equal(moment([2000, 0, 1]).weekday(), 6, 'Jan 1 2000 is Saturday -- 6th day'); - }); + test('weeksInYear doy/dow = 6/12', function (assert) { + moment.locale('6/12', { week: { dow: 6, doy: 12 } }); - test('weekday first day of week Monday (dow 1)', function (assert) { - moment.locale('dow: 1,doy: 6', {week: {dow: 1, doy: 6}}); - assert.equal(moment([1985, 1, 4]).weekday(), 0, 'Feb 4 1985 is Monday -- 0th day'); - assert.equal(moment([2029, 8, 18]).weekday(), 1, 'Sep 18 2029 is Tuesday -- 1st day'); - assert.equal(moment([2013, 3, 24]).weekday(), 2, 'Apr 24 2013 is Wednesday -- 2nd day'); - assert.equal(moment([2015, 2, 5]).weekday(), 3, 'Mar 5 2015 is Thursday -- 3nd day'); - assert.equal(moment([1970, 0, 2]).weekday(), 4, 'Jan 2 1970 is Friday -- 4th day'); - assert.equal(moment([2001, 4, 12]).weekday(), 5, 'May 12 2001 is Saturday -- 5th day'); - assert.equal(moment([2000, 0, 2]).weekday(), 6, 'Jan 2 2000 is Sunday -- 6th day'); + assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks'); + assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 52 weeks'); + assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 52 weeks'); + assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); + assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 52 weeks'); + assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 52 weeks'); + assert.equal(moment([2010]).weeksInYear(), 53, '2010 has 53 weeks'); + assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); + assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); + assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); + assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); + assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 52 weeks'); }); - test('weekday first day of week Tuesday (dow 2)', function (assert) { - moment.locale('dow: 2,doy: 6', {week: {dow: 2, doy: 6}}); - assert.equal(moment([1985, 1, 5]).weekday(), 0, 'Feb 5 1985 is Tuesday -- 0th day'); - assert.equal(moment([2029, 8, 19]).weekday(), 1, 'Sep 19 2029 is Wednesday -- 1st day'); - assert.equal(moment([2013, 3, 25]).weekday(), 2, 'Apr 25 2013 is Thursday -- 2nd day'); - assert.equal(moment([2015, 2, 6]).weekday(), 3, 'Mar 6 2015 is Friday -- 3nd day'); - assert.equal(moment([1970, 0, 3]).weekday(), 4, 'Jan 3 1970 is Staturday -- 4th day'); - assert.equal(moment([2001, 4, 13]).weekday(), 5, 'May 13 2001 is Sunday -- 5th day'); - assert.equal(moment([2000, 0, 3]).weekday(), 6, 'Jan 3 2000 is Monday -- 6th day'); - }); + test('weeksInYear doy/dow = 1/7', function (assert) { + moment.locale('1/7', { week: { dow: 1, doy: 7 } }); - test('weekday first day of week Wednesday (dow 3)', function (assert) { - moment.locale('dow: 3,doy: 6', {week: {dow: 3, doy: 6}}); - assert.equal(moment([1985, 1, 6]).weekday(), 0, 'Feb 6 1985 is Wednesday -- 0th day'); - assert.equal(moment([2029, 8, 20]).weekday(), 1, 'Sep 20 2029 is Thursday -- 1st day'); - assert.equal(moment([2013, 3, 26]).weekday(), 2, 'Apr 26 2013 is Friday -- 2nd day'); - assert.equal(moment([2015, 2, 7]).weekday(), 3, 'Mar 7 2015 is Saturday -- 3nd day'); - assert.equal(moment([1970, 0, 4]).weekday(), 4, 'Jan 4 1970 is Sunday -- 4th day'); - assert.equal(moment([2001, 4, 14]).weekday(), 5, 'May 14 2001 is Monday -- 5th day'); - assert.equal(moment([2000, 0, 4]).weekday(), 6, 'Jan 4 2000 is Tuesday -- 6th day'); - moment.locale('dow:3,doy:6', null); + assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 52 weeks'); + assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 52 weeks'); + assert.equal(moment([2006]).weeksInYear(), 53, '2006 has 53 weeks'); + assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); + assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 52 weeks'); + assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 52 weeks'); + assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); + assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); + assert.equal(moment([2012]).weeksInYear(), 53, '2012 has 53 weeks'); + assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); + assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); + assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 52 weeks'); + assert.equal(moment([2016]).weeksInYear(), 52, '2016 has 52 weeks'); }); - test('weekday first day of week Thursday (dow 4)', function (assert) { - moment.locale('dow: 4,doy: 6', {week: {dow: 4, doy: 6}}); - assert.equal(moment([1985, 1, 7]).weekday(), 0, 'Feb 7 1985 is Thursday -- 0th day'); - assert.equal(moment([2029, 8, 21]).weekday(), 1, 'Sep 21 2029 is Friday -- 1st day'); - assert.equal(moment([2013, 3, 27]).weekday(), 2, 'Apr 27 2013 is Saturday -- 2nd day'); - assert.equal(moment([2015, 2, 8]).weekday(), 3, 'Mar 8 2015 is Sunday -- 3nd day'); - assert.equal(moment([1970, 0, 5]).weekday(), 4, 'Jan 5 1970 is Monday -- 4th day'); - assert.equal(moment([2001, 4, 15]).weekday(), 5, 'May 15 2001 is Tuesday -- 5th day'); - assert.equal(moment([2000, 0, 5]).weekday(), 6, 'Jan 5 2000 is Wednesday -- 6th day'); - }); + test('weeksInYear doy/dow = 0/6', function (assert) { + moment.locale('0/6', { week: { dow: 0, doy: 6 } }); - test('weekday first day of week Friday (dow 5)', function (assert) { - moment.locale('dow: 5,doy: 6', {week: {dow: 5, doy: 6}}); - assert.equal(moment([1985, 1, 8]).weekday(), 0, 'Feb 8 1985 is Friday -- 0th day'); - assert.equal(moment([2029, 8, 22]).weekday(), 1, 'Sep 22 2029 is Staturday -- 1st day'); - assert.equal(moment([2013, 3, 28]).weekday(), 2, 'Apr 28 2013 is Sunday -- 2nd day'); - assert.equal(moment([2015, 2, 9]).weekday(), 3, 'Mar 9 2015 is Monday -- 3nd day'); - assert.equal(moment([1970, 0, 6]).weekday(), 4, 'Jan 6 1970 is Tuesday -- 4th day'); - assert.equal(moment([2001, 4, 16]).weekday(), 5, 'May 16 2001 is Wednesday -- 5th day'); - assert.equal(moment([2000, 0, 6]).weekday(), 6, 'Jan 6 2000 is Thursday -- 6th day'); + assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks'); + assert.equal(moment([2005]).weeksInYear(), 53, '2005 has 53 weeks'); + assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); + assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); + assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); + assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); + assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); + assert.equal(moment([2011]).weeksInYear(), 53, '2011 has 52 weeks'); + assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); + assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); + assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); + assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); }); - test('weekday first day of week Saturday (dow 6)', function (assert) { - moment.locale('dow: 6,doy: 6', {week: {dow: 6, doy: 6}}); - assert.equal(moment([1985, 1, 9]).weekday(), 0, 'Feb 9 1985 is Staturday -- 0th day'); - assert.equal(moment([2029, 8, 23]).weekday(), 1, 'Sep 23 2029 is Sunday -- 1st day'); - assert.equal(moment([2013, 3, 29]).weekday(), 2, 'Apr 29 2013 is Monday -- 2nd day'); - assert.equal(moment([2015, 2, 10]).weekday(), 3, 'Mar 10 2015 is Tuesday -- 3nd day'); - assert.equal(moment([1970, 0, 7]).weekday(), 4, 'Jan 7 1970 is Wednesday -- 4th day'); - assert.equal(moment([2001, 4, 17]).weekday(), 5, 'May 17 2001 is Thursday -- 5th day'); - assert.equal(moment([2000, 0, 7]).weekday(), 6, 'Jan 7 2000 is Friday -- 6th day'); + test('isoWeeksInYear calendar year !== ISO year', function (assert) { + var m = moment('2010-01-01'); + assert.equal( + moment('2019-12-31').isoWeeksInISOWeekYear(), + 53, + 'December 31, 2019 is in ISO year 2020 and ISO year 2020 has 53 weeks' + ); + assert.equal( + moment('2020-12-31').isoWeeksInISOWeekYear(), + 53, + 'December 31, 2020 is in ISO year 2020 and ISO year 2020 has 53 weeks' + ); + assert.equal( + m.isoWeeksInISOWeekYear(), + 53, + '2010-01-01 is isoWeekYear 2009, which has 53 iso weeks' + ); + assert.equal( + +m, + +moment('2010-01-01'), + 'isoWeeksInYear does not modify moment object' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -78897,27 +141520,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -78927,8 +141555,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -78941,7 +141571,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -78950,254 +141583,893 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('weeks'); + module('weeks'); test('day of year', function (assert) { - assert.equal(moment([2000, 0, 1]).dayOfYear(), 1, 'Jan 1 2000 should be day 1 of the year'); - assert.equal(moment([2000, 1, 28]).dayOfYear(), 59, 'Feb 28 2000 should be day 59 of the year'); - assert.equal(moment([2000, 1, 29]).dayOfYear(), 60, 'Feb 29 2000 should be day 60 of the year'); - assert.equal(moment([2000, 11, 31]).dayOfYear(), 366, 'Dec 31 2000 should be day 366 of the year'); - assert.equal(moment([2001, 0, 1]).dayOfYear(), 1, 'Jan 1 2001 should be day 1 of the year'); - assert.equal(moment([2001, 1, 28]).dayOfYear(), 59, 'Feb 28 2001 should be day 59 of the year'); - assert.equal(moment([2001, 2, 1]).dayOfYear(), 60, 'Mar 1 2001 should be day 60 of the year'); - assert.equal(moment([2001, 11, 31]).dayOfYear(), 365, 'Dec 31 2001 should be day 365 of the year'); + assert.equal( + moment([2000, 0, 1]).dayOfYear(), + 1, + 'Jan 1 2000 should be day 1 of the year' + ); + assert.equal( + moment([2000, 1, 28]).dayOfYear(), + 59, + 'Feb 28 2000 should be day 59 of the year' + ); + assert.equal( + moment([2000, 1, 29]).dayOfYear(), + 60, + 'Feb 29 2000 should be day 60 of the year' + ); + assert.equal( + moment([2000, 11, 31]).dayOfYear(), + 366, + 'Dec 31 2000 should be day 366 of the year' + ); + assert.equal( + moment([2001, 0, 1]).dayOfYear(), + 1, + 'Jan 1 2001 should be day 1 of the year' + ); + assert.equal( + moment([2001, 1, 28]).dayOfYear(), + 59, + 'Feb 28 2001 should be day 59 of the year' + ); + assert.equal( + moment([2001, 2, 1]).dayOfYear(), + 60, + 'Mar 1 2001 should be day 60 of the year' + ); + assert.equal( + moment([2001, 11, 31]).dayOfYear(), + 365, + 'Dec 31 2001 should be day 365 of the year' + ); }); test('day of year setters', function (assert) { - assert.equal(moment([2000, 0, 1]).dayOfYear(200).dayOfYear(), 200, 'Setting Jan 1 2000 day of the year to 200 should work'); - assert.equal(moment([2000, 1, 28]).dayOfYear(200).dayOfYear(), 200, 'Setting Feb 28 2000 day of the year to 200 should work'); - assert.equal(moment([2000, 1, 29]).dayOfYear(200).dayOfYear(), 200, 'Setting Feb 29 2000 day of the year to 200 should work'); - assert.equal(moment([2000, 11, 31]).dayOfYear(200).dayOfYear(), 200, 'Setting Dec 31 2000 day of the year to 200 should work'); - assert.equal(moment().dayOfYear(1).dayOfYear(), 1, 'Setting day of the year to 1 should work'); - assert.equal(moment().dayOfYear(59).dayOfYear(), 59, 'Setting day of the year to 59 should work'); - assert.equal(moment().dayOfYear(60).dayOfYear(), 60, 'Setting day of the year to 60 should work'); - assert.equal(moment().dayOfYear(365).dayOfYear(), 365, 'Setting day of the year to 365 should work'); + assert.equal( + moment([2000, 0, 1]).dayOfYear(200).dayOfYear(), + 200, + 'Setting Jan 1 2000 day of the year to 200 should work' + ); + assert.equal( + moment([2000, 1, 28]).dayOfYear(200).dayOfYear(), + 200, + 'Setting Feb 28 2000 day of the year to 200 should work' + ); + assert.equal( + moment([2000, 1, 29]).dayOfYear(200).dayOfYear(), + 200, + 'Setting Feb 29 2000 day of the year to 200 should work' + ); + assert.equal( + moment([2000, 11, 31]).dayOfYear(200).dayOfYear(), + 200, + 'Setting Dec 31 2000 day of the year to 200 should work' + ); + assert.equal( + moment().dayOfYear(1).dayOfYear(), + 1, + 'Setting day of the year to 1 should work' + ); + assert.equal( + moment().dayOfYear(59).dayOfYear(), + 59, + 'Setting day of the year to 59 should work' + ); + assert.equal( + moment().dayOfYear(60).dayOfYear(), + 60, + 'Setting day of the year to 60 should work' + ); + assert.equal( + moment().dayOfYear(365).dayOfYear(), + 365, + 'Setting day of the year to 365 should work' + ); }); test('iso weeks year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).isoWeek(), 52, 'Jan 1 2012 should be iso week 52'); - assert.equal(moment([2012, 0, 2]).isoWeek(), 1, 'Jan 2 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 8]).isoWeek(), 1, 'Jan 8 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 9]).isoWeek(), 2, 'Jan 9 2012 should be iso week 2'); - assert.equal(moment([2012, 0, 15]).isoWeek(), 2, 'Jan 15 2012 should be iso week 2'); + assert.equal( + moment([2012, 0, 1]).isoWeek(), + 52, + 'Jan 1 2012 should be iso week 52' + ); + assert.equal( + moment([2012, 0, 2]).isoWeek(), + 1, + 'Jan 2 2012 should be iso week 1' + ); + assert.equal( + moment([2012, 0, 8]).isoWeek(), + 1, + 'Jan 8 2012 should be iso week 1' + ); + assert.equal( + moment([2012, 0, 9]).isoWeek(), + 2, + 'Jan 9 2012 should be iso week 2' + ); + assert.equal( + moment([2012, 0, 15]).isoWeek(), + 2, + 'Jan 15 2012 should be iso week 2' + ); }); test('iso weeks year starting monday', function (assert) { - assert.equal(moment([2007, 0, 1]).isoWeek(), 1, 'Jan 1 2007 should be iso week 1'); - assert.equal(moment([2007, 0, 7]).isoWeek(), 1, 'Jan 7 2007 should be iso week 1'); - assert.equal(moment([2007, 0, 8]).isoWeek(), 2, 'Jan 8 2007 should be iso week 2'); - assert.equal(moment([2007, 0, 14]).isoWeek(), 2, 'Jan 14 2007 should be iso week 2'); - assert.equal(moment([2007, 0, 15]).isoWeek(), 3, 'Jan 15 2007 should be iso week 3'); + assert.equal( + moment([2007, 0, 1]).isoWeek(), + 1, + 'Jan 1 2007 should be iso week 1' + ); + assert.equal( + moment([2007, 0, 7]).isoWeek(), + 1, + 'Jan 7 2007 should be iso week 1' + ); + assert.equal( + moment([2007, 0, 8]).isoWeek(), + 2, + 'Jan 8 2007 should be iso week 2' + ); + assert.equal( + moment([2007, 0, 14]).isoWeek(), + 2, + 'Jan 14 2007 should be iso week 2' + ); + assert.equal( + moment([2007, 0, 15]).isoWeek(), + 3, + 'Jan 15 2007 should be iso week 3' + ); }); test('iso weeks year starting tuesday', function (assert) { - assert.equal(moment([2007, 11, 31]).isoWeek(), 1, 'Dec 31 2007 should be iso week 1'); - assert.equal(moment([2008, 0, 1]).isoWeek(), 1, 'Jan 1 2008 should be iso week 1'); - assert.equal(moment([2008, 0, 6]).isoWeek(), 1, 'Jan 6 2008 should be iso week 1'); - assert.equal(moment([2008, 0, 7]).isoWeek(), 2, 'Jan 7 2008 should be iso week 2'); - assert.equal(moment([2008, 0, 13]).isoWeek(), 2, 'Jan 13 2008 should be iso week 2'); - assert.equal(moment([2008, 0, 14]).isoWeek(), 3, 'Jan 14 2008 should be iso week 3'); + assert.equal( + moment([2007, 11, 31]).isoWeek(), + 1, + 'Dec 31 2007 should be iso week 1' + ); + assert.equal( + moment([2008, 0, 1]).isoWeek(), + 1, + 'Jan 1 2008 should be iso week 1' + ); + assert.equal( + moment([2008, 0, 6]).isoWeek(), + 1, + 'Jan 6 2008 should be iso week 1' + ); + assert.equal( + moment([2008, 0, 7]).isoWeek(), + 2, + 'Jan 7 2008 should be iso week 2' + ); + assert.equal( + moment([2008, 0, 13]).isoWeek(), + 2, + 'Jan 13 2008 should be iso week 2' + ); + assert.equal( + moment([2008, 0, 14]).isoWeek(), + 3, + 'Jan 14 2008 should be iso week 3' + ); }); test('iso weeks year starting wednesday', function (assert) { - assert.equal(moment([2002, 11, 30]).isoWeek(), 1, 'Dec 30 2002 should be iso week 1'); - assert.equal(moment([2003, 0, 1]).isoWeek(), 1, 'Jan 1 2003 should be iso week 1'); - assert.equal(moment([2003, 0, 5]).isoWeek(), 1, 'Jan 5 2003 should be iso week 1'); - assert.equal(moment([2003, 0, 6]).isoWeek(), 2, 'Jan 6 2003 should be iso week 2'); - assert.equal(moment([2003, 0, 12]).isoWeek(), 2, 'Jan 12 2003 should be iso week 2'); - assert.equal(moment([2003, 0, 13]).isoWeek(), 3, 'Jan 13 2003 should be iso week 3'); + assert.equal( + moment([2002, 11, 30]).isoWeek(), + 1, + 'Dec 30 2002 should be iso week 1' + ); + assert.equal( + moment([2003, 0, 1]).isoWeek(), + 1, + 'Jan 1 2003 should be iso week 1' + ); + assert.equal( + moment([2003, 0, 5]).isoWeek(), + 1, + 'Jan 5 2003 should be iso week 1' + ); + assert.equal( + moment([2003, 0, 6]).isoWeek(), + 2, + 'Jan 6 2003 should be iso week 2' + ); + assert.equal( + moment([2003, 0, 12]).isoWeek(), + 2, + 'Jan 12 2003 should be iso week 2' + ); + assert.equal( + moment([2003, 0, 13]).isoWeek(), + 3, + 'Jan 13 2003 should be iso week 3' + ); }); test('iso weeks year starting thursday', function (assert) { - assert.equal(moment([2008, 11, 29]).isoWeek(), 1, 'Dec 29 2008 should be iso week 1'); - assert.equal(moment([2009, 0, 1]).isoWeek(), 1, 'Jan 1 2009 should be iso week 1'); - assert.equal(moment([2009, 0, 4]).isoWeek(), 1, 'Jan 4 2009 should be iso week 1'); - assert.equal(moment([2009, 0, 5]).isoWeek(), 2, 'Jan 5 2009 should be iso week 2'); - assert.equal(moment([2009, 0, 11]).isoWeek(), 2, 'Jan 11 2009 should be iso week 2'); - assert.equal(moment([2009, 0, 13]).isoWeek(), 3, 'Jan 12 2009 should be iso week 3'); + assert.equal( + moment([2008, 11, 29]).isoWeek(), + 1, + 'Dec 29 2008 should be iso week 1' + ); + assert.equal( + moment([2009, 0, 1]).isoWeek(), + 1, + 'Jan 1 2009 should be iso week 1' + ); + assert.equal( + moment([2009, 0, 4]).isoWeek(), + 1, + 'Jan 4 2009 should be iso week 1' + ); + assert.equal( + moment([2009, 0, 5]).isoWeek(), + 2, + 'Jan 5 2009 should be iso week 2' + ); + assert.equal( + moment([2009, 0, 11]).isoWeek(), + 2, + 'Jan 11 2009 should be iso week 2' + ); + assert.equal( + moment([2009, 0, 13]).isoWeek(), + 3, + 'Jan 12 2009 should be iso week 3' + ); }); test('iso weeks year starting friday', function (assert) { - assert.equal(moment([2009, 11, 28]).isoWeek(), 53, 'Dec 28 2009 should be iso week 53'); - assert.equal(moment([2010, 0, 1]).isoWeek(), 53, 'Jan 1 2010 should be iso week 53'); - assert.equal(moment([2010, 0, 3]).isoWeek(), 53, 'Jan 3 2010 should be iso week 53'); - assert.equal(moment([2010, 0, 4]).isoWeek(), 1, 'Jan 4 2010 should be iso week 1'); - assert.equal(moment([2010, 0, 10]).isoWeek(), 1, 'Jan 10 2010 should be iso week 1'); - assert.equal(moment([2010, 0, 11]).isoWeek(), 2, 'Jan 11 2010 should be iso week 2'); + assert.equal( + moment([2009, 11, 28]).isoWeek(), + 53, + 'Dec 28 2009 should be iso week 53' + ); + assert.equal( + moment([2010, 0, 1]).isoWeek(), + 53, + 'Jan 1 2010 should be iso week 53' + ); + assert.equal( + moment([2010, 0, 3]).isoWeek(), + 53, + 'Jan 3 2010 should be iso week 53' + ); + assert.equal( + moment([2010, 0, 4]).isoWeek(), + 1, + 'Jan 4 2010 should be iso week 1' + ); + assert.equal( + moment([2010, 0, 10]).isoWeek(), + 1, + 'Jan 10 2010 should be iso week 1' + ); + assert.equal( + moment([2010, 0, 11]).isoWeek(), + 2, + 'Jan 11 2010 should be iso week 2' + ); }); test('iso weeks year starting saturday', function (assert) { - assert.equal(moment([2010, 11, 27]).isoWeek(), 52, 'Dec 27 2010 should be iso week 52'); - assert.equal(moment([2011, 0, 1]).isoWeek(), 52, 'Jan 1 2011 should be iso week 52'); - assert.equal(moment([2011, 0, 2]).isoWeek(), 52, 'Jan 2 2011 should be iso week 52'); - assert.equal(moment([2011, 0, 3]).isoWeek(), 1, 'Jan 3 2011 should be iso week 1'); - assert.equal(moment([2011, 0, 9]).isoWeek(), 1, 'Jan 9 2011 should be iso week 1'); - assert.equal(moment([2011, 0, 10]).isoWeek(), 2, 'Jan 10 2011 should be iso week 2'); + assert.equal( + moment([2010, 11, 27]).isoWeek(), + 52, + 'Dec 27 2010 should be iso week 52' + ); + assert.equal( + moment([2011, 0, 1]).isoWeek(), + 52, + 'Jan 1 2011 should be iso week 52' + ); + assert.equal( + moment([2011, 0, 2]).isoWeek(), + 52, + 'Jan 2 2011 should be iso week 52' + ); + assert.equal( + moment([2011, 0, 3]).isoWeek(), + 1, + 'Jan 3 2011 should be iso week 1' + ); + assert.equal( + moment([2011, 0, 9]).isoWeek(), + 1, + 'Jan 9 2011 should be iso week 1' + ); + assert.equal( + moment([2011, 0, 10]).isoWeek(), + 2, + 'Jan 10 2011 should be iso week 2' + ); }); test('iso 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 iso week 52'); - assert.equal(moment([2012, 0, 2]).format('W WW Wo'), '1 01 1st', 'Jan 2 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 8]).format('W WW Wo'), '1 01 1st', 'Jan 8 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 9]).format('W WW Wo'), '2 02 2nd', 'Jan 9 2012 should be iso week 2'); - assert.equal(moment([2012, 0, 15]).format('W WW Wo'), '2 02 2nd', 'Jan 15 2012 should be iso week 2'); + assert.equal( + moment([2012, 0, 1]).format('W WW Wo'), + '52 52 52nd', + 'Jan 1 2012 should be iso week 52' + ); + assert.equal( + moment([2012, 0, 2]).format('W WW Wo'), + '1 01 1st', + 'Jan 2 2012 should be iso week 1' + ); + assert.equal( + moment([2012, 0, 8]).format('W WW Wo'), + '1 01 1st', + 'Jan 8 2012 should be iso week 1' + ); + assert.equal( + moment([2012, 0, 9]).format('W WW Wo'), + '2 02 2nd', + 'Jan 9 2012 should be iso week 2' + ); + assert.equal( + moment([2012, 0, 15]).format('W WW Wo'), + '2 02 2nd', + 'Jan 15 2012 should be iso week 2' + ); }); test('weeks plural year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).weeks(), 1, 'Jan 1 2012 should be week 1'); - assert.equal(moment([2012, 0, 7]).weeks(), 1, 'Jan 7 2012 should be week 1'); - assert.equal(moment([2012, 0, 8]).weeks(), 2, 'Jan 8 2012 should be week 2'); - assert.equal(moment([2012, 0, 14]).weeks(), 2, 'Jan 14 2012 should be week 2'); - assert.equal(moment([2012, 0, 15]).weeks(), 3, 'Jan 15 2012 should be week 3'); + assert.equal( + moment([2012, 0, 1]).weeks(), + 1, + 'Jan 1 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 7]).weeks(), + 1, + 'Jan 7 2012 should be week 1' + ); + assert.equal( + moment([2012, 0, 8]).weeks(), + 2, + 'Jan 8 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 14]).weeks(), + 2, + 'Jan 14 2012 should be week 2' + ); + assert.equal( + moment([2012, 0, 15]).weeks(), + 3, + 'Jan 15 2012 should be week 3' + ); }); test('iso weeks plural year starting sunday', function (assert) { - assert.equal(moment([2012, 0, 1]).isoWeeks(), 52, 'Jan 1 2012 should be iso week 52'); - assert.equal(moment([2012, 0, 2]).isoWeeks(), 1, 'Jan 2 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 8]).isoWeeks(), 1, 'Jan 8 2012 should be iso week 1'); - assert.equal(moment([2012, 0, 9]).isoWeeks(), 2, 'Jan 9 2012 should be iso week 2'); - assert.equal(moment([2012, 0, 15]).isoWeeks(), 2, 'Jan 15 2012 should be iso week 2'); + assert.equal( + moment([2012, 0, 1]).isoWeeks(), + 52, + 'Jan 1 2012 should be iso week 52' + ); + assert.equal( + moment([2012, 0, 2]).isoWeeks(), + 1, + 'Jan 2 2012 should be iso week 1' + ); + assert.equal( + moment([2012, 0, 8]).isoWeeks(), + 1, + 'Jan 8 2012 should be iso week 1' + ); + assert.equal( + moment([2012, 0, 9]).isoWeeks(), + 2, + 'Jan 9 2012 should be iso week 2' + ); + assert.equal( + moment([2012, 0, 15]).isoWeeks(), + 2, + 'Jan 15 2012 should be iso week 2' + ); }); test('weeks setter', function (assert) { - assert.equal(moment([2012, 0, 1]).week(30).week(), 30, 'Setting Jan 1 2012 to week 30 should work'); - assert.equal(moment([2012, 0, 7]).week(30).week(), 30, 'Setting Jan 7 2012 to week 30 should work'); - assert.equal(moment([2012, 0, 8]).week(30).week(), 30, 'Setting Jan 8 2012 to week 30 should work'); - assert.equal(moment([2012, 0, 14]).week(30).week(), 30, 'Setting Jan 14 2012 to week 30 should work'); - assert.equal(moment([2012, 0, 15]).week(30).week(), 30, 'Setting Jan 15 2012 to week 30 should work'); + assert.equal( + moment([2012, 0, 1]).week(30).week(), + 30, + 'Setting Jan 1 2012 to week 30 should work' + ); + assert.equal( + moment([2012, 0, 7]).week(30).week(), + 30, + 'Setting Jan 7 2012 to week 30 should work' + ); + assert.equal( + moment([2012, 0, 8]).week(30).week(), + 30, + 'Setting Jan 8 2012 to week 30 should work' + ); + assert.equal( + moment([2012, 0, 14]).week(30).week(), + 30, + 'Setting Jan 14 2012 to week 30 should work' + ); + assert.equal( + moment([2012, 0, 15]).week(30).week(), + 30, + 'Setting Jan 15 2012 to week 30 should work' + ); }); test('iso weeks setter', function (assert) { - assert.equal(moment([2012, 0, 1]).isoWeeks(25).isoWeeks(), 25, 'Setting Jan 1 2012 to week 25 should work'); - assert.equal(moment([2012, 0, 2]).isoWeeks(24).isoWeeks(), 24, 'Setting Jan 2 2012 to week 24 should work'); - assert.equal(moment([2012, 0, 8]).isoWeeks(23).isoWeeks(), 23, 'Setting Jan 8 2012 to week 23 should work'); - assert.equal(moment([2012, 0, 9]).isoWeeks(22).isoWeeks(), 22, 'Setting Jan 9 2012 to week 22 should work'); - assert.equal(moment([2012, 0, 15]).isoWeeks(21).isoWeeks(), 21, 'Setting Jan 15 2012 to week 21 should work'); + assert.equal( + moment([2012, 0, 1]).isoWeeks(25).isoWeeks(), + 25, + 'Setting Jan 1 2012 to week 25 should work' + ); + assert.equal( + moment([2012, 0, 2]).isoWeeks(24).isoWeeks(), + 24, + 'Setting Jan 2 2012 to week 24 should work' + ); + assert.equal( + moment([2012, 0, 8]).isoWeeks(23).isoWeeks(), + 23, + 'Setting Jan 8 2012 to week 23 should work' + ); + assert.equal( + moment([2012, 0, 9]).isoWeeks(22).isoWeeks(), + 22, + 'Setting Jan 9 2012 to week 22 should work' + ); + assert.equal( + moment([2012, 0, 15]).isoWeeks(21).isoWeeks(), + 21, + 'Setting Jan 15 2012 to week 21 should work' + ); }); test('iso weeks setter day of year', function (assert) { - assert.equal(moment([2012, 0, 1]).isoWeek(1).dayOfYear(), 9, 'Setting Jan 1 2012 to week 1 should be day of year 8'); - assert.equal(moment([2012, 0, 1]).isoWeek(1).year(), 2011, 'Setting Jan 1 2012 to week 1 should be year 2011'); - assert.equal(moment([2012, 0, 2]).isoWeek(1).dayOfYear(), 2, 'Setting Jan 2 2012 to week 1 should be day of year 2'); - assert.equal(moment([2012, 0, 8]).isoWeek(1).dayOfYear(), 8, 'Setting Jan 8 2012 to week 1 should be day of year 8'); - assert.equal(moment([2012, 0, 9]).isoWeek(1).dayOfYear(), 2, 'Setting Jan 9 2012 to week 1 should be day of year 2'); - assert.equal(moment([2012, 0, 15]).isoWeek(1).dayOfYear(), 8, 'Setting Jan 15 2012 to week 1 should be day of year 8'); + assert.equal( + moment([2012, 0, 1]).isoWeek(1).dayOfYear(), + 9, + 'Setting Jan 1 2012 to week 1 should be day of year 8' + ); + assert.equal( + moment([2012, 0, 1]).isoWeek(1).year(), + 2011, + 'Setting Jan 1 2012 to week 1 should be year 2011' + ); + assert.equal( + moment([2012, 0, 2]).isoWeek(1).dayOfYear(), + 2, + 'Setting Jan 2 2012 to week 1 should be day of year 2' + ); + assert.equal( + moment([2012, 0, 8]).isoWeek(1).dayOfYear(), + 8, + 'Setting Jan 8 2012 to week 1 should be day of year 8' + ); + assert.equal( + moment([2012, 0, 9]).isoWeek(1).dayOfYear(), + 2, + 'Setting Jan 9 2012 to week 1 should be day of year 2' + ); + assert.equal( + moment([2012, 0, 15]).isoWeek(1).dayOfYear(), + 8, + 'Setting Jan 15 2012 to week 1 should be day of year 8' + ); }); test('years with iso week 53', function (assert) { // Based on a table taken from https://en.wikipedia.org/wiki/ISO_week_date // (as downloaded on 2014-01-06) listing the 71 years in a 400-year cycle // that have 53 weeks; in this case reflecting the 2000 based cycle - assert.equal(moment([2004, 11, 31]).isoWeek(), 53, 'Dec 31 2004 should be iso week 53'); - assert.equal(moment([2009, 11, 31]).isoWeek(), 53, 'Dec 31 2009 should be iso week 53'); - assert.equal(moment([2015, 11, 31]).isoWeek(), 53, 'Dec 31 2015 should be iso week 53'); - assert.equal(moment([2020, 11, 31]).isoWeek(), 53, 'Dec 31 2020 should be iso week 53'); - assert.equal(moment([2026, 11, 31]).isoWeek(), 53, 'Dec 31 2026 should be iso week 53'); - assert.equal(moment([2032, 11, 31]).isoWeek(), 53, 'Dec 31 2032 should be iso week 53'); - assert.equal(moment([2037, 11, 31]).isoWeek(), 53, 'Dec 31 2037 should be iso week 53'); - assert.equal(moment([2043, 11, 31]).isoWeek(), 53, 'Dec 31 2043 should be iso week 53'); - assert.equal(moment([2048, 11, 31]).isoWeek(), 53, 'Dec 31 2048 should be iso week 53'); - assert.equal(moment([2054, 11, 31]).isoWeek(), 53, 'Dec 31 2054 should be iso week 53'); - assert.equal(moment([2060, 11, 31]).isoWeek(), 53, 'Dec 31 2060 should be iso week 53'); - assert.equal(moment([2065, 11, 31]).isoWeek(), 53, 'Dec 31 2065 should be iso week 53'); - assert.equal(moment([2071, 11, 31]).isoWeek(), 53, 'Dec 31 2071 should be iso week 53'); - assert.equal(moment([2076, 11, 31]).isoWeek(), 53, 'Dec 31 2076 should be iso week 53'); - assert.equal(moment([2082, 11, 31]).isoWeek(), 53, 'Dec 31 2082 should be iso week 53'); - assert.equal(moment([2088, 11, 31]).isoWeek(), 53, 'Dec 31 2088 should be iso week 53'); - assert.equal(moment([2093, 11, 31]).isoWeek(), 53, 'Dec 31 2093 should be iso week 53'); - assert.equal(moment([2099, 11, 31]).isoWeek(), 53, 'Dec 31 2099 should be iso week 53'); - assert.equal(moment([2105, 11, 31]).isoWeek(), 53, 'Dec 31 2105 should be iso week 53'); - assert.equal(moment([2111, 11, 31]).isoWeek(), 53, 'Dec 31 2111 should be iso week 53'); - assert.equal(moment([2116, 11, 31]).isoWeek(), 53, 'Dec 31 2116 should be iso week 53'); - assert.equal(moment([2122, 11, 31]).isoWeek(), 53, 'Dec 31 2122 should be iso week 53'); - assert.equal(moment([2128, 11, 31]).isoWeek(), 53, 'Dec 31 2128 should be iso week 53'); - assert.equal(moment([2133, 11, 31]).isoWeek(), 53, 'Dec 31 2133 should be iso week 53'); - assert.equal(moment([2139, 11, 31]).isoWeek(), 53, 'Dec 31 2139 should be iso week 53'); - assert.equal(moment([2144, 11, 31]).isoWeek(), 53, 'Dec 31 2144 should be iso week 53'); - assert.equal(moment([2150, 11, 31]).isoWeek(), 53, 'Dec 31 2150 should be iso week 53'); - assert.equal(moment([2156, 11, 31]).isoWeek(), 53, 'Dec 31 2156 should be iso week 53'); - assert.equal(moment([2161, 11, 31]).isoWeek(), 53, 'Dec 31 2161 should be iso week 53'); - assert.equal(moment([2167, 11, 31]).isoWeek(), 53, 'Dec 31 2167 should be iso week 53'); - assert.equal(moment([2172, 11, 31]).isoWeek(), 53, 'Dec 31 2172 should be iso week 53'); - assert.equal(moment([2178, 11, 31]).isoWeek(), 53, 'Dec 31 2178 should be iso week 53'); - assert.equal(moment([2184, 11, 31]).isoWeek(), 53, 'Dec 31 2184 should be iso week 53'); - assert.equal(moment([2189, 11, 31]).isoWeek(), 53, 'Dec 31 2189 should be iso week 53'); - assert.equal(moment([2195, 11, 31]).isoWeek(), 53, 'Dec 31 2195 should be iso week 53'); - assert.equal(moment([2201, 11, 31]).isoWeek(), 53, 'Dec 31 2201 should be iso week 53'); - assert.equal(moment([2207, 11, 31]).isoWeek(), 53, 'Dec 31 2207 should be iso week 53'); - assert.equal(moment([2212, 11, 31]).isoWeek(), 53, 'Dec 31 2212 should be iso week 53'); - assert.equal(moment([2218, 11, 31]).isoWeek(), 53, 'Dec 31 2218 should be iso week 53'); - assert.equal(moment([2224, 11, 31]).isoWeek(), 53, 'Dec 31 2224 should be iso week 53'); - assert.equal(moment([2229, 11, 31]).isoWeek(), 53, 'Dec 31 2229 should be iso week 53'); - assert.equal(moment([2235, 11, 31]).isoWeek(), 53, 'Dec 31 2235 should be iso week 53'); - assert.equal(moment([2240, 11, 31]).isoWeek(), 53, 'Dec 31 2240 should be iso week 53'); - assert.equal(moment([2246, 11, 31]).isoWeek(), 53, 'Dec 31 2246 should be iso week 53'); - assert.equal(moment([2252, 11, 31]).isoWeek(), 53, 'Dec 31 2252 should be iso week 53'); - assert.equal(moment([2257, 11, 31]).isoWeek(), 53, 'Dec 31 2257 should be iso week 53'); - assert.equal(moment([2263, 11, 31]).isoWeek(), 53, 'Dec 31 2263 should be iso week 53'); - assert.equal(moment([2268, 11, 31]).isoWeek(), 53, 'Dec 31 2268 should be iso week 53'); - assert.equal(moment([2274, 11, 31]).isoWeek(), 53, 'Dec 31 2274 should be iso week 53'); - assert.equal(moment([2280, 11, 31]).isoWeek(), 53, 'Dec 31 2280 should be iso week 53'); - assert.equal(moment([2285, 11, 31]).isoWeek(), 53, 'Dec 31 2285 should be iso week 53'); - assert.equal(moment([2291, 11, 31]).isoWeek(), 53, 'Dec 31 2291 should be iso week 53'); - assert.equal(moment([2296, 11, 31]).isoWeek(), 53, 'Dec 31 2296 should be iso week 53'); - assert.equal(moment([2303, 11, 31]).isoWeek(), 53, 'Dec 31 2303 should be iso week 53'); - assert.equal(moment([2308, 11, 31]).isoWeek(), 53, 'Dec 31 2308 should be iso week 53'); - assert.equal(moment([2314, 11, 31]).isoWeek(), 53, 'Dec 31 2314 should be iso week 53'); - assert.equal(moment([2320, 11, 31]).isoWeek(), 53, 'Dec 31 2320 should be iso week 53'); - assert.equal(moment([2325, 11, 31]).isoWeek(), 53, 'Dec 31 2325 should be iso week 53'); - assert.equal(moment([2331, 11, 31]).isoWeek(), 53, 'Dec 31 2331 should be iso week 53'); - assert.equal(moment([2336, 11, 31]).isoWeek(), 53, 'Dec 31 2336 should be iso week 53'); - assert.equal(moment([2342, 11, 31]).isoWeek(), 53, 'Dec 31 2342 should be iso week 53'); - assert.equal(moment([2348, 11, 31]).isoWeek(), 53, 'Dec 31 2348 should be iso week 53'); - assert.equal(moment([2353, 11, 31]).isoWeek(), 53, 'Dec 31 2353 should be iso week 53'); - assert.equal(moment([2359, 11, 31]).isoWeek(), 53, 'Dec 31 2359 should be iso week 53'); - assert.equal(moment([2364, 11, 31]).isoWeek(), 53, 'Dec 31 2364 should be iso week 53'); - assert.equal(moment([2370, 11, 31]).isoWeek(), 53, 'Dec 31 2370 should be iso week 53'); - assert.equal(moment([2376, 11, 31]).isoWeek(), 53, 'Dec 31 2376 should be iso week 53'); - assert.equal(moment([2381, 11, 31]).isoWeek(), 53, 'Dec 31 2381 should be iso week 53'); - assert.equal(moment([2387, 11, 31]).isoWeek(), 53, 'Dec 31 2387 should be iso week 53'); - assert.equal(moment([2392, 11, 31]).isoWeek(), 53, 'Dec 31 2392 should be iso week 53'); - assert.equal(moment([2398, 11, 31]).isoWeek(), 53, 'Dec 31 2398 should be iso week 53'); + assert.equal( + moment([2004, 11, 31]).isoWeek(), + 53, + 'Dec 31 2004 should be iso week 53' + ); + assert.equal( + moment([2009, 11, 31]).isoWeek(), + 53, + 'Dec 31 2009 should be iso week 53' + ); + assert.equal( + moment([2015, 11, 31]).isoWeek(), + 53, + 'Dec 31 2015 should be iso week 53' + ); + assert.equal( + moment([2020, 11, 31]).isoWeek(), + 53, + 'Dec 31 2020 should be iso week 53' + ); + assert.equal( + moment([2026, 11, 31]).isoWeek(), + 53, + 'Dec 31 2026 should be iso week 53' + ); + assert.equal( + moment([2032, 11, 31]).isoWeek(), + 53, + 'Dec 31 2032 should be iso week 53' + ); + assert.equal( + moment([2037, 11, 31]).isoWeek(), + 53, + 'Dec 31 2037 should be iso week 53' + ); + assert.equal( + moment([2043, 11, 31]).isoWeek(), + 53, + 'Dec 31 2043 should be iso week 53' + ); + assert.equal( + moment([2048, 11, 31]).isoWeek(), + 53, + 'Dec 31 2048 should be iso week 53' + ); + assert.equal( + moment([2054, 11, 31]).isoWeek(), + 53, + 'Dec 31 2054 should be iso week 53' + ); + assert.equal( + moment([2060, 11, 31]).isoWeek(), + 53, + 'Dec 31 2060 should be iso week 53' + ); + assert.equal( + moment([2065, 11, 31]).isoWeek(), + 53, + 'Dec 31 2065 should be iso week 53' + ); + assert.equal( + moment([2071, 11, 31]).isoWeek(), + 53, + 'Dec 31 2071 should be iso week 53' + ); + assert.equal( + moment([2076, 11, 31]).isoWeek(), + 53, + 'Dec 31 2076 should be iso week 53' + ); + assert.equal( + moment([2082, 11, 31]).isoWeek(), + 53, + 'Dec 31 2082 should be iso week 53' + ); + assert.equal( + moment([2088, 11, 31]).isoWeek(), + 53, + 'Dec 31 2088 should be iso week 53' + ); + assert.equal( + moment([2093, 11, 31]).isoWeek(), + 53, + 'Dec 31 2093 should be iso week 53' + ); + assert.equal( + moment([2099, 11, 31]).isoWeek(), + 53, + 'Dec 31 2099 should be iso week 53' + ); + assert.equal( + moment([2105, 11, 31]).isoWeek(), + 53, + 'Dec 31 2105 should be iso week 53' + ); + assert.equal( + moment([2111, 11, 31]).isoWeek(), + 53, + 'Dec 31 2111 should be iso week 53' + ); + assert.equal( + moment([2116, 11, 31]).isoWeek(), + 53, + 'Dec 31 2116 should be iso week 53' + ); + assert.equal( + moment([2122, 11, 31]).isoWeek(), + 53, + 'Dec 31 2122 should be iso week 53' + ); + assert.equal( + moment([2128, 11, 31]).isoWeek(), + 53, + 'Dec 31 2128 should be iso week 53' + ); + assert.equal( + moment([2133, 11, 31]).isoWeek(), + 53, + 'Dec 31 2133 should be iso week 53' + ); + assert.equal( + moment([2139, 11, 31]).isoWeek(), + 53, + 'Dec 31 2139 should be iso week 53' + ); + assert.equal( + moment([2144, 11, 31]).isoWeek(), + 53, + 'Dec 31 2144 should be iso week 53' + ); + assert.equal( + moment([2150, 11, 31]).isoWeek(), + 53, + 'Dec 31 2150 should be iso week 53' + ); + assert.equal( + moment([2156, 11, 31]).isoWeek(), + 53, + 'Dec 31 2156 should be iso week 53' + ); + assert.equal( + moment([2161, 11, 31]).isoWeek(), + 53, + 'Dec 31 2161 should be iso week 53' + ); + assert.equal( + moment([2167, 11, 31]).isoWeek(), + 53, + 'Dec 31 2167 should be iso week 53' + ); + assert.equal( + moment([2172, 11, 31]).isoWeek(), + 53, + 'Dec 31 2172 should be iso week 53' + ); + assert.equal( + moment([2178, 11, 31]).isoWeek(), + 53, + 'Dec 31 2178 should be iso week 53' + ); + assert.equal( + moment([2184, 11, 31]).isoWeek(), + 53, + 'Dec 31 2184 should be iso week 53' + ); + assert.equal( + moment([2189, 11, 31]).isoWeek(), + 53, + 'Dec 31 2189 should be iso week 53' + ); + assert.equal( + moment([2195, 11, 31]).isoWeek(), + 53, + 'Dec 31 2195 should be iso week 53' + ); + assert.equal( + moment([2201, 11, 31]).isoWeek(), + 53, + 'Dec 31 2201 should be iso week 53' + ); + assert.equal( + moment([2207, 11, 31]).isoWeek(), + 53, + 'Dec 31 2207 should be iso week 53' + ); + assert.equal( + moment([2212, 11, 31]).isoWeek(), + 53, + 'Dec 31 2212 should be iso week 53' + ); + assert.equal( + moment([2218, 11, 31]).isoWeek(), + 53, + 'Dec 31 2218 should be iso week 53' + ); + assert.equal( + moment([2224, 11, 31]).isoWeek(), + 53, + 'Dec 31 2224 should be iso week 53' + ); + assert.equal( + moment([2229, 11, 31]).isoWeek(), + 53, + 'Dec 31 2229 should be iso week 53' + ); + assert.equal( + moment([2235, 11, 31]).isoWeek(), + 53, + 'Dec 31 2235 should be iso week 53' + ); + assert.equal( + moment([2240, 11, 31]).isoWeek(), + 53, + 'Dec 31 2240 should be iso week 53' + ); + assert.equal( + moment([2246, 11, 31]).isoWeek(), + 53, + 'Dec 31 2246 should be iso week 53' + ); + assert.equal( + moment([2252, 11, 31]).isoWeek(), + 53, + 'Dec 31 2252 should be iso week 53' + ); + assert.equal( + moment([2257, 11, 31]).isoWeek(), + 53, + 'Dec 31 2257 should be iso week 53' + ); + assert.equal( + moment([2263, 11, 31]).isoWeek(), + 53, + 'Dec 31 2263 should be iso week 53' + ); + assert.equal( + moment([2268, 11, 31]).isoWeek(), + 53, + 'Dec 31 2268 should be iso week 53' + ); + assert.equal( + moment([2274, 11, 31]).isoWeek(), + 53, + 'Dec 31 2274 should be iso week 53' + ); + assert.equal( + moment([2280, 11, 31]).isoWeek(), + 53, + 'Dec 31 2280 should be iso week 53' + ); + assert.equal( + moment([2285, 11, 31]).isoWeek(), + 53, + 'Dec 31 2285 should be iso week 53' + ); + assert.equal( + moment([2291, 11, 31]).isoWeek(), + 53, + 'Dec 31 2291 should be iso week 53' + ); + assert.equal( + moment([2296, 11, 31]).isoWeek(), + 53, + 'Dec 31 2296 should be iso week 53' + ); + assert.equal( + moment([2303, 11, 31]).isoWeek(), + 53, + 'Dec 31 2303 should be iso week 53' + ); + assert.equal( + moment([2308, 11, 31]).isoWeek(), + 53, + 'Dec 31 2308 should be iso week 53' + ); + assert.equal( + moment([2314, 11, 31]).isoWeek(), + 53, + 'Dec 31 2314 should be iso week 53' + ); + assert.equal( + moment([2320, 11, 31]).isoWeek(), + 53, + 'Dec 31 2320 should be iso week 53' + ); + assert.equal( + moment([2325, 11, 31]).isoWeek(), + 53, + 'Dec 31 2325 should be iso week 53' + ); + assert.equal( + moment([2331, 11, 31]).isoWeek(), + 53, + 'Dec 31 2331 should be iso week 53' + ); + assert.equal( + moment([2336, 11, 31]).isoWeek(), + 53, + 'Dec 31 2336 should be iso week 53' + ); + assert.equal( + moment([2342, 11, 31]).isoWeek(), + 53, + 'Dec 31 2342 should be iso week 53' + ); + assert.equal( + moment([2348, 11, 31]).isoWeek(), + 53, + 'Dec 31 2348 should be iso week 53' + ); + assert.equal( + moment([2353, 11, 31]).isoWeek(), + 53, + 'Dec 31 2353 should be iso week 53' + ); + assert.equal( + moment([2359, 11, 31]).isoWeek(), + 53, + 'Dec 31 2359 should be iso week 53' + ); + assert.equal( + moment([2364, 11, 31]).isoWeek(), + 53, + 'Dec 31 2364 should be iso week 53' + ); + assert.equal( + moment([2370, 11, 31]).isoWeek(), + 53, + 'Dec 31 2370 should be iso week 53' + ); + assert.equal( + moment([2376, 11, 31]).isoWeek(), + 53, + 'Dec 31 2376 should be iso week 53' + ); + assert.equal( + moment([2381, 11, 31]).isoWeek(), + 53, + 'Dec 31 2381 should be iso week 53' + ); + assert.equal( + moment([2387, 11, 31]).isoWeek(), + 53, + 'Dec 31 2387 should be iso week 53' + ); + assert.equal( + moment([2392, 11, 31]).isoWeek(), + 53, + 'Dec 31 2392 should be iso week 53' + ); + assert.equal( + moment([2398, 11, 31]).isoWeek(), + 53, + 'Dec 31 2398 should be iso week 53' + ); }); test('count years with iso week 53', function (assert) { // Based on https://en.wikipedia.org/wiki/ISO_week_date (as seen on 2014-01-06) // stating that there are 71 years in a 400-year cycle that have 53 weeks; // in this case reflecting the 2000 based cycle - var count = 0, i; + var count = 0, + i; for (i = 0; i < 400; i++) { - count += (moment([2000 + i, 11, 31]).isoWeek() === 53) ? 1 : 0; + count += moment([2000 + i, 11, 31]).isoWeek() === 53 ? 1 : 0; } - assert.equal(count, 71, 'Should have 71 years in 400-year cycle with iso week 53'); + assert.equal( + count, + 71, + 'Should have 71 years in 400-year cycle with iso week 53' + ); }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -79212,27 +142484,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -79242,8 +142519,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -79256,7 +142535,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -79265,223 +142547,61 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } - }); - } - - module$1('weeks in year'); - - test('isoWeeksInYear', function (assert) { - assert.equal(moment([2004]).isoWeeksInYear(), 53, '2004 has 53 iso weeks'); - assert.equal(moment([2005]).isoWeeksInYear(), 52, '2005 has 53 iso weeks'); - assert.equal(moment([2006]).isoWeeksInYear(), 52, '2006 has 53 iso weeks'); - assert.equal(moment([2007]).isoWeeksInYear(), 52, '2007 has 52 iso weeks'); - assert.equal(moment([2008]).isoWeeksInYear(), 52, '2008 has 53 iso weeks'); - assert.equal(moment([2009]).isoWeeksInYear(), 53, '2009 has 53 iso weeks'); - assert.equal(moment([2010]).isoWeeksInYear(), 52, '2010 has 52 iso weeks'); - assert.equal(moment([2011]).isoWeeksInYear(), 52, '2011 has 52 iso weeks'); - assert.equal(moment([2012]).isoWeeksInYear(), 52, '2012 has 52 iso weeks'); - assert.equal(moment([2013]).isoWeeksInYear(), 52, '2013 has 52 iso weeks'); - assert.equal(moment([2014]).isoWeeksInYear(), 52, '2014 has 52 iso weeks'); - assert.equal(moment([2015]).isoWeeksInYear(), 53, '2015 has 53 iso weeks'); - }); - - test('weeksInYear doy/dow = 1/4', function (assert) { - moment.locale('1/4', {week: {dow: 1, doy: 4}}); - - assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks'); - assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks'); - assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); - assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); - assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); - assert.equal(moment([2009]).weeksInYear(), 53, '2009 has 53 weeks'); - assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); - assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); - assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); - assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); - assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); - assert.equal(moment([2015]).weeksInYear(), 53, '2015 has 53 weeks'); - }); - - test('weeksInYear doy/dow = 6/12', function (assert) { - moment.locale('6/12', {week: {dow: 6, doy: 12}}); - - assert.equal(moment([2004]).weeksInYear(), 53, '2004 has 53 weeks'); - assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks'); - assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); - assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); - assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); - assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); - assert.equal(moment([2010]).weeksInYear(), 53, '2010 has 52 weeks'); - assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); - assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); - assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); - assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); - assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); - }); - - test('weeksInYear doy/dow = 1/7', function (assert) { - moment.locale('1/7', {week: {dow: 1, doy: 7}}); - - assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks'); - assert.equal(moment([2005]).weeksInYear(), 52, '2005 has 53 weeks'); - assert.equal(moment([2006]).weeksInYear(), 53, '2006 has 53 weeks'); - assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); - assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); - assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); - assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); - assert.equal(moment([2011]).weeksInYear(), 52, '2011 has 52 weeks'); - assert.equal(moment([2012]).weeksInYear(), 53, '2012 has 52 weeks'); - assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); - assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); - assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); - }); - - test('weeksInYear doy/dow = 0/6', function (assert) { - moment.locale('0/6', {week: {dow: 0, doy: 6}}); - - assert.equal(moment([2004]).weeksInYear(), 52, '2004 has 53 weeks'); - assert.equal(moment([2005]).weeksInYear(), 53, '2005 has 53 weeks'); - assert.equal(moment([2006]).weeksInYear(), 52, '2006 has 53 weeks'); - assert.equal(moment([2007]).weeksInYear(), 52, '2007 has 52 weeks'); - assert.equal(moment([2008]).weeksInYear(), 52, '2008 has 53 weeks'); - assert.equal(moment([2009]).weeksInYear(), 52, '2009 has 53 weeks'); - assert.equal(moment([2010]).weeksInYear(), 52, '2010 has 52 weeks'); - assert.equal(moment([2011]).weeksInYear(), 53, '2011 has 52 weeks'); - assert.equal(moment([2012]).weeksInYear(), 52, '2012 has 52 weeks'); - assert.equal(moment([2013]).weeksInYear(), 52, '2013 has 52 weeks'); - assert.equal(moment([2014]).weeksInYear(), 52, '2014 has 52 weeks'); - assert.equal(moment([2015]).weeksInYear(), 52, '2015 has 53 weeks'); - }); - -}))); - - -;(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$$1, scope) { - test._expectedDeprecations = null; - test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; - test.expectedDeprecations = function () { - test._expectedDeprecations = arguments; - test._observedDeprecations = []; - }; - moment$$1.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$$1, scope) { - moment$$1.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; - - function module$1 (name, lifecycle) { - QUnit.module(name, { - beforeEach : function () { - moment.locale('en'); - moment.createFromInputFallback = function (config) { - throw new Error('input not handled by moment: ' + config._i); - }; - setupDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.setup) { - lifecycle.setup(); - } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); - if (lifecycle && lifecycle.teardown) { - lifecycle.teardown(); - } - } }); } function isNearSpringDST() { - return moment().subtract(1, 'day').utcOffset() !== moment().add(1, 'day').utcOffset(); + return ( + moment().subtract(1, 'day').utcOffset() !== + moment().add(1, 'day').utcOffset() + ); } - module$1('zone switching'); + module('zone switching'); test('local to utc, keepLocalTime = true', function (assert) { var m = moment(), fmt = 'YYYY-DD-MM HH:mm:ss'; - assert.equal(m.clone().utc(true).format(fmt), m.format(fmt), 'local to utc failed to keep local time'); + assert.equal( + m.clone().utc(true).format(fmt), + m.format(fmt), + 'local to utc failed to keep local time' + ); }); test('local to utc, keepLocalTime = false', function (assert) { var m = moment(); - assert.equal(m.clone().utc().valueOf(), m.valueOf(), 'local to utc failed to keep utc time (implicit)'); - assert.equal(m.clone().utc(false).valueOf(), m.valueOf(), 'local to utc failed to keep utc time (explicit)'); + assert.equal( + m.clone().utc().valueOf(), + m.valueOf(), + 'local to utc failed to keep utc time (implicit)' + ); + assert.equal( + m.clone().utc(false).valueOf(), + m.valueOf(), + 'local to utc failed to keep utc time (explicit)' + ); }); test('local to zone, keepLocalTime = true', function (assert) { @@ -79494,8 +142614,14 @@ // https://en.wikipedia.org/wiki/UTC+14:00 // https://en.wikipedia.org/wiki/UTC-12:00 for (z = -12; z <= 14; ++z) { - assert.equal(m.clone().zone(z * 60, true).format(fmt), m.format(fmt), - 'local to zone(' + z + ':00) failed to keep local time'); + assert.equal( + m + .clone() + .zone(z * 60, true) + .format(fmt), + m.format(fmt), + 'local to zone(' + z + ':00) failed to keep local time' + ); } }); @@ -79508,10 +142634,22 @@ // https://en.wikipedia.org/wiki/UTC+14:00 // https://en.wikipedia.org/wiki/UTC-12:00 for (z = -12; z <= 14; ++z) { - assert.equal(m.clone().zone(z * 60).valueOf(), m.valueOf(), - 'local to zone(' + z + ':00) failed to keep utc time (implicit)'); - assert.equal(m.clone().zone(z * 60, false).valueOf(), m.valueOf(), - 'local to zone(' + z + ':00) failed to keep utc time (explicit)'); + assert.equal( + m + .clone() + .zone(z * 60) + .valueOf(), + m.valueOf(), + 'local to zone(' + z + ':00) failed to keep utc time (implicit)' + ); + assert.equal( + m + .clone() + .zone(z * 60, false) + .valueOf(), + m.valueOf(), + 'local to zone(' + z + ':00) failed to keep utc time (explicit)' + ); } }); @@ -79525,13 +142663,25 @@ var um = moment.utc(), fmt = 'YYYY-DD-MM HH:mm:ss'; - assert.equal(um.clone().local(true).format(fmt), um.format(fmt), 'utc to local failed to keep local time'); + assert.equal( + um.clone().local(true).format(fmt), + um.format(fmt), + 'utc to local failed to keep local time' + ); }); test('utc to local, keepLocalTime = false', function (assert) { var um = moment.utc(); - assert.equal(um.clone().local().valueOf(), um.valueOf(), 'utc to local failed to keep utc time (implicit)'); - assert.equal(um.clone().local(false).valueOf(), um.valueOf(), 'utc to local failed to keep utc time (explicit)'); + assert.equal( + um.clone().local().valueOf(), + um.valueOf(), + 'utc to local failed to keep utc time (implicit)' + ); + assert.equal( + um.clone().local(false).valueOf(), + um.valueOf(), + 'utc to local failed to keep utc time (explicit)' + ); }); test('zone to local, keepLocalTime = true', function (assert) { @@ -79553,8 +142703,11 @@ for (z = -12; z <= 14; ++z) { m.zone(z * 60); - assert.equal(m.clone().local(true).format(fmt), m.format(fmt), - 'zone(' + z + ':00) to local failed to keep local time'); + assert.equal( + m.clone().local(true).format(fmt), + m.format(fmt), + 'zone(' + z + ':00) to local failed to keep local time' + ); } }); @@ -79569,16 +142722,23 @@ for (z = -12; z <= 14; ++z) { m.zone(z * 60); - assert.equal(m.clone().local(false).valueOf(), m.valueOf(), - 'zone(' + z + ':00) to local failed to keep utc time (explicit)'); - assert.equal(m.clone().local().valueOf(), m.valueOf(), - 'zone(' + z + ':00) to local failed to keep utc time (implicit)'); + assert.equal( + m.clone().local(false).valueOf(), + m.valueOf(), + 'zone(' + z + ':00) to local failed to keep utc time (explicit)' + ); + assert.equal( + m.clone().local().valueOf(), + m.valueOf(), + 'zone(' + z + ':00) to local failed to keep utc time (implicit)' + ); } }); }))); + ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../../moment')) : @@ -79593,27 +142753,32 @@ } } - function setupDeprecationHandler(test, moment$$1, scope) { + function setupDeprecationHandler(test, moment, scope) { test._expectedDeprecations = null; test._observedDeprecations = null; - test._oldSupress = moment$$1.suppressDeprecationWarnings; - moment$$1.suppressDeprecationWarnings = true; + test._oldSupress = moment.suppressDeprecationWarnings; + moment.suppressDeprecationWarnings = true; test.expectedDeprecations = function () { test._expectedDeprecations = arguments; test._observedDeprecations = []; }; - moment$$1.deprecationHandler = function (name, msg) { - var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations); + 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); + throw new Error( + 'Unexpected deprecation thrown name=' + name + ' msg=' + msg + ); } test._observedDeprecations[deprecationId] = 1; }; } - function teardownDeprecationHandler(test, moment$$1, scope) { - moment$$1.suppressDeprecationWarnings = test._oldSupress; + function teardownDeprecationHandler(test, moment, scope) { + moment.suppressDeprecationWarnings = test._oldSupress; if (test._expectedDeprecations != null) { var missedDeprecations = []; @@ -79623,8 +142788,10 @@ } }); if (missedDeprecations.length !== 0) { - throw new Error('Expected deprecation warnings did not happen: ' + - missedDeprecations.join(' ')); + throw new Error( + 'Expected deprecation warnings did not happen: ' + + missedDeprecations.join(' ') + ); } } } @@ -79637,7 +142804,10 @@ if (name != null && name === deprecations[i]) { return i; } - if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) { + if ( + msg != null && + msg.substring(0, deprecations[i].length) === deprecations[i] + ) { return i; } } @@ -79646,33 +142816,34 @@ /*global QUnit:false*/ - var test = QUnit.test; + var test = QUnit.test, + only = QUnit.only; - function module$1 (name, lifecycle) { + function module(name, lifecycle) { QUnit.module(name, { - beforeEach : function () { + beforeEach: function () { moment.locale('en'); moment.createFromInputFallback = function (config) { throw new Error('input not handled by moment: ' + config._i); }; - setupDeprecationHandler(test, moment, 'core'); + setupDeprecationHandler(test, moment); if (lifecycle && lifecycle.setup) { lifecycle.setup(); } }, - afterEach : function () { - teardownDeprecationHandler(test, moment, 'core'); + afterEach: function () { + teardownDeprecationHandler(test, moment); if (lifecycle && lifecycle.teardown) { lifecycle.teardown(); } - } + }, }); } - module$1('zones', { - 'setup': function () { + module('zones', { + setup: function () { test.expectedDeprecations('moment().zone'); - } + }, }); test('set zone', function (assert) { @@ -79692,22 +142863,46 @@ var zone = moment(); zone.zone(1); - assert.equal(zone.zone(), 60, 'setting the zone to 1 should imply hours and convert to 60'); + assert.equal( + zone.zone(), + 60, + 'setting the zone to 1 should imply hours and convert to 60' + ); zone.zone(-1); - assert.equal(zone.zone(), -60, 'setting the zone to -1 should imply hours and convert to -60'); + assert.equal( + zone.zone(), + -60, + 'setting the zone to -1 should imply hours and convert to -60' + ); zone.zone(15); - assert.equal(zone.zone(), 900, 'setting the zone to 15 should imply hours and convert to 900'); + assert.equal( + zone.zone(), + 900, + 'setting the zone to 15 should imply hours and convert to 900' + ); zone.zone(-15); - assert.equal(zone.zone(), -900, 'setting the zone to -15 should imply hours and convert to -900'); + assert.equal( + zone.zone(), + -900, + 'setting the zone to -15 should imply hours and convert to -900' + ); zone.zone(16); - assert.equal(zone.zone(), 16, 'setting the zone to 16 should imply minutes'); + assert.equal( + zone.zone(), + 16, + 'setting the zone to 16 should imply minutes' + ); zone.zone(-16); - assert.equal(zone.zone(), -16, 'setting the zone to -16 should imply minutes'); + assert.equal( + zone.zone(), + -16, + 'setting the zone to -16 should imply minutes' + ); }); test('set zone with string', function (assert) { @@ -79717,16 +142912,32 @@ assert.equal(zone.zone(), 0, 'set the zone with a timezone string'); zone.zone('2013-03-07T07:00:00-08:00'); - assert.equal(zone.zone(), 480, 'set the zone with a string that does not begin with the timezone'); + assert.equal( + zone.zone(), + 480, + 'set the zone with a string that does not begin with the timezone' + ); zone.zone('2013-03-07T07:00:00+0100'); - assert.equal(zone.zone(), -60, 'set the zone with a string that uses the +0000 syntax'); + assert.equal( + zone.zone(), + -60, + 'set the zone with a string that uses the +0000 syntax' + ); zone.zone('2013-03-07T07:00:00+02'); - assert.equal(zone.zone(), -120, 'set the zone with a string that uses the +00 syntax'); + assert.equal( + zone.zone(), + -120, + 'set the zone with a string that uses the +00 syntax' + ); zone.zone('03-07-2013T07:00:00-08:00'); - assert.equal(zone.zone(), 480, 'set the zone with a string with a non-ISO 8601 date'); + assert.equal( + zone.zone(), + 480, + 'set the zone with a string with a non-ISO 8601 date' + ); }); test('change hours when changing the zone', function (assert) { @@ -79746,16 +142957,32 @@ var zone = moment.utc([2000, 0, 1, 6, 31]); zone.zone(0); - assert.equal(zone.format('HH:mm'), '06:31', 'UTC 6:31AM should be 6:31AM at +0000'); + assert.equal( + zone.format('HH:mm'), + '06:31', + 'UTC 6:31AM should be 6:31AM at +0000' + ); zone.zone(30); - assert.equal(zone.format('HH:mm'), '06:01', 'UTC 6:31AM should be 6:01AM at -0030'); + assert.equal( + zone.format('HH:mm'), + '06:01', + 'UTC 6:31AM should be 6:01AM at -0030' + ); zone.zone(-30); - assert.equal(zone.format('HH:mm'), '07:01', 'UTC 6:31AM should be 7:01AM at +0030'); + assert.equal( + zone.format('HH:mm'), + '07:01', + 'UTC 6:31AM should be 7:01AM at +0030' + ); zone.zone(1380); - assert.equal(zone.format('HH:mm'), '07:31', 'UTC 6:31AM should be 7:31AM at +1380'); + assert.equal( + zone.format('HH:mm'), + '07:31', + 'UTC 6:31AM should be 7:31AM at +1380' + ); }); test('distance from the unix epoch', function (assert) { @@ -79793,18 +143020,30 @@ }; assert.equal(m.format('ZZ'), '+0000', 'should be at +0000'); - assert.equal(m.format('HH:mm'), '00:00', 'should start 12AM at +0000 timezone'); + assert.equal( + m.format('HH:mm'), + '00:00', + 'should start 12AM at +0000 timezone' + ); m.__doChange = true; m.add(1, 'h'); assert.equal(m.format('ZZ'), '-0200', 'should be at -0200'); - assert.equal(m.format('HH:mm'), '23:00', '1AM at +0000 should be 11PM at -0200 timezone'); + assert.equal( + m.format('HH:mm'), + '23:00', + '1AM at +0000 should be 11PM at -0200 timezone' + ); m.subtract(1, 'h'); assert.equal(m.format('ZZ'), '-0100', 'should be at -0100'); - assert.equal(m.format('HH:mm'), '23:00', '12AM at +0000 should be 11PM at -0100 timezone'); + assert.equal( + m.format('HH:mm'), + '23:00', + '12AM at +0000 should be 11PM at -0100 timezone' + ); moment.updateOffset = oldOffset; }); @@ -79812,34 +143051,74 @@ test('getters and setters', function (assert) { var a = moment([2011, 5, 20]); - assert.equal(a.clone().zone(120).year(2012).year(), 2012, 'should get and set year correctly'); - assert.equal(a.clone().zone(120).month(1).month(), 1, 'should get and set month correctly'); - assert.equal(a.clone().zone(120).date(2).date(), 2, 'should get and set date correctly'); - assert.equal(a.clone().zone(120).day(1).day(), 1, 'should get and set day correctly'); - assert.equal(a.clone().zone(120).hour(1).hour(), 1, 'should get and set hour correctly'); - assert.equal(a.clone().zone(120).minute(1).minute(), 1, 'should get and set minute correctly'); + assert.equal( + a.clone().zone(120).year(2012).year(), + 2012, + 'should get and set year correctly' + ); + assert.equal( + a.clone().zone(120).month(1).month(), + 1, + 'should get and set month correctly' + ); + assert.equal( + a.clone().zone(120).date(2).date(), + 2, + 'should get and set date correctly' + ); + assert.equal( + a.clone().zone(120).day(1).day(), + 1, + 'should get and set day correctly' + ); + assert.equal( + a.clone().zone(120).hour(1).hour(), + 1, + 'should get and set hour correctly' + ); + assert.equal( + a.clone().zone(120).minute(1).minute(), + 1, + 'should get and set minute correctly' + ); }); test('getters', function (assert) { var a = moment.utc([2012, 0, 1, 0, 0, 0]); - assert.equal(a.clone().zone(120).year(), 2011, 'should get year correctly'); - assert.equal(a.clone().zone(120).month(), 11, 'should get month correctly'); - assert.equal(a.clone().zone(120).date(), 31, 'should get date correctly'); - assert.equal(a.clone().zone(120).hour(), 22, 'should get hour correctly'); - assert.equal(a.clone().zone(120).minute(), 0, 'should get minute correctly'); + assert.equal(a.clone().zone(120).year(), 2011, 'should get year correctly'); + assert.equal(a.clone().zone(120).month(), 11, 'should get month correctly'); + assert.equal(a.clone().zone(120).date(), 31, 'should get date correctly'); + assert.equal(a.clone().zone(120).hour(), 22, 'should get hour correctly'); + assert.equal( + a.clone().zone(120).minute(), + 0, + 'should get minute correctly' + ); - assert.equal(a.clone().zone(-120).year(), 2012, 'should get year correctly'); - assert.equal(a.clone().zone(-120).month(), 0, 'should get month correctly'); - assert.equal(a.clone().zone(-120).date(), 1, 'should get date correctly'); - assert.equal(a.clone().zone(-120).hour(), 2, 'should get hour correctly'); - assert.equal(a.clone().zone(-120).minute(), 0, 'should get minute correctly'); + assert.equal( + a.clone().zone(-120).year(), + 2012, + 'should get year correctly' + ); + assert.equal(a.clone().zone(-120).month(), 0, 'should get month correctly'); + assert.equal(a.clone().zone(-120).date(), 1, 'should get date correctly'); + assert.equal(a.clone().zone(-120).hour(), 2, 'should get hour correctly'); + assert.equal( + a.clone().zone(-120).minute(), + 0, + 'should get minute correctly' + ); - assert.equal(a.clone().zone(-90).year(), 2012, 'should get year correctly'); - assert.equal(a.clone().zone(-90).month(), 0, 'should get month correctly'); - assert.equal(a.clone().zone(-90).date(), 1, 'should get date correctly'); - assert.equal(a.clone().zone(-90).hour(), 1, 'should get hour correctly'); - assert.equal(a.clone().zone(-90).minute(), 30, 'should get minute correctly'); + assert.equal(a.clone().zone(-90).year(), 2012, 'should get year correctly'); + assert.equal(a.clone().zone(-90).month(), 0, 'should get month correctly'); + assert.equal(a.clone().zone(-90).date(), 1, 'should get date correctly'); + assert.equal(a.clone().zone(-90).hour(), 1, 'should get hour correctly'); + assert.equal( + a.clone().zone(-90).minute(), + 30, + 'should get minute correctly' + ); }); test('from', function (assert) { @@ -79849,9 +143128,21 @@ zoneD = moment(zoneA).zone(-690), other = moment(zoneA).add(35, 'm'); - assert.equal(zoneA.from(other), zoneB.from(other), 'moment#from should be the same in all zones'); - assert.equal(zoneA.from(other), zoneC.from(other), 'moment#from should be the same in all zones'); - assert.equal(zoneA.from(other), zoneD.from(other), 'moment#from should be the same in all zones'); + assert.equal( + zoneA.from(other), + zoneB.from(other), + 'moment#from should be the same in all zones' + ); + assert.equal( + zoneA.from(other), + zoneC.from(other), + 'moment#from should be the same in all zones' + ); + assert.equal( + zoneA.from(other), + zoneD.from(other), + 'moment#from should be the same in all zones' + ); }); test('diff', function (assert) { @@ -79861,17 +143152,53 @@ zoneD = moment(zoneA).zone(-690), other = moment(zoneA).add(35, 'm'); - assert.equal(zoneA.diff(other), zoneB.diff(other), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other), zoneC.diff(other), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other), zoneD.diff(other), 'moment#diff should be the same in all zones'); + assert.equal( + zoneA.diff(other), + zoneB.diff(other), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other), + zoneC.diff(other), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other), + zoneD.diff(other), + 'moment#diff should be the same in all zones' + ); - assert.equal(zoneA.diff(other, 'minute', true), zoneB.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'minute', true), zoneC.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'minute', true), zoneD.diff(other, 'minute', true), 'moment#diff should be the same in all zones'); + assert.equal( + zoneA.diff(other, 'minute', true), + zoneB.diff(other, 'minute', true), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other, 'minute', true), + zoneC.diff(other, 'minute', true), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other, 'minute', true), + zoneD.diff(other, 'minute', true), + 'moment#diff should be the same in all zones' + ); - assert.equal(zoneA.diff(other, 'hour', true), zoneB.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'hour', true), zoneC.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); - assert.equal(zoneA.diff(other, 'hour', true), zoneD.diff(other, 'hour', true), 'moment#diff should be the same in all zones'); + assert.equal( + zoneA.diff(other, 'hour', true), + zoneB.diff(other, 'hour', true), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other, 'hour', true), + zoneC.diff(other, 'hour', true), + 'moment#diff should be the same in all zones' + ); + assert.equal( + zoneA.diff(other, 'hour', true), + zoneD.diff(other, 'hour', true), + 'moment#diff should be the same in all zones' + ); }); test('unix offset and timestamp', function (assert) { @@ -79880,45 +143207,121 @@ zoneC = moment(zoneA).zone(360), zoneD = moment(zoneA).zone(-690); - assert.equal(zoneA.unix(), zoneB.unix(), 'moment#unix should be the same in all zones'); - assert.equal(zoneA.unix(), zoneC.unix(), 'moment#unix should be the same in all zones'); - assert.equal(zoneA.unix(), zoneD.unix(), 'moment#unix should be the same in all zones'); + assert.equal( + zoneA.unix(), + zoneB.unix(), + 'moment#unix should be the same in all zones' + ); + assert.equal( + zoneA.unix(), + zoneC.unix(), + 'moment#unix should be the same in all zones' + ); + assert.equal( + zoneA.unix(), + zoneD.unix(), + 'moment#unix should be the same in all zones' + ); - assert.equal(+zoneA, +zoneB, 'moment#valueOf should be the same in all zones'); - assert.equal(+zoneA, +zoneC, 'moment#valueOf should be the same in all zones'); - assert.equal(+zoneA, +zoneD, 'moment#valueOf should be the same in all zones'); + assert.equal( + +zoneA, + +zoneB, + 'moment#valueOf should be the same in all zones' + ); + assert.equal( + +zoneA, + +zoneC, + 'moment#valueOf should be the same in all zones' + ); + assert.equal( + +zoneA, + +zoneD, + 'moment#valueOf should be the same in all zones' + ); }); test('cloning', function (assert) { - assert.equal(moment().zone(120).clone().zone(), 120, 'explicit cloning should retain the zone'); - assert.equal(moment().zone(-120).clone().zone(), -120, 'explicit cloning should retain the zone'); - assert.equal(moment(moment().zone(120)).zone(), 120, 'implicit cloning should retain the zone'); - assert.equal(moment(moment().zone(-120)).zone(), -120, 'implicit cloning should retain the zone'); + assert.equal( + moment().zone(120).clone().zone(), + 120, + 'explicit cloning should retain the zone' + ); + assert.equal( + moment().zone(-120).clone().zone(), + -120, + 'explicit cloning should retain the zone' + ); + assert.equal( + moment(moment().zone(120)).zone(), + 120, + 'implicit cloning should retain the zone' + ); + assert.equal( + moment(moment().zone(-120)).zone(), + -120, + 'implicit cloning should retain the zone' + ); }); test('start of / end of', function (assert) { var a = moment.utc([2010, 1, 2, 0, 0, 0]).zone(450); - assert.equal(a.clone().startOf('day').hour(), 0, 'start of day should work on moments with a zone'); - assert.equal(a.clone().startOf('day').minute(), 0, 'start of day should work on moments with a zone'); - assert.equal(a.clone().startOf('hour').minute(), 0, 'start of hour should work on moments with a zone'); + assert.equal( + a.clone().startOf('day').hour(), + 0, + 'start of day should work on moments with a zone' + ); + assert.equal( + a.clone().startOf('day').minute(), + 0, + 'start of day should work on moments with a zone' + ); + assert.equal( + a.clone().startOf('hour').minute(), + 0, + 'start of hour should work on moments with a zone' + ); - assert.equal(a.clone().endOf('day').hour(), 23, 'end of day should work on moments with a zone'); - assert.equal(a.clone().endOf('day').minute(), 59, 'end of day should work on moments with a zone'); - assert.equal(a.clone().endOf('hour').minute(), 59, 'end of hour should work on moments with a zone'); + assert.equal( + a.clone().endOf('day').hour(), + 23, + 'end of day should work on moments with a zone' + ); + assert.equal( + a.clone().endOf('day').minute(), + 59, + 'end of day should work on moments with a zone' + ); + assert.equal( + a.clone().endOf('hour').minute(), + 59, + 'end of hour should work on moments with a zone' + ); }); test('reset zone with moment#utc', function (assert) { var a = moment.utc([2012]).zone(480); - assert.equal(a.clone().hour(), 16, 'different zone should have different hour'); - assert.equal(a.clone().utc().hour(), 0, 'calling moment#utc should reset the offset'); + assert.equal( + a.clone().hour(), + 16, + 'different zone should have different hour' + ); + assert.equal( + a.clone().utc().hour(), + 0, + 'calling moment#utc should reset the offset' + ); }); test('reset zone with moment#local', function (assert) { var a = moment([2012]).zone(480); - assert.equal(a.clone().local().hour(), 0, 'calling moment#local should reset the offset'); + assert.equal( + a.clone().local().hour(), + 0, + 'calling moment#local should reset the offset' + ); }); test('toDate', function (assert) { @@ -79927,9 +143330,21 @@ zoneC = moment(zoneA).zone(360).toDate(), zoneD = moment(zoneA).zone(-690).toDate(); - assert.equal(+zoneA, +zoneB, 'moment#toDate should output a date with the right unix timestamp'); - assert.equal(+zoneA, +zoneC, 'moment#toDate should output a date with the right unix timestamp'); - assert.equal(+zoneA, +zoneD, 'moment#toDate should output a date with the right unix timestamp'); + assert.equal( + +zoneA, + +zoneB, + 'moment#toDate should output a date with the right unix timestamp' + ); + assert.equal( + +zoneA, + +zoneC, + 'moment#toDate should output a date with the right unix timestamp' + ); + assert.equal( + +zoneA, + +zoneD, + 'moment#toDate should output a date with the right unix timestamp' + ); }); test('same / before / after', function (assert) { @@ -79937,27 +143352,63 @@ zoneB = moment(zoneA).zone(120), zoneC = moment(zoneA).zone(-120); - assert.ok(zoneA.isSame(zoneB), 'two moments with different offsets should be the same'); - assert.ok(zoneA.isSame(zoneC), 'two moments with different offsets should be the same'); + assert.ok( + zoneA.isSame(zoneB), + 'two moments with different offsets should be the same' + ); + assert.ok( + zoneA.isSame(zoneC), + 'two moments with different offsets should be the same' + ); - assert.ok(zoneA.isSame(zoneB, 'hour'), 'two moments with different offsets should be the same hour'); - assert.ok(zoneA.isSame(zoneC, 'hour'), 'two moments with different offsets should be the same hour'); + assert.ok( + zoneA.isSame(zoneB, 'hour'), + 'two moments with different offsets should be the same hour' + ); + assert.ok( + zoneA.isSame(zoneC, 'hour'), + 'two moments with different offsets should be the same hour' + ); zoneA.add(1, 'hour'); - assert.ok(zoneA.isAfter(zoneB), 'isAfter should work with two moments with different offsets'); - assert.ok(zoneA.isAfter(zoneC), 'isAfter should work with two moments with different offsets'); + assert.ok( + zoneA.isAfter(zoneB), + 'isAfter should work with two moments with different offsets' + ); + assert.ok( + zoneA.isAfter(zoneC), + 'isAfter should work with two moments with different offsets' + ); - assert.ok(zoneA.isAfter(zoneB, 'hour'), 'isAfter:hour should work with two moments with different offsets'); - assert.ok(zoneA.isAfter(zoneC, 'hour'), 'isAfter:hour should work with two moments with different offsets'); + assert.ok( + zoneA.isAfter(zoneB, 'hour'), + 'isAfter:hour should work with two moments with different offsets' + ); + assert.ok( + zoneA.isAfter(zoneC, 'hour'), + 'isAfter:hour should work with two moments with different offsets' + ); zoneA.subtract(2, 'hour'); - assert.ok(zoneA.isBefore(zoneB), 'isBefore should work with two moments with different offsets'); - assert.ok(zoneA.isBefore(zoneC), 'isBefore should work with two moments with different offsets'); + assert.ok( + zoneA.isBefore(zoneB), + 'isBefore should work with two moments with different offsets' + ); + assert.ok( + zoneA.isBefore(zoneC), + 'isBefore should work with two moments with different offsets' + ); - assert.ok(zoneA.isBefore(zoneB, 'hour'), 'isBefore:hour should work with two moments with different offsets'); - assert.ok(zoneA.isBefore(zoneC, 'hour'), 'isBefore:hour should work with two moments with different offsets'); + assert.ok( + zoneA.isBefore(zoneB, 'hour'), + 'isBefore:hour should work with two moments with different offsets' + ); + assert.ok( + zoneA.isBefore(zoneC, 'hour'), + 'isBefore:hour should work with two moments with different offsets' + ); }); test('add / subtract over dst', function (assert) { @@ -80012,8 +143463,8 @@ } }; - assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst'); - assert.ok(moment().month(6).isDST(), 'Jul should be summer dst'); + assert.ok(!moment().month(0).isDST(), 'Jan should not be summer dst'); + assert.ok(moment().month(6).isDST(), 'Jul should be summer dst'); assert.ok(!moment().month(11).isDST(), 'Dec should not be summer dst'); moment.updateOffset = function (mom) { @@ -80024,7 +143475,7 @@ } }; - assert.ok(moment().month(0).isDST(), 'Jan should be winter dst'); + assert.ok(moment().month(0).isDST(), 'Jan should be winter dst'); assert.ok(!moment().month(6).isDST(), 'Jul should not be winter dst'); assert.ok(moment().month(11).isDST(), 'Dec should be winter dst'); @@ -80033,15 +143484,35 @@ test('zone names', function (assert) { test.expectedDeprecations(); - assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty'); - assert.equal(moment().format('z'), '', 'Local zone formatted abbr should be empty'); - assert.equal(moment().zoneName(), '', 'Local zone name should be empty'); - assert.equal(moment().format('zz'), '', 'Local zone formatted name should be empty'); + assert.equal(moment().zoneAbbr(), '', 'Local zone abbr should be empty'); + assert.equal( + moment().format('z'), + '', + 'Local zone formatted abbr should be empty' + ); + assert.equal(moment().zoneName(), '', 'Local zone name should be empty'); + assert.equal( + moment().format('zz'), + '', + 'Local zone formatted name should be empty' + ); - assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC'); - assert.equal(moment.utc().format('z'), 'UTC', 'UTC zone formatted abbr should be UTC'); - assert.equal(moment.utc().zoneName(), 'Coordinated Universal Time', 'UTC zone abbr should be Coordinated Universal Time'); - assert.equal(moment.utc().format('zz'), 'Coordinated Universal Time', 'UTC zone formatted abbr should be Coordinated Universal Time'); + assert.equal(moment.utc().zoneAbbr(), 'UTC', 'UTC zone abbr should be UTC'); + assert.equal( + moment.utc().format('z'), + 'UTC', + 'UTC zone formatted abbr should be UTC' + ); + assert.equal( + moment.utc().zoneName(), + 'Coordinated Universal Time', + 'UTC zone abbr should be Coordinated Universal Time' + ); + assert.equal( + moment.utc().format('zz'), + 'Coordinated Universal Time', + 'UTC zone formatted abbr should be Coordinated Universal Time' + ); }); test('hours alignment with UTC', function (assert) { @@ -80098,11 +143569,22 @@ test.expectedDeprecations(); var m; m = moment.parseZone('2013 01 01 05 -13:00', 'YYYY MM DD HH ZZ'); - assert.equal(m.format(), '2013-01-01T05:00:00-13:00', 'accept input and format'); + assert.equal( + m.format(), + '2013-01-01T05:00:00-13:00', + 'accept input and format' + ); m = moment.parseZone('2013-01-01-13:00', 'YYYY MM DD ZZ', true); assert.equal(m.isValid(), false, 'accept input, format and strict flag'); - m = moment.parseZone('2013-01-01-13:00', ['DD MM YYYY ZZ', 'YYYY MM DD ZZ']); - assert.equal(m.format(), '2013-01-01T00:00:00-13:00', 'accept input and array of formats'); + m = moment.parseZone('2013-01-01-13:00', [ + 'DD MM YYYY ZZ', + 'YYYY MM DD ZZ', + ]); + assert.equal( + m.format(), + '2013-01-01T00:00:00-13:00', + 'accept input and array of formats' + ); }); test('parse zone with a timezone from the format string', function (assert) { @@ -80122,17 +143604,35 @@ 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) { test.expectedDeprecations(); - var m1 = moment.parseZone('2016-02-01T00:00:00'); - var m2 = moment.parseZone('2016-02-01T00:00:00Z'); - var m3 = moment.parseZone('2016-02-01T00:00:00+00:00'); //Someone might argue this is not necessary, you could even argue that is wrong being here. - var m4 = moment.parseZone('2016-02-01T00:00:00+0000'); //Someone might argue this is not necessary, you could even argue that is wrong being here. + var m1 = moment.parseZone('2016-02-01T00:00:00'), + m2 = moment.parseZone('2016-02-01T00:00:00Z'), + m3 = moment.parseZone('2016-02-01T00:00:00+00:00'), //Someone might argue this is not necessary, you could even argue that is wrong being here. + m4 = moment.parseZone('2016-02-01T00:00:00+0000'); //Someone might argue this is not necessary, you could even argue that is wrong being here. assert.equal( m1.format('M D YYYY HH:mm:ss ZZ'), '2 1 2016 00:00:00 +0000', @@ -80158,19 +143658,24 @@ test('parse zone with a minutes unit abs less than 16 should retain minutes', function (assert) { //ensure when minutes are explicitly parsed, they are retained //instead of converted to hours, even if less than 16 - var n = moment.parseZone('2013-01-01T00:00:00-00:15'); + var n = moment.parseZone('2013-01-01T00:00:00-00:15'), + o; assert.equal(n.utcOffset(), -15); assert.equal(n.zone(), 15); assert.equal(n.hour(), 0); - var o = moment.parseZone('2013-01-01T00:00:00+00:15'); + + o = moment.parseZone('2013-01-01T00:00:00+00:15'); assert.equal(o.utcOffset(), 15); assert.equal(o.zone(), -15); assert.equal(o.hour(), 0); }); - test('parse zone with weekday on verifies day acccording to the offset', function (assert) { + test('parse zone with weekday on verifies day according to the offset', function (assert) { test.expectedDeprecations(); - assert.ok(moment.parseZone('Mon 03:59 +12:00', 'ddd HH:mm Z', true).isValid(), 'Monday 03:59'); + assert.ok( + moment.parseZone('Mon 03:59 +12:00', 'ddd HH:mm Z', true).isValid(), + 'Monday 03:59' + ); }); }))); diff --git a/moment.js b/moment.js index 1b129716a..6428771ff 100644 --- a/moment.js +++ b/moment.js @@ -1,4 +1,8 @@ //! moment.js +//! version : 2.25.0 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : @@ -8,33 +12,43 @@ var hookCallback; - function hooks () { + function hooks() { return hookCallback.apply(null, arguments); } // This is done to register the method called with moment() // without creating circular dependencies. - function setHookCallback (callback) { + function setHookCallback(callback) { hookCallback = callback; } function isArray(input) { - return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; + return ( + input instanceof Array || + Object.prototype.toString.call(input) === '[object Array]' + ); } function isObject(input) { // IE8 will treat undefined and null as object if it wasn't for // input != null - return input != null && Object.prototype.toString.call(input) === '[object Object]'; + return ( + input != null && + Object.prototype.toString.call(input) === '[object Object]' + ); + } + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); } function isObjectEmpty(obj) { if (Object.getOwnPropertyNames) { - return (Object.getOwnPropertyNames(obj).length === 0); + return Object.getOwnPropertyNames(obj).length === 0; } else { var k; for (k in obj) { - if (obj.hasOwnProperty(k)) { + if (hasOwnProp(obj, k)) { return false; } } @@ -47,25 +61,28 @@ } function isNumber(input) { - return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; + return ( + typeof input === 'number' || + Object.prototype.toString.call(input) === '[object Number]' + ); } function isDate(input) { - return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; + return ( + input instanceof Date || + Object.prototype.toString.call(input) === '[object Date]' + ); } function map(arr, fn) { - var res = [], i; + var res = [], + i; for (i = 0; i < arr.length; ++i) { res.push(fn(arr[i], i)); } return res; } - function hasOwnProp(a, b) { - return Object.prototype.hasOwnProperty.call(a, b); - } - function extend(a, b) { for (var i in b) { if (hasOwnProp(b, i)) { @@ -84,27 +101,29 @@ return a; } - function createUTC (input, format, locale, strict) { + function createUTC(input, format, locale, strict) { return createLocalOrUTC(input, format, locale, strict, true).utc(); } function defaultParsingFlags() { // We need to deep clone this object. return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false, - parsedDateParts : [], - meridiem : null, - rfc2822 : false, - weekdayMismatch : false + empty: false, + unusedTokens: [], + unusedInput: [], + overflow: -2, + charsLeftOver: 0, + nullInput: false, + invalidEra: null, + invalidMonth: null, + invalidFormat: false, + userInvalidated: false, + iso: false, + parsedDateParts: [], + era: null, + meridiem: null, + rfc2822: false, + weekdayMismatch: false, }; } @@ -120,10 +139,11 @@ some = Array.prototype.some; } else { some = function (fun) { - var t = Object(this); - var len = t.length >>> 0; + var t = Object(this), + len = t.length >>> 0, + i; - for (var i = 0; i < len; i++) { + for (i = 0; i < len; i++) { if (i in t && fun.call(this, t[i], i, t)) { return true; } @@ -135,23 +155,26 @@ function isValid(m) { if (m._isValid == null) { - var flags = getParsingFlags(m); - var parsedParts = some.call(flags.parsedDateParts, function (i) { - return i != null; - }); - var isNowValid = !isNaN(m._d.getTime()) && - flags.overflow < 0 && - !flags.empty && - !flags.invalidMonth && - !flags.invalidWeekday && - !flags.weekdayMismatch && - !flags.nullInput && - !flags.invalidFormat && - !flags.userInvalidated && - (!flags.meridiem || (flags.meridiem && parsedParts)); + 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)); if (m._strict) { - isNowValid = isNowValid && + isNowValid = + isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined; @@ -159,20 +182,18 @@ if (Object.isFrozen == null || !Object.isFrozen(m)) { m._isValid = isNowValid; - } - else { + } else { return isNowValid; } } return m._isValid; } - function createInvalid (flags) { + function createInvalid(flags) { var m = createUTC(NaN); if (flags != null) { extend(getParsingFlags(m), flags); - } - else { + } else { getParsingFlags(m).userInvalidated = true; } @@ -181,7 +202,8 @@ // Plugins that add properties should also add the key here (null value), // so we can properly clone ourselves. - var momentProperties = hooks.momentProperties = []; + var momentProperties = (hooks.momentProperties = []), + updateInProgress = false; function copyConfig(to, from) { var i, prop, val; @@ -230,8 +252,6 @@ return to; } - var updateInProgress = false; - // Moment prototype object function Moment(config) { copyConfig(this, config); @@ -248,48 +268,18 @@ } } - function isMoment (obj) { - return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); - } - - 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; - } - - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; + function isMoment(obj) { + return ( + obj instanceof Moment || (obj != null && obj._isAMomentObject != null) + ); } function warn(msg) { - if (hooks.suppressDeprecationWarnings === false && - (typeof console !== 'undefined') && console.warn) { + if ( + hooks.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && + console.warn + ) { console.warn('Deprecation warning: ' + msg); } } @@ -302,14 +292,18 @@ hooks.deprecationHandler(null, msg); } if (firstTime) { - var args = []; - var arg; - for (var i = 0; i < arguments.length; i++) { + var args = [], + arg, + i, + key; + for (i = 0; i < arguments.length; i++) { arg = ''; if (typeof arguments[i] === 'object') { arg += '\n[' + i + '] '; - for (var key in arguments[0]) { - arg += key + ': ' + arguments[0][key] + ', '; + for (key in arguments[0]) { + if (hasOwnProp(arguments[0], key)) { + arg += key + ': ' + arguments[0][key] + ', '; + } } arg = arg.slice(0, -2); // Remove trailing comma and space } else { @@ -317,7 +311,13 @@ } args.push(arg); } - warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + warn( + msg + + '\nArguments: ' + + Array.prototype.slice.call(args).join('') + + '\n' + + new Error().stack + ); firstTime = false; } return fn.apply(this, arguments); @@ -340,17 +340,22 @@ hooks.deprecationHandler = null; function isFunction(input) { - return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + return ( + (typeof Function !== 'undefined' && input instanceof Function) || + Object.prototype.toString.call(input) === '[object Function]' + ); } - function set (config) { + function set(config) { var prop, i; for (i in config) { - prop = config[i]; - if (isFunction(prop)) { - this[i] = prop; - } else { - this['_' + i] = prop; + if (hasOwnProp(config, i)) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } } } this._config = config; @@ -359,11 +364,14 @@ // TODO: Remove "ordinalParse" fallback in next major release. this._dayOfMonthOrdinalParseLenient = new RegExp( (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + - '|' + (/\d{1,2}/).source); + '|' + + /\d{1,2}/.source + ); } function mergeConfigs(parentConfig, childConfig) { - var res = extend({}, parentConfig), prop; + var res = extend({}, parentConfig), + prop; for (prop in childConfig) { if (hasOwnProp(childConfig, prop)) { if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { @@ -378,9 +386,11 @@ } } for (prop in parentConfig) { - if (hasOwnProp(parentConfig, prop) && - !hasOwnProp(childConfig, prop) && - isObject(parentConfig[prop])) { + if ( + hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop]) + ) { // make sure changes to properties don't modify parent config res[prop] = extend({}, res[prop]); } @@ -400,7 +410,8 @@ keys = Object.keys; } else { keys = function (obj) { - var i, res = []; + var i, + res = []; for (i in obj) { if (hasOwnProp(obj, i)) { res.push(i); @@ -411,151 +422,40 @@ } var defaultCalendar = { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' + sameDay: '[Today at] LT', + nextDay: '[Tomorrow at] LT', + nextWeek: 'dddd [at] LT', + lastDay: '[Yesterday at] LT', + lastWeek: '[Last] dddd [at] LT', + sameElse: 'L', }; - function calendar (key, mom, now) { + function calendar(key, mom, now) { var output = this._calendar[key] || this._calendar['sameElse']; return isFunction(output) ? output.call(mom, now) : output; } - var defaultLongDateFormat = { - 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' - }; - - function longDateFormat (key) { - var format = this._longDateFormat[key], - formatUpper = this._longDateFormat[key.toUpperCase()]; - - if (format || !formatUpper) { - return format; - } - - this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - - return this._longDateFormat[key]; - } - - var defaultInvalidDate = 'Invalid date'; - - function invalidDate () { - return this._invalidDate; - } - - var defaultOrdinal = '%d'; - var defaultDayOfMonthOrdinalParse = /\d{1,2}/; - - function ordinal (number) { - return this._ordinal.replace('%d', number); - } - - var defaultRelativeTime = { - 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', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }; - - function relativeTime (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (isFunction(output)) ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - } - - function pastFuture (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - 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; - } - - function normalizeUnits(units) { - return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; - } - - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; - - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } - } - - return normalizedInput; - } - - var priorities = {}; - - function addUnitPriority(unit, priority) { - priorities[unit] = priority; - } - - function getPrioritizedUnits(unitsObj) { - var units = []; - for (var u in unitsObj) { - units.push({unit: u, priority: priorities[u]}); - } - units.sort(function (a, b) { - return a.priority - b.priority; - }); - return units; - } - function zeroFill(number, targetLength, forceSign) { var absNumber = '' + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign = number >= 0; - return (sign ? (forceSign ? '+' : '') : '-') + - Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + return ( + (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + + absNumber + ); } - var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - - var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - - var formatFunctions = {}; - - var formatTokenFunctions = {}; + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + formatFunctions = {}, + formatTokenFunctions = {}; // token: 'M' // padded: ['MM', 2] // ordinal: 'Mo' // callback: function () { this.month() + 1 } - function addFormatToken (token, padded, ordinal, callback) { + function addFormatToken(token, padded, ordinal, callback) { var func = callback; if (typeof callback === 'string') { func = function () { @@ -572,7 +472,10 @@ } if (ordinal) { formatTokenFunctions[ordinal] = function () { - return this.localeData().ordinal(func.apply(this, arguments), token); + return this.localeData().ordinal( + func.apply(this, arguments), + token + ); }; } } @@ -585,7 +488,9 @@ } function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + var array = format.match(formattingTokens), + i, + length; for (i = 0, length = array.length; i < length; i++) { if (formatTokenFunctions[array[i]]) { @@ -596,9 +501,12 @@ } return function (mom) { - var output = '', i; + var output = '', + i; for (i = 0; i < length; i++) { - output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + output += isFunction(array[i]) + ? array[i].call(mom, format) + : array[i]; } return output; }; @@ -611,7 +519,8 @@ } format = expandFormat(format, m.localeData()); - formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + formatFunctions[format] = + formatFunctions[format] || makeFormatFunction(format); return formatFunctions[format](m); } @@ -625,7 +534,10 @@ localFormattingTokens.lastIndex = 0; while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + format = format.replace( + localFormattingTokens, + replaceLongDateFormatTokens + ); localFormattingTokens.lastIndex = 0; i -= 1; } @@ -633,164 +545,160 @@ return format; } - var match1 = /\d/; // 0 - 9 - var match2 = /\d\d/; // 00 - 99 - var match3 = /\d{3}/; // 000 - 999 - var match4 = /\d{4}/; // 0000 - 9999 - var match6 = /[+-]?\d{6}/; // -999999 - 999999 - var match1to2 = /\d\d?/; // 0 - 99 - var match3to4 = /\d\d\d\d?/; // 999 - 9999 - var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 - var match1to3 = /\d{1,3}/; // 0 - 999 - var match1to4 = /\d{1,4}/; // 0 - 9999 - var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + var defaultLongDateFormat = { + 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', + }; - var matchUnsigned = /\d+/; // 0 - inf - var matchSigned = /[+-]?\d+/; // -inf - inf + function longDateFormat(key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; - var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z - var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + if (format || !formatUpper) { + return format; + } - var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + this._longDateFormat[key] = formatUpper + .match(formattingTokens) + .map(function (tok) { + if ( + tok === 'MMMM' || + tok === 'MM' || + tok === 'DD' || + tok === 'dddd' + ) { + return tok.slice(1); + } + return tok; + }) + .join(''); - // any word (or two) characters or numbers including two/three word month in arabic. - // includes scottish gaelic two word and hyphenated months - var 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; + return this._longDateFormat[key]; + } - var regexes = {}; + var defaultInvalidDate = 'Invalid date'; - function addRegexToken (token, regex, strictRegex) { - regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { - return (isStrict && strictRegex) ? strictRegex : regex; - }; + function invalidDate() { + return this._invalidDate; } - function getParseRegexForToken (token, config) { - if (!hasOwnProp(regexes, token)) { - return new RegExp(unescapeFormat(token)); - } + var defaultOrdinal = '%d', + defaultDayOfMonthOrdinalParse = /\d{1,2}/; - return regexes[token](config._strict, config._locale); + function ordinal(number) { + return this._ordinal.replace('%d', number); } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function unescapeFormat(s) { - return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - })); - } + var defaultRelativeTime = { + 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', + }; - function regexEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + function relativeTime(number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return isFunction(output) + ? output(number, withoutSuffix, string, isFuture) + : output.replace(/%d/i, number); } - var tokens = {}; - - function addParseToken (token, callback) { - var i, func = callback; - if (typeof token === 'string') { - token = [token]; - } - if (isNumber(callback)) { - func = function (input, array) { - array[callback] = toInt(input); - }; - } - for (i = 0; i < token.length; i++) { - tokens[token[i]] = func; - } + function pastFuture(diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); } - function addWeekParseToken (token, callback) { - addParseToken(token, function (input, array, config, token) { - config._w = config._w || {}; - callback(input, config._w, config, token); - }); + var aliases = {}; + + function addUnitAlias(unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; } - function addTimeToArrayFromToken(token, input, config) { - if (input != null && hasOwnProp(tokens, token)) { - tokens[token](input, config._a, config, token); - } + function normalizeUnits(units) { + return typeof units === 'string' + ? aliases[units] || aliases[units.toLowerCase()] + : undefined; } - var YEAR = 0; - var MONTH = 1; - var DATE = 2; - var HOUR = 3; - var MINUTE = 4; - var SECOND = 5; - var MILLISECOND = 6; - var WEEK = 7; - var WEEKDAY = 8; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - // FORMATTING + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } - addFormatToken('Y', 0, 0, function () { - var y = this.year(); - return y <= 9999 ? '' + y : '+' + y; - }); + return normalizedInput; + } - addFormatToken(0, ['YY', 2], 0, function () { - return this.year() % 100; - }); + var priorities = {}; - addFormatToken(0, ['YYYY', 4], 0, 'year'); - addFormatToken(0, ['YYYYY', 5], 0, 'year'); - addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } - // ALIASES + function getPrioritizedUnits(unitsObj) { + var units = [], + u; + for (u in unitsObj) { + if (hasOwnProp(unitsObj, u)) { + units.push({ unit: u, priority: priorities[u] }); + } + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; + } - addUnitAlias('year', 'y'); + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - // PRIORITIES + function absFloor(number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } + } - addUnitPriority('year', 1); + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - // PARSING + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } - addRegexToken('Y', matchSigned); - addRegexToken('YY', match1to2, match2); - addRegexToken('YYYY', match1to4, match4); - addRegexToken('YYYYY', match1to6, match6); - addRegexToken('YYYYYY', match1to6, match6); + return value; + } - 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; - } - - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } - - // 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) { + function makeGetSet(unit, keepTime) { return function (value) { if (value != null) { set$1(this, unit, value); @@ -802,17 +710,27 @@ }; } - function get (mom, unit) { - return mom.isValid() ? - mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; + function get(mom, unit) { + return mom.isValid() + ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() + : NaN; } - function set$1 (mom, unit, value) { + function set$1(mom, unit, value) { if (mom.isValid() && !isNaN(value)) { - if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { - mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); - } - else { + 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); } } @@ -820,7 +738,7 @@ // MOMENTS - function stringGet (units) { + function stringGet(units) { units = normalizeUnits(units); if (isFunction(this[units])) { return this[units](); @@ -828,12 +746,12 @@ return this; } - - function stringSet (units, value) { + function stringSet(units, value) { if (typeof units === 'object') { units = normalizeObjectUnits(units); - var prioritized = getPrioritizedUnits(units); - for (var i = 0; i < prioritized.length; i++) { + var prioritized = getPrioritizedUnits(units), + i; + for (i = 0; i < prioritized.length; i++) { this[prioritized[i].unit](units[prioritized[i].unit]); } } else { @@ -845,6 +763,107 @@ return this; } + var match1 = /\d/, // 0 - 9 + match2 = /\d\d/, // 00 - 99 + match3 = /\d{3}/, // 000 - 999 + match4 = /\d{4}/, // 0000 - 9999 + match6 = /[+-]?\d{6}/, // -999999 - 999999 + match1to2 = /\d\d?/, // 0 - 99 + match3to4 = /\d\d\d\d?/, // 999 - 9999 + match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999 + match1to3 = /\d{1,3}/, // 0 - 999 + match1to4 = /\d{1,4}/, // 0 - 9999 + match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 + matchUnsigned = /\d+/, // 0 - inf + matchSigned = /[+-]?\d+/, // -inf - inf + matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z + matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + // any word (or two) characters or numbers including two/three word month in arabic. + // 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, + regexes; + + regexes = {}; + + function addRegexToken(token, regex, strictRegex) { + regexes[token] = isFunction(regex) + ? regex + : function (isStrict, localeData) { + return isStrict && strictRegex ? strictRegex : regex; + }; + } + + function getParseRegexForToken(token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape( + s + .replace('\\', '') + .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function ( + matched, + p1, + p2, + p3, + p4 + ) { + return p1 || p2 || p3 || p4; + }) + ); + } + + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + var tokens = {}; + + function addParseToken(token, callback) { + var i, + func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } + } + + function addWeekParseToken(token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } + + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } + + var YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, + WEEK = 7, + WEEKDAY = 8; + function mod(n, x) { return ((n % x) + x) % x; } @@ -872,7 +891,11 @@ } var modMonth = mod(month, 12); year += (month - modMonth) / 12; - return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); + return modMonth === 1 + ? isLeapYear(year) + ? 29 + : 28 + : 31 - ((modMonth % 7) % 2); } // FORMATTING @@ -899,9 +922,9 @@ // PARSING - addRegexToken('M', match1to2); - addRegexToken('MM', match1to2, match2); - addRegexToken('MMM', function (isStrict, locale) { + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { return locale.monthsShortRegex(isStrict); }); addRegexToken('MMMM', function (isStrict, locale) { @@ -924,29 +947,49 @@ // LOCALES - var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; - var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); - function localeMonths (m, format) { + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split( + '_' + ), + defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split( + '_' + ), + MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, + defaultMonthsShortRegex = matchWord, + defaultMonthsRegex = matchWord; + + function localeMonths(m, format) { if (!m) { - return isArray(this._months) ? this._months : - this._months['standalone']; + return isArray(this._months) + ? this._months + : this._months['standalone']; } - return isArray(this._months) ? this._months[m.month()] : - this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; + return isArray(this._months) + ? this._months[m.month()] + : this._months[ + (this._months.isFormat || MONTHS_IN_FORMAT).test(format) + ? 'format' + : 'standalone' + ][m.month()]; } - var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); - function localeMonthsShort (m, format) { + function localeMonthsShort(m, format) { if (!m) { - return isArray(this._monthsShort) ? this._monthsShort : - this._monthsShort['standalone']; + return isArray(this._monthsShort) + ? this._monthsShort + : this._monthsShort['standalone']; } - return isArray(this._monthsShort) ? this._monthsShort[m.month()] : - this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + return isArray(this._monthsShort) + ? this._monthsShort[m.month()] + : this._monthsShort[ + MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone' + ][m.month()]; } function handleStrictParse(monthName, format, strict) { - var i, ii, mom, llc = monthName.toLocaleLowerCase(); + var i, + ii, + mom, + llc = monthName.toLocaleLowerCase(); if (!this._monthsParse) { // this is not used this._monthsParse = []; @@ -954,7 +997,10 @@ this._shortMonthsParse = []; for (i = 0; i < 12; ++i) { mom = createUTC([2000, i]); - this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._shortMonthsParse[i] = this.monthsShort( + mom, + '' + ).toLocaleLowerCase(); this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); } } @@ -986,7 +1032,7 @@ } } - function localeMonthsParse (monthName, format, strict) { + function localeMonthsParse(monthName, format, strict) { var i, mom, regex; if (this._monthsParseExact) { @@ -1006,17 +1052,32 @@ // make the regex if we don't have it already mom = createUTC([2000, i]); if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + this._longMonthsParse[i] = new RegExp( + '^' + this.months(mom, '').replace('.', '') + '$', + 'i' + ); + this._shortMonthsParse[i] = new RegExp( + '^' + this.monthsShort(mom, '').replace('.', '') + '$', + 'i' + ); } if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + regex = + '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + if ( + strict && + format === 'MMMM' && + this._longMonthsParse[i].test(monthName) + ) { return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + } else if ( + strict && + format === 'MMM' && + this._shortMonthsParse[i].test(monthName) + ) { return i; } else if (!strict && this._monthsParse[i].test(monthName)) { return i; @@ -1026,7 +1087,7 @@ // MOMENTS - function setMonth (mom, value) { + function setMonth(mom, value) { var dayOfMonth; if (!mom.isValid()) { @@ -1051,7 +1112,7 @@ return mom; } - function getSetMonth (value) { + function getSetMonth(value) { if (value != null) { setMonth(this, value); hooks.updateOffset(this, true); @@ -1061,12 +1122,11 @@ } } - function getDaysInMonth () { + function getDaysInMonth() { return daysInMonth(this.year(), this.month()); } - var defaultMonthsShortRegex = matchWord; - function monthsShortRegex (isStrict) { + function monthsShortRegex(isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { computeMonthsParse.call(this); @@ -1080,13 +1140,13 @@ if (!hasOwnProp(this, '_monthsShortRegex')) { this._monthsShortRegex = defaultMonthsShortRegex; } - return this._monthsShortStrictRegex && isStrict ? - this._monthsShortStrictRegex : this._monthsShortRegex; + return this._monthsShortStrictRegex && isStrict + ? this._monthsShortStrictRegex + : this._monthsShortRegex; } } - var defaultMonthsRegex = matchWord; - function monthsRegex (isStrict) { + function monthsRegex(isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { computeMonthsParse.call(this); @@ -1100,18 +1160,22 @@ if (!hasOwnProp(this, '_monthsRegex')) { this._monthsRegex = defaultMonthsRegex; } - return this._monthsStrictRegex && isStrict ? - this._monthsStrictRegex : this._monthsRegex; + return this._monthsStrictRegex && isStrict + ? this._monthsStrictRegex + : this._monthsRegex; } } - function computeMonthsParse () { + function computeMonthsParse() { function cmpLenRev(a, b) { return b.length - a.length; } - var shortPieces = [], longPieces = [], mixedPieces = [], - i, mom; + var shortPieces = [], + longPieces = [], + mixedPieces = [], + i, + mom; for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); @@ -1135,11 +1199,80 @@ this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._monthsShortRegex = this._monthsRegex; - this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._monthsStrictRegex = new RegExp( + '^(' + longPieces.join('|') + ')', + 'i' + ); + this._monthsShortStrictRegex = new RegExp( + '^(' + shortPieces.join('|') + ')', + 'i' + ); + } + + // 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; } - function createDate (y, m, d, h, M, s, ms) { + // 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 var date; @@ -1157,11 +1290,11 @@ return date; } - function createUTCDate (y) { - var date; + function createUTCDate(y) { + var date, args; // the Date.UTC function remaps years 0-99 to 1900-1999 if (y < 100 && y >= 0) { - var args = Array.prototype.slice.call(arguments); + args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset args[0] = y + 400; date = new Date(Date.UTC.apply(null, args)); @@ -1190,7 +1323,8 @@ var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, - resYear, resDayOfYear; + resYear, + resDayOfYear; if (dayOfYear <= 0) { resYear = year - 1; @@ -1205,14 +1339,15 @@ return { year: resYear, - dayOfYear: resDayOfYear + dayOfYear: resDayOfYear, }; } function weekOfYear(mom, dow, doy) { var weekOffset = firstWeekOffset(mom.year(), dow, doy), week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, - resWeek, resYear; + resWeek, + resYear; if (week < 1) { resYear = mom.year() - 1; @@ -1227,7 +1362,7 @@ return { week: resWeek, - year: resYear + year: resYear, }; } @@ -1254,12 +1389,17 @@ // PARSING - addRegexToken('w', match1to2); + addRegexToken('w', match1to2); addRegexToken('ww', match1to2, match2); - addRegexToken('W', match1to2); + addRegexToken('W', match1to2); addRegexToken('WW', match1to2, match2); - addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + addWeekParseToken(['w', 'ww', 'W', 'WW'], function ( + input, + week, + config, + token + ) { week[token.substr(0, 1)] = toInt(input); }); @@ -1267,31 +1407,31 @@ // LOCALES - function localeWeek (mom) { + function localeWeek(mom) { return weekOfYear(mom, this._week.dow, this._week.doy).week; } var defaultLocaleWeek = { - 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. + 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. }; - function localeFirstDayOfWeek () { + function localeFirstDayOfWeek() { return this._week.dow; } - function localeFirstDayOfYear () { + function localeFirstDayOfYear() { return this._week.doy; } // MOMENTS - function getSetWeek (input) { + function getSetWeek(input) { var week = this.localeData().week(this); return input == null ? week : this.add((input - week) * 7, 'd'); } - function getSetISOWeek (input) { + function getSetISOWeek(input) { var week = weekOfYear(this, 1, 4).week; return input == null ? week : this.add((input - week) * 7, 'd'); } @@ -1328,16 +1468,16 @@ // PARSING - addRegexToken('d', match1to2); - addRegexToken('e', match1to2); - addRegexToken('E', match1to2); - addRegexToken('dd', function (isStrict, locale) { + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { return locale.weekdaysMinRegex(isStrict); }); - addRegexToken('ddd', function (isStrict, locale) { + addRegexToken('ddd', function (isStrict, locale) { return locale.weekdaysShortRegex(isStrict); }); - addRegexToken('dddd', function (isStrict, locale) { + addRegexToken('dddd', function (isStrict, locale) { return locale.weekdaysRegex(isStrict); }); @@ -1382,32 +1522,55 @@ } // LOCALES - function shiftWeekdays (ws, n) { + function shiftWeekdays(ws, n) { return ws.slice(n, 7).concat(ws.slice(0, n)); } - var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); - function localeWeekdays (m, format) { - var weekdays = isArray(this._weekdays) ? this._weekdays : - this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone']; - return (m === true) ? shiftWeekdays(weekdays, this._week.dow) - : (m) ? weekdays[m.day()] : weekdays; - } - - var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); - function localeWeekdaysShort (m) { - return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow) - : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; - } - - var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); - function localeWeekdaysMin (m) { - return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow) - : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( + '_' + ), + defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + defaultWeekdaysRegex = matchWord, + defaultWeekdaysShortRegex = matchWord, + defaultWeekdaysMinRegex = matchWord; + + function localeWeekdays(m, format) { + var weekdays = isArray(this._weekdays) + ? this._weekdays + : this._weekdays[ + m && m !== true && this._weekdays.isFormat.test(format) + ? 'format' + : 'standalone' + ]; + return m === true + ? shiftWeekdays(weekdays, this._week.dow) + : m + ? weekdays[m.day()] + : weekdays; + } + + function localeWeekdaysShort(m) { + return m === true + ? shiftWeekdays(this._weekdaysShort, this._week.dow) + : m + ? 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; } function handleStrictParse$1(weekdayName, format, strict) { - var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + var i, + ii, + mom, + llc = weekdayName.toLocaleLowerCase(); if (!this._weekdaysParse) { this._weekdaysParse = []; this._shortWeekdaysParse = []; @@ -1415,8 +1578,14 @@ for (i = 0; i < 7; ++i) { mom = createUTC([2000, 1]).day(i); - this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); - this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._minWeekdaysParse[i] = this.weekdaysMin( + mom, + '' + ).toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort( + mom, + '' + ).toLocaleLowerCase(); this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); } } @@ -1470,7 +1639,7 @@ } } - function localeWeekdaysParse (weekdayName, format, strict) { + function localeWeekdaysParse(weekdayName, format, strict) { var i, mom, regex; if (this._weekdaysParseExact) { @@ -1489,20 +1658,47 @@ mom = createUTC([2000, 1]).day(i); if (strict && !this._fullWeekdaysParse[i]) { - this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i'); - this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i'); - this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i'); + this._fullWeekdaysParse[i] = new RegExp( + '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', + 'i' + ); + this._shortWeekdaysParse[i] = new RegExp( + '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', + 'i' + ); + this._minWeekdaysParse[i] = new RegExp( + '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', + 'i' + ); } if (!this._weekdaysParse[i]) { - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + regex = + '^' + + this.weekdays(mom, '') + + '|^' + + this.weekdaysShort(mom, '') + + '|^' + + this.weekdaysMin(mom, ''); this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex - if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + if ( + strict && + format === 'dddd' && + this._fullWeekdaysParse[i].test(weekdayName) + ) { return i; - } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + } else if ( + strict && + format === 'ddd' && + this._shortWeekdaysParse[i].test(weekdayName) + ) { return i; - } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + } else if ( + strict && + format === 'dd' && + this._minWeekdaysParse[i].test(weekdayName) + ) { return i; } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { return i; @@ -1512,7 +1708,7 @@ // MOMENTS - function getSetDayOfWeek (input) { + function getSetDayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } @@ -1525,7 +1721,7 @@ } } - function getSetLocaleDayOfWeek (input) { + function getSetLocaleDayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } @@ -1533,7 +1729,7 @@ return input == null ? weekday : this.add(input - weekday, 'd'); } - function getSetISODayOfWeek (input) { + function getSetISODayOfWeek(input) { if (!this.isValid()) { return input != null ? this : NaN; } @@ -1550,8 +1746,7 @@ } } - var defaultWeekdaysRegex = matchWord; - function weekdaysRegex (isStrict) { + function weekdaysRegex(isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); @@ -1565,13 +1760,13 @@ if (!hasOwnProp(this, '_weekdaysRegex')) { this._weekdaysRegex = defaultWeekdaysRegex; } - return this._weekdaysStrictRegex && isStrict ? - this._weekdaysStrictRegex : this._weekdaysRegex; + return this._weekdaysStrictRegex && isStrict + ? this._weekdaysStrictRegex + : this._weekdaysRegex; } } - var defaultWeekdaysShortRegex = matchWord; - function weekdaysShortRegex (isStrict) { + function weekdaysShortRegex(isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); @@ -1585,13 +1780,13 @@ if (!hasOwnProp(this, '_weekdaysShortRegex')) { this._weekdaysShortRegex = defaultWeekdaysShortRegex; } - return this._weekdaysShortStrictRegex && isStrict ? - this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + return this._weekdaysShortStrictRegex && isStrict + ? this._weekdaysShortStrictRegex + : this._weekdaysShortRegex; } } - var defaultWeekdaysMinRegex = matchWord; - function weekdaysMinRegex (isStrict) { + function weekdaysMinRegex(isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); @@ -1605,25 +1800,32 @@ if (!hasOwnProp(this, '_weekdaysMinRegex')) { this._weekdaysMinRegex = defaultWeekdaysMinRegex; } - return this._weekdaysMinStrictRegex && isStrict ? - this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + return this._weekdaysMinStrictRegex && isStrict + ? this._weekdaysMinStrictRegex + : this._weekdaysMinRegex; } } - - function computeWeekdaysParse () { + function computeWeekdaysParse() { function cmpLenRev(a, b) { return b.length - a.length; } - var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], - i, mom, minp, shortp, longp; + var minPieces = [], + shortPieces = [], + longPieces = [], + mixedPieces = [], + i, + mom, + minp, + shortp, + longp; for (i = 0; i < 7; i++) { // make the regex if we don't have it already mom = createUTC([2000, 1]).day(i); - minp = this.weekdaysMin(mom, ''); - shortp = this.weekdaysShort(mom, ''); - longp = this.weekdays(mom, ''); + minp = regexEscape(this.weekdaysMin(mom, '')); + shortp = regexEscape(this.weekdaysShort(mom, '')); + longp = regexEscape(this.weekdays(mom, '')); minPieces.push(minp); shortPieces.push(shortp); longPieces.push(longp); @@ -1637,19 +1839,23 @@ shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); - for (i = 0; i < 7; i++) { - shortPieces[i] = regexEscape(shortPieces[i]); - longPieces[i] = regexEscape(longPieces[i]); - mixedPieces[i] = regexEscape(mixedPieces[i]); - } this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._weekdaysShortRegex = this._weekdaysRegex; this._weekdaysMinRegex = this._weekdaysRegex; - this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); - this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); - this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + this._weekdaysStrictRegex = new RegExp( + '^(' + longPieces.join('|') + ')', + 'i' + ); + this._weekdaysShortStrictRegex = new RegExp( + '^(' + shortPieces.join('|') + ')', + 'i' + ); + this._weekdaysMinStrictRegex = new RegExp( + '^(' + minPieces.join('|') + ')', + 'i' + ); } // FORMATTING @@ -1671,8 +1877,12 @@ }); addFormatToken('hmmss', 0, 0, function () { - return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); + return ( + '' + + hFormat.apply(this) + + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2) + ); }); addFormatToken('Hmm', 0, 0, function () { @@ -1680,13 +1890,21 @@ }); addFormatToken('Hmmss', 0, 0, function () { - return '' + this.hours() + zeroFill(this.minutes(), 2) + - zeroFill(this.seconds(), 2); + return ( + '' + + this.hours() + + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2) + ); }); - function meridiem (token, lowercase) { + function meridiem(token, lowercase) { addFormatToken(token, 0, 0, function () { - return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + return this.localeData().meridiem( + this.hours(), + this.minutes(), + lowercase + ); }); } @@ -1702,15 +1920,15 @@ // PARSING - function matchMeridiem (isStrict, locale) { + function matchMeridiem(isStrict, locale) { return locale._meridiemParse; } - addRegexToken('a', matchMeridiem); - addRegexToken('A', matchMeridiem); - addRegexToken('H', match1to2); - addRegexToken('h', match1to2); - addRegexToken('k', match1to2); + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('k', match1to2); addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); addRegexToken('kk', match1to2, match2); @@ -1740,8 +1958,8 @@ getParsingFlags(config).bigHour = true; }); addParseToken('hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; + var pos1 = input.length - 4, + pos2 = input.length - 2; array[HOUR] = toInt(input.substr(0, pos1)); array[MINUTE] = toInt(input.substr(pos1, 2)); array[SECOND] = toInt(input.substr(pos2)); @@ -1753,8 +1971,8 @@ array[MINUTE] = toInt(input.substr(pos)); }); addParseToken('Hmmss', function (input, array, config) { - var pos1 = input.length - 4; - var pos2 = input.length - 2; + var pos1 = input.length - 4, + pos2 = input.length - 2; array[HOUR] = toInt(input.substr(0, pos1)); array[MINUTE] = toInt(input.substr(pos1, 2)); array[SECOND] = toInt(input.substr(pos2)); @@ -1762,14 +1980,20 @@ // LOCALES - function localeIsPM (input) { + function localeIsPM(input) { // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); + return (input + '').toLowerCase().charAt(0) === 'p'; } - var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; - function localeMeridiem (hours, minutes, isLower) { + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, + // Setting the hour should keep the time, because the user explicitly + // specified which hour they want. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + getSetHour = makeGetSet('Hours', true); + + function localeMeridiem(hours, minutes, isLower) { if (hours > 11) { return isLower ? 'pm' : 'PM'; } else { @@ -1777,15 +2001,6 @@ } } - - // MOMENTS - - // Setting the hour should keep the time, because the user explicitly - // specified which hour they want. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - var getSetHour = makeGetSet('Hours', true); - var baseConfig = { calendar: defaultCalendar, longDateFormat: defaultLongDateFormat, @@ -1803,13 +2018,24 @@ weekdaysMin: defaultLocaleWeekdaysMin, weekdaysShort: defaultLocaleWeekdaysShort, - meridiemParse: defaultLocaleMeridiemParse + meridiemParse: defaultLocaleMeridiemParse, }; // internal storage for locale config files - var locales = {}; - var localeFamilies = {}; - var globalLocale; + var locales = {}, + localeFamilies = {}, + globalLocale; + + function commonPrefix(arr1, arr2) { + var i, + minl = Math.min(arr1.length, arr2.length); + for (i = 0; i < minl; i += 1) { + if (arr1[i] !== arr2[i]) { + return i; + } + } + return minl; + } function normalizeLocale(key) { return key ? key.toLowerCase().replace('_', '-') : key; @@ -1819,7 +2045,11 @@ // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root function chooseLocale(names) { - var i = 0, j, next, locale, split; + var i = 0, + j, + next, + locale, + split; while (i < names.length) { split = normalizeLocale(names[i]).split('-'); @@ -1831,7 +2061,11 @@ if (locale) { return locale; } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + if ( + next && + next.length >= j && + commonPrefix(split, next) >= j - 1 + ) { //the next array item is better than a shallower substring of this one break; } @@ -1843,16 +2077,29 @@ } function loadLocale(name) { - var oldLocale = null; + var oldLocale = null, + aliasedRequire; // TODO: Find a better way to register and load all the locales in Node - if (!locales[name] && (typeof module !== 'undefined') && - module && module.exports) { + if ( + locales[name] === undefined && + typeof module !== 'undefined' && + module && + module.exports + ) { try { oldLocale = globalLocale._abbr; - var aliasedRequire = require; - aliasedRequire('./locale/' + name); + aliasedRequire = require; + aliasedRequire( + (typeof __dirname !== undefined ? __dirname : '.') + + '/locale/' + + name + ); getSetGlobalLocale(oldLocale); - } catch (e) {} + } catch (e) { + // mark as not found to avoid repeating expensive file require call causing high CPU + // when trying to find en-US, en_US, en-us for every format call + locales[name] = null; // null means not found + } } return locales[name]; } @@ -1860,24 +2107,24 @@ // This function will load locale and then set the global locale. If // no arguments are passed in, it will simply return the current global // locale key. - function getSetGlobalLocale (key, values) { + function getSetGlobalLocale(key, values) { var data; if (key) { if (isUndefined(values)) { data = getLocale(key); - } - else { + } else { data = defineLocale(key, values); } if (data) { // moment.duration._locale = moment._locale = data; globalLocale = data; - } - else { - if ((typeof console !== 'undefined') && console.warn) { + } else { + if (typeof console !== 'undefined' && console.warn) { //warn user if arguments are passed but the locale could not be set - console.warn('Locale ' + key + ' not found. Did you forget to load it?'); + console.warn( + 'Locale ' + key + ' not found. Did you forget to load it?' + ); } } } @@ -1885,16 +2132,19 @@ return globalLocale._abbr; } - function defineLocale (name, config) { + function defineLocale(name, config) { if (config !== null) { - var locale, parentConfig = baseConfig; + var locale, + parentConfig = baseConfig; config.abbr = name; if (locales[name] != null) { - deprecateSimple('defineLocaleOverride', - 'use moment.updateLocale(localeName, config) to change ' + + deprecateSimple( + '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.'); + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.' + ); parentConfig = locales[name]._config; } else if (config.parentLocale != null) { if (locales[config.parentLocale] != null) { @@ -1909,7 +2159,7 @@ } localeFamilies[config.parentLocale].push({ name: name, - config: config + config: config, }); return null; } @@ -1928,7 +2178,6 @@ // created, so we won't end up with the child locale set. getSetGlobalLocale(name); - return locales[name]; } else { // useful for testing @@ -1939,16 +2188,30 @@ function updateLocale(name, config) { if (config != null) { - var locale, tmpLocale, parentConfig = baseConfig; - // MERGE - tmpLocale = loadLocale(name); - if (tmpLocale != null) { - parentConfig = tmpLocale._config; + var locale, + tmpLocale, + parentConfig = baseConfig; + + if (locales[name] != null && locales[name].parentLocale != null) { + // Update existing child locale in-place to avoid memory-leaks + locales[name].set(mergeConfigs(locales[name]._config, config)); + } else { + // MERGE + tmpLocale = loadLocale(name); + if (tmpLocale != null) { + parentConfig = tmpLocale._config; + } + config = mergeConfigs(parentConfig, config); + if (tmpLocale == null) { + // updateLocale is called for creating a new locale + // Set abbr so it will have a name (getters return + // undefined otherwise). + config.abbr = name; + } + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; } - config = mergeConfigs(parentConfig, config); - locale = new Locale(config); - locale.parentLocale = locales[name]; - locales[name] = locale; // backwards compat for now: also set the locale getSetGlobalLocale(name); @@ -1957,6 +2220,9 @@ if (locales[name] != null) { if (locales[name].parentLocale != null) { locales[name] = locales[name].parentLocale; + if (name === getSetGlobalLocale()) { + getSetGlobalLocale(name); + } } else if (locales[name] != null) { delete locales[name]; } @@ -1966,7 +2232,7 @@ } // returns locale data - function getLocale (key) { + function getLocale(key) { var locale; if (key && key._locale && key._locale._abbr) { @@ -1993,21 +2259,35 @@ return keys(locales); } - function checkOverflow (m) { - var overflow; - var a = m._a; + function checkOverflow(m) { + var overflow, + a = m._a; if (a && getParsingFlags(m).overflow === -2) { overflow = - 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; - - if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + 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; + + if ( + getParsingFlags(m)._overflowDayOfYear && + (overflow < YEAR || overflow > DATE) + ) { overflow = DATE; } if (getParsingFlags(m)._overflowWeeks && overflow === -1) { @@ -2023,199 +2303,64 @@ return m; } - // Pick the first defined of two or three arguments. - function defaults(a, b, c) { - if (a != null) { - return a; - } - if (b != null) { - return b; - } - return c; - } - - function currentDateArray(config) { - // hooks is actually the exported moment object - var nowValue = new Date(hooks.now()); - if (config._useUTC) { - return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; - } - return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; - } - - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function configFromArray (config) { - var i, date, input = [], currentDate, expectedWeekday, yearToUse; - - if (config._d) { - return; - } - - currentDate = currentDateArray(config); - - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } - - //if the day of the year is set, figure out what it is - if (config._dayOfYear != null) { - yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); - - if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { - getParsingFlags(config)._overflowDayOfYear = true; - } - - date = createUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } - - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } - - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; - } - - config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); - expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); - - // Apply timezone offset from input. The actual utcOffset can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); - } - - if (config._nextDay) { - config._a[HOUR] = 24; - } - - // check for mismatching day of week - if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { - getParsingFlags(config).weekdayMismatch = true; - } - } - - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; - - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; - - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); - week = defaults(w.W, 1); - weekday = defaults(w.E, 1); - if (weekday < 1 || weekday > 7) { - weekdayOverflow = true; - } - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; - - var curWeek = weekOfYear(createLocal(), dow, doy); - - weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); - - // Default to current week. - week = defaults(w.w, curWeek.week); - - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < 0 || weekday > 6) { - weekdayOverflow = true; - } - } else if (w.e != null) { - // local weekday -- counting starts from beginning of week - weekday = w.e + dow; - if (w.e < 0 || w.e > 6) { - weekdayOverflow = true; - } - } else { - // default to beginning of week - weekday = dow; - } - } - if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { - getParsingFlags(config)._overflowWeeks = true; - } else if (weekdayOverflow != null) { - getParsingFlags(config)._overflowWeekday = true; - } else { - temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; - } - } - // iso 8601 regex // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; - - var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; - - var isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], - ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], - ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], - ['GGGG-[W]WW', /\d{4}-W\d\d/, false], - ['YYYY-DDD', /\d{4}-\d{3}/], - ['YYYY-MM', /\d{4}-\d\d/, false], - ['YYYYYYMMDD', /[+-]\d{10}/], - ['YYYYMMDD', /\d{8}/], - // YYYYMM is NOT allowed by the standard - ['GGGG[W]WWE', /\d{4}W\d{3}/], - ['GGGG[W]WW', /\d{4}W\d{2}/, false], - ['YYYYDDD', /\d{7}/] - ]; - - // iso time formats and regexes - var isoTimes = [ - ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], - ['HH:mm:ss', /\d\d:\d\d:\d\d/], - ['HH:mm', /\d\d:\d\d/], - ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], - ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], - ['HHmmss', /\d\d\d\d\d\d/], - ['HHmm', /\d\d\d\d/], - ['HH', /\d\d/] - ]; - - var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/], + ['YYYYMM', /\d{6}/, false], + ['YYYY', /\d{4}/, false], + ], + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/], + ], + aspNetJsonRegex = /^\/?Date\((-?\d+)/i, + // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 + rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, + obsOffsets = { + UT: 0, + GMT: 0, + EDT: -4 * 60, + EST: -5 * 60, + CDT: -5 * 60, + CST: -6 * 60, + MDT: -6 * 60, + MST: -7 * 60, + PDT: -7 * 60, + PST: -8 * 60, + }; // date from iso format function configFromISO(config) { - var i, l, + var i, + l, string = config._i, match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), - allowTime, dateFormat, timeFormat, tzFormat; + allowTime, + dateFormat, + timeFormat, + tzFormat; if (match) { getParsingFlags(config).iso = true; @@ -2263,16 +2408,20 @@ } } - // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 - var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; - - function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { + function extractFromRFC2822Strings( + yearStr, + monthStr, + dayStr, + hourStr, + minuteStr, + secondStr + ) { var result = [ untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), - parseInt(minuteStr, 10) + parseInt(minuteStr, 10), ]; if (secondStr) { @@ -2294,14 +2443,22 @@ function preprocessRFC2822(s) { // Remove comments and folding whitespace and replace multiple-spaces with a single space - return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + return s + .replace(/\([^)]*\)|[\n\t]/g, ' ') + .replace(/(\s\s+)/g, ' ') + .replace(/^\s\s*/, '') + .replace(/\s\s*$/, ''); } function checkWeekday(weekdayStr, parsedInput, config) { if (weekdayStr) { - // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + // TODO: Replace the vanilla JS Date object with an independent day-of-week check. var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), - weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); + weekdayActual = new Date( + parsedInput[0], + parsedInput[1], + parsedInput[2] + ).getDay(); if (weekdayProvided !== weekdayActual) { getParsingFlags(config).weekdayMismatch = true; config._isValid = false; @@ -2311,19 +2468,6 @@ return true; } - var obsOffsets = { - UT: 0, - GMT: 0, - EDT: -4 * 60, - EST: -5 * 60, - CDT: -5 * 60, - CST: -6 * 60, - MDT: -6 * 60, - MST: -7 * 60, - PDT: -7 * 60, - PST: -8 * 60 - }; - function calculateOffset(obsOffset, militaryOffset, numOffset) { if (obsOffset) { return obsOffsets[obsOffset]; @@ -2331,17 +2475,26 @@ // the only allowed military tz is Z return 0; } else { - var hm = parseInt(numOffset, 10); - var m = hm % 100, h = (hm - m) / 100; + var hm = parseInt(numOffset, 10), + m = hm % 100, + h = (hm - m) / 100; return h * 60 + m; } } // date and time from ref 2822 format function configFromRFC2822(config) { - var match = rfc2822.exec(preprocessRFC2822(config._i)); + var match = rfc2822.exec(preprocessRFC2822(config._i)), + parsedArray; if (match) { - var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); + parsedArray = extractFromRFC2822Strings( + match[4], + match[3], + match[2], + match[5], + match[6], + match[7] + ); if (!checkWeekday(match[1], parsedArray, config)) { return; } @@ -2358,10 +2511,9 @@ } } - // date from iso format or fallback + // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict function configFromString(config) { var matched = aspNetJsonRegex.exec(config._i); - if (matched !== null) { config._d = new Date(+matched[1]); return; @@ -2378,23 +2530,205 @@ if (config._isValid === false) { delete config._isValid; } else { - return; + return; + } + + if (config._strict) { + config._isValid = false; + } else { + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); + } + } + + hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [ + nowValue.getUTCFullYear(), + nowValue.getUTCMonth(), + nowValue.getUTCDate(), + ]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray(config) { + var i, + date, + input = [], + currentDate, + expectedWeekday, + yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if ( + config._dayOfYear > daysInYear(yearToUse) || + config._dayOfYear === 0 + ) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = + config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if ( + config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0 + ) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply( + null, + input + ); + expectedWeekday = config._useUTC + ? config._d.getUTCDay() + : config._d.getDay(); + + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + + // check for mismatching day of week + if ( + config._w && + typeof config._w.d !== 'undefined' && + config._w.d !== expectedWeekday + ) { + getParsingFlags(config).weekdayMismatch = true; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults( + w.GG, + config._a[YEAR], + weekOfYear(createLocal(), 1, 4).year + ); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from beginning of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to beginning of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; } - - // Final attempt, use Input Fallback - hooks.createFromInputFallback(config); } - hooks.createFromInputFallback = deprecate( - 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + - 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + - 'discouraged and will be removed in an upcoming major release. Please refer to ' + - 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); - } - ); - // constant that refers to the ISO standard hooks.ISO_8601 = function () {}; @@ -2417,15 +2751,22 @@ // This array is used to make a Date, either with `new Date` or `Date.UTC` var string = '' + config._i, - i, parsedInput, tokens, token, skipped, + i, + parsedInput, + tokens, + token, + skipped, stringLength = string.length, - totalParsedInputLength = 0; + totalParsedInputLength = 0, + era; - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + tokens = + expandFormat(config._f, config._locale).match(formattingTokens) || []; for (i = 0; i < tokens.length; i++) { token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || + [])[0]; // console.log('token', token, 'parsedInput', parsedInput, // 'regex', getParseRegexForToken(token, config)); if (parsedInput) { @@ -2433,48 +2774,60 @@ if (skipped.length > 0) { getParsingFlags(config).unusedInput.push(skipped); } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + string = string.slice( + string.indexOf(parsedInput) + parsedInput.length + ); totalParsedInputLength += parsedInput.length; } // don't parse if it's not a known token if (formatTokenFunctions[token]) { if (parsedInput) { getParsingFlags(config).empty = false; - } - else { + } else { getParsingFlags(config).unusedTokens.push(token); } addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { + } else if (config._strict && !parsedInput) { getParsingFlags(config).unusedTokens.push(token); } } // add remaining unparsed input length to the string - getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + getParsingFlags(config).charsLeftOver = + stringLength - totalParsedInputLength; if (string.length > 0) { getParsingFlags(config).unusedInput.push(string); } // clear _12h flag if hour is <= 12 - if (config._a[HOUR] <= 12 && + if ( + config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && - config._a[HOUR] > 0) { + config._a[HOUR] > 0 + ) { getParsingFlags(config).bigHour = undefined; } getParsingFlags(config).parsedDateParts = config._a.slice(0); getParsingFlags(config).meridiem = config._meridiem; // handle meridiem - config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + config._a[HOUR] = meridiemFixWrap( + config._locale, + config._a[HOUR], + config._meridiem + ); + + // handle era + era = getParsingFlags(config).era; + if (era !== null) { + config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); + } configFromArray(config); checkOverflow(config); } - - function meridiemFixWrap (locale, hour, meridiem) { + function meridiemFixWrap(locale, hour, meridiem) { var isPm; if (meridiem == null) { @@ -2503,10 +2856,11 @@ function configFromStringAndArray(config) { var tempConfig, bestMoment, - scoreToBeat, i, - currentScore; + currentScore, + validFormatFound, + bestFormatIsValid = false; if (config._f.length === 0) { getParsingFlags(config).invalidFormat = true; @@ -2516,6 +2870,7 @@ for (i = 0; i < config._f.length; i++) { currentScore = 0; + validFormatFound = false; tempConfig = copyConfig({}, config); if (config._useUTC != null) { tempConfig._useUTC = config._useUTC; @@ -2523,8 +2878,8 @@ tempConfig._f = config._f[i]; configFromStringAndFormat(tempConfig); - if (!isValid(tempConfig)) { - continue; + if (isValid(tempConfig)) { + validFormatFound = true; } // if there is any input that was not parsed add a penalty for that format @@ -2535,9 +2890,23 @@ getParsingFlags(tempConfig).score = currentScore; - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; + if (!bestFormatIsValid) { + if ( + scoreToBeat == null || + currentScore < scoreToBeat || + validFormatFound + ) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + if (validFormatFound) { + bestFormatIsValid = true; + } + } + } else { + if (currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } } } @@ -2549,15 +2918,19 @@ return; } - var i = normalizeObjectUnits(config._i); - config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { - return obj && parseInt(obj, 10); - }); + var i = normalizeObjectUnits(config._i), + dayOrDate = i.day === undefined ? i.date : i.day; + config._a = map( + [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], + function (obj) { + return obj && parseInt(obj, 10); + } + ); configFromArray(config); } - function createFromConfig (config) { + function createFromConfig(config) { var res = new Moment(checkOverflow(prepareConfig(config))); if (res._nextDay) { // Adding is smart enough around DST @@ -2568,14 +2941,14 @@ return res; } - function prepareConfig (config) { + function prepareConfig(config) { var input = config._i, format = config._f; config._locale = config._locale || getLocale(config._l); if (input === null || (format === undefined && input === '')) { - return createInvalid({nullInput: true}); + return createInvalid({ nullInput: true }); } if (typeof input === 'string') { @@ -2590,7 +2963,7 @@ configFromStringAndArray(config); } else if (format) { configFromStringAndFormat(config); - } else { + } else { configFromInput(config); } @@ -2624,16 +2997,23 @@ } } - function createLocalOrUTC (input, format, locale, strict, isUTC) { + function createLocalOrUTC(input, format, locale, strict, isUTC) { var c = {}; + if (format === true || format === false) { + strict = format; + format = undefined; + } + if (locale === true || locale === false) { strict = locale; locale = undefined; } - if ((isObject(input) && isObjectEmpty(input)) || - (isArray(input) && input.length === 0)) { + if ( + (isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0) + ) { input = undefined; } // object construction must be done this way. @@ -2648,33 +3028,32 @@ return createFromConfig(c); } - function createLocal (input, format, locale, strict) { + function createLocal(input, format, locale, strict) { return createLocalOrUTC(input, format, locale, strict, false); } var prototypeMin = deprecate( - 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other < this ? this : other; - } else { - return createInvalid(); + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } } - } - ); - - var prototypeMax = deprecate( - 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', - function () { - var other = createLocal.apply(null, arguments); - if (this.isValid() && other.isValid()) { - return other > this ? this : other; - } else { - return createInvalid(); + ), + prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } } - } - ); + ); // Pick a moment m from moments so that m[fn](other) is true for all // other. This relies on the function fn to be transitive. @@ -2699,33 +3078,51 @@ } // TODO: Use [].sort instead? - function min () { + function min() { var args = [].slice.call(arguments, 0); return pickBy('isBefore', args); } - function max () { + function max() { var args = [].slice.call(arguments, 0); return pickBy('isAfter', args); } var now = function () { - return Date.now ? Date.now() : +(new Date()); + return Date.now ? Date.now() : +new Date(); }; - var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + var ordering = [ + 'year', + 'quarter', + 'month', + 'week', + 'day', + 'hour', + 'minute', + 'second', + 'millisecond', + ]; function isDurationValid(m) { - for (var key in m) { - if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + var key, + unitHasDecimal = false, + i; + for (key in m) { + if ( + hasOwnProp(m, key) && + !( + indexOf.call(ordering, key) !== -1 && + (m[key] == null || !isNaN(m[key])) + ) + ) { return false; } } - var unitHasDecimal = false; - for (var i = 0; i < ordering.length; ++i) { + for (i = 0; i < ordering.length; ++i) { if (m[ordering[i]]) { if (unitHasDecimal) { return false; // only allow non-integers for smallest unit @@ -2747,7 +3144,7 @@ return createDuration(NaN); } - function Duration (duration) { + function Duration(duration) { var normalizedInput = normalizeObjectUnits(duration), years = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, @@ -2762,20 +3159,18 @@ this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove - this._milliseconds = +milliseconds + + this._milliseconds = + +milliseconds + seconds * 1e3 + // 1000 minutes * 6e4 + // 1000 * 60 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 // Because of dateAddRemove treats 24 hours as different from a // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; + this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing // which months you are are talking about, so we have to store // it separately. - this._months = +months + - quarters * 3 + - years * 12; + this._months = +months + quarters * 3 + years * 12; this._data = {}; @@ -2784,11 +3179,11 @@ this._bubble(); } - function isDuration (obj) { + function isDuration(obj) { return obj instanceof Duration; } - function absRound (number) { + function absRound(number) { if (number < 0) { return Math.round(-1 * number) * -1; } else { @@ -2796,17 +3191,39 @@ } } + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ( + (dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i])) + ) { + diffs++; + } + } + return diffs + lengthDiff; + } + // FORMATTING - function offset (token, separator) { + function offset(token, separator) { addFormatToken(token, 0, 0, function () { - var offset = this.utcOffset(); - var sign = '+'; + var offset = this.utcOffset(), + sign = '+'; if (offset < 0) { offset = -offset; sign = '-'; } - return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + return ( + sign + + zeroFill(~~(offset / 60), 2) + + separator + + zeroFill(~~offset % 60, 2) + ); }); } @@ -2815,7 +3232,7 @@ // PARSING - addRegexToken('Z', matchShortOffset); + addRegexToken('Z', matchShortOffset); addRegexToken('ZZ', matchShortOffset); addParseToken(['Z', 'ZZ'], function (input, array, config) { config._useUTC = true; @@ -2830,19 +3247,20 @@ var chunkOffset = /([\+\-]|\d\d)/gi; function offsetFromString(matcher, string) { - var matches = (string || '').match(matcher); + var matches = (string || '').match(matcher), + chunk, + parts, + minutes; if (matches === null) { return null; } - var chunk = matches[matches.length - 1] || []; - var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; - var minutes = +(parts[1] * 60) + toInt(parts[2]); + chunk = matches[matches.length - 1] || []; + parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + minutes = +(parts[1] * 60) + toInt(parts[2]); - return minutes === 0 ? - 0 : - parts[0] === '+' ? minutes : -minutes; + return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes; } // Return a moment from input, that is local/utc/zone equivalent to model. @@ -2850,7 +3268,10 @@ var res, diff; if (model._isUTC) { res = model.clone(); - diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + diff = + (isMoment(input) || isDate(input) + ? input.valueOf() + : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api. res._d.setTime(res._d.valueOf() + diff); hooks.updateOffset(res, false); @@ -2860,10 +3281,10 @@ } } - function getDateOffset (m) { + function getDateOffset(m) { // On Firefox.24 Date#getTimezoneOffset returns a floating point. // https://github.com/moment/moment/pull/1871 - return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + return -Math.round(m._d.getTimezoneOffset()); } // HOOKS @@ -2884,7 +3305,7 @@ // a second time. In case it wants us to change the offset again // _changeInProgress == true case, then we have to adjust, because // there is no such time in the given timezone. - function getSetOffset (input, keepLocalTime, keepMinutes) { + function getSetOffset(input, keepLocalTime, keepMinutes) { var offset = this._offset || 0, localAdjust; if (!this.isValid()) { @@ -2909,7 +3330,12 @@ } if (offset !== input) { if (!keepLocalTime || this._changeInProgress) { - addSubtract(this, createDuration(input - offset, 'm'), 1, false); + addSubtract( + this, + createDuration(input - offset, 'm'), + 1, + false + ); } else if (!this._changeInProgress) { this._changeInProgress = true; hooks.updateOffset(this, true); @@ -2922,7 +3348,7 @@ } } - function getSetZone (input, keepLocalTime) { + function getSetZone(input, keepLocalTime) { if (input != null) { if (typeof input !== 'string') { input = -input; @@ -2936,11 +3362,11 @@ } } - function setOffsetToUTC (keepLocalTime) { + function setOffsetToUTC(keepLocalTime) { return this.utcOffset(0, keepLocalTime); } - function setOffsetToLocal (keepLocalTime) { + function setOffsetToLocal(keepLocalTime) { if (this._isUTC) { this.utcOffset(0, keepLocalTime); this._isUTC = false; @@ -2952,22 +3378,21 @@ return this; } - function setOffsetToParsedOffset () { + function setOffsetToParsedOffset() { if (this._tzm != null) { this.utcOffset(this._tzm, false, true); } else if (typeof this._i === 'string') { var tZone = offsetFromString(matchOffset, this._i); if (tZone != null) { this.utcOffset(tZone); - } - else { + } else { this.utcOffset(0, true); } } return this; } - function hasAlignedHourOffset (input) { + function hasAlignedHourOffset(input) { if (!this.isValid()) { return false; } @@ -2976,27 +3401,28 @@ return (this.utcOffset() - input) % 60 === 0; } - function isDaylightSavingTime () { + function isDaylightSavingTime() { return ( this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() ); } - function isDaylightSavingTimeShifted () { + function isDaylightSavingTimeShifted() { if (!isUndefined(this._isDSTShifted)) { return this._isDSTShifted; } - var c = {}; + var c = {}, + other; copyConfig(c, this); c = prepareConfig(c); if (c._a) { - var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); - this._isDSTShifted = this.isValid() && - compareArrays(c._a, other.toArray()) > 0; + other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = + this.isValid() && compareArrays(c._a, other.toArray()) > 0; } else { this._isDSTShifted = false; } @@ -3004,27 +3430,26 @@ return this._isDSTShifted; } - function isLocal () { + function isLocal() { return this.isValid() ? !this._isUTC : false; } - function isUtcOffset () { + function isUtcOffset() { return this.isValid() ? this._isUTC : false; } - function isUtc () { + function isUtc() { return this.isValid() ? this._isUTC && this._offset === 0 : false; } // ASP.NET json date format regex - var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - // and further modified to allow for strings containing both week and day - var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; - - function createDuration (input, key) { + function createDuration(input, key) { var duration = input, // matching against regexp is expensive, do it on demand match = null, @@ -3034,42 +3459,49 @@ if (isDuration(input)) { duration = { - ms : input._milliseconds, - d : input._days, - M : input._months + ms: input._milliseconds, + d: input._days, + M: input._months, }; - } else if (isNumber(input)) { + } else if (isNumber(input) || !isNaN(+input)) { duration = {}; if (key) { - duration[key] = input; + duration[key] = +input; } else { - duration.milliseconds = input; + duration.milliseconds = +input; } - } else if (!!(match = aspNetRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; + } else if ((match = aspNetRegex.exec(input))) { + sign = match[1] === '-' ? -1 : 1; duration = { - y : 0, - d : toInt(match[DATE]) * sign, - h : toInt(match[HOUR]) * sign, - m : toInt(match[MINUTE]) * sign, - s : toInt(match[SECOND]) * sign, - ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match }; - } else if (!!(match = isoRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; + } else if ((match = isoRegex.exec(input))) { + sign = match[1] === '-' ? -1 : 1; duration = { - y : parseIso(match[2], sign), - M : parseIso(match[3], sign), - w : parseIso(match[4], sign), - d : parseIso(match[5], sign), - h : parseIso(match[6], sign), - m : parseIso(match[7], sign), - s : parseIso(match[8], sign) + y: parseIso(match[2], sign), + M: parseIso(match[3], sign), + w: parseIso(match[4], sign), + d: parseIso(match[5], sign), + h: parseIso(match[6], sign), + m: parseIso(match[7], sign), + s: parseIso(match[8], sign), }; - } else if (duration == null) {// checks for null or undefined + } else if (duration == null) { + // checks for null or undefined duration = {}; - } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + } else if ( + typeof duration === 'object' && + ('from' in duration || 'to' in duration) + ) { + diffRes = momentsDifference( + createLocal(duration.from), + createLocal(duration.to) + ); duration = {}; duration.ms = diffRes.milliseconds; @@ -3082,13 +3514,17 @@ ret._locale = input._locale; } + if (isDuration(input) && hasOwnProp(input, '_isValid')) { + ret._isValid = input._isValid; + } + return ret; } createDuration.fn = Duration.prototype; createDuration.invalid = createInvalid$1; - function parseIso (inp, sign) { + function parseIso(inp, sign) { // We'd normally use ~~inp for this, but unfortunately it also // converts floats to ints. // inp may be undefined, so careful calling replace on it. @@ -3100,13 +3536,13 @@ function positiveMomentsDifference(base, other) { var res = {}; - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; + res.months = + other.month() - base.month() + (other.year() - base.year()) * 12; if (base.clone().add(res.months, 'M').isAfter(other)) { --res.months; } - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + res.milliseconds = +other - +base.clone().add(res.months, 'M'); return res; } @@ -3114,7 +3550,7 @@ function momentsDifference(base, other) { var res; if (!(base.isValid() && other.isValid())) { - return {milliseconds: 0, months: 0}; + return { milliseconds: 0, months: 0 }; } other = cloneWithOffset(other, base); @@ -3135,19 +3571,27 @@ var dur, tmp; //invert the arguments, but complain about it if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + - 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); - tmp = val; val = period; period = tmp; + deprecateSimple( + name, + 'moment().' + + name + + '(period, number) is deprecated. Please use moment().' + + name + + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.' + ); + tmp = val; + val = period; + period = tmp; } - val = typeof val === 'string' ? +val : val; dur = createDuration(val, period); addSubtract(this, dur, direction); return this; }; } - function addSubtract (mom, duration, isAdding, updateOffset) { + function addSubtract(mom, duration, isAdding, updateOffset) { var milliseconds = duration._milliseconds, days = absRound(duration._days), months = absRound(duration._months); @@ -3173,36 +3617,150 @@ } } - var add = createAdder(1, 'add'); - var subtract = createAdder(-1, 'subtract'); + var add = createAdder(1, 'add'), + subtract = createAdder(-1, 'subtract'); - function getCalendarFormat(myMoment, now) { - var diff = myMoment.diff(now, 'days', true); - return diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; + function isString(input) { + return typeof input === 'string' || input instanceof String; + } + + // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined + function isMomentInput(input) { + return ( + isMoment(input) || + isDate(input) || + isString(input) || + isNumber(input) || + isNumberOrStringArray(input) || + isMomentInputObject(input) || + input === null || + input === undefined + ); + } + + function isMomentInputObject(input) { + var objectTest = isObject(input) && !isObjectEmpty(input), + propertyTest = false, + properties = [ + 'years', + 'year', + 'y', + 'months', + 'month', + 'M', + 'days', + 'day', + 'd', + 'dates', + 'date', + 'D', + 'hours', + 'hour', + 'h', + 'minutes', + 'minute', + 'm', + 'seconds', + 'second', + 's', + 'milliseconds', + 'millisecond', + 'ms', + ], + i, + property; + + for (i = 0; i < properties.length; i += 1) { + property = properties[i]; + propertyTest = propertyTest || hasOwnProp(input, property); + } + + return objectTest && propertyTest; + } + + function isNumberOrStringArray(input) { + var arrayTest = isArray(input), + dataTypeTest = false; + if (arrayTest) { + dataTypeTest = + input.filter(function (item) { + return !isNumber(item) && isString(input); + }).length === 0; + } + return arrayTest && dataTypeTest; + } + + function isCalendarSpec(input) { + var objectTest = isObject(input) && !isObjectEmpty(input), + propertyTest = false, + properties = [ + 'sameDay', + 'nextDay', + 'lastDay', + 'nextWeek', + 'lastWeek', + 'sameElse', + ], + i, + property; + + for (i = 0; i < properties.length; i += 1) { + property = properties[i]; + propertyTest = propertyTest || hasOwnProp(input, property); + } + + return objectTest && propertyTest; } - function calendar$1 (time, formats) { + function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 + ? 'sameElse' + : diff < -1 + ? 'lastWeek' + : diff < 0 + ? 'lastDay' + : diff < 1 + ? 'sameDay' + : diff < 2 + ? 'nextDay' + : diff < 7 + ? 'nextWeek' + : 'sameElse'; + } + + function calendar$1(time, formats) { + // Support for single parameter, formats only overload to the calendar function + if (arguments.length === 1) { + if (isMomentInput(arguments[0])) { + time = arguments[0]; + formats = undefined; + } else if (isCalendarSpec(arguments[0])) { + formats = arguments[0]; + time = undefined; + } + } // We want to compare the start of today, vs this. // Getting start-of-today depends on whether we're local/utc/offset or not. var now = time || createLocal(), sod = cloneWithOffset(now, this).startOf('day'), - format = hooks.calendarFormat(this, sod) || 'sameElse'; - - var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); - - return this.format(output || this.localeData().calendar(format, this, createLocal(now))); + format = hooks.calendarFormat(this, sod) || 'sameElse', + output = + formats && + (isFunction(formats[format]) + ? formats[format].call(this, now) + : formats[format]); + + return this.format( + output || this.localeData().calendar(format, this, createLocal(now)) + ); } - function clone () { + function clone() { return new Moment(this); } - function isAfter (input, units) { + function isAfter(input, units) { var localInput = isMoment(input) ? input : createLocal(input); if (!(this.isValid() && localInput.isValid())) { return false; @@ -3215,7 +3773,7 @@ } } - function isBefore (input, units) { + function isBefore(input, units) { var localInput = isMoment(input) ? input : createLocal(input); if (!(this.isValid() && localInput.isValid())) { return false; @@ -3228,18 +3786,24 @@ } } - function isBetween (from, to, units, inclusivity) { + function isBetween(from, to, units, inclusivity) { var localFrom = isMoment(from) ? from : createLocal(from), localTo = isMoment(to) ? to : createLocal(to); if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { return false; } inclusivity = inclusivity || '()'; - return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && - (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units)); + return ( + (inclusivity[0] === '(' + ? this.isAfter(localFrom, units) + : !this.isBefore(localFrom, units)) && + (inclusivity[1] === ')' + ? this.isBefore(localTo, units) + : !this.isAfter(localTo, units)) + ); } - function isSame (input, units) { + function isSame(input, units) { var localInput = isMoment(input) ? input : createLocal(input), inputMs; if (!(this.isValid() && localInput.isValid())) { @@ -3250,22 +3814,23 @@ return this.valueOf() === localInput.valueOf(); } else { inputMs = localInput.valueOf(); - return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + return ( + this.clone().startOf(units).valueOf() <= inputMs && + inputMs <= this.clone().endOf(units).valueOf() + ); } } - function isSameOrAfter (input, units) { + function isSameOrAfter(input, units) { return this.isSame(input, units) || this.isAfter(input, units); } - function isSameOrBefore (input, units) { + function isSameOrBefore(input, units) { return this.isSame(input, units) || this.isBefore(input, units); } - function diff (input, units, asFloat) { - var that, - zoneDelta, - output; + function diff(input, units, asFloat) { + var that, zoneDelta, output; if (!this.isValid()) { return NaN; @@ -3282,26 +3847,49 @@ units = normalizeUnits(units); switch (units) { - case 'year': output = monthDiff(this, that) / 12; break; - case 'month': output = monthDiff(this, that); break; - case 'quarter': output = monthDiff(this, that) / 3; break; - case 'second': output = (this - that) / 1e3; break; // 1000 - case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 - case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 - case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst - case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst - default: output = this - that; + case 'year': + output = monthDiff(this, that) / 12; + break; + case 'month': + output = monthDiff(this, that); + break; + case 'quarter': + output = monthDiff(this, that) / 3; + break; + case 'second': + output = (this - that) / 1e3; + break; // 1000 + case 'minute': + output = (this - that) / 6e4; + break; // 1000 * 60 + case 'hour': + output = (this - that) / 36e5; + break; // 1000 * 60 * 60 + case 'day': + output = (this - that - zoneDelta) / 864e5; + break; // 1000 * 60 * 60 * 24, negate dst + case 'week': + output = (this - that - zoneDelta) / 6048e5; + break; // 1000 * 60 * 60 * 24 * 7, negate dst + default: + output = this - that; } return asFloat ? output : absFloor(output); } - function monthDiff (a, b) { + function monthDiff(a, b) { + if (a.date() < b.date()) { + // end-of-month calculations work correct when the start month has more + // days than the end month. + return -monthDiff(b, a); + } // difference in months - var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), // b is in (anchor - 1 month, anchor + 1 month) anchor = a.clone().add(wholeMonthDiff, 'months'), - anchor2, adjust; + anchor2, + adjust; if (b - anchor < 0) { anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); @@ -3320,7 +3908,7 @@ hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; - function toString () { + function toString() { return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); } @@ -3328,20 +3916,30 @@ if (!this.isValid()) { return null; } - var utc = keepOffset !== true; - var m = utc ? this.clone().utc() : this; + var utc = keepOffset !== true, + m = utc ? this.clone().utc() : this; if (m.year() < 0 || m.year() > 9999) { - return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); + return formatMoment( + m, + utc + ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' + : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ' + ); } if (isFunction(Date.prototype.toISOString)) { // native implementation is ~50x faster, use it when we can if (utc) { return this.toDate().toISOString(); } else { - return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z')); + return new Date(this.valueOf() + this.utcOffset() * 60 * 1000) + .toISOString() + .replace('Z', formatMoment(m, 'Z')); } } - return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); + return formatMoment( + m, + utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ' + ); } /** @@ -3350,64 +3948,76 @@ * * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects */ - function inspect () { + function inspect() { if (!this.isValid()) { return 'moment.invalid(/* ' + this._i + ' */)'; } - var func = 'moment'; - var zone = ''; + var func = 'moment', + zone = '', + prefix, + year, + datetime, + suffix; if (!this.isLocal()) { func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; zone = 'Z'; } - var prefix = '[' + func + '("]'; - var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; - var datetime = '-MM-DD[T]HH:mm:ss.SSS'; - var suffix = zone + '[")]'; + prefix = '[' + func + '("]'; + year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY'; + datetime = '-MM-DD[T]HH:mm:ss.SSS'; + suffix = zone + '[")]'; return this.format(prefix + year + datetime + suffix); } - function format (inputString) { + function format(inputString) { if (!inputString) { - inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + inputString = this.isUtc() + ? hooks.defaultFormatUtc + : hooks.defaultFormat; } var output = formatMoment(this, inputString); return this.localeData().postformat(output); } - function from (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + function from(time, withoutSuffix) { + if ( + this.isValid() && + ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) + ) { + return createDuration({ to: this, from: time }) + .locale(this.locale()) + .humanize(!withoutSuffix); } else { return this.localeData().invalidDate(); } } - function fromNow (withoutSuffix) { + function fromNow(withoutSuffix) { return this.from(createLocal(), withoutSuffix); } - function to (time, withoutSuffix) { - if (this.isValid() && - ((isMoment(time) && time.isValid()) || - createLocal(time).isValid())) { - return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + function to(time, withoutSuffix) { + if ( + this.isValid() && + ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) + ) { + return createDuration({ from: this, to: time }) + .locale(this.locale()) + .humanize(!withoutSuffix); } else { return this.localeData().invalidDate(); } } - function toNow (withoutSuffix) { + function toNow(withoutSuffix) { return this.to(createLocal(), withoutSuffix); } // If passed a locale key, it will set the locale for this // instance. Otherwise, it will return the locale configuration // variables for this instance. - function locale (key) { + function locale(key) { var newLocaleData; if (key === undefined) { @@ -3432,18 +4042,18 @@ } ); - function localeData () { + function localeData() { return this._locale; } - var MS_PER_SECOND = 1000; - var MS_PER_MINUTE = 60 * MS_PER_SECOND; - var MS_PER_HOUR = 60 * MS_PER_MINUTE; - var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; + var MS_PER_SECOND = 1000, + MS_PER_MINUTE = 60 * MS_PER_SECOND, + MS_PER_HOUR = 60 * MS_PER_MINUTE, + MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970): function mod$1(dividend, divisor) { - return (dividend % divisor + divisor) % divisor; + return ((dividend % divisor) + divisor) % divisor; } function localStartOfDate(y, m, d) { @@ -3466,30 +4076,42 @@ } } - function startOf (units) { - var time; + function startOf(units) { + var time, startOfDate; units = normalizeUnits(units); if (units === undefined || units === 'millisecond' || !this.isValid()) { return this; } - var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; + startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; switch (units) { case 'year': time = startOfDate(this.year(), 0, 1); break; case 'quarter': - time = startOfDate(this.year(), this.month() - this.month() % 3, 1); + time = startOfDate( + this.year(), + this.month() - (this.month() % 3), + 1 + ); break; case 'month': time = startOfDate(this.year(), this.month(), 1); break; case 'week': - time = startOfDate(this.year(), this.month(), this.date() - this.weekday()); + time = startOfDate( + this.year(), + this.month(), + this.date() - this.weekday() + ); break; case 'isoWeek': - time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1)); + time = startOfDate( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + ); break; case 'day': case 'date': @@ -3497,7 +4119,10 @@ break; case 'hour': time = this._d.valueOf(); - time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR); + time -= mod$1( + time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), + MS_PER_HOUR + ); break; case 'minute': time = this._d.valueOf(); @@ -3514,30 +4139,45 @@ return this; } - function endOf (units) { - var time; + function endOf(units) { + var time, startOfDate; units = normalizeUnits(units); if (units === undefined || units === 'millisecond' || !this.isValid()) { return this; } - var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; + startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; switch (units) { case 'year': time = startOfDate(this.year() + 1, 0, 1) - 1; break; case 'quarter': - time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1; + time = + startOfDate( + this.year(), + this.month() - (this.month() % 3) + 3, + 1 + ) - 1; break; case 'month': time = startOfDate(this.year(), this.month() + 1, 1) - 1; break; case 'week': - time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1; + time = + startOfDate( + this.year(), + this.month(), + this.date() - this.weekday() + 7 + ) - 1; break; case 'isoWeek': - time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1; + time = + startOfDate( + this.year(), + this.month(), + this.date() - (this.isoWeekday() - 1) + 7 + ) - 1; break; case 'day': case 'date': @@ -3545,7 +4185,13 @@ break; case 'hour': time = this._d.valueOf(); - time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1; + time += + MS_PER_HOUR - + mod$1( + time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), + MS_PER_HOUR + ) - + 1; break; case 'minute': time = this._d.valueOf(); @@ -3562,24 +4208,32 @@ return this; } - function valueOf () { - return this._d.valueOf() - ((this._offset || 0) * 60000); + function valueOf() { + return this._d.valueOf() - (this._offset || 0) * 60000; } - function unix () { + function unix() { return Math.floor(this.valueOf() / 1000); } - function toDate () { + function toDate() { return new Date(this.valueOf()); } - function toArray () { + function toArray() { var m = this; - return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + return [ + m.year(), + m.month(), + m.date(), + m.hour(), + m.minute(), + m.second(), + m.millisecond(), + ]; } - function toObject () { + function toObject() { var m = this; return { years: m.year(), @@ -3588,24 +4242,24 @@ hours: m.hours(), minutes: m.minutes(), seconds: m.seconds(), - milliseconds: m.milliseconds() + milliseconds: m.milliseconds(), }; } - function toJSON () { + function toJSON() { // new Date(NaN).toJSON() === null return this.isValid() ? this.toISOString() : null; } - function isValid$2 () { + function isValid$2() { return isValid(this); } - function parsingFlags () { + function parsingFlags() { return extend({}, getParsingFlags(this)); } - function invalidAt () { + function invalidAt() { return getParsingFlags(this).overflow; } @@ -3615,10 +4269,291 @@ format: this._f, locale: this._locale, isUTC: this._isUTC, - strict: this._strict + strict: this._strict, }; } + addFormatToken('N', 0, 0, 'eraAbbr'); + addFormatToken('NN', 0, 0, 'eraAbbr'); + addFormatToken('NNN', 0, 0, 'eraAbbr'); + addFormatToken('NNNN', 0, 0, 'eraName'); + addFormatToken('NNNNN', 0, 0, 'eraNarrow'); + + addFormatToken('y', ['y', 1], 'yo', 'eraYear'); + addFormatToken('y', ['yy', 2], 0, 'eraYear'); + addFormatToken('y', ['yyy', 3], 0, 'eraYear'); + addFormatToken('y', ['yyyy', 4], 0, 'eraYear'); + + addRegexToken('N', matchEraAbbr); + addRegexToken('NN', matchEraAbbr); + addRegexToken('NNN', matchEraAbbr); + addRegexToken('NNNN', matchEraName); + addRegexToken('NNNNN', matchEraNarrow); + + addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function ( + input, + array, + config, + token + ) { + var era = config._locale.erasParse(input, token, config._strict); + if (era) { + getParsingFlags(config).era = era; + } else { + getParsingFlags(config).invalidEra = input; + } + }); + + addRegexToken('y', matchUnsigned); + addRegexToken('yy', matchUnsigned); + addRegexToken('yyy', matchUnsigned); + addRegexToken('yyyy', matchUnsigned); + addRegexToken('yo', matchEraYearOrdinal); + + addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR); + addParseToken(['yo'], function (input, array, config, token) { + var match; + if (config._locale._eraYearOrdinalRegex) { + match = input.match(config._locale._eraYearOrdinalRegex); + } + + if (config._locale.eraYearOrdinalParse) { + array[YEAR] = config._locale.eraYearOrdinalParse(input, match); + } else { + array[YEAR] = parseInt(input, 10); + } + }); + + function localeEras(m, format) { + var i, + l, + date, + eras = this._eras || getLocale('en')._eras; + for (i = 0, l = eras.length; i < l; ++i) { + switch (typeof eras[i].since) { + case 'string': + // truncate time + date = hooks(eras[i].since).startOf('day'); + eras[i].since = date.valueOf(); + break; + } + + switch (typeof eras[i].until) { + case 'undefined': + eras[i].until = +Infinity; + break; + case 'string': + // truncate time + date = hooks(eras[i].until).startOf('day').valueOf(); + eras[i].until = date.valueOf(); + break; + } + } + return eras; + } + + function localeErasParse(eraName, format, strict) { + var i, + l, + eras = this.eras(), + name, + abbr, + narrow; + eraName = eraName.toUpperCase(); + + for (i = 0, l = eras.length; i < l; ++i) { + name = eras[i].name.toUpperCase(); + abbr = eras[i].abbr.toUpperCase(); + narrow = eras[i].narrow.toUpperCase(); + + if (strict) { + switch (format) { + case 'N': + case 'NN': + case 'NNN': + if (abbr === eraName) { + return eras[i]; + } + break; + + case 'NNNN': + if (name === eraName) { + return eras[i]; + } + break; + + case 'NNNNN': + if (narrow === eraName) { + return eras[i]; + } + break; + } + } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { + return eras[i]; + } + } + } + + function localeErasConvertYear(era, year) { + var dir = era.since <= era.until ? +1 : -1; + if (year === undefined) { + return hooks(era.since).year(); + } else { + return hooks(era.since).year() + (year - era.offset) * dir; + } + } + + function getEraName() { + var i, + l, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + // truncate time + val = this.startOf('day').valueOf(); + + if (eras[i].since <= val && val <= eras[i].until) { + return eras[i].name; + } + if (eras[i].until <= val && val <= eras[i].since) { + return eras[i].name; + } + } + + return ''; + } + + function getEraNarrow() { + var i, + l, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + // truncate time + val = this.startOf('day').valueOf(); + + if (eras[i].since <= val && val <= eras[i].until) { + return eras[i].narrow; + } + if (eras[i].until <= val && val <= eras[i].since) { + return eras[i].narrow; + } + } + + return ''; + } + + function getEraAbbr() { + var i, + l, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + // truncate time + val = this.startOf('day').valueOf(); + + if (eras[i].since <= val && val <= eras[i].until) { + return eras[i].abbr; + } + if (eras[i].until <= val && val <= eras[i].since) { + return eras[i].abbr; + } + } + + return ''; + } + + function getEraYear() { + var i, + l, + dir, + val, + eras = this.localeData().eras(); + for (i = 0, l = eras.length; i < l; ++i) { + dir = eras[i].since <= eras[i].until ? +1 : -1; + + // truncate time + val = this.startOf('day').valueOf(); + + if ( + (eras[i].since <= val && val <= eras[i].until) || + (eras[i].until <= val && val <= eras[i].since) + ) { + return ( + (this.year() - hooks(eras[i].since).year()) * dir + + eras[i].offset + ); + } + } + + return this.year(); + } + + function erasNameRegex(isStrict) { + if (!hasOwnProp(this, '_erasNameRegex')) { + computeErasParse.call(this); + } + return isStrict ? this._erasNameRegex : this._erasRegex; + } + + function erasAbbrRegex(isStrict) { + if (!hasOwnProp(this, '_erasAbbrRegex')) { + computeErasParse.call(this); + } + return isStrict ? this._erasAbbrRegex : this._erasRegex; + } + + function erasNarrowRegex(isStrict) { + if (!hasOwnProp(this, '_erasNarrowRegex')) { + computeErasParse.call(this); + } + return isStrict ? this._erasNarrowRegex : this._erasRegex; + } + + function matchEraAbbr(isStrict, locale) { + return locale.erasAbbrRegex(isStrict); + } + + function matchEraName(isStrict, locale) { + return locale.erasNameRegex(isStrict); + } + + function matchEraNarrow(isStrict, locale) { + return locale.erasNarrowRegex(isStrict); + } + + function matchEraYearOrdinal(isStrict, locale) { + return locale._eraYearOrdinalRegex || matchUnsigned; + } + + function computeErasParse() { + var abbrPieces = [], + namePieces = [], + narrowPieces = [], + mixedPieces = [], + i, + l, + 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)); + + mixedPieces.push(regexEscape(eras[i].name)); + mixedPieces.push(regexEscape(eras[i].abbr)); + mixedPieces.push(regexEscape(eras[i].narrow)); + } + + this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i'); + this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i'); + this._erasNarrowRegex = new RegExp( + '^(' + narrowPieces.join('|') + ')', + 'i' + ); + } + // FORMATTING addFormatToken(0, ['gg', 2], 0, function () { @@ -3629,13 +4564,13 @@ return this.isoWeekYear() % 100; }); - function addWeekYearFormatToken (token, getter) { + function addWeekYearFormatToken(token, getter) { addFormatToken(0, [token, token.length], 0, getter); } - addWeekYearFormatToken('gggg', 'weekYear'); - addWeekYearFormatToken('ggggg', 'weekYear'); - addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES @@ -3648,19 +4583,23 @@ addUnitPriority('weekYear', 1); addUnitPriority('isoWeekYear', 1); - // PARSING - addRegexToken('G', matchSigned); - addRegexToken('g', matchSigned); - addRegexToken('GG', match1to2, match2); - addRegexToken('gg', match1to2, match2); - addRegexToken('GGGG', match1to4, match4); - addRegexToken('gggg', match1to4, match4); - addRegexToken('GGGGG', match1to6, match6); - addRegexToken('ggggg', match1to6, match6); - - addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function ( + input, + week, + config, + token + ) { week[token.substr(0, 2)] = toInt(input); }); @@ -3670,29 +4609,46 @@ // MOMENTS - function getSetWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, - this.week(), - this.weekday(), - this.localeData()._week.dow, - this.localeData()._week.doy); + function getSetWeekYear(input) { + return getSetWeekYearHelper.call( + this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy + ); } - function getSetISOWeekYear (input) { - return getSetWeekYearHelper.call(this, - input, this.isoWeek(), this.isoWeekday(), 1, 4); + function getSetISOWeekYear(input) { + return getSetWeekYearHelper.call( + this, + input, + this.isoWeek(), + this.isoWeekday(), + 1, + 4 + ); } - function getISOWeeksInYear () { + function getISOWeeksInYear() { return weeksInYear(this.year(), 1, 4); } - function getWeeksInYear () { + function getISOWeeksInISOWeekYear() { + return weeksInYear(this.isoWeekYear(), 1, 4); + } + + function getWeeksInYear() { var weekInfo = this.localeData()._week; return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); } + function getWeeksInWeekYear() { + var weekInfo = this.localeData()._week; + return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); + } + function getSetWeekYearHelper(input, week, weekday, dow, doy) { var weeksTarget; if (input == null) { @@ -3737,8 +4693,10 @@ // MOMENTS - function getSetQuarter (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + function getSetQuarter(input) { + return input == null + ? Math.ceil((this.month() + 1) / 3) + : this.month((input - 1) * 3 + (this.month() % 3)); } // FORMATTING @@ -3754,13 +4712,13 @@ // PARSING - addRegexToken('D', match1to2); + addRegexToken('D', match1to2); addRegexToken('DD', match1to2, match2); addRegexToken('Do', function (isStrict, locale) { // TODO: Remove "ordinalParse" fallback in next major release. - return isStrict ? - (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : - locale._dayOfMonthOrdinalParseLenient; + return isStrict + ? locale._dayOfMonthOrdinalParse || locale._ordinalParse + : locale._dayOfMonthOrdinalParseLenient; }); addParseToken(['D', 'DD'], DATE); @@ -3785,7 +4743,7 @@ // PARSING - addRegexToken('DDD', match1to3); + addRegexToken('DDD', match1to3); addRegexToken('DDDD', match3); addParseToken(['DDD', 'DDDD'], function (input, array, config) { config._dayOfYear = toInt(input); @@ -3795,9 +4753,12 @@ // MOMENTS - function getSetDayOfYear (input) { - var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + function getSetDayOfYear(input) { + var dayOfYear = + Math.round( + (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5 + ) + 1; + return input == null ? dayOfYear : this.add(input - dayOfYear, 'd'); } // FORMATTING @@ -3814,7 +4775,7 @@ // PARSING - addRegexToken('m', match1to2); + addRegexToken('m', match1to2); addRegexToken('mm', match1to2, match2); addParseToken(['m', 'mm'], MINUTE); @@ -3836,7 +4797,7 @@ // PARSING - addRegexToken('s', match1to2); + addRegexToken('s', match1to2); addRegexToken('ss', match1to2, match2); addParseToken(['s', 'ss'], SECOND); @@ -3874,7 +4835,6 @@ return this.millisecond() * 1000000; }); - // ALIASES addUnitAlias('millisecond', 'ms'); @@ -3885,11 +4845,11 @@ // PARSING - addRegexToken('S', match1to3, match1); - addRegexToken('SS', match1to3, match2); - addRegexToken('SSS', match1to3, match3); + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); - var token; + var token, getSetMillisecond; for (token = 'SSSS'; token.length <= 9; token += 'S') { addRegexToken(token, matchUnsigned); } @@ -3901,155 +4861,186 @@ for (token = 'S'; token.length <= 9; token += 'S') { addParseToken(token, parseMs); } - // MOMENTS - var getSetMillisecond = makeGetSet('Milliseconds', false); + getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING - addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('z', 0, 0, 'zoneAbbr'); addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS - function getZoneAbbr () { + function getZoneAbbr() { return this._isUTC ? 'UTC' : ''; } - function getZoneName () { + function getZoneName() { return this._isUTC ? 'Coordinated Universal Time' : ''; } var proto = Moment.prototype; - proto.add = add; - proto.calendar = calendar$1; - proto.clone = clone; - proto.diff = diff; - proto.endOf = endOf; - proto.format = format; - proto.from = from; - proto.fromNow = fromNow; - proto.to = to; - proto.toNow = toNow; - proto.get = stringGet; - proto.invalidAt = invalidAt; - proto.isAfter = isAfter; - proto.isBefore = isBefore; - proto.isBetween = isBetween; - proto.isSame = isSame; - proto.isSameOrAfter = isSameOrAfter; - proto.isSameOrBefore = isSameOrBefore; - proto.isValid = isValid$2; - proto.lang = lang; - proto.locale = locale; - proto.localeData = localeData; - proto.max = prototypeMax; - proto.min = prototypeMin; - proto.parsingFlags = parsingFlags; - proto.set = stringSet; - proto.startOf = startOf; - proto.subtract = subtract; - proto.toArray = toArray; - proto.toObject = toObject; - proto.toDate = toDate; - proto.toISOString = toISOString; - proto.inspect = inspect; - proto.toJSON = toJSON; - proto.toString = toString; - proto.unix = unix; - proto.valueOf = valueOf; - proto.creationData = creationData; - proto.year = getSetYear; + proto.add = add; + proto.calendar = calendar$1; + proto.clone = clone; + proto.diff = diff; + proto.endOf = endOf; + proto.format = format; + proto.from = from; + proto.fromNow = fromNow; + proto.to = to; + proto.toNow = toNow; + proto.get = stringGet; + proto.invalidAt = invalidAt; + proto.isAfter = isAfter; + proto.isBefore = isBefore; + proto.isBetween = isBetween; + proto.isSame = isSame; + proto.isSameOrAfter = isSameOrAfter; + proto.isSameOrBefore = isSameOrBefore; + proto.isValid = isValid$2; + proto.lang = lang; + proto.locale = locale; + proto.localeData = localeData; + proto.max = prototypeMax; + proto.min = prototypeMin; + proto.parsingFlags = parsingFlags; + proto.set = stringSet; + proto.startOf = startOf; + proto.subtract = subtract; + proto.toArray = toArray; + proto.toObject = toObject; + proto.toDate = toDate; + proto.toISOString = toISOString; + proto.inspect = inspect; + if (typeof Symbol !== undefined && Symbol.for != null) { + proto[Symbol.for('nodejs.util.inspect.custom')] = function () { + return 'Moment<' + this.format() + '>'; + }; + } + proto.toJSON = toJSON; + proto.toString = toString; + proto.unix = unix; + proto.valueOf = valueOf; + proto.creationData = creationData; + proto.eraName = getEraName; + proto.eraNarrow = getEraNarrow; + proto.eraAbbr = getEraAbbr; + proto.eraYear = getEraYear; + proto.year = getSetYear; proto.isLeapYear = getIsLeapYear; - proto.weekYear = getSetWeekYear; + proto.weekYear = getSetWeekYear; proto.isoWeekYear = getSetISOWeekYear; proto.quarter = proto.quarters = getSetQuarter; - proto.month = getSetMonth; + proto.month = getSetMonth; proto.daysInMonth = getDaysInMonth; - proto.week = proto.weeks = getSetWeek; - proto.isoWeek = proto.isoWeeks = getSetISOWeek; - proto.weeksInYear = getWeeksInYear; + proto.week = proto.weeks = getSetWeek; + proto.isoWeek = proto.isoWeeks = getSetISOWeek; + proto.weeksInYear = getWeeksInYear; + proto.weeksInWeekYear = getWeeksInWeekYear; proto.isoWeeksInYear = getISOWeeksInYear; - proto.date = getSetDayOfMonth; - proto.day = proto.days = getSetDayOfWeek; - proto.weekday = getSetLocaleDayOfWeek; + proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; + proto.date = getSetDayOfMonth; + proto.day = proto.days = getSetDayOfWeek; + proto.weekday = getSetLocaleDayOfWeek; proto.isoWeekday = getSetISODayOfWeek; - proto.dayOfYear = getSetDayOfYear; + proto.dayOfYear = getSetDayOfYear; proto.hour = proto.hours = getSetHour; proto.minute = proto.minutes = getSetMinute; proto.second = proto.seconds = getSetSecond; proto.millisecond = proto.milliseconds = getSetMillisecond; - proto.utcOffset = getSetOffset; - proto.utc = setOffsetToUTC; - proto.local = setOffsetToLocal; - proto.parseZone = setOffsetToParsedOffset; + proto.utcOffset = getSetOffset; + proto.utc = setOffsetToUTC; + proto.local = setOffsetToLocal; + proto.parseZone = setOffsetToParsedOffset; proto.hasAlignedHourOffset = hasAlignedHourOffset; - proto.isDST = isDaylightSavingTime; - proto.isLocal = isLocal; - proto.isUtcOffset = isUtcOffset; - proto.isUtc = isUtc; - proto.isUTC = isUtc; + proto.isDST = isDaylightSavingTime; + proto.isLocal = isLocal; + proto.isUtcOffset = isUtcOffset; + proto.isUtc = isUtc; + proto.isUTC = isUtc; proto.zoneAbbr = getZoneAbbr; proto.zoneName = getZoneName; - proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); - proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); - proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); - proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); - proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + proto.dates = deprecate( + 'dates accessor is deprecated. Use date instead.', + getSetDayOfMonth + ); + proto.months = deprecate( + 'months accessor is deprecated. Use month instead', + getSetMonth + ); + proto.years = deprecate( + 'years accessor is deprecated. Use year instead', + getSetYear + ); + proto.zone = deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', + getSetZone + ); + proto.isDSTShifted = deprecate( + 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', + isDaylightSavingTimeShifted + ); - function createUnix (input) { + function createUnix(input) { return createLocal(input * 1000); } - function createInZone () { + function createInZone() { return createLocal.apply(null, arguments).parseZone(); } - function preParsePostFormat (string) { + function preParsePostFormat(string) { return string; } var proto$1 = Locale.prototype; - proto$1.calendar = calendar; - proto$1.longDateFormat = longDateFormat; - proto$1.invalidDate = invalidDate; - proto$1.ordinal = ordinal; - proto$1.preparse = preParsePostFormat; - proto$1.postformat = preParsePostFormat; - proto$1.relativeTime = relativeTime; - proto$1.pastFuture = pastFuture; - proto$1.set = set; - - proto$1.months = localeMonths; - proto$1.monthsShort = localeMonthsShort; - proto$1.monthsParse = localeMonthsParse; - proto$1.monthsRegex = monthsRegex; - proto$1.monthsShortRegex = monthsShortRegex; + proto$1.calendar = calendar; + proto$1.longDateFormat = longDateFormat; + proto$1.invalidDate = invalidDate; + proto$1.ordinal = ordinal; + proto$1.preparse = preParsePostFormat; + proto$1.postformat = preParsePostFormat; + proto$1.relativeTime = relativeTime; + proto$1.pastFuture = pastFuture; + proto$1.set = set; + proto$1.eras = localeEras; + proto$1.erasParse = localeErasParse; + proto$1.erasConvertYear = localeErasConvertYear; + proto$1.erasAbbrRegex = erasAbbrRegex; + proto$1.erasNameRegex = erasNameRegex; + proto$1.erasNarrowRegex = erasNarrowRegex; + + proto$1.months = localeMonths; + proto$1.monthsShort = localeMonthsShort; + proto$1.monthsParse = localeMonthsParse; + proto$1.monthsRegex = monthsRegex; + proto$1.monthsShortRegex = monthsShortRegex; proto$1.week = localeWeek; proto$1.firstDayOfYear = localeFirstDayOfYear; proto$1.firstDayOfWeek = localeFirstDayOfWeek; - proto$1.weekdays = localeWeekdays; - proto$1.weekdaysMin = localeWeekdaysMin; - proto$1.weekdaysShort = localeWeekdaysShort; - proto$1.weekdaysParse = localeWeekdaysParse; + proto$1.weekdays = localeWeekdays; + proto$1.weekdaysMin = localeWeekdaysMin; + proto$1.weekdaysShort = localeWeekdaysShort; + proto$1.weekdaysParse = localeWeekdaysParse; - proto$1.weekdaysRegex = weekdaysRegex; - proto$1.weekdaysShortRegex = weekdaysShortRegex; - proto$1.weekdaysMinRegex = weekdaysMinRegex; + proto$1.weekdaysRegex = weekdaysRegex; + proto$1.weekdaysShortRegex = weekdaysShortRegex; + proto$1.weekdaysMinRegex = weekdaysMinRegex; proto$1.isPM = localeIsPM; proto$1.meridiem = localeMeridiem; - function get$1 (format, index, field, setter) { - var locale = getLocale(); - var utc = createUTC().set(setter, index); + function get$1(format, index, field, setter) { + var locale = getLocale(), + utc = createUTC().set(setter, index); return locale[field](utc, format); } - function listMonthsImpl (format, index, field) { + function listMonthsImpl(format, index, field) { if (isNumber(format)) { index = format; format = undefined; @@ -4061,8 +5052,8 @@ return get$1(format, index, field, 'month'); } - var i; - var out = []; + var i, + out = []; for (i = 0; i < 12; i++) { out[i] = get$1(format, i, field, 'month'); } @@ -4077,7 +5068,7 @@ // (true, 5) // (true, fmt, 5) // (true, fmt) - function listWeekdaysImpl (localeSorted, format, index, field) { + function listWeekdaysImpl(localeSorted, format, index, field) { if (typeof localeSorted === 'boolean') { if (isNumber(format)) { index = format; @@ -4099,97 +5090,127 @@ } var locale = getLocale(), - shift = localeSorted ? locale._week.dow : 0; + shift = localeSorted ? locale._week.dow : 0, + i, + out = []; if (index != null) { return get$1(format, (index + shift) % 7, field, 'day'); } - var i; - var out = []; for (i = 0; i < 7; i++) { out[i] = get$1(format, (i + shift) % 7, field, 'day'); } return out; } - function listMonths (format, index) { + function listMonths(format, index) { return listMonthsImpl(format, index, 'months'); } - function listMonthsShort (format, index) { + function listMonthsShort(format, index) { return listMonthsImpl(format, index, 'monthsShort'); } - function listWeekdays (localeSorted, format, index) { + function listWeekdays(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); } - function listWeekdaysShort (localeSorted, format, index) { + function listWeekdaysShort(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); } - function listWeekdaysMin (localeSorted, format, index) { + function listWeekdaysMin(localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); } getSetGlobalLocale('en', { + eras: [ + { + since: '0001-01-01', + until: +Infinity, + offset: 1, + name: 'Anno Domini', + narrow: 'AD', + abbr: 'AD', + }, + { + since: '0000-12-31', + until: -Infinity, + offset: 1, + name: 'Before Christ', + narrow: 'BC', + abbr: 'BC', + }, + ], dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { + ordinal: function (number) { var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; + output = + toInt((number % 100) / 10) === 1 + ? 'th' + : b === 1 + ? 'st' + : b === 2 + ? 'nd' + : b === 3 + ? 'rd' + : 'th'; return number + output; - } + }, }); // Side effect imports - hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); - hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + hooks.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + getSetGlobalLocale + ); + hooks.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + getLocale + ); var mathAbs = Math.abs; - function abs () { - var data = this._data; + function abs() { + var data = this._data; this._milliseconds = mathAbs(this._milliseconds); - this._days = mathAbs(this._days); - this._months = mathAbs(this._months); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); - data.milliseconds = mathAbs(data.milliseconds); - data.seconds = mathAbs(data.seconds); - data.minutes = mathAbs(data.minutes); - data.hours = mathAbs(data.hours); - data.months = mathAbs(data.months); - data.years = mathAbs(data.years); + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); return this; } - function addSubtract$1 (duration, input, value, direction) { + function addSubtract$1(duration, input, value, direction) { var other = createDuration(input, value); duration._milliseconds += direction * other._milliseconds; - duration._days += direction * other._days; - duration._months += direction * other._months; + duration._days += direction * other._days; + duration._months += direction * other._months; return duration._bubble(); } // supports only 2.0-style add(1, 's') or add(duration) - function add$1 (input, value) { + function add$1(input, value) { return addSubtract$1(this, input, value, 1); } // supports only 2.0-style subtract(1, 's') or subtract(duration) - function subtract$1 (input, value) { + function subtract$1(input, value) { return addSubtract$1(this, input, value, -1); } - function absCeil (number) { + function absCeil(number) { if (number < 0) { return Math.floor(number); } else { @@ -4197,17 +5218,25 @@ } } - function bubble () { - var milliseconds = this._milliseconds; - var days = this._days; - var months = this._months; - var data = this._data; - var seconds, minutes, hours, years, monthsFromDays; + function bubble() { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, + minutes, + hours, + years, + monthsFromDays; // if we have a mix of positive and negative values, bubble down first // check: https://github.com/moment/moment/issues/2166 - if (!((milliseconds >= 0 && days >= 0 && months >= 0) || - (milliseconds <= 0 && days <= 0 && months <= 0))) { + if ( + !( + (milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0) + ) + ) { milliseconds += absCeil(monthsToDays(months) + days) * 864e5; days = 0; months = 0; @@ -4217,14 +5246,14 @@ // examples of what that means. data.milliseconds = milliseconds % 1000; - seconds = absFloor(milliseconds / 1000); - data.seconds = seconds % 60; + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; - minutes = absFloor(seconds / 60); - data.minutes = minutes % 60; + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; - hours = absFloor(minutes / 60); - data.hours = hours % 24; + hours = absFloor(minutes / 60); + data.hours = hours % 24; days += absFloor(hours / 24); @@ -4237,31 +5266,31 @@ years = absFloor(months / 12); months %= 12; - data.days = days; + data.days = days; data.months = months; - data.years = years; + data.years = years; return this; } - function daysToMonths (days) { + function daysToMonths(days) { // 400 years have 146097 days (taking into account leap year rules) // 400 years have 12 months === 4800 - return days * 4800 / 146097; + return (days * 4800) / 146097; } - function monthsToDays (months) { + function monthsToDays(months) { // the reverse of daysToMonths - return months * 146097 / 4800; + return (months * 146097) / 4800; } - function as (units) { + function as(units) { if (!this.isValid()) { return NaN; } - var days; - var months; - var milliseconds = this._milliseconds; + var days, + months, + milliseconds = this._milliseconds; units = normalizeUnits(units); @@ -4269,28 +5298,38 @@ days = this._days + milliseconds / 864e5; months = this._months + daysToMonths(days); switch (units) { - case 'month': return months; - case 'quarter': return months / 3; - case 'year': return months / 12; + case 'month': + return months; + case 'quarter': + return months / 3; + case 'year': + return months / 12; } } else { // handle milliseconds separately because of floating point math errors (issue #1867) days = this._days + Math.round(monthsToDays(this._months)); switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 1440 + milliseconds / 6e4; - case 'second' : return days * 86400 + milliseconds / 1000; + case 'week': + return days / 7 + milliseconds / 6048e5; + case 'day': + return days + milliseconds / 864e5; + case 'hour': + return days * 24 + milliseconds / 36e5; + case 'minute': + return days * 1440 + milliseconds / 6e4; + case 'second': + return days * 86400 + milliseconds / 1000; // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 864e5) + milliseconds; - default: throw new Error('Unknown unit ' + units); + case 'millisecond': + return Math.floor(days * 864e5) + milliseconds; + default: + throw new Error('Unknown unit ' + units); } } } // TODO: Use this.as('ms')? - function valueOf$1 () { + function valueOf$1() { if (!this.isValid()) { return NaN; } @@ -4302,27 +5341,27 @@ ); } - function makeAs (alias) { + function makeAs(alias) { return function () { return this.as(alias); }; } - var asMilliseconds = makeAs('ms'); - var asSeconds = makeAs('s'); - var asMinutes = makeAs('m'); - var asHours = makeAs('h'); - var asDays = makeAs('d'); - var asWeeks = makeAs('w'); - var asMonths = makeAs('M'); - var asQuarters = makeAs('Q'); - var asYears = makeAs('y'); + var asMilliseconds = makeAs('ms'), + asSeconds = makeAs('s'), + asMinutes = makeAs('m'), + asHours = makeAs('h'), + asDays = makeAs('d'), + asWeeks = makeAs('w'), + asMonths = makeAs('M'), + asQuarters = makeAs('Q'), + asYears = makeAs('y'); - function clone$1 () { + function clone$1() { return createDuration(this); } - function get$2 (units) { + function get$2(units) { units = normalizeUnits(units); return this.isValid() ? this[units + 's']() : NaN; } @@ -4333,53 +5372,63 @@ }; } - var milliseconds = makeGetter('milliseconds'); - var seconds = makeGetter('seconds'); - var minutes = makeGetter('minutes'); - var hours = makeGetter('hours'); - var days = makeGetter('days'); - var months = makeGetter('months'); - var years = makeGetter('years'); + var milliseconds = makeGetter('milliseconds'), + seconds = makeGetter('seconds'), + minutes = makeGetter('minutes'), + hours = makeGetter('hours'), + days = makeGetter('days'), + months = makeGetter('months'), + years = makeGetter('years'); - function weeks () { + function weeks() { return absFloor(this.days() / 7); } - var round = Math.round; - var thresholds = { - ss: 44, // a few seconds to seconds - s : 45, // seconds to minute - m : 45, // minutes to hour - h : 22, // hours to day - d : 26, // days to month - M : 11 // months to year - }; + var round = Math.round, + thresholds = { + ss: 44, // a few seconds to seconds + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month/week + w: null, // weeks to month + M: 11, // months to year + }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } - function relativeTime$1 (posNegDuration, withoutSuffix, locale) { - var duration = createDuration(posNegDuration).abs(); - var seconds = round(duration.as('s')); - var minutes = round(duration.as('m')); - var hours = round(duration.as('h')); - var days = round(duration.as('d')); - var months = round(duration.as('M')); - var years = round(duration.as('y')); - - var a = seconds <= thresholds.ss && ['s', seconds] || - seconds < thresholds.s && ['ss', seconds] || - minutes <= 1 && ['m'] || - minutes < thresholds.m && ['mm', minutes] || - hours <= 1 && ['h'] || - hours < thresholds.h && ['hh', hours] || - days <= 1 && ['d'] || - days < thresholds.d && ['dd', days] || - months <= 1 && ['M'] || - months < thresholds.M && ['MM', months] || - years <= 1 && ['y'] || ['yy', years]; + function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) { + var duration = createDuration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + weeks = round(duration.as('w')), + years = round(duration.as('y')), + a = + (seconds <= thresholds.ss && ['s', seconds]) || + (seconds < thresholds.s && ['ss', seconds]) || + (minutes <= 1 && ['m']) || + (minutes < thresholds.m && ['mm', minutes]) || + (hours <= 1 && ['h']) || + (hours < thresholds.h && ['hh', hours]) || + (days <= 1 && ['d']) || + (days < thresholds.d && ['dd', days]); + + if (thresholds.w != null) { + a = + a || + (weeks <= 1 && ['w']) || + (weeks < thresholds.w && ['ww', weeks]); + } + a = a || + (months <= 1 && ['M']) || + (months < thresholds.M && ['MM', months]) || + (years <= 1 && ['y']) || ['yy', years]; a[2] = withoutSuffix; a[3] = +posNegDuration > 0; @@ -4388,11 +5437,11 @@ } // This function allows you to set the rounding function for relative time strings - function getSetRelativeTimeRounding (roundingFunction) { + function getSetRelativeTimeRounding(roundingFunction) { if (roundingFunction === undefined) { return round; } - if (typeof(roundingFunction) === 'function') { + if (typeof roundingFunction === 'function') { round = roundingFunction; return true; } @@ -4400,7 +5449,7 @@ } // This function allows you to set a threshold for relative time strings - function getSetRelativeTimeThreshold (threshold, limit) { + function getSetRelativeTimeThreshold(threshold, limit) { if (thresholds[threshold] === undefined) { return false; } @@ -4414,13 +5463,32 @@ return true; } - function humanize (withSuffix) { + function humanize(argWithSuffix, argThresholds) { if (!this.isValid()) { return this.localeData().invalidDate(); } - var locale = this.localeData(); - var output = relativeTime$1(this, !withSuffix, locale); + var withSuffix = false, + th = thresholds, + locale, + output; + + if (typeof argWithSuffix === 'object') { + argThresholds = argWithSuffix; + argWithSuffix = false; + } + if (typeof argWithSuffix === 'boolean') { + withSuffix = argWithSuffix; + } + if (typeof argThresholds === 'object') { + th = Object.assign({}, thresholds, argThresholds); + if (argThresholds.s != null && argThresholds.ss == null) { + th.ss = argThresholds.s - 1; + } + } + + locale = this.localeData(); + output = relativeTime$1(this, !withSuffix, th, locale); if (withSuffix) { output = locale.pastFuture(+this, output); @@ -4432,7 +5500,7 @@ var abs$1 = Math.abs; function sign(x) { - return ((x > 0) - (x < 0)) || +x; + return (x > 0) - (x < 0) || +x; } function toISOString$1() { @@ -4447,92 +5515,97 @@ return this.localeData().invalidDate(); } - var seconds = abs$1(this._milliseconds) / 1000; - var days = abs$1(this._days); - var months = abs$1(this._months); - var minutes, hours, years; + var seconds = abs$1(this._milliseconds) / 1000, + days = abs$1(this._days), + months = abs$1(this._months), + minutes, + hours, + years, + s, + total = this.asSeconds(), + totalSign, + ymSign, + daysSign, + hmsSign; + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } // 3600 seconds -> 60 minutes -> 1 hour - minutes = absFloor(seconds / 60); - hours = absFloor(minutes / 60); + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); seconds %= 60; minutes %= 60; // 12 months -> 1 year - years = absFloor(months / 12); + years = absFloor(months / 12); months %= 12; - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var Y = years; - var M = months; - var D = days; - var h = hours; - var m = minutes; - var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; - var total = this.asSeconds(); - - if (!total) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } + s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; - var totalSign = total < 0 ? '-' : ''; - var ymSign = sign(this._months) !== sign(total) ? '-' : ''; - var daysSign = sign(this._days) !== sign(total) ? '-' : ''; - var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; + totalSign = total < 0 ? '-' : ''; + ymSign = sign(this._months) !== sign(total) ? '-' : ''; + daysSign = sign(this._days) !== sign(total) ? '-' : ''; + hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; - return totalSign + 'P' + - (Y ? ymSign + Y + 'Y' : '') + - (M ? ymSign + M + 'M' : '') + - (D ? daysSign + D + 'D' : '') + - ((h || m || s) ? 'T' : '') + - (h ? hmsSign + h + 'H' : '') + - (m ? hmsSign + m + 'M' : '') + - (s ? hmsSign + s + 'S' : ''); + return ( + totalSign + + 'P' + + (years ? ymSign + years + 'Y' : '') + + (months ? ymSign + months + 'M' : '') + + (days ? daysSign + days + 'D' : '') + + (hours || minutes || seconds ? 'T' : '') + + (hours ? hmsSign + hours + 'H' : '') + + (minutes ? hmsSign + minutes + 'M' : '') + + (seconds ? hmsSign + s + 'S' : '') + ); } var proto$2 = Duration.prototype; - proto$2.isValid = isValid$1; - proto$2.abs = abs; - proto$2.add = add$1; - proto$2.subtract = subtract$1; - proto$2.as = as; + proto$2.isValid = isValid$1; + proto$2.abs = abs; + proto$2.add = add$1; + proto$2.subtract = subtract$1; + proto$2.as = as; proto$2.asMilliseconds = asMilliseconds; - proto$2.asSeconds = asSeconds; - proto$2.asMinutes = asMinutes; - proto$2.asHours = asHours; - proto$2.asDays = asDays; - proto$2.asWeeks = asWeeks; - proto$2.asMonths = asMonths; - proto$2.asQuarters = asQuarters; - proto$2.asYears = asYears; - proto$2.valueOf = valueOf$1; - proto$2._bubble = bubble; - proto$2.clone = clone$1; - proto$2.get = get$2; - proto$2.milliseconds = milliseconds; - proto$2.seconds = seconds; - proto$2.minutes = minutes; - proto$2.hours = hours; - proto$2.days = days; - proto$2.weeks = weeks; - proto$2.months = months; - proto$2.years = years; - proto$2.humanize = humanize; - proto$2.toISOString = toISOString$1; - proto$2.toString = toISOString$1; - proto$2.toJSON = toISOString$1; - proto$2.locale = locale; - proto$2.localeData = localeData; - - proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); + proto$2.asSeconds = asSeconds; + proto$2.asMinutes = asMinutes; + proto$2.asHours = asHours; + proto$2.asDays = asDays; + proto$2.asWeeks = asWeeks; + proto$2.asMonths = asMonths; + proto$2.asQuarters = asQuarters; + proto$2.asYears = asYears; + proto$2.valueOf = valueOf$1; + proto$2._bubble = bubble; + proto$2.clone = clone$1; + proto$2.get = get$2; + proto$2.milliseconds = milliseconds; + proto$2.seconds = seconds; + proto$2.minutes = minutes; + proto$2.hours = hours; + proto$2.days = days; + proto$2.weeks = weeks; + proto$2.months = months; + proto$2.years = years; + proto$2.humanize = humanize; + proto$2.toISOString = toISOString$1; + proto$2.toString = toISOString$1; + proto$2.toJSON = toISOString$1; + proto$2.locale = locale; + proto$2.localeData = localeData; + + proto$2.toIsoString = deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', + toISOString$1 + ); proto$2.lang = lang; - // Side effect imports - // FORMATTING addFormatToken('X', 0, 0, 'unix'); @@ -4543,58 +5616,57 @@ addRegexToken('x', matchSigned); addRegexToken('X', matchTimestamp); addParseToken('X', function (input, array, config) { - config._d = new Date(parseFloat(input, 10) * 1000); + config._d = new Date(parseFloat(input) * 1000); }); addParseToken('x', function (input, array, config) { config._d = new Date(toInt(input)); }); - // Side effect imports - + //! moment.js - hooks.version = '2.24.0'; + hooks.version = '2.25.0'; setHookCallback(createLocal); - hooks.fn = proto; - hooks.min = min; - hooks.max = max; - hooks.now = now; - hooks.utc = createUTC; - hooks.unix = createUnix; - hooks.months = listMonths; - hooks.isDate = isDate; - hooks.locale = getSetGlobalLocale; - hooks.invalid = createInvalid; - hooks.duration = createDuration; - hooks.isMoment = isMoment; - hooks.weekdays = listWeekdays; - hooks.parseZone = createInZone; - hooks.localeData = getLocale; - hooks.isDuration = isDuration; - hooks.monthsShort = listMonthsShort; - hooks.weekdaysMin = listWeekdaysMin; - hooks.defineLocale = defineLocale; - hooks.updateLocale = updateLocale; - hooks.locales = listLocales; - hooks.weekdaysShort = listWeekdaysShort; - hooks.normalizeUnits = normalizeUnits; - hooks.relativeTimeRounding = getSetRelativeTimeRounding; + hooks.fn = proto; + hooks.min = min; + hooks.max = max; + hooks.now = now; + hooks.utc = createUTC; + hooks.unix = createUnix; + hooks.months = listMonths; + hooks.isDate = isDate; + hooks.locale = getSetGlobalLocale; + hooks.invalid = createInvalid; + hooks.duration = createDuration; + hooks.isMoment = isMoment; + hooks.weekdays = listWeekdays; + hooks.parseZone = createInZone; + hooks.localeData = getLocale; + hooks.isDuration = isDuration; + hooks.monthsShort = listMonthsShort; + hooks.weekdaysMin = listWeekdaysMin; + hooks.defineLocale = defineLocale; + hooks.updateLocale = updateLocale; + hooks.locales = listLocales; + hooks.weekdaysShort = listWeekdaysShort; + hooks.normalizeUnits = normalizeUnits; + hooks.relativeTimeRounding = getSetRelativeTimeRounding; hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; - hooks.calendarFormat = getCalendarFormat; - hooks.prototype = proto; + hooks.calendarFormat = getCalendarFormat; + hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats hooks.HTML5_FMT = { - DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // - DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // - DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // - DATE: 'YYYY-MM-DD', // - TIME: 'HH:mm', // - TIME_SECONDS: 'HH:mm:ss', // - TIME_MS: 'HH:mm:ss.SSS', // - WEEK: 'GGGG-[W]WW', // - MONTH: 'YYYY-MM' // + DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // + DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // + DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // + DATE: 'YYYY-MM-DD', // + TIME: 'HH:mm', // + TIME_SECONDS: 'HH:mm:ss', // + TIME_MS: 'HH:mm:ss.SSS', // + WEEK: 'GGGG-[W]WW', // + MONTH: 'YYYY-MM', // }; return hooks;