cvs: phpdoc /scripts extensions.xml.php
| From: | Nuno Lopes | Date: | Mon, 05 Sep 2005 18:03:25 +0000 |
| Subject: | cvs: phpdoc /scripts extensions.xml.php | ||
| Groups: | php.doc | ||
| Request: | Send a blank email to phpdoc+get-969369898@lists.php.net to get a copy of this message | ||
nlopess Mon Sep 5 14:03:25 2005 EDT
Modified files:
/phpdoc/scripts extensions.xml.php
Log:
major rewrite of the output part, as agreeded yesterday.
now it uses a simplexml iterator, that makes it respect the order in the file
#it has a nice bug however :) it removes the entities. if anyone knows how to make libxml
_not_remove nor replace the entities please tell me ;)
http://cvs.php.net/diff.php/phpdoc/scripts/extensions.xml.php?r1=1.2&r2=1.3&ty=u
Index: phpdoc/scripts/extensions.xml.php
diff -u phpdoc/scripts/extensions.xml.php:1.2 phpdoc/scripts/extensions.xml.php:1.3
--- phpdoc/scripts/extensions.xml.php:1.2 Mon Sep 5 11:54:51 2005
+++ phpdoc/scripts/extensions.xml.php Mon Sep 5 14:03:23 2005
@@ -16,7 +16,7 @@
| Authors: Nuno Lopes <nlopess@php.net> |
+----------------------------------------------------------------------+
- $Id: extensions.xml.php,v 1.2 2005/09/05 15:54:51 nlopess Exp $
+ $Id: extensions.xml.php,v 1.3 2005/09/05 18:03:23 nlopess Exp $
*/
@@ -95,195 +95,64 @@
}
-uksort($Purpose, 'sort_purpose');
-ksort($Membership);
-ksort($State);
// ---------- generate the text to write -------------
-$write = <<< XML
-<?xml version="1.0" encoding="utf-8"?>
-<!-- \$Revision: 1.2 $ -->
-
-<!--
- DO NOT TRANSLATE THIS FILE! All the content that is displayed
- on the extension categorization page in your translated manual
- can be translated in extensions.ent
--->
+$simplexml = simplexml_load_file("$basedir/en/appendices/extensions.xml", null,
~LIBXML_DTDVALID);
-<appendix id="extensions">
- &extcat.intro;
+foreach ($simplexml as &$node) {
- <section id="extensions.purpose">
- &extcat.purpose;
+ $tmp = explode('.', (string)$node->attributes());
+ $section = ucfirst($tmp[1]); // Purpose, State or Membership
-XML;
-
-
-// purpose
-$old_toplevel = '';
-$level = 0;
-
-foreach ($Purpose as $name => $exts) {
-
- $tmp = explode('.', $name);
- $toplevel = $tmp[0];
-
- // 1 level purpose
- if (count($tmp) == 1) {
- $old_toplevel = '';
- $write .= close_tags($level == 2 ? 3 : $level);
- $write .= <<< XML
-
- <section id="refs.$name">
- &extcat.purpose.$name;
- <itemizedlist>
-
-XML;
+ foreach ($node as &$topnode) {
+ $tmp = explode('.', (string)$topnode->attributes());
+ $topname = $tmp[count($tmp)-1];
- $level = 1;
-
- // 2 level purpose
- } else {
-
- if ($old_toplevel != $toplevel) {
- $write .= close_tags($level == 2 ? 3 : $level);
- $write .= <<< XML
-
- <section id="refs.$toplevel">
- &extcat.purpose.$toplevel;
-
-XML;
- } else {
- $write .= close_tags($level);
- }
+ // this means that we have 2 levels (e.g. basic.*)
+ if ((bool)$topnode->children()) {
+ foreach ($topnode as &$lastnode) {
+ $tmp = explode('.', (string)$lastnode->attributes());
+ $name = $tmp[1].'.'.$tmp[2];
- $write .= <<< XML
+ $lastnode->itemizedlist = PHP_EOL; // clean the list
- <section id="refs.$name">
- &extcat.purpose.$name;
- <itemizedlist>
+ foreach ($Purpose[$name] as $ext => $dummy) {
+ $lastnode->itemizedlist .= <<< XML
+ <listitem><para><xref
linkend="$ext"/></para></listitem>
XML;
- $old_toplevel = $toplevel;
- $level = 2;
- }
-
-
- foreach ($exts as $ext => $dummy) {
- $write .= indent($level, " <listitem><para><xref
linkend=\"$ext\"/></para></listitem>" . PHP_EOL);
- }
+ }
- $write .= indent($level, ' </itemizedlist>' . PHP_EOL);
-}
+ $lastnode->itemizedlist .= ' '; // make the output prettier
-$write .= close_tags($level) . ' </section>' . PHP_EOL;
+ }
+ } else { // just 1 level
+ $tmp = $$section;
-///--------end of purpose
-// membership
+ // we can get here as a father of 2 levels childs
+ if (empty($tmp[$topname])) continue;
-$write .= <<< XML
+ $topnode->itemizedlist = PHP_EOL; // clean the list
- <section id="extensions.state">
- &extcat.state;
+ foreach($tmp[$topname] as $ext => $dummy) {
+ $topnode->itemizedlist .= <<< XML
+ <listitem><para><xref
linkend="$ext"/></para></listitem>
XML;
+ }
+ $topnode->itemizedlist .= ' '; // make the output prettier
-foreach ($State as $type => $exts) {
-
- $write .= <<< XML
-
- <section id="extensions.state.$type">
- &extcat.state.$type;
- <itemizedlist>
-
-XML;
-
- foreach ($exts as $ext => $dummy) {
- $write .= " <listitem><para><xref
linkend=\"$ext\"/></para></listitem>".PHP_EOL;
- }
-
- $write .= <<< XML
- </itemizedlist>
- </section>
-
-XML;
-
-}
-
-$write .= " </section>".PHP_EOL;
-
-
-
-///--------end of membership
-// state
-
-$write .= <<< XML
-
- <section id="extensions.membership">
- &extcat.membership;
-
-XML;
-
-
-foreach ($Membership as $type => $exts) {
-
- $write .= <<< XML
-
- <section id="extensions.membership.$type">
- &extcat.membership.$type;
- <itemizedlist>
-
-XML;
-
- foreach ($exts as $ext => $dummy) {
- $write .= " <listitem><para><xref
linkend=\"$ext\"/></para></listitem>".PHP_EOL;
+ } //end of 1 level handling
}
-
- $write .= <<< XML
- </itemizedlist>
- </section>
-
-XML;
-
}
-$write .= " </section>".PHP_EOL;
-
-
-// the end :)
-
-$write .= <<< XML
-</appendix>
-
-<!-- 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
--->
-
-XML;
-
-file_put_contents("$basedir/en/appendices/extensions.xml", $write);
+$xml = strtr(html_entity_decode($simplexml->asXML()), array("\r\n" =>
"\n", "\r" => PHP_EOL, "\n" => PHP_EOL));
+file_put_contents("$basedir/en/appendices/extensions.xml", $xml);
// print the debug messages:
@@ -302,54 +171,4 @@
print_r($debug['bogus-membership']);
}
-
-
-
-function indent($i, $txt) {
- return ($i==2 ? ' ' : '') . $txt;
-}
-
-
-// close XML tags, based on the level
-function close_tags($i) {
-
- if ($i == 1) {
- return <<< XML
- </section>
-
-XML;
-
- } elseif ($i == 2) {
- return <<< XML
- </section>
-
-XML;
- } elseif ($i == 3) {
- return <<< XML
- </section>
-
- </section>
-
-XML;
- }
-}
-
-
-// use this special function to sort the purpose to put the 'xx.other' at last
-function sort_purpose($a, $b) {
-
- if ($a == $b) return 0;
- $aa = explode('.', $a);
- $bb = explode('.', $b);
-
- if (count($aa) == 1 || count($bb) == 1)
- return strcmp($a, $b);
-
- // put .other at last
- if ($aa[1] == 'other' && $aa[0] == $bb[0]) return 1;
- if ($bb[1] == 'other' && $aa[0] == $bb[0]) return -1;
-
- return strcmp($a, $b);
-
-}
?>