iliaa           Mon May 24 16:59:28 2004 EDT

  Modified files:              
    /livedocs   livedoc.php 
  Log:
  Optimizations: part #3.
  
  
http://cvs.php.net/diff.php/livedocs/livedoc.php?r1=1.105&r2=1.106&ty=u
Index: livedocs/livedoc.php
diff -u livedocs/livedoc.php:1.105 livedocs/livedoc.php:1.106
--- livedocs/livedoc.php:1.105  Mon May 24 16:42:43 2004
+++ livedocs/livedoc.php        Mon May 24 16:59:28 2004
@@ -18,7 +18,7 @@
 // | Generate an HTML version of a phpdoc/docbook page on the fly         |
 // +----------------------------------------------------------------------+
 //
-// $Id: livedoc.php,v 1.105 2004/05/24 20:42:43 iliaa Exp $
+// $Id: livedoc.php,v 1.106 2004/05/24 20:59:28 iliaa Exp $
 
 define('LIVEDOC_SOURCE', dirname(__FILE__));
 include LIVEDOC_SOURCE . '/common.php';
@@ -230,7 +230,7 @@
                $idx = $GLOBALS['fb_idx'];
        }
 
-       if ($fileid !== null) { /* determine the first node within that file */
+       if (!$fileid) { /* determine the first node within that file */
                $firstid = sqlite_single_query($idx, "SELECT id from idents where 
fileid='$fileid' LIMIT 1");
        }
 
@@ -267,11 +267,12 @@
                $title = substr($title, 0, 22). '...';
        } else {
                $ftitle = "";
+               if (!$title) {
+                       $title = $item . ' [?]';
+                       $nolink = TRUE;
+               }
        }
-       if (empty($title)) {
-               $title = $item. ' [?]';
-               $nolink = TRUE;
-       }
+       
        if ($item == $current_page) {
                $current_page_title = $title;
                $title = "<b>$title</b>";
@@ -292,27 +293,25 @@
 function bind_entities($data) {
 
        global $idx;
-       $entities = array();
        $sanity = 0;
 
-       do {
-               $ent_count = preg_match_all('/&([a-zA-Z0-9.-]+);/sm', $data, $matches);
-               if ($ent_count == 0) {
-                       break;
-               }
-
+       while (($ent_count = preg_match_all('/&([a-zA-Z0-9.-]+);/sm', $data, 
$matches)) && $sanity++ < 5) {
                /* now collect their values */
-               $entities_to_find = array_unique($matches[1]);
-               $ents = implode("','", $entities_to_find);
+               $ents = implode("','", array_unique($matches[1]));
                $r = sqlite_array_query($idx, "SELECT entid, value from ents where 
entid in ('" . $ents . "')", SQLITE_NUM);
                if ($r) {
+                       $src = $dst = array();
                        foreach ($r as $v) {
-                               $entities['&' . $v[0] . ';'] = $v[1];
+                               $src[] = '&' . $v[0] . ';';
+                               $dst[] = $v[1];
                        }
                        /* substitute */
-                       $data = strtr($data, $entities);
+                       $data = str_replace($src, $dst, $data);
+               } else {
+                       /* no matching entities, no point in looping further */
+                       break;
                }
-       } while ($sanity++ < 5);
+       }
 
        return $data;
 }
@@ -460,21 +459,29 @@
        $stag = 'function';
        $etag = 'function';
 
-       if (count($parts) == 4) {
-               $id = 'function.' . $parts[3];
-               $func_name = lookup_title($id);
-       } elseif ($parts[3] == 'class' && count($parts) == 5) {
-               $id = 'class.' . $parts[4];
-               $func_name = strtr($parts[4], array('-'=>'_'));
-               $stag = "xref linkend=\"$id\"";
-               $etag = "xref";
-       } else {
-               /* some weird node type we don't understand */
-               $id = $ref;
-               $func_name = 'Unknown ??';
+       switch (count($parts)) {
+               case 4:
+                       $id = 'function.' . $parts[3];
+                       $func_name = lookup_title($id);
+                       break;
+
+               case 5:
+                       if ($parts[3] == 'class') {
+                               $id = 'class.' . $parts[4];
+                               $func_name = str_replace('-', '_', $parts[4]);
+                               $stag = "xref linkend=\"$id\"";
+                               $etag = "xref";
+                               break;
+                       }
+                       /* fall through */
+
+               default:
+                       /* some weird node type we don't understand */
+                       $id = $ref;
+                       $func_name = 'Unknown ??';                      
        }
-       
-       if($parts[3] == 'class') {
+
+       if ($parts[3] == 'class') {
                $title = ' - ' . lookup_title($id) . ' class';
        } else {
                $title = ' - ' . bind_entities(sqlite_single_query($GLOBALS['idx'], 
"SELECT descr from toc where docbook_id='$id'"));

Reply via email to