]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Add monthStrictParsing to all locales with dots in the names
authorIskren Chernev <iskren.chernev@gmail.com>
Thu, 31 Mar 2016 10:03:31 +0000 (03:03 -0700)
committerIskren Chernev <iskren.chernev@gmail.com>
Sat, 16 Apr 2016 05:45:16 +0000 (22:45 -0700)
32 files changed:
src/lib/units/month.js
src/lib/utils/index-of.js [new file with mode: 0644]
src/locale/bs.js
src/locale/ca.js
src/locale/de-at.js
src/locale/de.js
src/locale/es.js
src/locale/eu.js
src/locale/fr-ca.js
src/locale/fr-ch.js
src/locale/fr.js
src/locale/fy.js
src/locale/gl.js
src/locale/hi.js
src/locale/hr.js
src/locale/lb.js
src/locale/me.js
src/locale/ml.js
src/locale/mr.js
src/locale/nb.js
src/locale/ne.js
src/locale/nl.js
src/locale/ro.js
src/locale/sl.js
src/locale/sr-cyrl.js
src/locale/sr.js
src/locale/te.js
src/locale/th.js
src/locale/tlh.js
src/locale/vi.js
src/test/helpers/common-locale.js
src/test/locale/bs.js

index fc5bfe620e8a6620772e381148ad522c07b1d184..7a2e7ecff4c21034d012f7df29df7fe481f33dec 100644 (file)
@@ -8,6 +8,7 @@ import { hooks } from '../utils/hooks';
 import { MONTH } from './constants';
 import toInt from '../utils/to-int';
 import isArray from '../utils/is-array';
+import indexOf from '../utils/index-of';
 import { createUTC } from '../create/utc';
 import getParsingFlags from '../create/parsing-flags';
 
@@ -73,9 +74,54 @@ export function localeMonthsShort (m, format) {
         this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
 }
 
+function handleStrictParse(monthName, format, strict) {
+    var i, ii, mom, llc = monthName.toLocaleLowerCase();
+    if (!this._monthsParse) {
+        // this is not used
+        this._monthsParse = [];
+        this._longMonthsParse = [];
+        this._shortMonthsParse = [];
+        for (i = 0; i < 12; ++i) {
+            mom = createUTC([2000, i]);
+            this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
+            this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
+        }
+    }
+
+    if (strict) {
+        if (format === 'MMM') {
+            ii = indexOf.call(this._shortMonthsParse, llc);
+            return ii !== -1 ? ii : null;
+        } else {
+            ii = indexOf.call(this._longMonthsParse, llc);
+            return ii !== -1 ? ii : null;
+        }
+    } else {
+        if (format === 'MMM') {
+            ii = indexOf.call(this._shortMonthsParse, llc);
+            if (ii !== -1) {
+                return ii;
+            }
+            ii = indexOf.call(this._longMonthsParse, llc);
+            return ii !== -1 ? ii : null;
+        } else {
+            ii = indexOf.call(this._longMonthsParse, llc);
+            if (ii !== -1) {
+                return ii;
+            }
+            ii = indexOf.call(this._shortMonthsParse, llc);
+            return ii !== -1 ? ii : null;
+        }
+    }
+}
+
 export function localeMonthsParse (monthName, format, strict) {
     var i, mom, regex;
 
+    if (this._monthsParseExact) {
+        return handleStrictParse.call(this, monthName, format, strict);
+    }
+
     if (!this._monthsParse) {
         this._monthsParse = [];
         this._longMonthsParse = [];
@@ -207,6 +253,6 @@ function computeMonthsParse () {
 
     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');
 }
diff --git a/src/lib/utils/index-of.js b/src/lib/utils/index-of.js
new file mode 100644 (file)
index 0000000..92298cf
--- /dev/null
@@ -0,0 +1,18 @@
+var indexOf;
+
+if (Array.prototype.indexOf) {
+    indexOf = Array.prototype.indexOf;
+} else {
+    indexOf = function (o) {
+        // I know
+        var i;
+        for (i = 0; i < this.length; ++i) {
+            if (this[i] === o) {
+                return i;
+            }
+        }
+        return -1;
+    };
+}
+
+export { indexOf as default };
index 8ac94f081ab180c492ea14272670ed0ae68f2308..0b760751e4d034f3bd44b01589a004016de0aaf2 100644 (file)
@@ -61,6 +61,7 @@ function translate(number, withoutSuffix, key) {
 export default 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('_'),
+    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('_'),
index 01204aef75fb86bc342dadbeab47a78addc3c837..075b09ee015d0b431e8472cf46fa670ae3fff3e6 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default moment.defineLocale('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('_'),
+    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('_'),
index 04f213d1afe1752424a540753e5df0eccee6a37a..92859de11c6c81176985068abe8d67aa24df23d1 100644 (file)
@@ -24,6 +24,7 @@ function processRelativeTime(number, withoutSuffix, key, isFuture) {
 export default moment.defineLocale('de-at', {
     months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
     monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._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('_'),
index e16d3fe16a8cc49f35590a5a58900332931a6657..ab3402d4286b01e0367c4c09516e693d55c8f4cc 100644 (file)
@@ -23,6 +23,7 @@ function processRelativeTime(number, withoutSuffix, key, isFuture) {
 export default moment.defineLocale('de', {
     months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
     monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._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('_'),
index 47d5defba0044294cf7effefebbc72aed1f6e956..31b3943991d5988721fb025d2ed31c2f0c66ca51 100644 (file)
@@ -16,6 +16,7 @@ export default moment.defineLocale('es', {
             return monthsShortDot[m.month()];
         }
     },
+    monthsParseExact : true,
     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('_'),
index 08a006c89983fe01bc2b3dd32a5495170ebc7b94..d54748be3a40cc63564600f3d1d37fc8bbfe4679 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default 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('_'),
index 9294b6662db2722090f3b89331f5dad26004e533..5598aabb2281f454695212001239a3b233814ea5 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default 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('_'),
index 3534365e3c0f60072899eb27232f2863ea103d88..812bf14fdbc070276f0292ed7afa8c67ca119ad4 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default 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('_'),
index deb2f63144bda22b806057aa981b0e9d5b18a14f..eae2dfbedead631e2f930888067d7af473952102 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default 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('_'),
index 7c8af61798551ca267427aeae6a795b8aba51196..1bd6564bf58d9f4d7cf687564fe26a922ca5a701 100644 (file)
@@ -16,6 +16,7 @@ export default moment.defineLocale('fy', {
             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('_'),
index 02c652c0d589c14dc9ae0f09fe6d16739073e535..d0288cb1d1cfa43b9c39ab8aa9aa0c5d8c3a80e9 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default 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('_'),
+    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('_'),
index 07eae1d4aa7996390bae53b7dc2200590f459add..fdbf292d6913fe868fa11e37deb76d4b1924e0d3 100644 (file)
@@ -32,6 +32,7 @@ numberMap = {
 export default moment.defineLocale('hi', {
     months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
     monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
+    monthsParseExact: true,
     weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
     weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
     weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
index dc7928750fe6a3f387aeae9577cfba0065a51db4..b5426f1f70a4e92dff48e2d521f417d6af5d1a1c 100644 (file)
@@ -63,6 +63,7 @@ export default moment.defineLocale('hr', {
         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('_'),
index 3f20eeaef9648e0eab68c8f6b0ced01b94b6f186..fcb5c1f8bcb5a4db1f173fc9cf88ca15b36c5537 100644 (file)
@@ -72,6 +72,7 @@ function eifelerRegelAppliesToNumber(number) {
 export default 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('_'),
     weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
     weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
index a50965858938ff6f902cd43991a408e6e2f95331..dd6bf3100d3d85a43ea68b638a0e7bbc3545f78d 100644 (file)
@@ -30,6 +30,7 @@ var translator = {
 export default moment.defineLocale('me', {
     months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
     monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
+    monthsParseExact : true,
     weekdays: ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
     weekdaysShort: ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'],
     weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
index 038725328c740db558480a2dd837696435e054af..17db12068f5a21cbf06b690537066ed0ba3e1ca2 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default moment.defineLocale('ml', {
     months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
     monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
+    monthsParseExact : true,
     weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
     weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
     weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
index dda9aaa74728dfc64dfb5d842fc9c1293df79e5a..8701c1db2c4d69dc3b31f64691b91cd2c300ce90 100644 (file)
@@ -69,6 +69,7 @@ function relativeTimeMr(number, withoutSuffix, string, isFuture)
 export default moment.defineLocale('mr', {
     months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
     monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
+    monthsParseExact : true,
     weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
     weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
     weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
index 8595f01661d163610acc2b706961e849dba2105e..60b2f4d637f57230f884a7663c3baeedb094538f 100644 (file)
@@ -8,6 +8,7 @@ import moment from '../moment';
 export default 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('_'),
index e2bc4555f9dafe83bd025380497ef6e88cfee015..07132bd5c1d8980bd88def9e2d2d610d8cfa92f6 100644 (file)
@@ -32,6 +32,7 @@ numberMap = {
 export default moment.defineLocale('ne', {
     months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
     monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
+    monthsParseExact : true,
     weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
     weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
     weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
index 6669531d6498ebfd57ca4c238ec9b2fe6933cd0a..299968944050033c166e4026f461c84d62b88b13 100644 (file)
@@ -16,6 +16,7 @@ export default moment.defineLocale('nl', {
             return monthsShortWithDots[m.month()];
         }
     },
+    monthsParseExact : true,
     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('_'),
index 56413d878efe70859533ba1bbe6ff67b127105fe..1f26ac90cb36449e85f2221d9de8369ae99c163c 100644 (file)
@@ -23,6 +23,7 @@ function relativeTimeWithPlural(number, withoutSuffix, key) {
 export default 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('_'),
+    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('_'),
index 0cb6701eabc156b245a7abd0d09827d9ff0e5c92..951e3e6d82ae88a5615c4880341a109e8ef98d96 100644 (file)
@@ -78,6 +78,7 @@ function processRelativeTime(number, withoutSuffix, key, isFuture) {
 export default 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('_'),
+    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('_'),
index 2ce8eeae22a61b70ff00aeb3b3fc88f4af38cc28..92bad84d2c65118c976464a7796c8a1b9b5164d6 100644 (file)
@@ -30,6 +30,7 @@ var translator = {
 export default moment.defineLocale('sr-cyrl', {
     months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
     monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
+    monthsParseExact: true,
     weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
     weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
     weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
index 233e4677a52eafdc16133dd84e4ab61896ea1c64..f338c762362acff61e999aa60e051dd633f6a846 100644 (file)
@@ -30,6 +30,7 @@ var translator = {
 export default moment.defineLocale('sr', {
     months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
     monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
+    monthsParseExact: true,
     weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'],
     weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'],
     weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
index 37daa5b72fcc1b5ed4dbb7b187c6fb3a5b77df37..423c592c072a4d2981b567d6b4b48f4fe8761e57 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default moment.defineLocale('te', {
     months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
     monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
+    monthsParseExact : true,
     weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
     weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
     weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
index 265680c955e70e05b8023cc9d72b7979a4795457..9437da8076fb9892ee98f189f9d76f00bb3f66bf 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default moment.defineLocale('th', {
     months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
     monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'),
+    monthsParseExact: true,
     weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
     weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
     weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
index e8ffa2a0b45096969962b7f2b051b9e9e037bdf0..1e75f774614b326b930b5150ea5301ad1929b1d3 100644 (file)
@@ -66,6 +66,7 @@ function numberAsNoun(number) {
 export default 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('_'),
index 3888345cc2d4514ff77af8610cedc36ceb727c2e..116aca48efb6797fe664e34597ab6e689a2f05af 100644 (file)
@@ -7,6 +7,7 @@ import moment from '../moment';
 export default 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('_'),
index 9379a3d783571f1103f78e9649e44446ff51068d..5114fb72a3ec7661fc1b8f58d7112801d11a93d5 100644 (file)
@@ -1,4 +1,4 @@
-import { test } from '../qunit';
+import { test, expect } from '../qunit';
 import each from './each';
 import objectKeys from './object-keys';
 import moment from '../../moment';
@@ -68,5 +68,39 @@ export function defineCommonLocaleTests(locale, options) {
             });
         });
     });
+
+    test('month parsing correctness', function (assert) {
+        var i, m;
+
+        if (locale === 'tr') {
+            // I can't fix it :(
+            expect(0);
+            return;
+        }
+        function tester(format) {
+            var r;
+            r = moment(m.format(format), format);
+            assert.equal(r.month(), m.month(), 'month ' + i + ' fmt ' + format);
+            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');
+            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.');
+        }
+    });
 }
 
index e4d9c5973004205316ce65f8351791762d361e7b..954a4692ce25eb9332cbb563112383e586495b39 100644 (file)
@@ -5,7 +5,7 @@ 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;
     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) + ' inp ' + mmm);
     }
     for (i = 0; i < 12; i++) {
         tests[i] = tests[i].split(' ');