jeroen Sat Jul 7 17:19:49 2001 EDT
Added files:
/phpdoc/scripts README process.php tfn.php
Log:
Added a scripts directory with some phpdoc-scripts.
Maybe move the scripts in the root op phpdoc here too?
Index: phpdoc/scripts/process.php
+++ phpdoc/scripts/process.php
#!/usr/bin/php -q
<?php
if ($argc < 2 || $argc > 3)
{ ?>
Process the manual to do some replacements.
Usage:
<?=$argv[0]?> <apply-script> [<startdir>]
<apply-script> must contain the function apply($input),
which recieves a whole xml-file, and should output
return the new file.
With <startdir> you can specify in which dir
to start looking recursively for xml files.
Written by [EMAIL PROTECTED]
<?php
exit;
}
echo "Starting with manual-process\n";
echo "Including $argv[1]...";
include("$argv[1]");
echo " done\n";
if (!function_exists('apply'))
{
?>
### FATAL ERROR ###
In <?=$argv[1]?> you should define a function:
string apply(string $string)
<?php
exit;
}
$startdir = isset($argv[2]) ? $argv[2] : '.';
echo "Constructing list of all xml-files (may take a while)...";
$files = all_xml_files($startdir);
echo " done (".count($files)." xml files found)\n";
foreach ($files as $file)
{
echo "[Processing $file]\n";
$fp = fopen($file,'r');
$old = fread($fp,filesize($file));
fclose($fp);
if (!$old)
{
echo "WARNING: problem reading $file, skipping\n";
continue;
}
$new = apply($old);
$fp = fopen($file,'w');
$res = fwrite($fp,$new);
fclose($fp);
if (!$res)
{
echo "WARNING: problem writing $file, file might be damaged\n";
continue;
}
}
/* Utility functions: */
function all_xml_files($startdir)
{
$startdir = ereg_replace('/+$','',$startdir);
//echo "\$startdir = $startdir\n";
$entries = array();
$handle=opendir($startdir);
while ($file = readdir($handle))
{
$ffile = "$startdir/$file"; // full file(path)
//echo "$file\n";
if (ereg('\.xml$',$file))
$entries[] = $ffile;
if ($file{0} != '.' && is_dir($ffile))
$entries = array_merge($entries,all_xml_files($ffile));
}
closedir($handle);
return $entries;
}
Index: phpdoc/scripts/tfn.php
+++ phpdoc/scripts/tfn.php
<?php
// For use in process.php
// true,false,null -> entities
function apply($input)
{
$from = '/([^a-zA-Z$._-])(true|false|null)([^a-zA-Z$_-])/i';
$to = "\\1&\\2;\\3";
$lines = explode("\n",$input);
$active = TRUE;
foreach ($lines as $nr => $line)
{
$active = $active && !ereg('<programlisting',$line);
$active = $active || ereg('</programlisting',$line);
if ($active)
$lines[$nr] = preg_replace( $from , $to , $line );
}
$output = implode("\n",$lines);
// lowercase the entities:
$output = eregi_replace('&true;','&true;',$output);
$output = eregi_replace('&false;','&false;',$output);
$output = eregi_replace('&null;','&null;',$output);
$from =
'/(<constant>)?(<literal>)?&(true|false|null);(<\/constant>)?(<\/literal>)?/';
$to = "&\\3;";
$output = preg_replace($from,$to,$output);
$output = ereg_replace('<type>&null;</type>','<type>null</type>',$output);
return $output;
}