[evolvis-commits] r17192: make minijson encoder feature-complete by adding floats *shudder*
mirabilos at evolvis.org
mirabilos at evolvis.org
Wed Apr 13 14:33:01 CEST 2011
Author: mirabilos
Date: 2011-04-13 14:33:00 +0200 (Wed, 13 Apr 2011)
New Revision: 17192
Modified:
trunk/gforge_base/evolvisforge/gforge/common/include/minijson.php
Log:
make minijson encoder feature-complete by adding floats *shudder*
Modified: trunk/gforge_base/evolvisforge/gforge/common/include/minijson.php
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/common/include/minijson.php 2011-04-13 12:32:59 UTC (rev 17191)
+++ trunk/gforge_base/evolvisforge/gforge/common/include/minijson.php 2011-04-13 12:33:00 UTC (rev 17192)
@@ -2,7 +2,7 @@
/**
* Minimal JSON generator for FusionForge
*
- * Copyright © 2010
+ * Copyright © 2010, 2011
* Thorsten “mirabilos” Glaser <t.glaser at tarent.de>
* All rights reserved.
*
@@ -21,8 +21,7 @@
* with FusionForge; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*-
- * Do *not* use PHP’s json_encode because it is broken. Rather,
- * use (and, if necessary, extend) this module.
+ * Do *not* use PHP’s json_encode because it is broken.
*/
/*-
@@ -52,7 +51,18 @@
return $z;
$x = (string)$x;
}
- /* note: no float here (for now); be locales-aware! */
+ if (is_float($x)) {
+ $rs = sprintf("%.14E", $x);
+ $v = explode("E", $rs);
+ $rs = rtrim($v[0], "0");
+ if (substr($rs, -1) == ".") {
+ $rs .= "0";
+ }
+ if ($v[1] != "-0" && $v[1] != "+0") {
+ $rs .= "E" . $v[1];
+ }
+ return $rs;
+ }
if (is_string($x)) {
$rs = "\"";
foreach (str_split($x) as $v) {
More information about the evolvis-commits
mailing list