forked from enviPath/enviPy
Current Dev State
This commit is contained in:
100
static/js/ketcher2/node_modules/validator/lib/isDate.js
generated
vendored
Normal file
100
static/js/ketcher2/node_modules/validator/lib/isDate.js
generated
vendored
Normal file
@ -0,0 +1,100 @@
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = isDate;
|
||||
|
||||
var _assertString = require('./util/assertString');
|
||||
|
||||
var _assertString2 = _interopRequireDefault(_assertString);
|
||||
|
||||
var _isISO = require('./isISO8601');
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function getTimezoneOffset(str) {
|
||||
var iso8601Parts = str.match(_isISO.iso8601);
|
||||
var timezone = void 0,
|
||||
sign = void 0,
|
||||
hours = void 0,
|
||||
minutes = void 0;
|
||||
if (!iso8601Parts) {
|
||||
str = str.toLowerCase();
|
||||
timezone = str.match(/(?:\s|gmt\s*)(-|\+)(\d{1,4})(\s|$)/);
|
||||
if (!timezone) {
|
||||
return str.indexOf('gmt') !== -1 ? 0 : null;
|
||||
}
|
||||
sign = timezone[1];
|
||||
var offset = timezone[2];
|
||||
if (offset.length === 3) {
|
||||
offset = '0' + offset;
|
||||
}
|
||||
if (offset.length <= 2) {
|
||||
hours = 0;
|
||||
minutes = parseInt(offset, 10);
|
||||
} else {
|
||||
hours = parseInt(offset.slice(0, 2), 10);
|
||||
minutes = parseInt(offset.slice(2, 4), 10);
|
||||
}
|
||||
} else {
|
||||
timezone = iso8601Parts[21];
|
||||
if (!timezone) {
|
||||
// if no hour/minute was provided, the date is GMT
|
||||
return !iso8601Parts[12] ? 0 : null;
|
||||
}
|
||||
if (timezone === 'z' || timezone === 'Z') {
|
||||
return 0;
|
||||
}
|
||||
sign = iso8601Parts[22];
|
||||
if (timezone.indexOf(':') !== -1) {
|
||||
hours = parseInt(iso8601Parts[23], 10);
|
||||
minutes = parseInt(iso8601Parts[24], 10);
|
||||
} else {
|
||||
hours = 0;
|
||||
minutes = parseInt(iso8601Parts[23], 10);
|
||||
}
|
||||
}
|
||||
return (hours * 60 + minutes) * (sign === '-' ? 1 : -1);
|
||||
}
|
||||
|
||||
function isDate(str) {
|
||||
(0, _assertString2.default)(str);
|
||||
var normalizedDate = new Date(Date.parse(str));
|
||||
if (isNaN(normalizedDate)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// normalizedDate is in the user's timezone. Apply the input
|
||||
// timezone offset to the date so that the year and day match
|
||||
// the input
|
||||
var timezoneOffset = getTimezoneOffset(str);
|
||||
if (timezoneOffset !== null) {
|
||||
var timezoneDifference = normalizedDate.getTimezoneOffset() - timezoneOffset;
|
||||
normalizedDate = new Date(normalizedDate.getTime() + 60000 * timezoneDifference);
|
||||
}
|
||||
|
||||
var day = String(normalizedDate.getDate());
|
||||
var dayOrYear = void 0,
|
||||
dayOrYearMatches = void 0,
|
||||
year = void 0;
|
||||
// check for valid double digits that could be late days
|
||||
// check for all matches since a string like '12/23' is a valid date
|
||||
// ignore everything with nearby colons
|
||||
dayOrYearMatches = str.match(/(^|[^:\d])[23]\d([^T:\d]|$)/g);
|
||||
if (!dayOrYearMatches) {
|
||||
return true;
|
||||
}
|
||||
dayOrYear = dayOrYearMatches.map(function (digitString) {
|
||||
return digitString.match(/\d+/g)[0];
|
||||
}).join('/');
|
||||
|
||||
year = String(normalizedDate.getFullYear()).slice(-2);
|
||||
if (dayOrYear === day || dayOrYear === year) {
|
||||
return true;
|
||||
} else if (dayOrYear === '' + day / year || dayOrYear === '' + year / day) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
module.exports = exports['default'];
|
||||
Reference in New Issue
Block a user