merge changes from diogenes-0.9.19 branch back into trunk
[diogenes.git] / include / Tree / Node.php
index 65f1f1f..2ff8edb 100644 (file)
@@ -18,6 +18,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+require_once 'diogenes/diogenes.misc.inc.php';
+
 define('NODE_DUMP_BINARY', 0);
 define('NODE_DUMP_TEXT', 1);
 define('NODE_DUMP_NOCHILDREN', 2);
@@ -29,7 +31,7 @@ define('VAR_TYPE_NODE', 4);
 
 function var_encode_text($var, $level = 0, $no_children = FALSE, $tabstr = '  ', $eol = "\n")
 {
-  if (is_object($var) && (get_class($var) == 'Diogenes_Tree_Node')) {
+  if (is_object($var) && (strtolower(get_class($var)) == 'diogenes_tree_node')) {
     // node name
     $code = str_repeat($tabstr, $level) . "node : {$var->name}" . $eol;
 
@@ -41,36 +43,40 @@ function var_encode_text($var, $level = 0, $no_children = FALSE, $tabstr = '  ',
     {
       $code .= str_repeat($tabstr, $level+1) . "* children" . $eol;
       foreach ($var->children as $index => $child)
+      {
         $code .= str_repeat($tabstr, $level+2) . "index : $index" . $eol;
         $code .= var_encode_text($child, $level+2, $no_children, $tabstr, $eol);
+      }
     }
     return $code;
   } elseif (is_array($var)) {
     $arraysep = ",$eol";
-    $code = "array(".$eol;
+    $vcode = '';
     foreach ($var as $key => $value) {
-      $code .= str_repeat($tabstr, $level + 1);
-      $code .= "'$key'=>".var_encode_text($value, $level + 1, $no_children, $tabstr, $eol);
-      $code .= $arraysep;
+      $vcode .= str_repeat($tabstr, $level + 1);
+      $vcode .= "'$key'=>".var_encode_text($value, $level + 1, $no_children, $tabstr, $eol);
+      $vcode .= $arraysep;
     }
-    if (substr($code, -strlen($arraysep)))
-      $code = substr($code, 0, - strlen($arraysep));
-    $code .= $eol;
-    //$code = chop($code, ','); //remove unnecessary coma
-    $code .= str_repeat($tabstr, $level) . ")";
+    if (substr($vcode, -strlen($arraysep)) == $arraysep)
+      $vcode = substr($vcode, 0, - strlen($arraysep));
+
+    $code = "array(".($vcode ? "$eol$vcode$eol".str_repeat($tabstr, $level)  : ""). ")";
     return $code;
-  } elseif (is_string($var)) {
+  } elseif (is_scalar($var)) {
     return "'".$var."'";
-  } elseif (is_bool($var)) {
-    return ($code ? 'TRUE' : 'FALSE');
   } else {
     return 'NULL';
   }
 }
 
+function var_encode_html($var, $level = 0, $no_children = FALSE)
+{
+  return var_encode_text($var, $level, $no_children, '&nbsp;&nbsp;', $eol = "<br/>\n");
+}
+
 function var_encode_bin($var, $no_children = FALSE)
 {
-  if (is_object($var) && (get_class($var) == 'Diogenes_Tree_Node')) {
+  if (is_object($var) && (strtolower(get_class($var)) == 'diogenes_tree_node')) {
     $code = pack('C', VAR_TYPE_NODE);
     $code .= var_encode_bin($var->name);
     $code .= var_encode_bin($var->data);
@@ -158,13 +164,6 @@ class Diogenes_Tree_Node
     $this->children = $children;
   }
 
-  /** Add a child for this node.
-   */
-  function pushChild($node, $index)
-  {
-    array_push($this->children, $node);
-  }
-
   /** Return the specified child of this node.
    */
   function getChild($index)
@@ -185,7 +184,7 @@ class Diogenes_Tree_Node
   {
     $bin = file_get_contents($filename);
     $node = var_decode_bin($bin);
-    if (!is_object($node) || get_class($node) != 'Diogenes_Tree_Node')
+    if (!is_object($node) || strtolower(get_class($node)) != 'diogenes_tree_node')
     {
       trigger_error('readFile : not a Diogenes_Tree_Node', E_USER_ERROR);
     }