goba            Wed Dec 19 10:46:36 2001 EDT

  Modified files:              
    /phpdoc/scripts     revcheck.php 
  Log:
  A new 'parser' for the XML file written. No more rules
  for the order of the attributes or spaces between them,
  or placing a tag on a row :) This eases adding more optional
  or required attributes if needed.
  
  
Index: phpdoc/scripts/revcheck.php
diff -u phpdoc/scripts/revcheck.php:1.6 phpdoc/scripts/revcheck.php:1.7
--- phpdoc/scripts/revcheck.php:1.6     Sat Dec 15 09:42:38 2001
+++ phpdoc/scripts/revcheck.php Wed Dec 19 10:46:36 2001
@@ -28,6 +28,9 @@
    
    <!-- EN-Revision: n/a Maintainer: tom Status: working -->
    
+  Read more about Revision comments and related
+  funcionality in the PHP Documentation Howto.
+   
   Written by Thomas Schöfbeck <[EMAIL PROTECTED]>, 2001-08-11
   Adapted to phpdoc, developed further: <[EMAIL PROTECTED]>
 
@@ -253,6 +256,33 @@
       check_dir($dir.$file."/");
     }
   } // check_dir() end
+  
+  // Get a multidimensional array with tag attributes
+  function get_attr_array ($tags_attrs)
+  {
+    $tag_attrs_processed = array();
+    // Go through the tag attributes
+    foreach($tags_attrs as $attrib_list) {
+      // Get attr name and values
+      preg_match_all("!(.+)=\\s*([\"'])\\s*(.+)\\2!U", $attrib_list, $attribs);
+      // Assign all attributes to one associative array
+      $attrib_array = array();
+      foreach ($attribs[1] as $num => $attrname) {
+        $attrib_array[trim($attrname)] = trim($attribs[3][$num]);
+      }
+      // Collect in order of tags received
+      $tag_attrs_processed[] = $attrib_array;
+    }
+    return $tag_attrs_processed;
+  } // get_attr_array() end
+  
+  // Print preformatted (debug function)
+  function print_pre($var)
+  {
+    print("<pre>");
+    print_r($var);
+    print("</pre>");
+  } // print_pre() end 
 
   /*********************************************************************/
   /* Here starts the program                                           */
@@ -269,36 +299,23 @@
   $translation = array();
   if (@file_exists($translation_xml)) {
     $txml = join("", file($translation_xml));
+    $txml = preg_replace("/\\s+/", " ", $txml);
 
-    // Process main structure
-    preg_match("!<translation>\\s+<intro>(.+)</intro>\\s+" . 
-               "<translators>(.+)</translators>\\s+" . 
-               "<work-in-progress>(.+)</work-in-progress>" .
-               "\\s+</translation>!s", $txml, $match);
+    // Get intro text
+    preg_match("!<intro>(.+)</intro>!s", $txml, $match);
     $translation["intro"] = trim($match[1]);
     
-    // Common preg pieces: space and quote
-    $s = "\\s*"; $q = '\\s*["\']\\s*'; 
-
-    // Process person list
-    $plist = array();
-    preg_match_all("!<person${s}name${s}=${q}(.+)${q}email${s}=${q}(.+)${q}".
-                   "nick${s}=${q}(.+)${q}(cvs${s}=${q}.+${q}|${s})/${s}>!U", 
$match[2], $persons, PREG_SET_ORDER);
-    foreach($persons as $num => $person) {
-        if (strstr($person[4], "yes")) { $persons[$num][4] = TRUE; }
-        else { $persons[$num][4] = FALSE; }
-        $plist[$person[3]] = $num;
+    // Get persons list
+    preg_match_all("!<person(.+)/\\s?>!U", $txml, $matches);
+    $translation['persons'] = get_attr_array($matches[1]);
+    foreach($translation['persons'] as $num => $person) {
+        $plist[$person["nick"]] = $num;
     }
-    $translation["persons"] = $persons;
-    unset($persons);
     $personinfo = array();
     
-    // Process work-in-progress list
-    preg_match_all("!<file${s}name${s}=${q}(.+)${q}person${s}=${q}(.+)${q}".
-                   "type${s}=${q}(.+)${q}/${s}>!U", $match[3], $files, 
PREG_SET_ORDER);
-    $translation["files"] = $files;
-    unset($files);
-    //print_r($translation);
+    // Get files list
+    preg_match_all("!<file(.+)/\\s?>!U", $txml, $matches);
+    $translation['files'] = get_attr_array($matches[1]);
   }
   
   print("<html>
@@ -370,16 +387,16 @@
   </tr>
   ");
   
-  foreach($translation["files"] as $num => $filei) {
-    if (isset($plist[$filei[2]])) {
-      $maintd = '<a href="#maint' . $plist[$filei[2]] . '">' . $filei[2] . '</a>';
+  foreach($translation["files"] as $num => $finfo) {
+    if (isset($plist[$finfo["person"]])) {
+      $maintd = '<a href="#maint' . $plist[$finfo["person"]] . '">' . 
+$finfo["person"] . '</a>';
     } else { 
-      $maintd = $filei[2];
+      $maintd = $finfo["person"];
     }
-    print("<tr bgcolor=#DDDDDD><td>$filei[1]</td>" .
-          "<td>$maintd</td><td>$filei[3]</td></tr>");
-    $personinfo[$filei[2]]["wip"]++;
-    $wip_files[$filei[1]] = TRUE;
+    print("<tr bgcolor=#DDDDDD><td>$finfo[name]</td>" .
+          "<td>$maintd</td><td>$finfo[type]</td></tr>");
+    $personinfo[$finfo["person"]]["wip"]++;
+    $wip_files[$finfo["name"]] = TRUE;
  }
   
   print ("</table>\n<p>&nbsp;</p>\n");
@@ -410,12 +427,12 @@
   ");
   
   foreach($translation["persons"] as $num => $person) {
-    if ($person[4]) { $cvsu = "yes"; $col = "#eee8aa"; }
+    if ($person["cvs"] === "yes") { $cvsu = "yes"; $col = "#eee8aa"; }
     else { $cvsu = "no"; $col = "#dcdcdc"; }
-    $person[2] = str_replace("@", "<small>:at:</small>", $person[2]);
-    $pi = $personinfo[$person[3]];
-    print("<tr bgcolor=$col><td><a name=\"maint$num\">$person[1]</a></td>" .
-          "<td>$person[2]</td><td>$person[3]</td><td>$cvsu</td>" .
+    $person["email"] = str_replace("@", "<small>:at:</small>", $person["email"]);
+    $pi = $personinfo[$person["nick"]];
+    print("<tr bgcolor=$col><td><a name=\"maint$num\">$person[name]</a></td>" .
+          "<td>$person[email]</td><td>$person[nick]</td><td>$cvsu</td>" .
           "<td align=center>$pi[credits]</td><td align=center>$pi[actual]</td>".
           "<td align=center>$pi[old]</td><td align=center>$pi[veryold]</td>".
           "<td align=center>$pi[norev]</td><td align=center>$pi[wip]</td></tr>");


Reply via email to