hholzgra Sat Jan 14 15:12:16 2006 UTC
Added files:
/phpdoc/scripts zendapi_macros.php
Log:
generate doc templates from Zend macro definitions
http://cvs.php.net/viewcvs.cgi/phpdoc/scripts/zendapi_macros.php?view=markup&rev=1.1
Index: phpdoc/scripts/zendapi_macros.php
+++ phpdoc/scripts/zendapi_macros.php
<?php
$overwrite = false;
$zend_include_dir = "../../php-src/Zend";
$zend_include_files = array("zend.h",
"zend_API.h",
"zend_objects_API.h",
"zend_hash.h",
"zend_list.h",
"zend_variables.h",
"zend_unicode.h",
"zend_operators.h");
$macro_prefixes = array("ZEND_", "Z_", "RETURN_");
$output_dir = "../en/internals/zendapi/macros/";
foreach ($zend_include_files as $infile) {
echo "processing $zend_include_dir/$infile\n";
$in = fopen("$zend_include_dir/$infile", "r");
if (!$in) {
die("can't open $zend_include_dir/$infile");
}
// loop over all lines in the file
while (!feof($in)) {
$line = trim(fgets($in));
// now check for all known macro prefixes
foreach ($macro_prefixes as $prefix) {
// does this line match a macro definition?
if (preg_match("|#define\\s*($prefix\\w+)\\s*\\((.*)\\)|U", $line,
$matches)) {
// get macro name and parameter list from the matches
$macro = $matches[1];
$params = preg_split('|,\s+|', $matches[2]);
// path to output file
$outfile = $output_dir."/".$macro.".xml";
// do not overwrite existing files unless specified
if ($overwrite || !file_exists($outfile)) {
// now write the template file to
phpdoc/en/internals/zendapi/macros
ob_start();
echo '<?xml version="1.0" encoding="iso-8859-1"?>'."\n";
// take revision from existing file if any, else it is 1.1
if (!$overwrite || !file_exists($outfile)) {
echo "<!-- $"."Revision: 1.1 $ -->\n";
} else {
foreach (file($outfile) as $line) {
if (strstr($line, 'Revision: ')) {
echo $line;
break;
}
}
}
?>
<refentry id="zend-macro.<?php echo str_replace("_", "-", $macro); ?>">
<refnamediv>
<refname><?php echo $macro; ?></refname>
<refpurpose>...</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>???</type><methodname><?php echo $macro; ?></methodname>
<?php
foreach($params as $param) {
echo "
<methodparam><type>???</type><parameter>$param</parameter></methodparam>\n";
}
?>
</methodsynopsis>
<para>
...
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<?php
foreach($params as $param) {
?>
<varlistentry>
<term><parameter><?php echo $param; ?></parameter></term>
<listitem>
<para>
...
</para>
</listitem>
</varlistentry>
<?php
}
?>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
...
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
<?php
file_put_contents($outfile, ob_get_clean());
}
}
}
}
}
?>