@antv/data-wizard
Version:
A js/ts library for data processing
144 lines (143 loc) • 4.04 kB
JavaScript
import { __read, __spreadArray } from "tslib";
import { isDateString } from '../analyzer/is-date';
export var isNull = function (value) {
return value === null || value === undefined || value === '' || Number.isNaN(value) || value === 'null';
};
export var isString = function (value) {
return typeof value === 'string';
};
export var isNumber = function (value) {
return typeof value === 'number' && !Number.isNaN(value);
};
/**
* Checks if value is an digit
* @param value
* @returns
*/
export 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() !== '';
};
export var isInteger = function (value, convertString) {
if (typeof value === 'number')
return Number.isInteger(value);
if (convertString && isString(value) && isDigit(value))
return !value.includes('.');
return false;
};
export var isFloat = function (value, convertString) {
if (typeof value === 'number')
return !Number.isNaN(value) && !Number.isInteger(value);
if (convertString && isString(value) && isDigit(value))
return value.includes('.');
return false;
};
export var isDate = function (value, convertString) {
if (value && Object.getPrototypeOf(value) === Date.prototype)
return true;
if (convertString && isString(value))
return isDateString(value);
return false;
};
export 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';
};
export var isObject = function (value) {
return value && Object.getPrototypeOf(value) === Object.prototype;
};
export var isArray = function (value) {
return Array.isArray(value);
};
export var isBasicType = function (value) {
return !isArray(value) && !isObject(value);
};
export var unique = function (array) {
return Array.from(new Set(array));
};
/**
* Generate an array from 0 to number.
* @param number
*/
export var range = function (number) {
return __spreadArray([], __read(Array(number).keys()));
};
/**
* assert
* @param condition
* @param errorMessage
*/
export var assert = function (condition, errorMessage) {
if (!condition)
throw new Error(errorMessage);
};
/**
* Judge parent-child relationship. A child has only one parent, but a parent can have more children.
* @param parent
* @param child
*/
export var isParentChild = function (parent, child) {
if (!isArray(parent) ||
parent.length === 0 ||
!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;
};
/**
* Return the flattened result of the array.
* @param array - The array to process
*/
export function flatten(array) {
var res = [];
for (var i = 0; i < array.length; i += 1) {
if (isArray(array[i])) {
res = res.concat(flatten(array[i]));
}
else {
res.push(array[i]);
}
}
return res;
}