import { daysInMonth } from '../units/month';
import { YEAR, MONTH, DATE, HOUR, MINUTE, SECOND, MILLISECOND } from '../units/constants';
+import getParsingFlags from '../create/parsing-flags';
export default function checkOverflow (m) {
var overflow;
var a = m._a;
- if (a && m._pf.overflow === -2) {
+ 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[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
-1;
- if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
+ if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
overflow = DATE;
}
- m._pf.overflow = overflow;
+ getParsingFlags(m).overflow = overflow;
}
return m;
-import defaultParsingFlags from './default-parsing-flags';
import isArray from '../utils/is-array';
import isDate from '../utils/is-date';
import map from '../utils/map';
c._i = input;
c._f = format;
c._strict = strict;
- c._pf = defaultParsingFlags();
return createFromConfig(c);
}
import { YEAR, MONTH, DATE, HOUR, MINUTE, SECOND, MILLISECOND } from '../units/constants';
import { createLocal } from './local';
import defaults from '../utils/defaults';
+import getParsingFlags from './parsing-flags';
function currentDateArray(config) {
var now = new Date();
yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
if (config._dayOfYear > daysInYear(yearToUse)) {
- config._pf._overflowDayOfYear = true;
+ getParsingFlags(config)._overflowDayOfYear = true;
}
date = createUTCDate(yearToUse, 0, config._dayOfYear);
import { copyConfig } from '../moment/constructor';
import { configFromStringAndFormat } from './from-string-and-format';
-import defaultParsingFlags from './default-parsing-flags';
+import getParsingFlags from './parsing-flags';
import { isValid } from './valid';
import extend from '../utils/extend';
currentScore;
if (config._f.length === 0) {
- config._pf.invalidFormat = true;
+ getParsingFlags(config).invalidFormat = true;
config._d = new Date(NaN);
return;
}
if (config._useUTC != null) {
tempConfig._useUTC = config._useUTC;
}
- tempConfig._pf = defaultParsingFlags();
tempConfig._f = config._f[i];
configFromStringAndFormat(tempConfig);
}
// if there is any input that was not parsed add a penalty for that format
- currentScore += tempConfig._pf.charsLeftOver;
+ currentScore += getParsingFlags(tempConfig).charsLeftOver;
//or tokens
- currentScore += tempConfig._pf.unusedTokens.length * 10;
+ currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
- tempConfig._pf.score = currentScore;
+ getParsingFlags(tempConfig).score = currentScore;
if (scoreToBeat == null || currentScore < scoreToBeat) {
scoreToBeat = currentScore;
import checkOverflow from './check-overflow';
import { HOUR } from '../units/constants';
import { hooks } from '../utils/hooks';
+import getParsingFlags from './parsing-flags';
// constant that refers to the ISO standard
hooks.ISO_8601 = function () {};
}
config._a = [];
- config._pf.empty = true;
+ getParsingFlags(config).empty = true;
// This array is used to make a Date, either with `new Date` or `Date.UTC`
var string = '' + config._i,
if (parsedInput) {
skipped = string.substr(0, string.indexOf(parsedInput));
if (skipped.length > 0) {
- config._pf.unusedInput.push(skipped);
+ getParsingFlags(config).unusedInput.push(skipped);
}
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) {
- config._pf.empty = false;
+ getParsingFlags(config).empty = false;
}
else {
- config._pf.unusedTokens.push(token);
+ getParsingFlags(config).unusedTokens.push(token);
}
addTimeToArrayFromToken(token, parsedInput, config);
}
else if (config._strict && !parsedInput) {
- config._pf.unusedTokens.push(token);
+ getParsingFlags(config).unusedTokens.push(token);
}
}
// add remaining unparsed input length to the string
- config._pf.charsLeftOver = stringLength - totalParsedInputLength;
+ getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
if (string.length > 0) {
- config._pf.unusedInput.push(string);
+ getParsingFlags(config).unusedInput.push(string);
}
// clear _12h flag if hour is <= 12
- if (config._pf.bigHour === true && config._a[HOUR] <= 12) {
- config._pf.bigHour = undefined;
+ if (getParsingFlags(config).bigHour === true && config._a[HOUR] <= 12) {
+ getParsingFlags(config).bigHour = undefined;
}
// handle meridiem
config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
import { configFromStringAndFormat } from './from-string-and-format';
import { hooks } from '../utils/hooks';
import { deprecate } from '../utils/deprecate';
+import getParsingFlags from './parsing-flags';
// 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)
match = isoRegex.exec(string);
if (match) {
- config._pf.iso = true;
+ getParsingFlags(config).iso = true;
for (i = 0, l = isoDates.length; i < l; i++) {
if (isoDates[i][1].exec(string)) {
// match[5] should be 'T' or undefined
-export default function defaultParsingFlags() {
+function defaultParsingFlags() {
// We need to deep clone this object.
return {
empty : false,
iso : false
};
}
+
+export default function getParsingFlags(m) {
+ if (m._pf == null) {
+ m._pf = defaultParsingFlags();
+ }
+ return m._pf;
+}
import extend from '../utils/extend';
import { createUTC } from './utc';
+import getParsingFlags from '../create/parsing-flags';
export function isValid(m) {
if (m._isValid == null) {
+ var flags = getParsingFlags(m);
m._isValid = !isNaN(m._d.getTime()) &&
- m._pf.overflow < 0 &&
- !m._pf.empty &&
- !m._pf.invalidMonth &&
- !m._pf.nullInput &&
- !m._pf.invalidFormat &&
- !m._pf.userInvalidated;
+ flags.overflow < 0 &&
+ !flags.empty &&
+ !flags.invalidMonth &&
+ !flags.nullInput &&
+ !flags.invalidFormat &&
+ !flags.userInvalidated;
if (m._strict) {
m._isValid = m._isValid &&
- m._pf.charsLeftOver === 0 &&
- m._pf.unusedTokens.length === 0 &&
- m._pf.bigHour === undefined;
+ flags.charsLeftOver === 0 &&
+ flags.unusedTokens.length === 0 &&
+ flags.bigHour === undefined;
}
}
return m._isValid;
export function createInvalid (flags) {
var m = createUTC(NaN);
if (flags != null) {
- extend(m._pf, flags);
+ extend(getParsingFlags(m), flags);
}
else {
- m._pf.userInvalidated = true;
+ getParsingFlags(m).userInvalidated = true;
}
return m;
import { hooks } from '../utils/hooks';
import hasOwnProp from '../utils/has-own-prop';
+import getParsingFlags from '../create/parsing-flags';
// Plugins that add properties should also add the key here (null value),
// so we can properly clone ourselves.
to._offset = from._offset;
}
if (typeof from._pf !== 'undefined') {
- to._pf = from._pf;
+ to._pf = getParsingFlags(from);
}
if (typeof from._locale !== 'undefined') {
to._locale = from._locale;
import { isValid as _isValid } from '../create/valid';
import extend from '../utils/extend';
+import getParsingFlags from '../create/parsing-flags';
export function isValid () {
return _isValid(this);
}
export function parsingFlags () {
- return extend({}, this._pf);
+ return extend({}, getParsingFlags(this));
}
export function invalidAt () {
- return this._pf.overflow;
+ return getParsingFlags(this).overflow;
}
import { addWeekParseToken } from '../parse/token';
import toInt from '../utils/to-int';
import { createLocal } from '../create/local';
+import getParsingFlags from '../create/parsing-flags';
// FORMATTING
if (weekday != null) {
week.d = weekday;
} else {
- config._pf.invalidWeekday = input;
+ getParsingFlags(config).invalidWeekday = input;
}
});
import { addParseToken } from '../parse/token';
import { HOUR } from './constants';
import toInt from '../utils/to-int';
+import getParsingFlags from '../create/parsing-flags';
// FORMATTING
});
addParseToken(['h', 'hh'], function (input, array, config) {
array[HOUR] = toInt(input);
- config._pf.bigHour = true;
+ getParsingFlags(config).bigHour = true;
});
// LOCALES
import { MONTH } from './constants';
import toInt from '../utils/to-int';
import { createUTC } from '../create/utc';
+import getParsingFlags from '../create/parsing-flags';
export function daysInMonth(year, month) {
return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
if (month != null) {
array[MONTH] = month;
} else {
- config._pf.invalidMonth = input;
+ getParsingFlags(config).invalidMonth = input;
}
});