3 * Builds Indexlists with the result from the
\r
5 * @author Ulf Wendel <ulf.wendel@redsys.de>
\r
6 * @version $Id: PhpdocIndexer.php,v 1.2 2000/12/03 22:37:37 uw Exp $
\r
8 class PhpdocIndexer extends PhpdocObject {
\r
11 * Array of all packages.
\r
15 var $packages = array();
\r
18 * Current classtree.
\r
22 var $classtree = array();
\r
25 * Current modulegroup.
\r
29 var $modulegroup = array();
\r
32 * Array of all elements (functions, variables, constant, included files, classes, packages).
\r
36 var $elements = array();
\r
39 * Array of fields that get added to the elementlist
\r
43 var $elementFields = array("functions", "variables", "consts", "uses");
\r
46 * Adds a class to the index lists (elements, packages, classtree).
\r
52 function addClass(&$class) {
\r
54 $package = isset($class["package"]) ? $class["package"] : "No Package specified";
\r
55 $this->packages[$package]["classes"][] = $class["name"];
\r
56 $this->classtree[$class["name"]] = (isset($class["subclasses"])) ? $class["subclasses"] : array();
\r
57 $this->addElements($class, "class");
\r
59 } // end func addClass
\r
62 * Adds a module to the index lists (elements, packages, classtree).
\r
68 function addModule(&$module) {
\r
70 $package = isset($module["package"]) ? $module["package"] : "No Package specified";
\r
71 $this->packages[$package]["modules"][] = $module["name"];
\r
72 $this->modulegroup[$module["group"]][] = $module["name"];
\r
73 $this->addElements($module, "module");
\r
75 } // end func addModule
\r
78 * Returns the current classtree and resets the internal classtree field.
\r
81 * @return array $classtree
\r
83 function getClasstree() {
\r
85 $data = $this->classtree;
\r
86 $this->classtree = array();
\r
89 } // end func getClasstree
\r
92 * Returns the current modulegroup and resets the internal modulegroup field.
\r
95 * @return array $modulegroup
\r
97 function getModulegroup() {
\r
99 $data = $this->modulegroup;
\r
100 $this->modulegroup = array();
\r
103 } // end func getModulegroup
\r
106 * Returns the package list and resets the internal package field.
\r
109 * @return array $packages
\r
111 function getPackages() {
\r
113 reset($this->packages);
\r
114 while (list($package, )=each($this->packages))
\r
115 $this->elements[substr($package, 0, 1)][$package][] = array(
\r
116 "type" => "package",
\r
121 $data = $this->packages;
\r
122 $this->packages = array();
\r
125 } // end func getPackages
\r
128 * Returns the element index list and resets the internal elements field.
\r
131 * @return array $elements
\r
133 function getElementlist() {
\r
135 $data = $this->elements;
\r
136 $this->elements = array();
\r
138 } // end func getElementlist
\r
141 * Adds an element to the elementlist.
\r
143 * @param string Element type: class, module.
\r
145 function addElements(&$elements, $type) {
\r
147 $index = substr($elements["name"], 0, 1);
\r
148 $elname = $elements["name"];
\r
149 $this->elements[$index][$elname][] = array(
\r
151 "sdesc" => (isset($elements["sdesc"])) ? $elements["sdesc"] : "",
\r
153 "sourcetype" => $type
\r
156 reset($this->elementFields);
\r
157 while (list($k, $field) = each($this->elementFields)) {
\r
158 if (!isset($elements[$field]))
\r
161 reset($elements[$field]);
\r
162 while (list($name, $data) = each($elements[$field])) {
\r
165 if ("variables" == $field) {
\r
167 $index = substr($data["name"], 1, 1);
\r
168 $name = $data["name"];
\r
170 } else if ("uses" == $field) {
\r
172 $index = substr($data["file"], 0, 1);
\r
173 $name = $data["file"];
\r
177 $index = substr($data["name"], 0, 1);
\r
178 $name = $data["name"];
\r
182 $this->elements[$index][$name][] = array(
\r
184 "sdesc" => (isset($data["sdesc"])) ? $data["sdesc"] : "",
\r
185 "source" => $elname,
\r
186 "sourcetype" => $type
\r
193 } // end func addElements
\r
195 } // end class PhpdocIndexer
\r