home *** CD-ROM | disk | FTP | other *** search
/ Total Network Tools 2002 / NextStepPublishing-TotalNetworkTools2002-Win95.iso / Archive / Web Server / PHP.EXE / pear / PHPDoc / xmlexporter / PhpdocXMLIndexExporter.php < prev    next >
Encoding:
PHP Script  |  2001-02-18  |  6.4 KB  |  192 lines

  1. <?php
  2. /**
  3. * Creates XML index files.
  4. *
  5. * @version $Id: PhpdocXMLIndexExporter.php,v 1.3 2001/02/18 16:53:00 uw Exp $
  6. */
  7. class PhpdocXMLIndexExporter extends PhpdocXMLExporter {
  8.  
  9.     /**
  10.     * Chapter tag attributes
  11.     *
  12.     * @var  array
  13.     */
  14.     var $chapterAttributes = array( "name" => "CDATA" );
  15.     
  16.     /**
  17.     * Element tag attributes.
  18.     *
  19.     * @var  array()
  20.     */
  21.     var $elementAttributes    = array(
  22.                                         "type"          => "CDATA",
  23.                                         "source"        => "CDATA", 
  24.                                         "sourcetype"    => "CDATA" 
  25.                                     );
  26.     /**
  27.     * Just call the parent class constructor
  28.     */
  29.     function PhpdocXMLIndexExporter() {
  30.         $this->PhpdocXMLExporter();
  31.     } // end constructor
  32.     
  33.     /**
  34.     * Exports a modulegroup.
  35.     *
  36.     * @param    array
  37.     * @access   public
  38.     */
  39.     function exportModulegroup(&$modulegroup) {
  40.     
  41.         $this->xmlwriter->free();
  42.         
  43.         $this->xmlwriter->addXML('<?xml version="1.0"?>');
  44.         $this->xmlwriter->startElement("phpdoc");
  45.  
  46.         reset($modulegroup);
  47.         list($group, $modules) = each($modulegroup);
  48.         $attribs = array( "name" => array( "type"    => "CDATA", "value"    => $group) );
  49.         $this->xmlwriter->startElement("modulegroup", "", $attribs);
  50.         
  51.         reset($modules);
  52.         while (list($k, $module) = each($modules))
  53.             $this->xmlwriter->addElement("module", "", array( "name" => array( "type" => "CDATA", "value" => $module )) );
  54.         
  55.         $this->xmlwriter->endElement("modulegroup");
  56.         $this->xmlwriter->endElement("phpdoc");
  57.         
  58.         $group = $this->nameToUrl($group);
  59.         $this->xmlwriter->export($this->path . "modulegroup_$group.xml");
  60.         $this->xmlwriter->free();
  61.         
  62.     } // end func exportModulegroup
  63.     
  64.     /**
  65.     * Exports a packagelist
  66.     * 
  67.     * @param    array
  68.     * @access   public
  69.     */
  70.     function exportPackagelist(&$packagelist) {
  71.     
  72.         $this->xmlwriter->free();
  73.         
  74.         $this->xmlwriter->addXML('<?xml version="1.0"?>');
  75.         $this->xmlwriter->startElement("phpdoc");
  76.         $this->xmlwriter->startElement("packagelist");
  77.         
  78.         reset($packagelist);
  79.         while (list($package, $elementlist)=each($packagelist)) {
  80.         
  81.             $attribs = array( "name" => array("type" => "CDATA", "value" => $package) );
  82.             $this->xmlwriter->startElement("package", "", $attribs);
  83.             
  84.             reset($elementlist);
  85.             while (list($type, $elements) = each($elementlist)) {
  86.                 
  87.                 $container = ("classes" == $type) ? "class" : "module";
  88.                 while (list($k, $element) = each($elements)) {
  89.                     
  90.                     $attribs = array( "name" => array("type" => "CDATA", "value" => $element));
  91.                     $this->xmlwriter->addElement($container, "", $attribs);
  92.                                         
  93.                 }
  94.                     
  95.             }
  96.             
  97.             $this->xmlwriter->endElement("package");
  98.             
  99.         } 
  100.         
  101.         $this->xmlwriter->endElement("packagelist");
  102.         $this->xmlwriter->endElement("phpdoc");
  103.         $this->xmlwriter->export($this->path."packagelist.xml");
  104.         $this->xmlwriter->free();
  105.         
  106.     } // end func exportPackagelist
  107.     
  108.     /**
  109.     * Exports a classtree
  110.     * 
  111.     * @param    array   Classtree
  112.     * @param    string  Name of the baseclass of the classtree
  113.     * @access   public
  114.     */
  115.     function exportClasstree(&$classtree, $baseclass) {
  116.     
  117.         $this->xmlwriter->free();
  118.         
  119.         $this->xmlwriter->addXML('<?xml version="1.0"?>');
  120.         $this->xmlwriter->startElement("phpdoc");
  121.         
  122.         $attribs = array("baseclass" => array("type"    => "CDATA", "value" => $baseclass));
  123.         $this->xmlwriter->startElement("classtree", "", $attribs);            
  124.         
  125.         reset($classtree);
  126.         while (list($parentclass, $subclasses) = each($classtree)) {
  127.         
  128.             $attribs = array("name" => array("type"    => "CDATA", "value" => $parentclass));
  129.             $this->xmlwriter->startElement("class", "", $attribs);
  130.             
  131.             reset($subclasses);
  132.             while (list($subclass, $v) = each($subclasses)) 
  133.                 $this->xmlwriter->addElement("subclass", $subclass);
  134.                 
  135.             $this->xmlwriter->endElement("class");
  136.             
  137.         }
  138.         
  139.         $this->xmlwriter->endElement("classtree");
  140.         $this->xmlwriter->endElement("phpdoc");
  141.         
  142.         $baseclass = $this->nameToURL($baseclass);
  143.         $this->xmlwriter->export($this->path . "classtree_$baseclass.xml");
  144.         $this->xmlwriter->free();
  145.         
  146.     } // end func exportClasstree
  147.     
  148.     /**
  149.     * Exports a list of all elements
  150.     * 
  151.     * @param    array
  152.     * @access   public
  153.     */
  154.     function exportElementlist(&$elementlist) {
  155.     
  156.         $this->xmlwriter->free();
  157.         
  158.         $this->xmlwriter->addXML('<?xml version="1.0"?>');
  159.         $this->xmlwriter->startElement("phpdoc");
  160.         $this->xmlwriter->startElement("index");            
  161.         
  162.         reset($elementlist);
  163.         while (list($index, $elements) = each($elementlist)) {
  164.         
  165.             $attrib = array( "char" => array( "type" => "CDATA", "value" => $index ) );
  166.             $this->xmlwriter->startElement("chapter", "", $attrib);
  167.  
  168.             reset($elements);
  169.             while (list($name, $element) = each($elements)) {
  170.                 
  171.                 reset($element);
  172.                 while (list($k, $eldata) = each($element)) {
  173.                     $attribs = $this->getAttributes($eldata, $this->elementAttributes);
  174.                     $attribs["name"] = array( "type" => "CDATA", "value" => $name );
  175.                     $this->xmlwriter->addElement("element", $eldata["sdesc"], $attribs);
  176.                 }
  177.                 
  178.             }
  179.  
  180.             $this->xmlwriter->endElement("chapter");
  181.         }
  182.         
  183.         $this->xmlwriter->endElement("index");
  184.         $this->xmlwriter->endElement("phpdoc");
  185.         
  186.         $this->xmlwriter->export($this->path . "elementlist.xml");
  187.         $this->xmlwriter->free();
  188.  
  189.     } // end func exportElementlist
  190.     
  191. } // end class PhpdocXMLIndexExporter
  192. ?>