From: YuviPanda Date: Tue, 18 Feb 2014 08:43:22 +0000 (+0530) Subject: Update moment.js to 2.5.1 X-Git-Tag: 1.31.0-rc.0~16889^2 X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22auteur_infos%22%2C%22id_auteur=%24connect_id_auteur%22%29%20.%20%22?a=commitdiff_plain;h=e5637c8a92144e6d23bdcf81e79bab8eafc7be43;p=lhc%2Fweb%2Fwiklou.git Update moment.js to 2.5.1 From https://github.com/moment/moment/commit/abc3a14b2ed7c9f4ff420395f3e1f198459528d8 Change-Id: I58f8eed42439c0feb0355094202723f1a293e6a8 --- diff --git a/resources/Resources.php b/resources/Resources.php index e98c7c777e..c8ce607027 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -673,6 +673,7 @@ return array( 'hi' => 'resources/moment/lang/hi.js', 'hr' => 'resources/moment/lang/hr.js', 'hu' => 'resources/moment/lang/hu.js', + 'hy-am' => 'resources/moment/lang/hy-am.js', 'id' => 'resources/moment/lang/id.js', 'is' => 'resources/moment/lang/is.js', 'it' => 'resources/moment/lang/it.js', @@ -681,6 +682,7 @@ return array( 'ko' => 'resources/moment/lang/ko.js', 'lt' => 'resources/moment/lang/lt.js', 'lv' => 'resources/moment/lang/lv.js', + 'mk' => 'resources/moment/lang/mk.js', 'ml' => 'resources/moment/lang/ml.js', 'mr' => 'resources/moment/lang/mr.js', 'ms-my' => 'resources/moment/lang/ms-my.js', @@ -692,11 +694,13 @@ return array( 'pt-br' => 'resources/moment/lang/pt-br.js', 'pt' => 'resources/moment/lang/pt.js', 'ro' => 'resources/moment/lang/ro.js', + 'rs' => 'resources/moment/lang/rs.js', 'ru' => 'resources/moment/lang/ru.js', 'sk' => 'resources/moment/lang/sk.js', 'sl' => 'resources/moment/lang/sl.js', 'sq' => 'resources/moment/lang/sq.js', 'sv' => 'resources/moment/lang/sv.js', + 'ta' => 'resources/moment/lang/ta.js', 'th' => 'resources/moment/lang/th.js', 'tl-ph' => 'resources/moment/lang/tl-ph.js', 'tr' => 'resources/moment/lang/tr.js', diff --git a/resources/moment/lang/ca.js b/resources/moment/lang/ca.js index f0cc02167b..cf471130d0 100644 --- a/resources/moment/lang/ca.js +++ b/resources/moment/lang/ca.js @@ -12,10 +12,10 @@ } }(function (moment) { return moment.lang('ca', { - months : "Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"), - monthsShort : "Gen._Febr._Mar._Abr._Mai._Jun._Jul._Ag._Set._Oct._Nov._Des.".split("_"), - weekdays : "Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"), - weekdaysShort : "Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"), + months : "gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"), + monthsShort : "gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"), + 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("_"), longDateFormat : { LT : "H:mm", diff --git a/resources/moment/lang/cy.js b/resources/moment/lang/cy.js index 452f1d0c68..b47d7c2751 100644 --- a/resources/moment/lang/cy.js +++ b/resources/moment/lang/cy.js @@ -35,7 +35,7 @@ }, relativeTime: { future: "mewn %s", - past: "%s yn ôl", + past: "%s yn àl", s: "ychydig eiliadau", m: "munud", mm: "%d munud", diff --git a/resources/moment/lang/et.js b/resources/moment/lang/et.js index 6dacb77c49..fb410ef448 100644 --- a/resources/moment/lang/et.js +++ b/resources/moment/lang/et.js @@ -1,6 +1,7 @@ // moment.js language configuration // language : estonian (et) // author : Henry Kehlmann : https://github.com/madhenry +// improvements : Illimar Tambek : https://github.com/ragulka (function (factory) { if (typeof define === 'function' && define.amd) { @@ -11,8 +12,23 @@ factory(window.moment); // Browser global } }(function (moment) { - function translateSeconds(number, withoutSuffix, key, isFuture) { - return (isFuture || withoutSuffix) ? 'paari sekundi' : 'paar sekundit'; + function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar 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]; + } + return isFuture ? format[key][0] : format[key][1]; } return moment.lang('et', { @@ -39,17 +55,17 @@ relativeTime : { future : "%s pärast", past : "%s tagasi", - s : translateSeconds, - m : "minut", - mm : "%d minutit", - h : "tund", - hh : "%d tundi", - d : "päev", - dd : "%d päeva", - M : "kuu", - MM : "%d kuud", - y : "aasta", - yy : "%d aastat" + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : '%d päeva', + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime }, ordinal : '%d.', week : { diff --git a/resources/moment/lang/hy-am.js b/resources/moment/lang/hy-am.js new file mode 100644 index 0000000000..951655bc21 --- /dev/null +++ b/resources/moment/lang/hy-am.js @@ -0,0 +1,113 @@ +// moment.js language configuration +// language : Armenian (hy-am) +// author : Armendarabyan : https://github.com/armendarabyan + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function monthsCaseReplace(m, format) { + var months = { + 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_Õ´Õ¡ÕµÕ«Õ½_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), + 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_Õ´Õ¡ÕµÕ«Õ½Õ«_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') + }, + + nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? + 'accusative' : + 'nominative'; + + return months[nounCase][m.month()]; + } + + function monthsShortCaseReplace(m, format) { + var monthsShort = 'Õ°Õ¶Õ¾_փտր_մրտ_ապր_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_օգս_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_'); + + return monthsShort[m.month()]; + } + + function weekdaysCaseReplace(m, format) { + var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_ուրբաթ_Õ·Õ¡Õ¢Õ¡Õ©'.split('_'); + + return weekdays[m.day()]; + } + + return moment.lang('hy-am', { + months : monthsCaseReplace, + monthsShort : monthsShortCaseReplace, + weekdays : weekdaysCaseReplace, + weekdaysShort : "կրկ_երկ_երք_չրք_Õ°Õ¶Õ£_ուրբ_Õ·Õ¢Õ©".split("_"), + weekdaysMin : "կրկ_երկ_երք_չրք_Õ°Õ¶Õ£_ուրբ_Õ·Õ¢Õ©".split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD.MM.YYYY", + LL : "D MMMM YYYY Õ©.", + LLL : "D MMMM YYYY Õ©., LT", + LLLL : "dddd, D MMMM YYYY Õ©., LT" + }, + calendar : { + sameDay: '[այսօր] LT', + nextDay: '[Õ¾Õ¡Õ²Õ¨] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ÕªÕ¡Õ´Õ¨] LT'; + }, + lastWeek: function () { + return '[անցած] 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 տարի" + }, + + meridiem : function (hour) { + if (hour < 4) { + return "գիշերվա"; + } else if (hour < 12) { + return "Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡"; + } else if (hour < 17) { + return "ցերեկվա"; + } else { + return "երեկոյան"; + } + }, + + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-Õ«Õ¶'; + } + return number + '-րդ'; + default: + return number; + } + }, + + week : { + 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. + } + }); +})); diff --git a/resources/moment/lang/it.js b/resources/moment/lang/it.js index 5b8a99fb14..84b7698be5 100644 --- a/resources/moment/lang/it.js +++ b/resources/moment/lang/it.js @@ -38,7 +38,7 @@ return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s; }, past : "%s fa", - s : "secondi", + s : "alcuni secondi", m : "un minuto", mm : "%d minuti", h : "un'ora", diff --git a/resources/moment/lang/ko.js b/resources/moment/lang/ko.js index 69a6e38124..3b469df33b 100644 --- a/resources/moment/lang/ko.js +++ b/resources/moment/lang/ko.js @@ -1,7 +1,10 @@ // moment.js language configuration // language : korean (ko) -// author : Kyungwook, Park : https://github.com/kyungw00k - +// +// authors +// +// - Kyungwook, Park : https://github.com/kyungw00k +// - Jeeeyul Lee (function (factory) { if (typeof define === 'function' && define.amd) { define(['moment'], factory); // AMD @@ -51,6 +54,10 @@ y : "일년", yy : "%d년" }, - ordinal : '%d일' + ordinal : '%d일', + meridiemParse : /(오전|오후)/, + isPM : function (token) { + return token === "오후"; + } }); })); diff --git a/resources/moment/lang/lb.js b/resources/moment/lang/lb.js index d58375748d..946ba13c2f 100644 --- a/resources/moment/lang/lb.js +++ b/resources/moment/lang/lb.js @@ -61,16 +61,16 @@ * @returns {boolean} */ function eifelerRegelAppliesToWeekday(weekday) { - weekday = parseInt(weekday); + weekday = parseInt(weekday, 10); switch (weekday) { - case 0: // Sonndeg - case 1: // Méindeg - case 3: // Mëttwoch - case 5: // Freideg - case 6: // Samschdeg - return true; - default: // 2 Dënschdeg, 4 Donneschdeg - return false; + case 0: // Sonndeg + case 1: // Méindeg + case 3: // Mëttwoch + case 5: // Freideg + case 6: // Samschdeg + return true; + default: // 2 Dënschdeg, 4 Donneschdeg + return false; } } @@ -82,7 +82,7 @@ * @returns {boolean} */ function eifelerRegelAppliesToNumber(number) { - number = parseInt(number); + number = parseInt(number, 10); if (isNaN(number)) { return false; } diff --git a/resources/moment/lang/mk.js b/resources/moment/lang/mk.js new file mode 100644 index 0000000000..5f272fa2db --- /dev/null +++ b/resources/moment/lang/mk.js @@ -0,0 +1,86 @@ +// moment.js language configuration +// language : macedonian (mk) +// author : Borislav Mickov : https://github.com/B0k0 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + return moment.lang('mk', { + months : "јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"), + monthsShort : "јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"), + weekdays : "недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"), + weekdaysShort : "нед_пон_вто_сре_чет_пет_саб".split("_"), + weekdaysMin : "нe_пo_вт_ср_че_пе_сa".split("_"), + longDateFormat : { + LT : "H:mm", + L : "D.MM.YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY LT", + LLLL : "dddd, D MMMM YYYY LT" + }, + calendar : { + sameDay : '[Денес во] LT', + nextDay : '[Утре во] LT', + nextWeek : 'dddd [во] LT', + lastDay : '[Вчера во] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Во изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Во изминатиот] 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 години" + }, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + 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. + } + }); +})); diff --git a/resources/moment/lang/pl.js b/resources/moment/lang/pl.js index 4ee33462c5..97770d2ad2 100644 --- a/resources/moment/lang/pl.js +++ b/resources/moment/lang/pl.js @@ -15,7 +15,7 @@ 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) !== 1); + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); } function translate(number, withoutSuffix, key) { diff --git a/resources/moment/lang/rs.js b/resources/moment/lang/rs.js new file mode 100644 index 0000000000..86275536e9 --- /dev/null +++ b/resources/moment/lang/rs.js @@ -0,0 +1,139 @@ +// moment.js language configuration +// language : serbian (rs) +// author : Limon Monte : https://github.com/limonte +// based on (bs) translation by Nedim Cholich + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + + function translate(number, withoutSuffix, key) { + var result = number + " "; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'meseca'; + } else { + result += 'meseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } + } + + return moment.lang('rs', { + 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("_"), + 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("_"), + longDateFormat : { + LT : "H:mm", + L : "DD. MM. YYYY", + LL : "D. MMMM YYYY", + LLL : "D. MMMM YYYY LT", + LLLL : "dddd, D. MMMM YYYY LT" + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + + nextWeek : function () { + switch (this.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'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + switch (this.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'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : "za %s", + past : "pre %s", + s : "par sekundi", + m : translate, + mm : translate, + h : translate, + hh : translate, + d : "dan", + dd : translate, + M : "mesec", + MM : translate, + y : "godinu", + yy : translate + }, + ordinal : '%d.', + week : { + 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. + } + }); +})); diff --git a/resources/moment/lang/ta.js b/resources/moment/lang/ta.js new file mode 100644 index 0000000000..cc742c989b --- /dev/null +++ b/resources/moment/lang/ta.js @@ -0,0 +1,112 @@ +// moment.js language configuration +// language : tamil (ta) +// author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['moment'], factory); // AMD + } else if (typeof exports === 'object') { + module.exports = factory(require('../moment')); // Node + } else { + factory(window.moment); // Browser global + } +}(function (moment) { + /*var symbolMap = { + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦' + }, + numberMap = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0' + }; */ + + return moment.lang('ta', { + months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), + monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), + weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split("_"), + weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split("_"), + weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split("_"), + longDateFormat : { + LT : "HH:mm", + L : "DD/MM/YYYY", + LL : "D MMMM YYYY", + LLL : "D MMMM YYYY, LT", + LLLL : "dddd, D MMMM YYYY, LT" + }, + calendar : { + sameDay : '[இன்று] LT', + nextDay : '[நாளை] LT', + nextWeek : 'dddd, LT', + lastDay : '[நேற்று] 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 ஆண்டுகள்" + }, +/* preparse: function (string) { + return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + },*/ + ordinal : function (number) { + return number + 'வது'; + }, + + +// refer http://ta.wikipedia.org/s/1er1 + + meridiem : function (hour, minute, isLower) { + if (hour >= 6 && hour <= 10) { + return " காலை"; + } else if (hour >= 10 && hour <= 14) { + return " நண்பகல்"; + } else if (hour >= 14 && hour <= 18) { + return " எற்பாடு"; + } else if (hour >= 18 && hour <= 20) { + return " மாலை"; + } else if (hour >= 20 && hour <= 24) { + return " இரவு"; + } else if (hour >= 0 && hour <= 6) { + return " வைகறை"; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); +})); diff --git a/resources/moment/lang/zh-cn.js b/resources/moment/lang/zh-cn.js index 80aefe0d2d..50a3ed93fb 100644 --- a/resources/moment/lang/zh-cn.js +++ b/resources/moment/lang/zh-cn.js @@ -20,11 +20,11 @@ weekdaysMin : "日_一_二_三_四_五_六".split("_"), longDateFormat : { LT : "Ah点mm", - L : "YYYYå¹´MMMD日", + L : "YYYY-MM-DD", LL : "YYYYå¹´MMMD日", LLL : "YYYYå¹´MMMD日LT", LLLL : "YYYYå¹´MMMD日ddddLT", - l : "YYYYå¹´MMMD日", + l : "YYYY-MM-DD", ll : "YYYYå¹´MMMD日", lll : "YYYYå¹´MMMD日LT", llll : "YYYYå¹´MMMD日ddddLT" @@ -67,7 +67,7 @@ prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; }, - sameElse : 'L' + sameElse : 'LL' }, ordinal : function (number, period) { switch (period) { diff --git a/resources/moment/moment.js b/resources/moment/moment.js index b1b0fbd06c..b79da7f260 100644 --- a/resources/moment/moment.js +++ b/resources/moment/moment.js @@ -1,5 +1,5 @@ //! moment.js -//! version : 2.4.0 (ff32605) +//! version : 2.5.1 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com @@ -11,7 +11,7 @@ ************************************/ var moment, - VERSION = "2.4.0", + VERSION = "2.5.1", global = this, round = Math.round, i, @@ -27,6 +27,19 @@ // internal storage for language config files languages = {}, + // moment internal properties + momentProperties = { + _isAMomentObject: null, + _i : null, + _f : null, + _l : null, + _strict : null, + _isUTC : null, + _offset : null, // optional. Combine with _isUTC + _pf : null, + _lang : null // optional + }, + // check for nodeJS hasModule = (typeof module !== 'undefined' && module.exports && typeof require !== 'undefined'), @@ -39,32 +52,40 @@ isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, // parsing token regexes parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 parseTokenDigits = /\d+/, // nonzero number of digits parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/i, // +00:00 -00:00 +0000 -0000 or Z + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z parseTokenT = /T/i, // T (ISO separator) parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - // preliminary iso 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) - isoRegex = /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d:?\d\d|Z)?)?$/, + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + + // 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) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', isoDates = [ - 'YYYY-MM-DD', - 'GGGG-[W]WW', - 'GGGG-[W]WW-E', - 'YYYY-DDD' + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] ], // iso time formats and regexes @@ -166,11 +187,15 @@ YYYYY : function () { return leftZeroFill(this.year(), 5); }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, gg : function () { return leftZeroFill(this.weekYear() % 100, 2); }, gggg : function () { - return this.weekYear(); + return leftZeroFill(this.weekYear(), 4); }, ggggg : function () { return leftZeroFill(this.weekYear(), 5); @@ -179,7 +204,7 @@ return leftZeroFill(this.isoWeekYear() % 100, 2); }, GGGG : function () { - return this.isoWeekYear(); + return leftZeroFill(this.isoWeekYear(), 4); }, GGGGG : function () { return leftZeroFill(this.isoWeekYear(), 5); @@ -236,7 +261,7 @@ a = -a; b = "-"; } - return b + leftZeroFill(toInt(10 * a / 6), 4); + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); }, z : function () { return this.zoneAbbr(); @@ -246,11 +271,31 @@ }, X : function () { return this.unix(); + }, + Q : function () { + return this.quarter(); } }, lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } + function padToken(func, count) { return function (a) { return leftZeroFill(func.call(this, a), count); @@ -342,6 +387,17 @@ return a; } + function cloneMoment(m) { + var result = {}, i; + for (i in m) { + if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) { + result[i] = m[i]; + } + } + + return result; + } + function absRound(number) { if (number < 0) { return Math.ceil(number); @@ -352,12 +408,14 @@ // left zero fill a number // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength) { - var output = number + ''; + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; + while (output.length < targetLength) { output = '0' + output; } - return output; + return (sign ? (forceSign ? '+' : '') : '-') + output; } // helper function for _.addTime and _.subtractTime @@ -428,8 +486,7 @@ function normalizeObjectUnits(inputObject) { var normalizedInput = {}, normalizedProp, - prop, - index; + prop; for (prop in inputObject) { if (inputObject.hasOwnProperty(prop)) { @@ -532,21 +589,6 @@ } } - function initializeParsingFlags(config) { - config._pf = { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; - } - function isValid(m) { if (m._isValid == null) { m._isValid = !isNaN(m._d.getTime()) && @@ -570,6 +612,12 @@ return key ? key.toLowerCase().replace('_', '-') : key; } + // Return a moment from input, that is local/utc/zone equivalent to model. + function makeAs(input, model) { + return model._isUTC ? moment(input).zone(model._offset || 0) : + moment(input).local(); + } + /************************************ Languages ************************************/ @@ -901,21 +949,32 @@ // get the regex to find the next token function getParseRegexForToken(token, config) { - var a; + var a, strict = config._strict; switch (token) { case 'DDDD': return parseTokenThreeDigits; case 'YYYY': case 'GGGG': case 'gggg': - return parseTokenFourDigits; + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': case 'YYYYY': case 'GGGGG': case 'ggggg': - return parseTokenSixDigits; + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; case 'S': + if (strict) { return parseTokenOneDigit; } + /* falls through */ case 'SS': + if (strict) { return parseTokenTwoDigits; } + /* falls through */ case 'SSS': + if (strict) { return parseTokenThreeDigits; } + /* falls through */ case 'DDD': return parseTokenOneToThreeDigits; case 'MMM': @@ -945,6 +1004,9 @@ case 'hh': case 'mm': case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; case 'M': case 'D': case 'd': @@ -953,9 +1015,7 @@ case 'm': case 's': case 'w': - case 'ww': case 'W': - case 'WW': case 'e': case 'E': return parseTokenOneOrTwoDigits; @@ -966,8 +1026,10 @@ } function timezoneMinutesFromString(string) { - var tzchunk = (parseTokenTimezone.exec(string) || [])[0], - parts = (tzchunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + string = string || ""; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], minutes = +(parts[1] * 60) + toInt(parts[2]); return parts[0] === '+' ? -minutes : minutes; @@ -1016,6 +1078,7 @@ break; case 'YYYY' : case 'YYYYY' : + case 'YYYYYY' : datePartArray[YEAR] = toInt(input); break; // AM / PM @@ -1100,8 +1163,9 @@ //compute day of the year from weeks and weekdays if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { fixYear = function (val) { + var int_val = parseInt(val, 10); return val ? - (val.length < 3 ? (parseInt(val, 10) > 68 ? '19' + val : '20' + val) : val) : + (val.length < 3 ? (int_val > 68 ? 1900 + int_val : 2000 + int_val) : int_val) : (config._a[YEAR] == null ? moment().weekYear() : config._a[YEAR]); }; @@ -1213,7 +1277,7 @@ for (i = 0; i < tokens.length; i++) { token = tokens[i]; - parsedInput = (getParseRegexForToken(token, config).exec(string) || [])[0]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; if (parsedInput) { skipped = string.substr(0, string.indexOf(parsedInput)); if (skipped.length > 0) { @@ -1285,7 +1349,7 @@ for (i = 0; i < config._f.length; i++) { currentScore = 0; tempConfig = extend({}, config); - initializeParsingFlags(tempConfig); + tempConfig._pf = defaultParsingFlags(); tempConfig._f = config._f[i]; makeDateFromStringAndFormat(tempConfig); @@ -1312,26 +1376,26 @@ // date from iso format function makeDateFromString(config) { - var i, + var i, l, string = config._i, match = isoRegex.exec(string); if (match) { config._pf.iso = true; - for (i = 4; i > 0; i--) { - if (match[i]) { + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { // match[5] should be "T" or undefined - config._f = isoDates[i - 1] + (match[6] || " "); + config._f = isoDates[i][0] + (match[6] || " "); break; } } - for (i = 0; i < 4; i++) { + for (i = 0, l = isoTimes.length; i < l; i++) { if (isoTimes[i][1].exec(string)) { config._f += isoTimes[i][0]; break; } } - if (parseTokenTimezone.exec(string)) { + if (string.match(parseTokenTimezone)) { config._f += "Z"; } makeDateFromStringAndFormat(config); @@ -1466,11 +1530,10 @@ //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = new Date(Date.UTC(year, 0)).getUTCDay(), - daysToAdd, dayOfYear; + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0); + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; return { @@ -1487,10 +1550,6 @@ var input = config._i, format = config._f; - if (typeof config._pf === 'undefined') { - initializeParsingFlags(config); - } - if (input === null) { return moment.invalid({nullInput: true}); } @@ -1500,7 +1559,7 @@ } if (moment.isMoment(input)) { - config = extend({}, input); + config = cloneMoment(input); config._d = new Date(+input._d); } else if (format) { @@ -1517,37 +1576,47 @@ } moment = function (input, format, lang, strict) { + var c; + if (typeof(lang) === "boolean") { strict = lang; lang = undefined; } - return makeMoment({ - _i : input, - _f : format, - _l : lang, - _strict : strict, - _isUTC : false - }); + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = lang; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); + + return makeMoment(c); }; // creating with utc moment.utc = function (input, format, lang, strict) { - var m; + var c; if (typeof(lang) === "boolean") { strict = lang; lang = undefined; } - m = makeMoment({ - _useUTC : true, - _isUTC : true, - _l : lang, - _i : input, - _f : format, - _strict : strict - }).utc(); - - return m; + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = lang; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + + return makeMoment(c).utc(); }; // creating with unix timestamp (in seconds) @@ -1562,9 +1631,7 @@ match = null, sign, ret, - parseIso, - timeEmpty, - dateTimeEmpty; + parseIso; if (moment.isDuration(input)) { duration = { @@ -1659,7 +1726,8 @@ // compare moment object moment.isMoment = function (obj) { - return obj instanceof Moment; + return obj instanceof Moment || + (obj != null && obj.hasOwnProperty('_isAMomentObject')); }; // for typechecking Duration objects @@ -1719,7 +1787,12 @@ }, toISOString : function () { - return formatMoment(moment(this).utc(), 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } }, toArray : function () { @@ -1796,7 +1869,7 @@ }, diff : function (input, units, asFloat) { - var that = this._isUTC ? moment(input).zone(this._offset || 0) : moment(input).local(), + var that = makeAs(input, this), zoneDiff = (this.zone() - that.zone()) * 6e4, diff, output; @@ -1838,13 +1911,16 @@ }, calendar : function () { - var diff = this.diff(moment().zone(this.zone()).startOf('day'), 'days', true), + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're zone'd or not. + var sod = makeAs(moment(), this).startOf('day'), + diff = this.diff(sod, 'days', true), format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; return this.format(this.lang().calendar(format, this)); }, @@ -1944,8 +2020,8 @@ }, isSame: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) === +moment(input).startOf(units); + units = units || 'ms'; + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); }, min: function (other) { @@ -1987,7 +2063,9 @@ }, parseZone : function () { - if (typeof this._i === 'string') { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { this.zone(this._i); } return this; @@ -2013,6 +2091,10 @@ return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); }, + quarter : function () { + return Math.ceil((this.month() + 1.0) / 3.0); + }, + weekYear : function (input) { var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year; return input == null ? year : this.add("y", (input - year)); @@ -2293,6 +2375,7 @@ } return local_moment.apply(null, arguments); }; + extend(global.moment, local_moment); } else { global['moment'] = moment; } @@ -2304,7 +2387,7 @@ makeGlobal(true); } else if (typeof define === "function" && define.amd) { define("moment", function (require, exports, module) { - if (module.config().noGlobal !== true) { + if (module.config && module.config() && module.config().noGlobal !== true) { // If user provided noGlobal, he is aware of global makeGlobal(module.config().noGlobal === undefined); }