]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Fix PL locale months parsing
authorJakub Szwacz <jakub@szwacz.com>
Sat, 18 Apr 2015 05:48:05 +0000 (07:48 +0200)
committerIskren Chernev <iskren.chernev@gmail.com>
Mon, 4 May 2015 04:21:11 +0000 (21:21 -0700)
src/locale/pl.js
src/test/locale/pl.js

index a50011f422ac8d5facfe0e9150e35f5d32f36b8b..e458ea5a25e24afe665fcdff0081c2c331613360 100644 (file)
@@ -29,7 +29,12 @@ function translate(number, withoutSuffix, key) {
 
 export default moment.defineLocale('pl', {
     months : function (momentToFormat, format) {
-        if (/D MMMM/.test(format)) {
+        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()] + ')';
+        } else if (/D MMMM/.test(format)) {
             return monthsSubjective[momentToFormat.month()];
         } else {
             return monthsNominative[momentToFormat.month()];
@@ -88,4 +93,3 @@ export default moment.defineLocale('pl', {
         doy : 4  // The week that contains Jan 4th is the first week of the year.
     }
 });
-
index b5fdbf184107cc9687336e273e877a21dd6d69f8..32469b93675ce2f749ba31d0eee5792e9f03efbe 100644 (file)
@@ -3,7 +3,7 @@ import {moment} from '../../moment';
 localeModule('pl');
 
 test('parse', function (assert) {
-    var tests = '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 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));
     }
@@ -11,12 +11,35 @@ test('parse', function (assert) {
         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);
     }
 });