From 58464f82831dc7588ab44f2a165009e01dc00767 Mon Sep 17 00:00:00 2001 From: roll Date: Thu, 30 Apr 2020 10:44:15 +0300 Subject: [PATCH] Added support for infinite number --- src/types/number.js | 13 ++++++++----- test/types/number.js | 3 +++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/types/number.js b/src/types/number.js index 4caaae1..1258b2d 100644 --- a/src/types/number.js +++ b/src/types/number.js @@ -7,11 +7,14 @@ const { ERROR } = require('../config') // Module API function castNumber(format, value, options = {}) { - const decimalChar = options.decimalChar || _DEFAULT_DECIMAL_CHAR - const groupChar = options.groupChar || _DEFAULT_GROUP_CHAR if (!isNumber(value)) { if (!isString(value)) return ERROR if (!value.length) return ERROR + if (value === 'NaN') return NaN + if (value === 'INF') return Infinity + if (value === '-INF') return -Infinity + const decimalChar = options.decimalChar || _DEFAULT_DECIMAL_CHAR + const groupChar = options.groupChar || _DEFAULT_GROUP_CHAR value = value.replace(new RegExp('\\s', 'g'), '') value = value.replace(new RegExp(`[${decimalChar}]`, 'g'), '.') value = value.replace(new RegExp(`[${groupChar}]`, 'g'), '') @@ -23,9 +26,9 @@ function castNumber(format, value, options = {}) { } catch (error) { return ERROR } - } - if (isNaN(value)) { - return ERROR + if (isNaN(value)) { + return ERROR + } } return value } diff --git a/test/types/number.js b/test/types/number.js index 34aef45..f9f20fa 100644 --- a/test/types/number.js +++ b/test/types/number.js @@ -12,6 +12,9 @@ const TESTS = [ ['default', '1', 1], ['default', '10.00', 10], ['default', '10.50', 10.5], + ['default', 'NaN', NaN], + ['default', 'INF', Infinity], + ['default', '-INF', -Infinity], ['default', '100%', 100, { bareNumber: false }], ['default', '1000‰', 1000, { bareNumber: false }], ['default', '-1000', -1000],