'use strict';
/**
* Return true if the provided argument is a number, a numeric string, or an
* array of numbers or numeric strings
*
* @module util/argument-is-numeric
* @param {Number|String|Number[]|String[]} val The value to inspect
* @param {String} key The property to which the mixin method should be assigned
* @param {Function} mixin The mixin method
* @returns {void}
*/
function argumentIsNumeric( val ) {
if ( typeof val === 'number' ) {
return true;
}
if ( typeof val === 'string' ) {
return /^\d+$/.test( val );
}
if ( Array.isArray( val ) ) {
for ( var i = 0; i < val.length; i++ ) {
// Fail early if any argument isn't determined to be numeric
if ( ! argumentIsNumeric( val[ i ] ) ) {
return false;
}
}
return true;
}
// If it's not an array, and not a string, and not a number, we don't
// know what to do with it
return false;
}
module.exports = argumentIsNumeric;