mathball
Version:
A JavaScript library for Competitive Programming
69 lines (67 loc) • 2.68 kB
JavaScript
;
/*
* Argument and Length validation
*/
var Complex = require('../complex');
module.exports = function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (args[0][0].constructor === Number) {
for (var i = 0; i < args[0].length; i++) {
if (typeof args[0][i] !== 'number') {
throw new TypeError('Invalid argument received: ' + JSON.stringify(args) + '\n, \'function\' only accepts parameters of similar types!\n');
}
}
} else if (args[0][0].constructor === String) {
for (var _i = 0; _i < args[0].length; _i++) {
if (typeof args[0][_i] !== 'string') {
throw new TypeError('Invalid argument received: ' + JSON.stringify(args) + '\n \'function\' only accepts parameters of similar types!\n');
}
}
} else if (args[0][0].constructor === Array) {
var arr = args[0];
if (arr[0][0].constructor === Array) {
var len = arr[0][0].length;
for (var _i2 = 0; _i2 < arr.length; _i2++) {
for (var j = 0; j < arr[0].length; j++) {
if (arr[_i2][j].length !== len) {
throw new TypeError('Invalid argument received: ' + JSON.stringify(args) + '\n \'function\' only accepts parameters of similar length!\n');
}
}
}
for (var _i3 = 0; _i3 < arr.length; _i3++) {
for (var _j = 0; _j < arr[0].length; _j++) {
for (var k = 0; k < arr[0][0].length; k++) {
if (typeof arr[_i3][_j][k] !== 'number') {
throw new TypeError('Invalid argument received: ' + JSON.stringify(args) + '\n \'function\' only accepts parameters of similar types!\n');
}
}
}
}
} else {
for (var _i4 = 0; _i4 < arr.length; _i4++) {
for (var _j2 = 0; _j2 < arr.length; _j2++) {
if (arr[_i4].length !== arr[_j2].length) {
throw new TypeError('Invalid argument received: ' + JSON.stringify(args) + '\n \'function\' only accepts parameters of similar length!\n');
}
}
}
for (var _i5 = 0; _i5 < arr.length; _i5++) {
for (var _j3 = 0; _j3 < arr[0].length; _j3++) {
if (typeof arr[_i5][_j3] !== 'number') {
throw new TypeError('Invalid argument received: ' + JSON.stringify(args) + '\n \'function\' only accepts parameters of similar types!\n');
}
}
}
}
} else if (args[0][0].constructor === Complex) {
for (var _i6 = 0; _i6 < args[0].length; _i6++) {
if (args[0][_i6].constructor !== Complex) {
throw new TypeError('Invalid argument received: ' + JSON.stringify(args) + '\n \'function\' only accepts parameters of similar types!\n');
}
}
} else {
throw new TypeError('Invalid argument received: ' + JSON.stringify(args) + '\n');
}
}; //End of module exports