home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2001 August
/
PCWorld_2001-08_cd.bin
/
Komunikace
/
phptriad
/
phptriadsetup2-11.exe
/
php
/
pear
/
PHPDoc
/
indexer
/
PhpdocIndexer.php
Wrap
PHP Script
|
2001-02-18
|
6KB
|
196 lines
<?php
/**
* Builds Indexlists with the result from the
*
* @author Ulf Wendel <ulf.wendel@redsys.de>
* @version $Id: PhpdocIndexer.php,v 1.3 2001/02/18 15:48:48 uw Exp $
*/
class PhpdocIndexer extends PhpdocObject {
/**
* Array of all packages.
*
* @var array
*/
var $packages = array();
/**
* Current classtree.
*
* @var array
*/
var $classtree = array();
/**
* Current modulegroup.
*
* @var array
*/
var $modulegroup = array();
/**
* Array of all elements (functions, variables, constant, included files, classes, packages).
*
* @var array
*/
var $elements = array();
/**
* Array of fields that get added to the elementlist
*
* @var array
*/
var $elementFields = array("functions", "variables", "consts", "uses");
/**
* Adds a class to the index lists (elements, packages, classtree).
*
* @param array
* @access public
* @see addModule()
*/
function addClass(&$class) {
$package = isset($class["package"]) ? $class["package"] : "No Package specified";
$this->packages[$package]["classes"][] = $class["name"];
$this->classtree[$class["name"]] = (isset($class["subclasses"])) ? $class["subclasses"] : array();
$this->addElements($class, "class");
} // end func addClass
/**
* Adds a module to the index lists (elements, packages, classtree).
*
* @param array
* @access public
* @see addClass()
*/
function addModule(&$module) {
$package = isset($module["package"]) ? $module["package"] : "No Package specified";
$this->packages[$package]["modules"][] = $module["name"];
$this->modulegroup[$module["group"]][] = $module["name"];
$this->addElements($module, "module");
} // end func addModule
/**
* Returns the current classtree and resets the internal classtree field.
*
* @access public
* @return array $classtree
*/
function getClasstree() {
$data = $this->classtree;
$this->classtree = array();
return $data;
} // end func getClasstree
/**
* Returns the current modulegroup and resets the internal modulegroup field.
*
* @access public
* @return array $modulegroup
*/
function getModulegroup() {
$data = $this->modulegroup;
$this->modulegroup = array();
return $data;
} // end func getModulegroup
/**
* Returns the package list and resets the internal package field.
*
* @access public
* @return array $packages
*/
function getPackages() {
reset($this->packages);
while (list($package, ) = each($this->packages))
$this->elements[substr($package, 0, 1)][$package][] = array(
"type" => "package",
"sdesc" => "",
"source" => "",
"sourcetype" => ""
);
$data = $this->packages;
$this->packages = array();
return $data;
} // end func getPackages
/**
* Returns the element index list and resets the internal elements field.
*
* @access public
* @return array
*/
function getElementlist() {
$data = $this->elements;
$this->elements = array();
return $data;
} // end func getElementlist
/**
* Adds an element to the elementlist.
* @param array
* @param string Element type: class, module.
*/
function addElements(&$elements, $type) {
$index = substr($elements["name"], 0, 1);
$elname = $elements["name"];
$this->elements[$index][$elname][] = array(
"type" => $type,
"sdesc" => (isset($elements["sdesc"])) ? $elements["sdesc"] : "",
"source" => "",
"sourcetype" => $type
);
reset($this->elementFields);
while (list($k, $field) = each($this->elementFields)) {
if (!isset($elements[$field]))
continue;
reset($elements[$field]);
while (list($name, $data) = each($elements[$field])) {
if ("variables" == $field) {
$index = substr($data["name"], 1, 1);
$name = $data["name"];
} else if ("uses" == $field) {
$index = substr($data["file"], 0, 1);
$name = $data["file"];
} else {
$index = substr($data["name"], 0, 1);
$name = $data["name"];
}
$this->elements[$index][$name][] = array(
"type" => $field,
"sdesc" => (isset($data["sdesc"])) ? $data["sdesc"] : "",
"source" => $elname,
"sourcetype" => $type
);
}
}
} // end func addElements
} // end class PhpdocIndexer
?>