File: PhpdocIndexer.php

package info (click to toggle)
php4 4.0.3pl1-0potato3
  • links: PTS
  • area: main
  • in suites: potato
  • size: 15,168 kB
  • ctags: 20,556
  • sloc: ansic: 155,237; php: 10,827; sh: 9,608; yacc: 1,874; lex: 1,742; makefile: 788; java: 424; awk: 359; cpp: 335; perl: 181; xml: 57
file content (190 lines) | stat: -rw-r--r-- 4,560 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?php
/**
* Builds Indexlists with the result from the  
*
* @author		Ulf Wendel	<ulf.wendel@redsys.de>
* @version	0.3alpha
*/
class PhpdocIndexer extends PhpdocObject {

	/**
	* Array of all packages.
	* @var $packages
	*/
	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
	*/
	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	$elements
	*/
	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
?>