%s\n", highlight_string($m[1], true));
}
function mf($f, &$m)
{
return preg_match_all(
'/\/\* *\{\{\{ *proto (.*?)(\n|$)(.*?)PHP_(?:FUNCTION|METHOD)\((.*?)\)/s',
file_get_contents($f), $m);
}
function ff($t)
{
$t = preg_replace('/^ \* /m', '', trim($t, "*/ \n"));
$t = preg_replace_callback('/(\<\?php.*?\?\>)/s', 'hl', $t);
$t = nl2br(preg_replace('/\n *\* */', "\n", $t));
$t = preg_replace('/(\
\n)+\
(\
\n)+/', '', $t); $t = preg_replace('/(\
\n)+\<\/pre\>(\
\n)+/', '', $t); return sprintf('
%s
', ltrim($t, ' *')); } $preface = <<<_PREFACEFunction Summary of ext/%s _PREFACE; $footer = <<<_FOOTERGenerated at: %s
_FOOTER; if ($_SERVER['argc'] < 2) { die("Usage: {$_SERVER['argv'][0]}[ ...]\n"); } printf($preface, basename(getcwd())); foreach (array_slice($_SERVER['argv'], 1) as $f) { if (mf($f, $m)) { printf(" %s
\n", basename($f)); foreach ($m[1] as $i => $p) { printf("%s
\n%s\n", str_replace(', ', '_', $m[4][$i]), $p, ff($m[3][$i])); } print "
\n"; } } printf($footer, date('r')); ?>