UNPKG

mathjs

Version:

Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.

78 lines (70 loc) 3.26 kB
'use strict'; var types = require('../../utils/types'); function factory (type, config, load, typed) { /** * Determine the type of a variable. * * Function `typeof` recognizes the following types of objects: * * Object | Returns | Example * ---------------------- | ------------- | ------------------------------------------ * null | `'null'` | `math.typeof(null)` * number | `'number'` | `math.typeof(3.5)` * boolean | `'boolean'` | `math.typeof (true)` * string | `'string'` | `math.typeof ('hello world')` * Array | `'Array'` | `math.typeof ([1, 2, 3])` * Date | `'Date'` | `math.typeof (new Date())` * Function | `'Function'` | `math.typeof (function () {})` * Object | `'Object'` | `math.typeof ({a: 2, b: 3})` * RegExp | `'RegExp'` | `math.typeof (/a regexp/)` * undefined | `'undefined'` | `math.typeof(undefined)` * math.type.BigNumber | `'BigNumber'` | `math.typeof (math.bignumber('2.3e500'))` * math.type.Chain | `'Chain'` | `math.typeof (math.chain(2))` * math.type.Complex | `'Complex'` | `math.typeof (math.complex(2, 3))` * math.type.Fraction | `'Fraction'` | `math.typeof (math.fraction(1, 3))` * math.type.Help | `'Help'` | `math.typeof (math.help('sqrt'))` * math.type.Index | `'Index'` | `math.typeof (math.index(1, 3))` * math.type.Matrix | `'Matrix'` | `math.typeof (math.matrix([[1,2], [3, 4]]))` * math.type.Range | `'Range'` | `math.typeof (math.range(0, 10))` * math.type.Unit | `'Unit'` | `math.typeof (math.unit('45 deg'))` * * Syntax: * * math.typeof(x) * * Examples: * * math.typeof(3.5); // returns 'number' * math.typeof(math.complex('2-4i')); // returns 'Complex' * math.typeof(math.unit('45 deg')); // returns 'Unit' * math.typeof('hello world'); // returns 'string' * * @param {*} x The variable for which to test the type. * @return {string} Returns the name of the type. Primitive types are lower case, * non-primitive types are upper-camel-case. * For example 'number', 'string', 'Array', 'Date'. */ var _typeof = typed('_typeof', { 'any': function (x) { // JavaScript types var t = types.type(x); // math.js types if (t === 'Object') { if (x.isBigNumber === true) return 'BigNumber'; if (x.isComplex === true) return 'Complex'; if (x.isFraction === true) return 'Fraction'; if (x.isMatrix === true) return 'Matrix'; if (x.isUnit === true) return 'Unit'; if (x.isIndex === true) return 'Index'; if (x.isRange === true) return 'Range'; if (x.isChain === true) return 'Chain'; if (x.isHelp === true) return 'Help'; } return t; } }); _typeof.toTex = undefined; // use default template return _typeof; } exports.name = 'typeof'; exports.factory = factory;