@antv/data-wizard
Version:
A js/ts library for data processing
163 lines (162 loc) • 4.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.flatten = exports.isParentChild = exports.assert = exports.range = exports.unique = exports.isBasicType = exports.isArray = exports.isObject = exports.isBoolean = exports.isDate = exports.isFloat = exports.isInteger = exports.isDigit = exports.isNumber = exports.isString = exports.isNull = void 0;
var tslib_1 = require("tslib");
var is_date_1 = require("../analyzer/is-date");
var isNull = function (value) {
return value === null || value === undefined || value === '' || Number.isNaN(value) || value === 'null';
};
exports.isNull = isNull;
var isString = function (value) {
return typeof value === 'string';
};
exports.isString = isString;
var isNumber = function (value) {
return typeof value === 'number' && !Number.isNaN(value);
};
exports.isNumber = isNumber;
/**
* Checks if value is an digit
* @param value
* @returns
*/
var isDigit = function (value) {
var hasDot = false;
var tempValue = value;
if (/^[+-]/.test(tempValue)) {
tempValue = tempValue.slice(1);
}
for (var i = 0; i < tempValue.length; i += 1) {
var char = tempValue[i];
if (char === '.') {
if (hasDot === false) {
hasDot = true;
}
else {
return false;
}
}
if (char !== '.' && !/[0-9]/.test(char)) {
return false;
}
}
return tempValue.trim() !== '';
};
exports.isDigit = isDigit;
var isInteger = function (value, convertString) {
if (typeof value === 'number')
return Number.isInteger(value);
if (convertString && exports.isString(value) && exports.isDigit(value))
return !value.includes('.');
return false;
};
exports.isInteger = isInteger;
var isFloat = function (value, convertString) {
if (typeof value === 'number')
return !Number.isNaN(value) && !Number.isInteger(value);
if (convertString && exports.isString(value) && exports.isDigit(value))
return value.includes('.');
return false;
};
exports.isFloat = isFloat;
var isDate = function (value, convertString) {
if (value && Object.getPrototypeOf(value) === Date.prototype)
return true;
if (convertString && exports.isString(value))
return is_date_1.isDateString(value);
return false;
};
exports.isDate = isDate;
var isBoolean = function (value, convertStringAndNumber) {
return convertStringAndNumber
? [
[true, false],
[0, 1],
['true', 'false'],
['Yes', 'No'],
['True', 'False'],
['0', '1'],
['是', '否'],
].some(function (list) {
return value.every(function (item) { return list.includes(item); });
})
: typeof value === 'boolean';
};
exports.isBoolean = isBoolean;
var isObject = function (value) {
return value && Object.getPrototypeOf(value) === Object.prototype;
};
exports.isObject = isObject;
var isArray = function (value) {
return Array.isArray(value);
};
exports.isArray = isArray;
var isBasicType = function (value) {
return !exports.isArray(value) && !exports.isObject(value);
};
exports.isBasicType = isBasicType;
var unique = function (array) {
return Array.from(new Set(array));
};
exports.unique = unique;
/**
* Generate an array from 0 to number.
* @param number
*/
var range = function (number) {
return tslib_1.__spreadArray([], tslib_1.__read(Array(number).keys()));
};
exports.range = range;
/**
* assert
* @param condition
* @param errorMessage
*/
var assert = function (condition, errorMessage) {
if (!condition)
throw new Error(errorMessage);
};
exports.assert = assert;
/**
* Judge parent-child relationship. A child has only one parent, but a parent can have more children.
* @param parent
* @param child
*/
var isParentChild = function (parent, child) {
if (!exports.isArray(parent) ||
parent.length === 0 ||
!exports.isArray(child) ||
child.length === 0 ||
parent.length !== child.length)
return false;
var record = {};
for (var i = 0; i < child.length; i += 1) {
var c = child[i];
var p = parent[i];
if (!record[c]) {
record[c] = p;
}
else if (record[c] !== p) {
return false;
}
}
return true;
};
exports.isParentChild = isParentChild;
/**
* Return the flattened result of the array.
* @param array - The array to process
*/
function flatten(array) {
var res = [];
for (var i = 0; i < array.length; i += 1) {
if (exports.isArray(array[i])) {
res = res.concat(flatten(array[i]));
}
else {
res.push(array[i]);
}
}
return res;
}
exports.flatten = flatten;