UNPKG

@antv/data-wizard

Version:
72 lines (71 loc) 2.73 kB
"use strict"; // TODO: better date validator, not regex solution. Whole column valid. // examples: // 1999-366 false, 2004-366 true; // 199501,199502,199503,199519 -> 199519 19 as month -> false; Object.defineProperty(exports, "__esModule", { value: true }); exports.isDateString = exports.getIsoTimes = exports.getIsoDates = void 0; var tslib_1 = require("tslib"); var delimiter = '([-_./\\s])'; var year = '(18|19|20)\\d{2}'; var month = '(0?[1-9]|1[012])'; var day = '(0?[1-9]|[12]\\d|3[01])'; var week = '([0-4]\\d|5[0-2])'; var weekday = '([1-7])'; var hour = '(0?\\d|1\\d|2[0-4])'; var minute = '(0?\\d|[012345]\\d)'; var second = minute; var millisecond = '\\d{1,4}'; var yearday = '((([0-2]\\d|3[0-5])\\d)|36[0-6])'; var offset = "(Z|[+-]" + hour + "(:" + minute + ")?)"; // https://www.cl.cam.ac.uk/~mgk25/iso-time.html var getIsoDates = function (isStrict) { if (isStrict === void 0) { isStrict = true; } return [ // 1991 "" + year, // 1999-W12-7 // TODO: Date.parse do not parse this format "" + year + delimiter + (isStrict ? '' : '?') + "W" + week + "(" + delimiter + (isStrict ? '' : '?') + weekday + ")?", // 12-22-1999 "" + month + delimiter + (isStrict ? '' : '?') + day + delimiter + (isStrict ? '' : '?') + year, // 1999-12-22 19991222 "" + year + delimiter + (isStrict ? '' : '?') + month + delimiter + (isStrict ? '' : '?') + day, // 1999-12 "" + year + delimiter + (isStrict ? '' : '?') + month, // 1999-200 "" + year + delimiter + (isStrict ? '' : '?') + yearday, ]; }; exports.getIsoDates = getIsoDates; var getIsoTimes = function (isStrict) { if (isStrict === void 0) { isStrict = true; } return [ // 23:20:20Z 23:20:20+08:00 23:20:20-08:00 hour + ":" + (isStrict ? '' : '?') + minute + ":" + (isStrict ? '' : '?') + second + "([.,]" + millisecond + ")?" + offset + "?", // 23:20+08 hour + ":" + (isStrict ? '' : '?') + minute + "?" + offset, ]; }; exports.getIsoTimes = getIsoTimes; var isoDates = exports.getIsoDates(); var isoTimes = exports.getIsoTimes(); var formatStr = tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(isoDates)), tslib_1.__read(isoTimes)); isoDates.forEach(function (d) { isoTimes.forEach(function (t) { formatStr.push(d + "[T\\s]" + t); }); }); var formats = formatStr.map(function (item) { return new RegExp("^" + item + "$"); }); function isDateString(value) { for (var i = 0; i < formats.length; i += 1) { var format = formats[i]; if (format.test(value.trim())) { return true; } } return false; } exports.isDateString = isDateString;