From b569057567c0f577725f508331dcf6ff1b5ab045 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Fri, 22 Nov 2024 01:49:56 +0300 Subject: [PATCH] added Inifinity support... Signed-off-by: Alex A. Naanou --- serialize.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/serialize.js b/serialize.js index 4c1b460..8db79e0 100644 --- a/serialize.js +++ b/serialize.js @@ -28,6 +28,8 @@ var EMPTY = '<< EMPTY >>' var UNDEFINED = '<< UNDEFINED >>' var NAN = '<< NAN >>' +var INFINITY = '<< INFINITY >>' +var NEG_INFINITY = '<< NEG_INFINITY >>' // XXX unify the output format... (???) // XXX handle formatting -- pass to JSON.stringify(..)... @@ -38,6 +40,14 @@ function(value, raw=true){ // undefined... if(v === undefined){ return UNDEFINED + // Infinity... + } else if(typeof(v) == 'number' + && v === Infinity){ + return INFINITY + // -Infinity... + } else if(typeof(v) == 'number' + && v === -Infinity){ + return NEG_INFINITY // NaN... } else if(typeof(v) == 'number' && isNaN(v)){ @@ -57,6 +67,8 @@ function(value, raw=true){ // cleanup placeholders... .replace(new RegExp('"'+ EMPTY +'"', 'g'), '') .replace(new RegExp('"'+ UNDEFINED +'"', 'g'), 'undefined') + .replace(new RegExp('"'+ INFINITY +'"', 'g'), 'Infinity') + .replace(new RegExp('"'+ NEG_INFINITY +'"', 'g'), '-Infinity') .replace(new RegExp('"'+ NAN +'"', 'g'), 'NaN') } @@ -74,7 +86,11 @@ function(str){ var reviver = function(key, value, context){ if(value == UNDEFINED){ return PLACEHOLDER } - return value == NAN ? + return value == INFINITY ? + Infinity + : value == NEG_INFINITY ? + -Infinity + : value == NAN ? NaN : value === EMPTY ? undefined