]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Move logic to overflow section
authorKunal Marwaha <marwahaha@berkeley.edu>
Sun, 26 Feb 2017 04:04:49 +0000 (23:04 -0500)
committerIskren Chernev <iskren.chernev@gmail.com>
Thu, 2 Mar 2017 10:00:08 +0000 (12:00 +0200)
src/lib/create/from-array.js
src/lib/parse/regex.js
src/lib/units/day-of-year.js
src/test/moment/days_in_year.js [new file with mode: 0644]
src/test/moment/regex.js [deleted file]

index 3ae35a0bdd2eabe1ea0e555642f1741d868d5304..0cdf474cf3ae5359cb79877e8fca1239c37e6ace 100644 (file)
@@ -35,10 +35,10 @@ export function configFromArray (config) {
     }
 
     //if the day of the year is set, figure out what it is
-    if (config._dayOfYear) {
+    if (config._dayOfYear != null) {
         yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
 
-        if (config._dayOfYear > daysInYear(yearToUse)) {
+        if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
             getParsingFlags(config)._overflowDayOfYear = true;
         }
 
index 2d62cf9cb1e5d82196fda574fa2cee7d7699d0f2..b1dc7529e5c7e2e182191f382217c62da6b16aa8 100644 (file)
@@ -10,9 +10,6 @@ export var match1to3      = /\d{1,3}/;       //       0 - 999
 export var match1to4      = /\d{1,4}/;       //       0 - 9999
 export var match1to6      = /[+-]?\d{1,6}/;  // -999999 - 999999
 
-export var match1to3nonzero = /[1-9]\d{0,2}|\d[1-9]\d{0,1}|\d{0,2}[1-9]/;  // 1 - 999
-export var match3nonzero  = /[1-9]\d\d|\d[1-9]\d|\d\d[1-9]/;               // 001 - 999
-
 export var matchUnsigned  = /\d+/;           //       0 - inf
 export var matchSigned    = /[+-]?\d+/;      //    -inf - inf
 
index 3f0aa0ab6361ca8608a93544a088bbb3495e0aef..6fe931c1e46fbe36794d9b30d0f55c3ebac521bd 100644 (file)
@@ -1,7 +1,7 @@
 import { addFormatToken } from '../format/format';
 import { addUnitAlias } from './aliases';
 import { addUnitPriority } from './priorities';
-import { addRegexToken, match3nonzero, match1to3nonzero } from '../parse/regex';
+import { addRegexToken, match3, match1to3 } from '../parse/regex';
 import { daysInYear } from './year';
 import { createUTCDate } from '../create/date-from-array';
 import { addParseToken } from '../parse/token';
@@ -20,8 +20,8 @@ addUnitPriority('dayOfYear', 4);
 
 // PARSING
 
-addRegexToken('DDD',  match1to3nonzero);
-addRegexToken('DDDD', match3nonzero);
+addRegexToken('DDD',  match1to3);
+addRegexToken('DDDD', match3);
 addParseToken(['DDD', 'DDDD'], function (input, array, config) {
     config._dayOfYear = toInt(input);
 });
diff --git a/src/test/moment/days_in_year.js b/src/test/moment/days_in_year.js
new file mode 100644 (file)
index 0000000..b2ef5d1
--- /dev/null
@@ -0,0 +1,11 @@
+import { module, test } from '../qunit';
+import moment from '../../moment';
+
+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);
+});
diff --git a/src/test/moment/regex.js b/src/test/moment/regex.js
deleted file mode 100644 (file)
index 04c8320..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-import { module, test } from '../qunit';
-import moment from '../../moment';
-import {match1to3nonzero} from '../../lib/parse/regex';
-
-module('regex');
-
-test('match1to3nonzero works properly', function (assert) {
-    assert.equal('0'.match(match1to3nonzero), null);
-    assert.equal('00'.match(match1to3nonzero), null);
-    assert.equal('000'.match(match1to3nonzero), null);
-
-    for (var i = 1; i < 1000; i++) {
-        assert.notEqual(String(i).match(match1to3nonzero), null);
-        if (i < 100) {
-            assert.notEqual('0' + String(i).match(match1to3nonzero), null);
-            if (i < 10) {
-                assert.notEqual('00' + String(i).match(match1to3nonzero), null);
-            }
-        }
-    }
-});
-
-// https://github.com/moment/moment/issues/3717
-test('YYYYDDD should not parse DDD=000 (strict mode)', function (assert) {
-    assert.equal(moment(7000000, moment.ISO_8601, true).isValid(), false);
-    assert.equal(moment('7000000', moment.ISO_8601, true).isValid(), false);
-});
-
-// https://github.com/moment/moment/issues/3717
-test('YYYYDDD will parse DDD=000 (non-strict mode)', function (assert) {
-    assert.equal(moment(7000000, moment.ISO_8601, false).isValid(), true);
-    assert.equal(moment(7000000, moment.ISO_8601, false)._pf.unusedTokens.length, 1);
-    assert.equal(moment(7000000, moment.ISO_8601, false)._pf.unusedTokens[0], 'DDD');
-});