cvs: phpdoc /scripts extensions.xml.php

From: 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); - -} ?>

« previous php.doc (#969369898) next »