Skip to content

Commit 856e235

Browse files
committed
v.0.9.17, contd
1 parent 3d701b5 commit 856e235

2 files changed

Lines changed: 45 additions & 8 deletions

File tree

build/browser-repl.js

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -958,6 +958,47 @@ codemirror_define_grammar_mode("scilite", {
958958
"supportAutoCompletion" : true
959959
}, CodeMirror, CodeMirrorGrammar);
960960

961+
function serialize_scalar(x)
962+
{
963+
if ("string" === typeof x)
964+
{
965+
return x;
966+
}
967+
x = $._.tonumber(x);
968+
if ("number" === typeof x)
969+
{
970+
if (isNaN(x)) return {scalar:"nan"};
971+
if (!isFinite(x)) return {scalar:0 > x ? "-inf" : "inf"};
972+
}
973+
return x;
974+
}
975+
function unserialize_scalar(x)
976+
{
977+
if ("string" === typeof x)
978+
{
979+
return x;
980+
}
981+
if (x)
982+
{
983+
if ((null != x.re) && (null != x.im))
984+
{
985+
return $.fn.complex(unserialize_scalar(x.re), unserialize_scalar(x.im));
986+
}
987+
if ("inf" === x.scalar)
988+
{
989+
return Infinity;
990+
}
991+
if ("-inf" === x.scalar)
992+
{
993+
return -Infinity;
994+
}
995+
if ("nan" === x.scalar)
996+
{
997+
return NaN;
998+
}
999+
}
1000+
return x;
1001+
}
9611002
function serialize(x)
9621003
{
9631004
if (Array.isArray(x))
@@ -966,11 +1007,11 @@ function serialize(x)
9661007
}
9671008
else if (x instanceof $.fn.complex)
9681009
{
969-
return {re:$._.tonumber(x.re),im:$._.tonumber(x.im)};
1010+
return {re:serialize_scalar(x.re), im:serialize_scalar(x.im)};
9701011
}
9711012
else
9721013
{
973-
return $._.tonumber(x);
1014+
return serialize_scalar(x);
9741015
}
9751016
}
9761017
function unserialize(x)
@@ -979,13 +1020,9 @@ function unserialize(x)
9791020
{
9801021
return x.map(unserialize);
9811022
}
982-
else if (x && (null != x.re) && (null != x.im))
983-
{
984-
return $.fn.complex(x.re, x.im);
985-
}
9861023
else
9871024
{
988-
return x;
1025+
return unserialize_scalar(x);
9891026
}
9901027
}
9911028

0 commit comments

Comments
 (0)