wez             Fri May  7 09:32:58 2004 EDT

  Modified files:              
    /livedocs   livedoc.php 
  Log:
  Bind entities in node descriptions for the generated function list
  shown on ref.XXX pages.
  Patch by Nuno
  
  
http://cvs.php.net/diff.php/livedocs/livedoc.php?r1=1.102&r2=1.103&ty=u
Index: livedocs/livedoc.php
diff -u livedocs/livedoc.php:1.102 livedocs/livedoc.php:1.103
--- livedocs/livedoc.php:1.102  Wed May  5 04:49:43 2004
+++ livedocs/livedoc.php        Fri May  7 09:32:58 2004
@@ -18,7 +18,7 @@
 // | Generate an HTML version of a phpdoc/docbook page on the fly         |
 // +----------------------------------------------------------------------+
 //
-// $Id: livedoc.php,v 1.102 2004/05/05 08:49:43 wez Exp $
+// $Id: livedoc.php,v 1.103 2004/05/07 13:32:58 wez Exp $
 
 define('LIVEDOC_SOURCE', dirname(__FILE__));
 include LIVEDOC_SOURCE . '/common.php';
@@ -322,6 +322,41 @@
        }
 }
 
+/*****************************************************************************
+ * Search & Replace entities
+ */
+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;
+               }
+
+               /* now collect their values */
+               $entities_to_find = array_unique($matches[1]);
+               $ents = implode("','", $entities_to_find);
+               $q = sqlite_query($idx, "SELECT entid, value from ents where entid in 
('" . $ents . "')");
+               if (!$q) {
+                       break;
+               }
+
+               while ($r = sqlite_fetch_array($q, SQLITE_NUM)) {
+                       $entities['&' . $r[0] . ';'] = $r[1];
+               }
+
+               /* substitute */
+               $data = strtr($data, $entities);
+
+       } while ($sanity++ < 5);
+
+       return $data;
+}
+
 
 /*****************************************************************************
  * Helper functions for transformation
@@ -337,7 +372,6 @@
                $replace[] = html_entity_decode($item);
        }
 
-       $sanity = 0;
        $lang_rev = 0;
 
        $data = @file_get_contents($filename);
@@ -360,30 +394,8 @@
        /* strip comments */
        $data = preg_replace('@<!--\s+.*\s-->@Usm', '', $data);
 
-       /* list the entities that are required */
-       $entities = array();
-       do {
-               $ent_count = preg_match_all('/&([a-zA-Z0-9.-]+);/sm', $data, $matches);
-               if ($ent_count == 0) {
-                       break;
-               }
-
-               /* now collect their values */
-               $entities_to_find = array_unique($matches[1]);
-               $ents = implode("','", $entities_to_find);
-               $q = sqlite_query($idx, "SELECT entid, value from ents where entid in 
('" . $ents . "')");
-               if (!$q) {
-                       break;
-               }
-
-               while ($r = sqlite_fetch_array($q, SQLITE_NUM)) {
-                       $entities['&' . $r[0] . ';'] = $r[1];
-               }
-
-               /* substitute */
-               $data = strtr($data, $entities);
-
-       } while ($sanity++ < 5);
+       /* Replace entities */
+       $data = bind_entities($data);
 
        /* catch any undefined entities */
        if ($included) {
@@ -514,7 +526,7 @@
        if($parts[3] == 'class') {
                $title = ' - ' . lookup_title($id) . ' class';
        } else {
-               $title = ' - ' . sqlite_single_query($GLOBALS['idx'], "SELECT descr 
from toc where docbook_id='$id'");
+               $title = ' - ' . bind_entities(sqlite_single_query($GLOBALS['idx'], 
"SELECT descr from toc where docbook_id='$id'"));
        }
 
        return "<div class=\"function_link\"><$stag>$func_name</$etag>$title</div>";

Reply via email to