cvs: php4 /pear/PHPDoc/renderer PhpdocRendererObject.php /pear/PHPDoc/renderer/html PhpdocHTMLClassRenderer.php PhpdocHTMLDocumentRenderer.php
PhpdocHTMLIndexRenderer.php PhpdocHTMLModuleRenderer.php PhpdocHTMLRenderer.php PhpdocHTMLRendererManager.php PhpdocHTMLWarningRenderer.php
/pear/PHPDoc/renderer/html/templates class.html classtree.html module.html
| From: | Ulf Wendel | Date: | Sun, 03 Dec 2000 14:36:02 +0000 |
| Subject: | cvs: php4 /pear/PHPDoc/renderer PhpdocRendererObject.php /pear/PHPDoc/renderer/html PhpdocHTMLClassRenderer.php PhpdocHTMLDocumentRenderer.php PhpdocHTMLIndexRenderer.php PhpdocHTMLModuleRenderer.php PhpdocHTMLRenderer.php PhpdocHTMLRendererManager.php PhpdocHTMLWarningRenderer.php /pear/PHPDoc/renderer/html/templates class.html classtree.html module.html |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-2878@lists.php.net to get a copy of this message | ||
uw Sun Dec 3 06:36:02 2000 EDT
Modified files:
/php4/pear/PHPDoc/renderer PhpdocRendererObject.php
/php4/pear/PHPDoc/renderer/html PhpdocHTMLClassRenderer.php
PhpdocHTMLDocumentRenderer.php
PhpdocHTMLIndexRenderer.php
PhpdocHTMLModuleRenderer.php
PhpdocHTMLRenderer.php
PhpdocHTMLRendererManager.php
PhpdocHTMLWarningRenderer.php
/php4/pear/PHPDoc/renderer/html/templates class.html classtree.html
module.html
Log:
- fixed a @see function() bug
Addes a pair of braches "()" to the function details anchor name in the class and module
template.
- reformatted source
Sorry for this huge commit. Please make sure that you use "unix format" when saving
files.
Added spaces around most operators. Replaced some spaces with tabs. The tabsize in PHPDoc is 2
spaces.
Do not replace tabs with spaces.
Index: php4/pear/PHPDoc/renderer/PhpdocRendererObject.php diff -u php4/pear/PHPDoc/renderer/PhpdocRendererObject.php:1.2 php4/pear/PHPDoc/renderer/PhpdocRendererObject.php:1.3 --- php4/pear/PHPDoc/renderer/PhpdocRendererObject.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/PhpdocRendererObject.php Sun Dec 3 06:36:00 2000 @@ -1,15 +1,21 @@ -<?php -class PhpdocRendererObject extends PhpdocObject { - - var $warn; - - var $accessor; - - /** - * Extension for generated files. - * @var string $file_extension - */ - var $file_extension = ".html"; - -} // end class PhpdocRendererObject +<?php +/** +* Superclass of all Renderer. +* +* Derive all custom renderer from this class. +* +*/ +class PhpdocRendererObject extends PhpdocObject { + + var $warn; + + var $accessor; + + /** + * Extension for generated files. + * @var string $file_extension + */ + var $file_extension = ".html"; + +} // end class PhpdocRendererObject ?> Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,368 +1,385 @@ -<?php -/** -* Renders classes. -*/ -class PhpdocHTMLClassRenderer extends PhpdocHTMLDocumentRenderer { - - /** - * Internal array of " " strings to format HTML output. - * @var array $indent - */ - var $indent = array(); - - /** - * Array of variables found in the xml document. - * @var array $variables - */ - var $variables = array(); - - /** - * Sets the xml and template root directory. - * - * @param string XML file path - * @param string Template file path - * @param string Name of the current application - * @see setPath(), setTemplateRoot() - */ - function PhpdocHTMLClassRenderer($path, $templateRoot, $application, $extension = ".html") { - - $this->setPath($path); - $this->setTemplateRoot($templateRoot); - $this->application = $application; - $this->file_extension = $extension; - - $this->accessor = new PhpdocClassAccessor; - $this->tpl = new IntegratedTemplate($this->templateRoot); - $this->fileHandler = new PhpdocFileHandler; - - } // end constructor - - /** - * Renders a class - * @param string XML source file - * @param string Name of the HTML target file. - * @access public - */ - function renderClass($xmlfile, $htmlfile="") { - - $this->tpl->loadTemplatefile("class.html"); - - if (""==$htmlfile) - $htmlfile = substr($xmlfile, 6, -4).$this->file_extension; - - $this->accessor->loadXMLFile($this->path.$xmlfile); - - $this->renderSubclasses(); - $this->renderInherited(); - $this->renderFunctions(); - $this->renderVariables(); - $this->renderUses(); - $this->renderConstants(); - - $class = $this->accessor->getClassdata(); - - $tplvars = array(); - - $tplvars["CLASS_FILE"] = $class["file"]["value"]; - $tplvars["CLASS_NAME"] = $class["name"]; - $tplvars["CLASS_ACCESS"] = $class["access"]; - $tplvars["CLASS_PACKAGE"] = $class["package"]; - - if (""!=$class["extends"]) - $tplvars["CLASS_EXTENDS"] = sprintf('extends <a href="%s">%s</a>', - $class["extends"].$this->file_extension, - $class["extends"] - ); - - $tplvars["CLASS_UNDOC"] = ("true" == $class["undoc"]) ? $this->undocumented : ""; - - $tplvars["CLASS_ABSTRACT"]= ("true" == $class["abstract"]) ? "abstract" : ""; - $tplvars["CLASS_STATIC"] = ("true" == $class["static"]) ? "static" : ""; - $tplvars["CLASS_FINAL"] = ("true" == $class["final"]) ? "final" : ""; - - $tplvars["CLASS_TREE"] = $this->getClasstree($class["name"]); - - if (isset($class["doc"]["link"])) - $this->renderLinks($class["doc"]["link"], "class_"); - - if (isset($class["doc"]["author"])) - $this->renderAuthors($class["doc"]["author"], "class_"); - - if (isset($class["doc"]["see"])) - $this->renderSee($class["doc"]["see"], "class_"); - - $fields = array( "version", "deprecated", "copyright" , - "since", "magic"); - reset($fields); - while (list($k, $field)=each($fields)) - if (isset($class["doc"][$field])) { - $this->tpl->setCurrentBlock("class_".strtolower($field)); - $this->tpl->setVariable(strtoupper($field), $class["doc"][$field]["value"]); - $this->tpl->parseCurrentBlock(); - } - - $fields = array( "description", "shortdescription" ); - reset($fields); - while (list($k, $field)=each($fields)) - if (isset($class["doc"][$field])) - $tplvars["CLASS_".strtoupper($field)] = $this->encode($class["doc"][$field]["value"]); - - $this->tpl->setCurrentBlock("__global__"); - $this->tpl->setVariable($tplvars); - $this->tpl->setVariable("APPNAME", $this->application); - - $this->fileHandler->createFile($this->path.$htmlfile, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderClass - - /** - * Renders a list of inherited elements. - * @see renderInheritedElements() - */ - function renderInherited() { - - $this->renderInheritedElements( $this->accessor->getInheritedFunctions(), - "inheritedfunctions", - "function" - ); - - $this->renderInheritedElements( $this->accessor->getInheritedVariables(), - "inheritedvariables", - "variable" - ); - - $this->renderInheritedElements( $this->accessor->getInheritedConstants(), - "inheritedconstants", - "constant" - ); - - $this->renderInheritedElements( $this->accessor->getInheritedUses(), - "inheriteduses", - "uses" - ); - - } // end func renderInherited - - /** - * Renders a list of a certain inherited element. - * @see renderInheritedElements() - */ - function renderInheritedElements($inherited, $block, $type) { - - if (0==count($inherited)) - return; - - $this->tpl->setCurrentBlock($block); - reset($inherited); - while (list($source, $elements)=each($inherited)) { - - $value = ""; - reset($elements); - while (list($k, $element)=each($elements)) - $value.= sprintf('<a href="%s#%s_%s">%s</a>, ', - $source.$this->file_extension, - $type, - $element, - $element - ); - $value = substr($value, 0, -2); - - $this->tpl->setVariable("SOURCE", $source); - $this->tpl->setVariable("ELEMENTS", $value); - $this->tpl->parseCurrentBlock(); - } - - } // end func renderInheritedElements - - /** - * Renders a list of direct known subclasses. - */ - function renderSubclasses() { - - $subclasses = $this->accessor->getSubclasses(); - if (0==count($subclasses)) - return; - - $elements = ""; - reset($subclasses); - while (list($k, $subclass)=each($subclasses)) - $elements.= sprintf('<a href="%s">%s</a>, ', $subclass.$this->file_extension, $subclass); - - $elements = substr($elements, 0, -2); - - if (""!=$elements) { - - $this->tpl->setCurrentBlock("subclasses"); - $this->tpl->setVariable("ELEMENTS", $elements); - $this->tpl->parseCurrentBlock(); - - } - } // end func renderSubclasses - - /** - * Adds a summary and a detailed list of all variables to the template. - * @see renderVariableSummary(), renderVariableDetail() - */ - function renderVariables() { - - $this->variables["private"] = $this->accessor->getVariablesByAccess("private"); - $this->variables["public"] = $this->accessor->getVariablesByAccess("public"); - - if (0==count($this->variables["private"]) && 0==count($this->variables["public"])) - return; - - $this->renderVariableSummary(); - $this->renderVariableDetail(); - - $this->variables = array(); - - } // end func renderVariables - - /** - * Adds a summary of all variables to the template. - * - * The function assumes that there is a block named "variablesummary" and - * within it a block names "variablesummay_loop" in the template. - * - * @see renderVariableDetail() - */ - function renderVariableSummary() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->variables[$access])) - continue; - - $this->tpl->setCurrentBlock("variablesummary_loop"); - - reset($this->variables[$access]); - while (list($name, $variable)=each($this->variables[$access])) { - - $this->tpl->setVariable("NAME", $name); - $this->tpl->setVariable("TYPE", $variable["type"]); - - if (isset($variable["doc"]["shortdescription"])) - $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($variable["doc"]["shortdescription"]["value"])); - - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("variablesummary"); - $this->tpl->setVariable("ACCESS", ucfirst($access)); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderVariableSummary - - /** - * Adds a detailed list of all variables to the template. - * - * The function assumes that there is a block named "variabledetails" - * and within it a block names "variablesdetails_loop" in the template. - * - * @see renderVariableSummary() - */ - function renderVariableDetail() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->variables[$access])) - continue; - - reset($this->variables[$access]); - while (list($name, $variable)=each($this->variables[$access])) { - - $tplvars = array(); - $tplvars["NAME"] = $variable["name"]; - $tplvars["ACCESS"] = $variable["access"]; - $tplvars["TYPE"] = $variable["type"]; - $tplvars["VALUE"] = htmlentities($variable["value"]); - - if ("true"==$variable["undoc"]) - $tplvars["UNDOC"] = $this->undocumented; - - if ("true"==$variable["static"]) - $tplvars["STATIC"] = "static"; - - if ("true"==$variable["final"]) - $tplvars["FINAL"] = "final"; - - if (isset($variable["doc"]["shortdescription"])) - $tplvars["SHORTDESCRIPTION"] = $this->encode($variable["doc"]["shortdescription"]["value"]); - if (isset($variable["doc"]["description"])) - $tplvars["DESCRIPTION"] = $this->encode($variable["doc"]["description"]["value"]); - - $this->renderCommonDocfields("variabledetails_", $variable); - - $this->tpl->setCurrentBlock("variabledetails_loop"); - $this->tpl->setVariable($tplvars); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("variabledetails"); - $this->tpl->setVariable("ACCESS", ucfirst($access) ); - $this->tpl->parseCurrentBlock(); - } - - } // end func renderVariableDetail - - /** - * Returns a html string that shows the class tree. - * @param string name of the current class - * @return string HTML that shows the tree - */ - function getClasstree($class) { - - $path = $this->accessor->getClasstree(); - - $level = 0; - $num = count($path)-1; - - for ($i = $num; $i>=0; $i--) { - - $indent = $this->getIndent($level); - if ($level>0) - $value.= sprintf("%s |<br>%s+-- ", $indent, $indent); - $value.= sprintf('<a href="%s">%s</a><br>', - $path[$i].$this->file_extension, - $path[$i] - ); - $level++; - - } - - $indent = $this->getIndent($level); - if ($level>0) - $value.= sprintf("%s |<br>%s+-- ", $indent, $indent); - $value.= sprintf('%s<br>', $class); - - return $value; - } // end func getClasstree - - /** - * Returns a certain number of " "s. - * @param int number of " " required. - * @see $indent - * @return string A string with the requested number of nunbreakable html spaces - */ - function getIndent($level) { - - if (!isset($this->indent[$level])) { - - $html = ""; - for ($i=0; $i<$level; $i++) - $html.= " "; - - $this->indent[$level] = $html; - - } - - return $this->indent[$level]; - - } // end func getIndent - -} // end class PhpdocHTMLClassRenderer -?> +<?php +/** +* Renders classes. +*/ +class PhpdocHTMLClassRenderer extends PhpdocHTMLDocumentRenderer { + + /** + * Internal array of " " strings to format HTML output. + * + * @var array $indent + */ + var $indent = array(); + + /** + * Array of variables found in the xml document. + * + * @var array $variables + */ + var $variables = array(); + + /** + * Sets the xml and template root directory. + * + * @param string XML file path + * @param string Template file path + * @param string Name of the current application + * @see setPath(), setTemplateRoot() + */ + function PhpdocHTMLClassRenderer($path, $templateRoot, $application, $extension = ".html") { + + $this->setPath($path); + $this->setTemplateRoot($templateRoot); + $this->application = $application; + $this->file_extension = $extension; + + $this->accessor = new PhpdocClassAccessor; + $this->tpl = new IntegratedTemplate($this->templateRoot); + $this->fileHandler = new PhpdocFileHandler; + + } // end constructor + + /** + * Renders a class + * @param string XML source file + * @param string Name of the HTML target file. + * @access public + */ + function renderClass($xmlfile, $htmlfile = "") { + + $this->tpl->loadTemplatefile("class.html"); + if ("" == $htmlfile) + $htmlfile = substr($xmlfile, 6, -4) . $this->file_extension; + + $this->accessor->loadXMLFile($this->path.$xmlfile); + + $this->renderSubclasses(); + $this->renderInherited(); + $this->renderFunctions(); + $this->renderVariables(); + $this->renderUses(); + $this->renderConstants(); + + $class = $this->accessor->getClassdata(); + $tplvars = array(); + + $tplvars["CLASS_FILE"] = $class["file"]["value"]; + $tplvars["CLASS_NAME"] = $class["name"]; + $tplvars["CLASS_ACCESS"] = $class["access"]; + $tplvars["CLASS_PACKAGE"] = $class["package"]; + + if ("" != $class["extends"]) + $tplvars["CLASS_EXTENDS"] = sprintf('extends <a href="%s">%s</a>', + $class["extends"].$this->file_extension, + $class["extends"] + ); + + $tplvars["CLASS_UNDOC"] = ("true" == $class["undoc"]) ? $this->undocumented : ""; + + $tplvars["CLASS_ABSTRACT"] = ("true" == $class["abstract"]) ? "abstract" : ""; + $tplvars["CLASS_STATIC"] = ("true" == $class["static"]) ? "static" : ""; + $tplvars["CLASS_FINAL"] = ("true" == $class["final"]) ? "final" : ""; + + $tplvars["CLASS_TREE"] = $this->getClasstree($class["name"]); + + if (isset($class["doc"]["link"])) + $this->renderLinks($class["doc"]["link"], "class_"); + + if (isset($class["doc"]["author"])) + $this->renderAuthors($class["doc"]["author"], "class_"); + + if (isset($class["doc"]["see"])) + $this->renderSee($class["doc"]["see"], "class_"); + + $fields = array( "version", "deprecated", "copyright", "since", "magic"); + reset($fields); + while (list($k, $field) = each($fields)) + if (isset($class["doc"][$field])) { + $this->tpl->setCurrentBlock("class_".strtolower($field)); + $this->tpl->setVariable(strtoupper($field), $class["doc"][$field]["value"]); + $this->tpl->parseCurrentBlock(); + } + + $fields = array( "description", "shortdescription" ); + + reset($fields); + while (list($k, $field)=each($fields)) + if (isset($class["doc"][$field])) + $tplvars["CLASS_".strtoupper($field)] = $this->encode($class["doc"][$field]["value"]); + + $this->tpl->setCurrentBlock("__global__"); + $this->tpl->setVariable($tplvars); + $this->tpl->setVariable("APPNAME", $this->application); + + $this->fileHandler->createFile($this->path.$htmlfile, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderClass + + + + /** + * Renders a list of inherited elements. + * + * @see renderInheritedElements() + */ + function renderInherited() { + + $this->renderInheritedElements( $this->accessor->getInheritedFunctions(), + "inheritedfunctions", + "function" + ); + + $this->renderInheritedElements( $this->accessor->getInheritedVariables(), + "inheritedvariables", + "variable" + ); + + $this->renderInheritedElements( $this->accessor->getInheritedConstants(), + "inheritedconstants", + "constant" + ); + + $this->renderInheritedElements( $this->accessor->getInheritedUses(), + "inheriteduses", + "uses" + ); + + } // end func renderInherited + + /** + * Renders a list of a certain inherited element. + * + * @see renderInheritedElements() + */ + function renderInheritedElements($inherited, $block, $type) { + + if (0 == count($inherited)) + return; + + $this->tpl->setCurrentBlock($block); + + reset($inherited); + while (list($source, $elements) = each($inherited)) { + + $value = ""; + + reset($elements); + while (list($k, $element) = each($elements)) + $value .= sprintf('<a href="%s#%s_%s">%s</a>, ', + $source.$this->file_extension, + $type, + $element, + $element + ); + $value = substr($value, 0, -2); + + $this->tpl->setVariable("SOURCE", $source); + $this->tpl->setVariable("ELEMENTS", $value); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderInheritedElements + + /** + * Renders a list of direct known subclasses. + */ + function renderSubclasses() { + + $subclasses = $this->accessor->getSubclasses(); + if (0 == count($subclasses)) + return; + + $elements = ""; + reset($subclasses); + while (list($k, $subclass) = each($subclasses)) + $elements .= sprintf('<a href="%s">%s</a>, ', $subclass.$this->file_extension, $subclass); + + $elements = substr($elements, 0, -2); + + if ("" != $elements) { + + $this->tpl->setCurrentBlock("subclasses"); + $this->tpl->setVariable("ELEMENTS", $elements); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderSubclasses + + /** + * Adds a summary and a detailed list of all variables to the template. + * + * @see renderVariableSummary(), renderVariableDetail() + */ + function renderVariables() { + + $this->variables["private"] = $this->accessor->getVariablesByAccess("private"); + $this->variables["public"] = $this->accessor->getVariablesByAccess("public"); + + if (0 == count($this->variables["private"]) && 0 == count($this->variables["public"])) + return; + + $this->renderVariableSummary(); + $this->renderVariableDetail(); + + $this->variables = array(); + + } // end func renderVariables + + /** + * Adds a summary of all variables to the template. + * + * The function assumes that there is a block named "variablesummary" and + * within it a block names "variablesummay_loop" in the template. + * + * @see renderVariableDetail() + */ + function renderVariableSummary() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + + if (0 == count($this->variables[$access])) + continue; + + $this->tpl->setCurrentBlock("variablesummary_loop"); + + reset($this->variables[$access]); + while (list($name, $variable) = each($this->variables[$access])) { + + $this->tpl->setVariable("NAME", $name); + $this->tpl->setVariable("TYPE", $variable["type"]); + + if (isset($variable["doc"]["shortdescription"])) + $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($variable["doc"]["shortdescription"]["value"])); + + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("variablesummary"); + $this->tpl->setVariable("ACCESS", ucfirst($access)); + $this->tpl->parseCurrentBlock(); + + } + + } // end func renderVariableSummary + + /** + * Adds a detailed list of all variables to the template. + * + * The function assumes that there is a block named "variabledetails" + * and within it a block names "variablesdetails_loop" in the template. + * + * @see renderVariableSummary() + */ + function renderVariableDetail() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + + if (0 == count($this->variables[$access])) + continue; + + reset($this->variables[$access]); + while (list($name, $variable)=each($this->variables[$access])) { + + $tplvars = array(); + $tplvars["NAME"] = $variable["name"]; + $tplvars["ACCESS"] = $variable["access"]; + $tplvars["TYPE"] = $variable["type"]; + $tplvars["VALUE"] = htmlentities($variable["value"]); + + if ("true" == $variable["undoc"]) + $tplvars["UNDOC"] = $this->undocumented; + + if ("true" == $variable["static"]) + $tplvars["STATIC"] = "static"; + + if ("true" == $variable["final"]) + $tplvars["FINAL"] = "final"; + + if (isset($variable["doc"]["shortdescription"])) + $tplvars["SHORTDESCRIPTION"] = $this->encode($variable["doc"]["shortdescription"]["value"]); + + if (isset($variable["doc"]["description"])) + $tplvars["DESCRIPTION"] = $this->encode($variable["doc"]["description"]["value"]); + + $this->renderCommonDocfields("variabledetails_", $variable); + + $this->tpl->setCurrentBlock("variabledetails_loop"); + $this->tpl->setVariable($tplvars); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("variabledetails"); + $this->tpl->setVariable("ACCESS", ucfirst($access) ); + $this->tpl->parseCurrentBlock(); + + } + + } // end func renderVariableDetail + + /** + * Returns a html string that shows the class tree. + * + * @param string name of the current class + * @return string HTML that shows the tree + */ + function getClasstree($class) { + + $path = $this->accessor->getClasstree(); + $level = 0; + $num = count($path) - 1; + + for ($i = $num; $i >= 0; --$i) { + + $indent = $this->getIndent($level); + + if ($level > 0) + $value.= sprintf("%s |<br>%s+-- ", $indent, $indent); + + $value.= sprintf('<a href="%s">%s</a><br>', + $path[$i].$this->file_extension, + $path[$i] + ); + ++$level; + + } + + $indent = $this->getIndent($level); + + if ($level > 0) + $value.= sprintf("%s |<br>%s+-- ", $indent, $indent); + + $value.= sprintf('%s<br>', $class); + + return $value; + } // end func getClasstree + + /** + * Returns a certain number of " "s. + * + * @param int number of " " required. + * @see $indent + * @return string A string with the requested number of nunbreakable html spaces + */ + function getIndent($level) { + + if (!isset($this->indent[$level])) { + + $html = ""; + for ($i = 0; $i < $level; ++$i) + $html .= " "; + + $this->indent[$level] = $html; + + } + + return $this->indent[$level]; + } // end func getIndent + +} // end class PhpdocHTMLClassRenderer + +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,741 +1,739 @@ -<?php -/** -* Provides functioninality to render modules and classes. -*/ -class PhpdocHTMLDocumentRenderer extends PhpdocHTMLRenderer { - - /** - * Message displayed if an object lacks documentation. - * @var string $undocumented - * @access public - */ - var $undocmented = "Warning: documentation is missing."; - - /** - * Array of functions found in the xml document. - * @var array $functions - */ - var $functions = array(); - - /** - * Array of included files. - * @var array $uses - */ - var $uses = array(); - - /** - * Array of constants. - * @var array $constants - */ - var $constants = array(); - - /** - * Array of access modifiers. - * @var array $accessModifiers - */ - var $accessModifiers = array("public", "private"); - - /** - * Array of doc container fields that get mapped directly to templateblocks. - * @var array $simpleDocfields - * @see renderVariableDetail() - */ - var $simpleDocfields = array( - "VERSION" => "version", - "SINCE" => "since", - "DEPRECATED" => "deprecated", - "COPYRIGHT" => "copyright", - "MAGIC" => "magic" - ); - - /** - * Known types for @include. - * @var array $usesTypes - * @see renderUses() - */ - var $usesTypes = array( "include", "include_once", "require", "require_once" ); - - /** - * Adds a summary and a detailed list of all constants to the template. - * @see renderConstantSummary(), renderConstantDetail() - */ - function renderConstants() { - - $this->constants["public"] = $this->accessor->getConstantsByAccess("public"); - $this->constants["private"] = $this->accessor->getConstantsByAccess("private"); - - if (0==count($this->constants["public"]) && 0==count($this->constants["private"])) - return; - - $this->renderConstantSummary(); - $this->renderConstantDetail(); - - $this->constants = array(); - - } // end func renderConstants - - /** - * Adds a summary of all constants to the template. - * - * The function assumes that there is a block called "constantssummary" and - * withing this block a bock called "constantssummary_loop" in the template. - * - * @see renderConstantDetail() - */ - function renderConstantSummary() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->constants[$access])) - continue; - - $this->tpl->setCurrentBlock("constantssummary_loop"); - - reset($this->constants[$access]); - while (list($name, $const)=each($this->constants[$access])) { - - $this->tpl->setVariable("NAME", $name); - $this->tpl->setVariable("VALUE", htmlentities($const["value"])); - if (isset($const["doc"]["shortdescription"])) - $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($const["doc"]["shortdescription"]["value"])); - - if ("true" == $const["undoc"]) - $this->tpl->setVariable("UNDOC", $this->undocumented); - - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("constantssummary"); - $this->tpl->setVariable("ACCESS", ucfirst($access)); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderConstantSummary - - /** - * Adds a detailed list of all constants to the template. - * - * The function assumes that there is a block named "constantdetails" and - * withing it another block named "constantdetails_loop". - * - * @see renderConstantSummary() - */ - function renderConstantDetail() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->constants[$access])) - continue; - - reset($this->constants[$access]); - while (list($name, $constant)=each($this->constants[$access])) { - - $tplvars = array(); - - $tplvars["NAME"] = $name; - $tplvars["CASE"] = $constant["case"]; - $tplvars["VALUE"] = htmlentities($constant["value"]); - - if ("true" == $constant["undoc"]) - $tplvars["UNDOC"] = $this->undocumented; - - if (isset($constant["doc"]["shortdescription"])) - $tplvars["SHORTDESCRIPTION"] = $this->encode($constant["doc"]["shortdescription"]["value"]); - if (isset($constant["doc"]["description"])) - $tplvars["DESCRIPTION"] = $this->encode($constant["doc"]["description"]["value"]); - - $this->renderCommonDocfields("constantdetails_", $constant); - - $this->tpl->setCurrentBlock("constantdetails_loop"); - $this->tpl->setVariable($tplvars); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("constantdetails"); - $this->tpl->setVariable("ACCESS", ucfirst($access)); - $this->tpl->parseCurrentBlock(); - } - } // end func renderConstantsDetail - - /** - * Adds a summary and a detailed list of included files to the template. - * @see renderUsesSummary(), renderUsesDetail() - */ - function renderUses() { - - $found = false; - - reset($this->usesTypes); - while (list($k, $type)=each($this->usesTypes)) { - - $this->uses[$type] = $this->accessor->getUsesByType($type); - if (!$found && 0!=count($this->uses[$type])) - $found = true; - - } - - if (!$found) - return; - - $this->renderUsesSummary(); - $this->renderUsesDetail(); - - $this->uses = array(); - - } // end func renderUses - - /** - * Adds a detailed list of all @included files to the template. - * - * The function assumes that there is a block names "usesdetail" and within the block - * a block names "usesdetail_loop" in the template. - * - * @see renderUsesSummary() - */ - function renderUsesDetail() { - - reset($this->usesTypes); - while (list($k, $type)=each($this->usesTypes)) { - if (0==count($this->uses[$type])) - continue; - - reset($this->uses[$type]); - while (list($file, $uses)=each($this->uses[$type])) { - - $tplvars = array(); - $tplvars["FILE"] = $uses["file"]; - $tplvars["TYPE"] = $type; - - if ("true"==$uses["undoc"]) - $tplvars["UNDOC"] = $this->undocumented; - - if (isset($uses["doc"]["shortdescription"])) - $tplvars["SHORTDESCRIPTION"] = $this->encode($uses["doc"]["shortdescription"]["value"]); - if (isset($uses["doc"]["description"])) - $tplvars["DESCRIPTION"] = $this->encode($uses["doc"]["description"]["value"]); - - $this->renderCommonDocfields("usesdetails_", $uses); - - $this->tpl->setCurrentBlock("usesdetails_loop"); - $this->tpl->setVariable($tplvars); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("usesdetails"); - $this->tpl->setVariable("TYPE", $type); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderUsesDetail - - /** - * Adds a summary of all @included files to the template. - * - * The function assumes that there is a block names "usessummary" and within - * the block another block names "usessummary_loop" in the template. - * - * @see renderUsesDetail() - */ - function renderUsesSummary() { - - reset($this->usesTypes); - while (list($k, $type)=each($this->usesTypes)) { - if (0==count($this->uses[$type])) - continue; - - $this->tpl->setCurrentBlock("usessummary_loop"); - - reset($this->uses[$type]); - while (list($file, $uses)=each($this->uses[$type])) { - - $this->tpl->setVariable("FILE", $file); - - if (isset($uses["doc"]["shortdescription"])) - $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($uses["doc"]["shortdescription"]["value"])); - - if ("true"==$uses["undoc"]) - $this->tpl->setVariable("UNDOC", $this->undocumented); - - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("usessummary"); - $this->tpl->setVariable("TYPE", $type); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderUsesSummary - - /** - * Adds a summary and a detailed list of all functions to the template. - * @see renderFunctionSummary(), renderFunctionDetail(), $functions - */ - function renderFunctions() { - - $this->functions["private"] = $this->accessor->getFunctionsByAccess("private"); - $this->functions["public"] = $this->accessor->getFunctionsByAccess("public"); - - if (0==count($this->functions["private"]) && 0==count($this->functions["public"])) - return; - - $this->renderFunctionSummary(); - $this->renderFunctionDetail(); - - $this->functions = array(); - - } // end func renderFunctions - - /** - * Adds a function summary to the template. - * - * The function assumes that there is ablock names "functionsummary" and - * within it a block names "functionsummary_loop" in the template. - * - * @see renderFunctionDetail(), renderFunctions(), $functions, $accessModifiers - */ - function renderFunctionSummary() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->functions[$access])) - continue; - - $this->tpl->setCurrentBlock("functionsummary_loop"); - - reset($this->functions[$access]); - while (list($name, $function)=each($this->functions[$access])) { - - $this->tpl->setVariable("NAME", $name); - - if (isset($function["doc"]["parameter"])) - $this->tpl->setVariable("PARAMETER", $this->getParameter($function["doc"]["parameter"])); - - if (isset($function["doc"]["shortdescription"])) - $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($function["doc"]["shortdescription"]["value"])); - - if (isset($function["doc"]["return"])) - $this->tpl->setVariable("RETURNTYPE", $function["doc"]["return"]["type"]); - else - $this->tpl->setVariable("RETURNTYPE", "void"); - - if ("true"==$function["undoc"]) - $this->tpl->setVariable("UNDOC", $this->undocumented); - - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("functionsummary"); - $this->tpl->setVariable("ACCESS", ucfirst($access) ); - $this->tpl->parseCurrentBlock(); - } - - } // end func renderFunctionSummary - - /** - * Adds a detailed list of functions to the template. - * - * The function assumes that there is a block named "functiondetails" and - * within it a bloc "functiondetails_loop" in the template. - * - * @see renderFunctions(), renderFunctionSummary(), $functions, $accessModifiers - */ - function renderFunctionDetail() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->functions[$access])) - continue; - - reset($this->functions[$access]); - while (list($name, $function)=each($this->functions[$access])) { - - $tplvars = array(); - $tplvars["NAME"] = $function["name"]; - $tplvars["ACCESS"] = $function["access"]; - - if ("true"==$function["undoc"]) - $tplvars["UNDOC"] = $this->undocumented; - - if ("true"==$function["abstract"]) - $tplvars["ABSTRACT"] = "abstract"; - - if ("true"==$function["static"]) - $tplvars["STATIC"] = "static"; - - if (isset($function["doc"]["shortdescription"])) - $tplvars["SHORTDESCRIPTION"] = $this->encode($function["doc"]["shortdescription"]["value"]); - if (isset($function["doc"]["description"])) - $tplvars["DESCRIPTION"] = $this->encode($function["doc"]["description"]["value"]); - - $this->renderCommonDocfields("functiondetails_", $function); - - if (isset($function["doc"]["parameter"])) { - $tplvars["PARAMETER"] = $this->getParameter($function["doc"]["parameter"]); - $this->renderParameterDetail($function["doc"]["parameter"]); - } - - if (isset($function["doc"]["throws"])) - $this->renderThrows($function["doc"]["throws"], "functiondetails_"); - - if (isset($function["doc"]["global"])) - $this->renderGlobals($function["doc"]["global"], "functiondetails_"); - - if (isset($function["doc"]["return"])) { - - $tplvars["RETURNTYPE"] = $function["doc"]["return"]["type"]; - - $this->tpl->setCurrentBlock("functiondetails_return"); - - $this->tpl->setVariable("TYPE", $function["doc"]["return"]["type"]); - $this->tpl->setVariable("DESCRIPTION", $this->encode($function["doc"]["return"]["value"])); - if (isset($function["doc"]["return"]["name"])) - $this->tpl->setVariable("NAME", $function["doc"]["return"]["name"]); - - $this->tpl->parseCurrentBlock(); - - } else { - - $tplvars["RETURNTYPE"] = "void"; - - } - - $this->tpl->setCurrentBlock("functiondetails_loop"); - $this->tpl->setVariable($tplvars); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("functiondetails"); - $this->tpl->setVariable("ACCESS", ucfirst($access) ); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderFunctionDetail - - /** - * Renders a detailed list of function parameters. - * - * The function assumes that there is a block named "functiondetails_parameter" in - * the template and within it a block named "functiondetails_parameter_loop". - * - * @param array Parameter - */ - function renderParameterDetail($parameter) { - - if (!isset($parameter[0])) - $parameter = array($parameter); - - $this->tpl->setCurrentBlock("functiondetails_parameter_loop"); - - reset($parameter); - while (list($k, $param)=each($parameter)) { - - $this->tpl->setVariable("NAME", $param["name"]); - $this->tpl->setVariable("DESCRIPTION", $this->encode($param["value"])); - - if (isset($param["type"])) - $this->tpl->setVariable("TYPE", $param["type"]); - - if (isset($param["default"])) - $this->tpl->setVariable("DEFAULT", "= >>".htmlentities($param["default"])."<<"); - - if ("true" == $param["undoc"]) - $this->tpl->setVariable("UNDOC", $this->undocumented); - - $this->tpl->parseCurrentBlock(); - } - - } // end func renderParameterDetail - - /** - * Converts the XML parameter array into formatted string. - * @param array XML parameter array - * @return string Formatted parameter string - */ - function getParameter($parameter) { - - if (!is_array($parameter)) - return "void"; - - $value = ""; - - if (!isset($parameter[0])) { - - if (!isset($parameter["default"])) - $value.= $parameter["type"]." ".$parameter["name"]; - else - $value.= "[ ".$parameter["type"]." ".$parameter["name"]." ]"; - - } else { - - $flag_optional = false; - - reset($parameter); - while (list($k, $param)=each($parameter)) { - - if (!isset($param["default"])) { - - if ($flag_optional) { - $value = substr($value, 0, -2)." ], "; - $flag_optional = false; - } - - } else { - - if (!$flag_optional) { - $value.= "[ "; - $flag_optional = true; - } - } - - $value.= $param["type"]." ".$param["name"].", "; - } - - $value = substr($value, 0, -2); - if ($flag_optional) - $value.= " ]"; - - } - - return $value; - } // end func getParameter - - /** - * Renders a block with references to other source elements, @see. - * @param array XML references array - * @param string optional template blockname prefix - */ - function renderSee($references, $prefix="") { - - $value = ""; - - if (!isset($references[0])) { - - if (isset($references["group"])) - $value.= sprintf('<a href="%s#%s_%s">%s::%s</a>', - $this->nameToUrl($references["group"]).$this->file_extension, - $references["type"], - $references["value"], - $references["group"], - $references["value"] - ); - else - $value.= sprintf('<a href="#%s_%s">%s</a>', - $references["type"], - $references["value"], - $references["value"] - ); - - } else { - - reset($references); - while (list($k, $reference)=each($references)) { - - if (isset($reference["group"])) - $value.= sprintf('<a href="%s#%s_%s">%s::%s</a>, ', - $this->nameToUrl($reference["group"]).$this->file_extension, - $reference["type"], - $reference["value"], - $reference["group"], - $reference["value"] - ); - else - $value.= sprintf('<a href="#%s_%s">%s</a>, ', - $reference["type"], - $reference["value"], - $reference["value"] - ); - - } - - $value = substr($value, 0, -2); - - } - - $this->tpl->setCurrentBlock(strtolower($prefix)."see"); - $this->tpl->setVariable("SEE", $value); - $this->tpl->parseCurrentBlock(); - - } // end func renderSee - - /** - * Renders an author list, @author. - * @param array XML author array - * @param string optional template blockname prefix - */ - function renderAuthors($authors, $prefix="") { - - $value = ""; - - if (!isset($authors[0])) { - - if (isset($authors["email"])) - $value.= sprintf('%s <<a href="mailto:%s">%s</a>>, ', $authors["value"], $authors["email"], $authors["email"]); - else - $value.= $authors["email"].", "; - - } else { - - reset($authors); - while (list($k, $author)=each($authors)) { - - if (isset($author["email"])) - $value.= sprintf('%s <<a href="mailto:%s">%s</a>>, ', $author["value"], $author["email"], $author["email"]); - else - $value.= $author["email"].", "; - - } - - } - - $value = substr($value, 0, -2); - $this->tpl->setCurrentBlock(strtolower($prefix)."authors"); - $this->tpl->setVariable("AUTHOR", $value); - $this->tpl->parseCurrentBlock(); - - } // end func renderAuthors - - /** - * Renders a list of external links, @link. - * @param array XML link array - * @param string optional template blockname prefix - */ - function renderLinks($links, $prefix="") { - - $value= ""; - - if (!isset($links[0])) { - - $value.= sprintf('<a href="%s">%s</a>%s, ', - $links["url"], - $links["url"], - (""!=$links["description"]) ? " - ".$links["description"] : "" - ); - - } else { - - reset($links); - while (list($k, $link)=each($links)) { - - $value.= sprintf('<a href="%s">%s</a>%s, ', - $link["url"], - $link["url"], - (""!=$link["description"]) ? " - ".$links["description"] : "" - ); - - } - - } - - $value = substr($value, 0, 2); - - $this->tpl->setCurrentBlock(strtolower($prefix)."links"); - $this->tpl->setVariable("LINK", $value); - $this->tpl->parseCurrentBlock(); - - } // end func renderLinks - - /** - * Renders a list of exceptions, @throws. - * @param array XML array - * @param string optional template blockname prefix - */ - function renderThrows($throws, $prefix="") { - - $value = ""; - - if (!isset($throws[0])) { - - $value = $throws["value"]; - - } else { - - reset($throws); - while (list($k, $exception)=each($throws)) - $value.= sprintf("%s, ", $exception["value"]); - - $value = substr($value, 0, -2); - - } - - $this->tpl->setCurrentBlock(strtolower($prefix)."throws"); - $this->tpl->setVariable("EXCEPTIONS", $value); - $this->tpl->parseCurrentBlock(); - - } // end func renderThrows - - /** - * Renders a list of global elements, @global - * @param array XML globals array - * @param string optional template blockname prefix - */ - function renderGlobals($globals, $prefix="") { - - $prefix = strtolower($prefix); - $this->tpl->setCurrentBlock($prefix."globals_loop"); - - if (!isset($globals[0])) { - - $this->tpl->setVariable("NAME", $globals["name"]); - $this->tpl->setVariable("DESCRIPTION", $this->encode($globals["value"])); - if (isset($globals["type"])) - $this->tpl->setVariable("TYPE", $globals["type"]); - - $this->tpl->parseCurrentBlock(); - - } else { - - reset($globals); - while (list($k, $global)=each($globals)) { - - $this->tpl->setVariable("NAME", $global["name"]); - $this->tpl->setVariable("DESCRIPTION", $this->encode($global["value"])); - if (isset($globals["type"])) - $this->tpl->setVariable("TYPE", $globals["type"]); - - $this->tpl->parseCurrentBlock(); - - } - - } - - } // end func renderGlobals - - /** - * Adds some tags to the template that are allowed nearly everywhere. - * @param string template blockname prefixs - * @param array - * @see $simpleDocfields, renderLinks(), renderAuthors(), renderSee() - */ - function renderCommonDocfields($block, &$data) { - - reset($this->simpleDocfields); - while (list($varname, $field)=each($this->simpleDocfields)) { - - if (isset($data["doc"][$field])) { - $this->tpl->setCurrentBlock($block.$field); - $this->tpl->setVariable($varname, htmlentities($data["doc"][$field]["value"])); - $this->tpl->parseCurrentBlock(); - } - - } - - if (isset($data["doc"]["link"])) - $this->renderLinks($data["doc"]["link"], $block); - - if (isset($data["doc"]["author"])) - $this->renderAuthors($data["doc"]["author"], $block); - - if (isset($data["doc"]["see"])) - $this->renderSee($data["doc"]["see"], $block); - - } // end func renderCommonDocfields - -} // end func PhpdocHTMLDocumentRenderer -?> +<?php +/** +* Provides functioninality to render modules and classes. +*/ +class PhpdocHTMLDocumentRenderer extends PhpdocHTMLRenderer { + + /** + * Message displayed if an object lacks documentation. + * + * @var string $undocumented + * @access public + */ + var $undocmented = "Warning: documentation is missing."; + + /** + * Array of functions found in the xml document. + * + * @var array $functions + */ + var $functions = array(); + + /** + * Array of included files. + * + * @var array $uses + */ + var $uses = array(); + + /** + * Array of constants. + * @var array $constants + */ + var $constants = array(); + + /** + * Array of access modifiers. + * + * @var array $accessModifiers + */ + var $accessModifiers = array("public", "private"); + + /** + * Array of doc container fields that get mapped directly to templateblocks. + * + * @var array $simpleDocfields + * @see renderVariableDetail() + */ + var $simpleDocfields = array( + "VERSION" => "version", + "SINCE" => "since", + "DEPRECATED" => "deprecated", + "COPYRIGHT" => "copyright", + "MAGIC" => "magic" + ); + + /** + * Known types for @include. + * + * @var array $usesTypes + * @see renderUses() + */ + var $usesTypes = array( "include", "include_once", "require", "require_once" ); + + /** + * Adds a summary and a detailed list of all constants to the template. + * + * @see renderConstantSummary(), renderConstantDetail() + */ + function renderConstants() { + + $this->constants["public"] = $this->accessor->getConstantsByAccess("public"); + $this->constants["private"] = $this->accessor->getConstantsByAccess("private"); + + if (0 == count($this->constants["public"]) && 0 == count($this->constants["private"])) + return; + + $this->renderConstantSummary(); + $this->renderConstantDetail(); + $this->constants = array(); + + } // end func renderConstants + + /** + * Adds a summary of all constants to the template. + * + * The function assumes that there is a block called "constantssummary" and + * withing this block a bock called "constantssummary_loop" in the template. + * + * @see renderConstantDetail() + */ + function renderConstantSummary() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + if (0 == count($this->constants[$access])) + continue; + + $this->tpl->setCurrentBlock("constantssummary_loop"); + + reset($this->constants[$access]); + while (list($name, $const) = each($this->constants[$access])) { + + $this->tpl->setVariable("NAME", $name); + $this->tpl->setVariable("VALUE", htmlentities($const["value"])); + + if (isset($const["doc"]["shortdescription"])) + $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($const["doc"]["shortdescription"]["value"])); + + if ("true" == $const["undoc"]) + $this->tpl->setVariable("UNDOC", $this->undocumented); + + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("constantssummary"); + $this->tpl->setVariable("ACCESS", ucfirst($access)); + $this->tpl->parseCurrentBlock(); + + } + + } // end func renderConstantSummary + + /** + * Adds a detailed list of all constants to the template. + * + * The function assumes that there is a block named "constantdetails" and + * withing it another block named "constantdetails_loop". + * + * @see renderConstantSummary() + */ + function renderConstantDetail() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + if (0 == count($this->constants[$access])) + continue; + + reset($this->constants[$access]); + while (list($name, $constant) = each($this->constants[$access])) { + + $tplvars = array(); + $tplvars["NAME"] = $name; + $tplvars["CASE"] = $constant["case"]; + $tplvars["VALUE"] = htmlentities($constant["value"]); + + if ("true" == $constant["undoc"]) + $tplvars["UNDOC"] = $this->undocumented; + + if (isset($constant["doc"]["shortdescription"])) + $tplvars["SHORTDESCRIPTION"] = $this->encode($constant["doc"]["shortdescription"]["value"]); + + if (isset($constant["doc"]["description"])) + $tplvars["DESCRIPTION"] = $this->encode($constant["doc"]["description"]["value"]); + + $this->renderCommonDocfields("constantdetails_", $constant); + + $this->tpl->setCurrentBlock("constantdetails_loop"); + $this->tpl->setVariable($tplvars); + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("constantdetails"); + $this->tpl->setVariable("ACCESS", ucfirst($access)); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderConstantsDetail + + /** + * Adds a summary and a detailed list of included files to the template. + * @see renderUsesSummary(), renderUsesDetail() + */ + function renderUses() { + + $found = false; + + reset($this->usesTypes); + while (list($k, $type) = each($this->usesTypes)) { + + $this->uses[$type] = $this->accessor->getUsesByType($type); + if (!$found && 0 != count($this->uses[$type])) + $found = true; + + } + + if (!$found) + return; + + $this->renderUsesSummary(); + $this->renderUsesDetail(); + + $this->uses = array(); + } // end func renderUses + + /** + * Adds a detailed list of all @included files to the template. + * + * The function assumes that there is a block names "usesdetail" and within the block + * a block names "usesdetail_loop" in the template. + * + * @see renderUsesSummary() + */ + function renderUsesDetail() { + + reset($this->usesTypes); + while (list($k, $type) = each($this->usesTypes)) { + if (0 == count($this->uses[$type])) + continue; + + reset($this->uses[$type]); + while (list($file, $uses) = each($this->uses[$type])) { + + $tplvars = array(); + $tplvars["FILE"] = $uses["file"]; + $tplvars["TYPE"] = $type; + + if ("true" == $uses["undoc"]) + $tplvars["UNDOC"] = $this->undocumented; + + if (isset($uses["doc"]["shortdescription"])) + $tplvars["SHORTDESCRIPTION"] = $this->encode($uses["doc"]["shortdescription"]["value"]); + + if (isset($uses["doc"]["description"])) + $tplvars["DESCRIPTION"] = $this->encode($uses["doc"]["description"]["value"]); + + $this->renderCommonDocfields("usesdetails_", $uses); + $this->tpl->setCurrentBlock("usesdetails_loop"); + $this->tpl->setVariable($tplvars); + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("usesdetails"); + $this->tpl->setVariable("TYPE", $type); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderUsesDetail + + /** + * Adds a summary of all @included files to the template. + * + * The function assumes that there is a block names "usessummary" and within + * the block another block names "usessummary_loop" in the template. + * + * @see renderUsesDetail() + */ + function renderUsesSummary() { + + reset($this->usesTypes); + while (list($k, $type) = each($this->usesTypes)) { + if (0 == count($this->uses[$type])) + continue; + + $this->tpl->setCurrentBlock("usessummary_loop"); + + reset($this->uses[$type]); + while (list($file, $uses) = each($this->uses[$type])) { + + $this->tpl->setVariable("FILE", $file); + if (isset($uses["doc"]["shortdescription"])) + $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($uses["doc"]["shortdescription"]["value"])); + + if ("true" == $uses["undoc"]) + $this->tpl->setVariable("UNDOC", $this->undocumented); + + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("usessummary"); + $this->tpl->setVariable("TYPE", $type); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderUsesSummary + + /** + * Adds a summary and a detailed list of all functions to the template. + * + * @see renderFunctionSummary(), renderFunctionDetail(), $functions + */ + function renderFunctions() { + + $this->functions["private"] = $this->accessor->getFunctionsByAccess("private"); + $this->functions["public"] = $this->accessor->getFunctionsByAccess("public"); + + if (0 == count($this->functions["private"]) && 0 == count($this->functions["public"])) + return; + + $this->renderFunctionSummary(); + $this->renderFunctionDetail(); + $this->functions = array(); + + } // end func renderFunctions + + /** + * Adds a function summary to the template. + * + * The function assumes that there is ablock names "functionsummary" and + * within it a block names "functionsummary_loop" in the template. + * + * @see renderFunctionDetail(), renderFunctions(), $functions, $accessModifiers + */ + function renderFunctionSummary() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + if (0 == count($this->functions[$access])) + continue; + + $this->tpl->setCurrentBlock("functionsummary_loop"); + reset($this->functions[$access]); + while (list($name, $function) = each($this->functions[$access])) { + + $this->tpl->setVariable("NAME", $name); + + if (isset($function["doc"]["parameter"])) + $this->tpl->setVariable("PARAMETER", $this->getParameter($function["doc"]["parameter"])); + + if (isset($function["doc"]["shortdescription"])) + $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($function["doc"]["shortdescription"]["value"])); + + if (isset($function["doc"]["return"])) + $this->tpl->setVariable("RETURNTYPE", $function["doc"]["return"]["type"]); + else + $this->tpl->setVariable("RETURNTYPE", "void"); + + if ("true" == $function["undoc"]) + $this->tpl->setVariable("UNDOC", $this->undocumented); + + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("functionsummary"); + $this->tpl->setVariable("ACCESS", ucfirst($access) ); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderFunctionSummary + + /** + * Adds a detailed list of functions to the template. + * + * The function assumes that there is a block named "functiondetails" and + * within it a bloc "functiondetails_loop" in the template. + * + * @see renderFunctions(), renderFunctionSummary(), $functions, $accessModifiers + */ + function renderFunctionDetail() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + if (0 == count($this->functions[$access])) + continue; + + reset($this->functions[$access]); + while (list($name, $function) = each($this->functions[$access])) { + + $tplvars = array(); + $tplvars["NAME"] = $function["name"]; + $tplvars["ACCESS"] = $function["access"]; + + if ("true" == $function["undoc"]) + $tplvars["UNDOC"] = $this->undocumented; + + if ("true" == $function["abstract"]) + $tplvars["ABSTRACT"] = "abstract"; + + if ("true" == $function["static"]) + $tplvars["STATIC"] = "static"; + + if (isset($function["doc"]["shortdescription"])) + $tplvars["SHORTDESCRIPTION"] = $this->encode($function["doc"]["shortdescription"]["value"]); + + if (isset($function["doc"]["description"])) + $tplvars["DESCRIPTION"] = $this->encode($function["doc"]["description"]["value"]); + + $this->renderCommonDocfields("functiondetails_", $function); + + if (isset($function["doc"]["parameter"])) { + $tplvars["PARAMETER"] = $this->getParameter($function["doc"]["parameter"]); + $this->renderParameterDetail($function["doc"]["parameter"]); + } + + if (isset($function["doc"]["throws"])) + $this->renderThrows($function["doc"]["throws"], "functiondetails_"); + + if (isset($function["doc"]["global"])) + $this->renderGlobals($function["doc"]["global"], "functiondetails_"); + + if (isset($function["doc"]["return"])) { + + $tplvars["RETURNTYPE"] = $function["doc"]["return"]["type"]; + + $this->tpl->setCurrentBlock("functiondetails_return"); + $this->tpl->setVariable("TYPE", $function["doc"]["return"]["type"]); + $this->tpl->setVariable("DESCRIPTION", $this->encode($function["doc"]["return"]["value"])); + + if (isset($function["doc"]["return"]["name"])) + $this->tpl->setVariable("NAME", $function["doc"]["return"]["name"]); + + $this->tpl->parseCurrentBlock(); + + } else { + + $tplvars["RETURNTYPE"] = "void"; + + } + + $this->tpl->setCurrentBlock("functiondetails_loop"); + $this->tpl->setVariable($tplvars); + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("functiondetails"); + $this->tpl->setVariable("ACCESS", ucfirst($access) ); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderFunctionDetail + + /** + * Renders a detailed list of function parameters. + * + * The function assumes that there is a block named "functiondetails_parameter" in + * the template and within it a block named "functiondetails_parameter_loop". + * + * @param array Parameter + */ + function renderParameterDetail($parameter) { + + if (!isset($parameter[0])) + $parameter = array($parameter); + + $this->tpl->setCurrentBlock("functiondetails_parameter_loop"); + + reset($parameter); + while (list($k, $param) = each($parameter)) { + + $this->tpl->setVariable("NAME", $param["name"]); + $this->tpl->setVariable("DESCRIPTION", $this->encode($param["value"])); + + if (isset($param["type"])) + $this->tpl->setVariable("TYPE", $param["type"]); + + if (isset($param["default"])) + $this->tpl->setVariable("DEFAULT", "= >>".htmlentities($param["default"])."<<"); + + if ("true" == $param["undoc"]) + $this->tpl->setVariable("UNDOC", $this->undocumented); + + $this->tpl->parseCurrentBlock(); + } + + } // end func renderParameterDetail + + /** + * Converts the XML parameter array into formatted string. + * @param array XML parameter array + * @return string Formatted parameter string + */ + function getParameter($parameter) { + + if (!is_array($parameter)) + return "void"; + + $value = ""; + + if (!isset($parameter[0])) { + + if (!isset($parameter["default"])) + $value .= $parameter["type"] . " " . $parameter["name"]; + else + $value .= "[ ".$parameter["type"] . " " . $parameter["name"]." ]"; + + } else { + + $flag_optional = false; + + reset($parameter); + while (list($k, $param) = each($parameter)) { + + if (!isset($param["default"])) { + if ($flag_optional) { + $value = substr($value, 0, -2)." ], "; + $flag_optional = false; + } + } else { + if (!$flag_optional) { + $value .= "[ "; + $flag_optional = true; + } + } + + $value .= $param["type"] . " " . $param["name"].", "; + } + + $value = substr($value, 0, -2); + if ($flag_optional) + $value .= " ]"; + + } + + return $value; + } // end func getParameter + + /** + * Renders a block with references to other source elements, @see. + * + * @param array XML references array + * @param string optional template blockname prefix + */ + function renderSee($references, $prefix = "") { + + $value = ""; + if (!isset($references[0])) { + + if (isset($references["group"])) + $value .= sprintf('<a href="%s#%s_%s">%s::%s</a>', + $this->nameToUrl($references["group"]).$this->file_extension, + $references["type"], + $references["value"], + $references["group"], + $references["value"] + ); + else + $value .= sprintf('<a href="#%s_%s">%s</a>', + $references["type"], + $references["value"], + $references["value"] + ); + + } else { + + reset($references); + while (list($k, $reference) = each($references)) { + + if (isset($reference["group"])) + $value .= sprintf('<a href="%s#%s_%s">%s::%s</a>, ', + $this->nameToUrl($reference["group"]).$this->file_extension, + $reference["type"], + $reference["value"], + $reference["group"], + $reference["value"] + ); + else + $value .= sprintf('<a href="#%s_%s">%s</a>, ', + $reference["type"], + $reference["value"], + $reference["value"] + ); + + } + + $value = substr($value, 0, -2); + } + + $this->tpl->setCurrentBlock(strtolower($prefix) . "see"); + $this->tpl->setVariable("SEE", $value); + $this->tpl->parseCurrentBlock(); + + } // end func renderSee + + /** + * Renders an author list, @author. + * + * @param array XML author array + * @param string optional template blockname prefix + */ + function renderAuthors($authors, $prefix = "") { + + $value = ""; + + if (!isset($authors[0])) { + + if (isset($authors["email"])) + $value .= sprintf('%s <<a href="mailto:%s">%s</a>>, ', $authors["value"], $authors["email"], $authors["email"]); + else + $value .= $authors["email"] . ", "; + + } else { + + reset($authors); + while (list($k, $author) = each($authors)) { + + if (isset($author["email"])) + $value .= sprintf('%s <<a href="mailto:%s">%s</a>>, ', $author["value"], $author["email"], $author["email"]); + else + $value .= $author["email"] . ", "; + + } + + } + + $value = substr($value, 0, -2); + $this->tpl->setCurrentBlock(strtolower($prefix) . "authors"); + $this->tpl->setVariable("AUTHOR", $value); + $this->tpl->parseCurrentBlock(); + + } // end func renderAuthors + + /** + * Renders a list of external links, @link. + * + * @param array XML link array + * @param string optional template blockname prefix + */ + function renderLinks($links, $prefix = "") { + + $value = ""; + if (!isset($links[0])) { + $value .= sprintf('<a href="%s">%s</a>%s, ', + $links["url"], + $links["url"], + ("" != $links["description"]) ? " - " . $links["description"] : "" + ); + } else { + + reset($links); + while (list($k, $link) = each($links)) { + $value .= sprintf('<a href="%s">%s</a>%s, ', + $link["url"], + $link["url"], + ("" != $link["description"]) ? " - " . $links["description"] : "" + ); + } + + } + + $value = substr($value, 0, 2); + $this->tpl->setCurrentBlock(strtolower($prefix) . "links"); + $this->tpl->setVariable("LINK", $value); + $this->tpl->parseCurrentBlock(); + + } // end func renderLinks + + /** + * Renders a list of exceptions, @throws. + * + * @param array XML array + * @param string optional template blockname prefix + */ + function renderThrows($throws, $prefix = "") { + + $value = ""; + if (!isset($throws[0])) { + + $value = $throws["value"]; + + } else { + + reset($throws); + while (list($k, $exception) = each($throws)) + $value .= sprintf("%s, ", $exception["value"]); + + $value = substr($value, 0, -2); + + } + + $this->tpl->setCurrentBlock(strtolower($prefix) . "throws"); + $this->tpl->setVariable("EXCEPTIONS", $value); + $this->tpl->parseCurrentBlock(); + + } // end func renderThrows + + /** + * Renders a list of global elements, @global + * + * @param array XML globals array + * @param string optional template blockname prefix + */ + function renderGlobals($globals, $prefix = "") { + + $prefix = strtolower($prefix); + $this->tpl->setCurrentBlock($prefix . "globals_loop"); + + if (!isset($globals[0])) { + + $this->tpl->setVariable("NAME", $globals["name"]); + $this->tpl->setVariable("DESCRIPTION", $this->encode($globals["value"])); + + if (isset($globals["type"])) + $this->tpl->setVariable("TYPE", $globals["type"]); + + $this->tpl->parseCurrentBlock(); + + } else { + + reset($globals); + while (list($k, $global) = each($globals)) { + + $this->tpl->setVariable("NAME", $global["name"]); + $this->tpl->setVariable("DESCRIPTION", $this->encode($global["value"])); + + if (isset($globals["type"])) + $this->tpl->setVariable("TYPE", $globals["type"]); + + $this->tpl->parseCurrentBlock(); + + } + + } + + } // end func renderGlobals + + /** + * Adds some tags to the template that are allowed nearly everywhere. + * + * @param string template blockname prefixs + * @param array + * @see $simpleDocfields, renderLinks(), renderAuthors(), renderSee() + */ + function renderCommonDocfields($block, &$data) { + + reset($this->simpleDocfields); + while (list($varname, $field) = each($this->simpleDocfields)) { + + if (isset($data["doc"][$field])) { + + $this->tpl->setCurrentBlock($block.$field); + $this->tpl->setVariable($varname, htmlentities($data["doc"][$field]["value"])); + $this->tpl->parseCurrentBlock(); + + } + + } + + if (isset($data["doc"]["link"])) + $this->renderLinks($data["doc"]["link"], $block); + + if (isset($data["doc"]["author"])) + $this->renderAuthors($data["doc"]["author"], $block); + + if (isset($data["doc"]["see"])) + $this->renderSee($data["doc"]["see"], $block); + + } // end func renderCommonDocfields + +} // end func PhpdocHTMLDocumentRenderer +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,447 +1,456 @@ -<?php -/** -* Renders Index lists. -*/ -class PhpdocHTMLIndexRenderer extends PhpdocHTMLRenderer { - - /** - * Some container in the package list. - * @var array - * @see renderPackagelist() - */ - var $packageFields = array("class", "module"); - - /** - * Packagelist from the PhpdocIndexAccessor - * @var array - */ - var $packages = array(); - - /** - * Array with classtree informations - * @var array - */ - var $classtree = array(); - - /** - * IntegratedTemplate Object used be renderClasstree() - * - * @var object IntegratedTemplate - * @see renderClasstree() - */ - var $treeTpl; - - /** - * IntegratedTemplateObject used by renderModulegroup() - * - * @var object IntegratedTemplate - * @see renderModulegroup() - */ - var $moduleTpl; - - /** - * Sets the xml and template root directory. - * - * @param string XML file path - * @param string Template file path - * @param string Name of the application - * @see setPath(), setTemplateRoot() - */ - function PhpdocHTMLIndexRenderer($path, $templateRoot, $application, $extension = ".html") { - - $this->setPath($path); - $this->setTemplateRoot($templateRoot); - $this->application = $application; - $this->file_extension = $extension; - - $this->accessor = new PhpdocIndexAccessor; - $this->tpl = new IntegratedTemplate($this->templateRoot); - $this->fileHandler = new PhpdocFileHandler; - - } // end constructor - - /** - * Builds all index files phpdoc needs assuming that the xml files have default names - * - * @access public - * @see renderElementlist(), renderPackagelist(), renderFramelementlist(), renderFramePackageSummary() - */ - function generate() { - - $this->renderElementlist("elementlist.xml"); - $this->renderFrameElementlist("elementlist.xml"); - - $this->renderPackagelist("packagelist.xml"); - $this->renderFramePackageSummary("packagelist.xml"); - $this->renderFrameElementlist("packagelist.xml"); - - } // end function generate - - /** - * Saves the generated classtree summary to disk. - * - * @see renderClasstree() - * @access public - */ - function finishClasstree() { - - if (!is_object($this->treeTpl)) - return; - - $this->treeTpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_classtree".$this->file_extension, $this->treeTpl->get() ); - $this->treeTpl = ""; - - } // end func finishClasstree - - /** - * Adds a classtree to the classtree summary template. - * - * @param string XML Classtree file - * @see finishClasstree() - * @access public - */ - function addClasstree($xmlfile) { - - $this->accessor->loadXMLFile($this->path.$xmlfile); - - if (!is_object($this->treeTpl)) { - - $this->treeTpl = new IntegratedTemplate($this->templateRoot); - $this->treeTpl->loadTemplatefile("classtree.html"); - - } - - $this->classtree = $this->accessor->getClasstree(); - - $this->treeTpl->setCurrentBlock("classtree"); - $this->treeTpl->setVariable("BASECLASS", $this->classtree["baseclass"]); - $this->treeTpl->setVariable("TREE", "<ul>".$this->buildClasstreeHTML($this->classtree["baseclass"])."</ul>"); - $this->treeTpl->parseCurrentBlock(); - - return true; - } // end func addClasstree - - function finishModulegroup() { - - if (!is_object($this->moduleTpl)) - return; - - $this->moduleTpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_modulegroup".$this->file_extension, $this->moduleTpl->get() ); - $this->moduleTpl = ""; - - } // end func finishModulegroups - /** - * Renders a modulegroup xml file. - * @param string XML File - */ - function addModulegroup($xmlfile) { - - $this->accessor->loadXMLFile($this->path.$xmlfile); - - if (!is_object($this->moduleTpl)) { - - $this->moduleTpl = new IntegratedTemplate($this->templateRoot); - $this->moduleTpl->loadTemplateFile("modulegroup.html"); - - } - - $modulegroup = $this->accessor->getModulegroup(); - - $modules = "<ul>"; - reset($modulegroup["modules"]); - while (list($k, $module)=each($modulegroup["modules"])) - $modules.= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($module).$this->file_extension, $module); - $modules.= "</ul>"; - - $this->moduleTpl->setCurrentBlock("modulegroup"); - $this->moduleTpl->setVariable("MODULEGROUP", $modulegroup["group"]); - $this->moduleTpl->setVariable("MODULES", $modules); - $this->moduleTpl->parseCurrentBlock(); - - } // end func addModulegroup - - /** - * Renders the element index list. - * - * @param string XML file - * @access public - * @see generate() - */ - function renderElementlist($xmlfile) { - - $this->accessor->loadXMLFile($this->path.$xmlfile); - $this->tpl->loadTemplatefile("elementlist.html"); - - $chapters = $this->accessor->getChapternames(); - - if (0!=count($chapters)) { - - $this->tpl->setCurrentBlock("chaptersummary_loop"); - reset($chapters); - while (list($k, $chapter)=each($chapters)) { - $this->tpl->setVariable("CHAPTER", $chapter); - $this->tpl->parseCurrentBlock(); - } - - $chapters = $this->accessor->getChapters(); - - reset($chapters); - while (list($name, $elements)=each($chapters)) { - - if (!isset($elements["element"][0])) - $elements["element"] = array($elements["element"]); - - $this->tpl->setCurrentBlock("chapter_loop"); - - reset($elements["element"]); - while (list($k, $element)=each($elements["element"])) { - - switch($element["type"]) { - case "package": - $desc = "Package"; - break; - - case "class": - $desc = sprintf('Class <a href="%s">%s</a>.', - $this->nameToUrl($element["name"]).$this->file_extension, - $element["name"] - ); - break; - - case "module": - $desc = sprintf('Module <a href="%s">%s</a>.', - $this->nameToUrl($element["name"]).$this->file_extension, - $element["name"] - ); - break; - - case "functions": - $desc = sprintf('Function in %s <a href="%s">%s</a>', - $element["sourcetype"], - $this->nameToUrl($element["source"]).$this->file_extension, - $element["source"] - ); - break; - - case "variables": - $desc = sprintf('Variable in Class <a href="%s">%s</a>', - $this->nameToUrl($element["source"]).$this->file_extension, - $element["source"] - ); - break; - - case "uses": - $desc = sprintf('Included file in %s <a href="%s">%s</a>', - $element["sourcetype"], - $this->nameToUrl($element["source"]).$this->file_extension, - $element["source"] - ); - break; - break; - - case "consts": - $desc = sprintf('Constant defined in %s <a href="%s">%s</a>', - $element["sourcetype"], - $this->nameToUrl($element["source"]).$this->file_extension, - $element["source"] - ); - break; - } - - $this->tpl->setVariable("ELEMENTNAME", $element["name"]); - $this->tpl->setVariable("ELEMENT", $desc); - $this->tpl->setVariable("SHORTDESCRIPTION", $element["value"]); - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("chapter"); - $this->tpl->setVariable("CHAPTER", $name); - $this->tpl->parseCurrentBlock(); - } - - - } - - $this->tpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_elementlist".$this->file_extension, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderElementlist - - /** - * Renders a complete packagelist. - * - * @param string XML file - * @access public - * @see renderFrameElementlist(), renderFramePackagesummary() - */ - function renderPackagelist($xmlfile) { - - $this->loadPackagelist($xmlfile); - $this->tpl->loadTemplatefile("packagelist.html"); - - reset($this->packages); - while (list($packagename, $package)=each($this->packages)) { - - reset($this->packageFields); - while (list($k, $field)=each($this->packageFields)) { - if (!isset($package[$field])) - continue; - - $this->tpl->setCurrentBlock("package_".$field."_loop"); - reset($package[$field]); - while (list($k, $element)=each($package[$field])) { - $this->tpl->setVariable("ELEMENT", sprintf('<a href="%s">%s</a>', - $this->nameToUrl($element).$this->file_extension, - $element - ) - ); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("package_".$field); - $this->tpl->setVariable("EMPTY", ""); - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("package"); - $this->tpl->setVariable("PACKAGE_NAME", $packagename); - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_packagelist".$this->file_extension, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderPackagelist - - /** - * Renders files for the lower left frame with the elements of a certain file. - * - * @param string This function needs the packagelist.xml to work! - * @access public - * @see renderFramePackagesummary(), renderPackagelist() - */ - function renderFrameElementlist($xmlfile) { - - $this->loadPackagelist($xmlfile); - - reset($this->packages); - while (list($packagename, $package)=each($this->packages)) { - - $this->tpl->loadTemplatefile("frame_packageelementlist.html"); - - reset($this->packageFields); - while (list($k, $field)=each($this->packageFields)) { - if (!isset($package[$field])) - continue; - - $this->tpl->setCurrentBlock("package_".$field."_loop"); - reset($package[$field]); - while (list($k, $element)=each($package[$field])) { - - $this->tpl->setVariable("ELEMENT", sprintf('<a href="%s" target="main">%s</a>', - $this->nameToUrl($element).$this->file_extension, - $element - ) - ); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("package_".$field); - $this->tpl->setVariable("EMPTY", ""); - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("package"); - $this->tpl->setVariable("PACKAGE_NAME", $packagename); - $this->tpl->parseCurrentBlock(); - - $this->tpl->setVariable("APPNAME", $this->application); - $packagename = $this->nameToUrl($packagename); - $this->fileHandler->createFile($this->path."packageelementlist_".$packagename.$this->file_extension, $this->tpl->get() ); - } - - $this->tpl->free(); - - } // end func renderFrameElementlist - - /** - * Renders a Packagesummary for the frameset. - * - * @param string XML file. - * @access public - * @see renderPackagelist(), renderFrameElementlist() - */ - function renderFramePackagesummary($xmlfile) { - - $this->loadPackagelist($xmlfile); - $this->tpl->loadTemplatefile("frame_packagelist.html"); - $this->tpl->setCurrentBlock("package"); - - reset($this->packages); - while (list($packagename, $v)=each($this->packages)) { - $this->tpl->setVariable("PACKAGE", sprintf('<a href="packageelementlist_%s" target="packageelements">%s</a>', - $this->nameToUrl($packagename).$this->file_extension, - $packagename ) - ); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."frame_packagelist".$this->file_extension, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderFramePackagesummary - - /** - * Imports the packagelist from the PhpdocIndexAccessor if not done previously. - * - * @param string XMl file. - * @see $packages - */ - function loadPackagelist($xmlfile) { - - if (0==count($this->packages)) { - $this->accessor->loadXMLFile($this->path.$xmlfile); - $this->packages = $this->accessor->getPackagelist(); - } - - } // end func loadPackagelist - - /** - * Recursivly builds an HTML class tree using <ul><li></ul>. - * - * @param string Name of the class the recursive loop starts with - * @see renderClasstree() - */ - function buildClasstreeHTML($class) { - - $html = ""; - - if (0==count($this->classtree["classes"][$class])) { - - $html.= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($class).$this->file_extension, $class); - - } else { - - $html.= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($class).$this->file_extension, $class); - - $html.= "<ul>"; - reset($this->classtree["classes"][$class]); - while (list($k, $subclass)=each($this->classtree["classes"][$class])) - $html.= $this->buildClasstreeHTML($subclass); - $html.= "</ul>"; - } - - return $html; - } // end func buildClasstreeHTML - -} // end class PhpdocHTMLIndexRenderer -?> +<?php +/** +* Renders Index lists. +*/ +class PhpdocHTMLIndexRenderer extends PhpdocHTMLRenderer { + + /** + * Some container in the package list. + * + * @var array + * @see renderPackagelist() + */ + var $packageFields = array("class", "module"); + + /** + * Packagelist from the PhpdocIndexAccessor + * + * @var array + */ + var $packages = array(); + + /** + * Array with classtree informations + * + * @var array + */ + var $classtree = array(); + + /** + * IntegratedTemplate Object used be renderClasstree() + * + * @var object IntegratedTemplate + * @see renderClasstree() + */ + var $treeTpl; + + /** + * IntegratedTemplateObject used by renderModulegroup() + * + * @var object IntegratedTemplate + * @see renderModulegroup() + */ + var $moduleTpl; + + /** + * Sets the xml and template root directory. + * + * @param string XML file path + * @param string Template file path + * @param string Name of the application + * @see setPath(), setTemplateRoot() + */ + function PhpdocHTMLIndexRenderer($path, $templateRoot, $application, $extension = ".html") { + + $this->setPath($path); + $this->setTemplateRoot($templateRoot); + $this->application = $application; + $this->file_extension = $extension; + + $this->accessor = new PhpdocIndexAccessor; + $this->tpl = new IntegratedTemplate($this->templateRoot); + $this->fileHandler = new PhpdocFileHandler; + + } // end constructor + + /** + * Builds all index files phpdoc needs assuming that the xml files have default names + * + * @access public + * @see renderElementlist(), renderPackagelist(), renderFramelementlist(), renderFramePackageSummary() + */ + function generate() { + + $this->renderElementlist("elementlist.xml"); + $this->renderFrameElementlist("elementlist.xml"); + $this->renderPackagelist("packagelist.xml"); + $this->renderFramePackageSummary("packagelist.xml"); + $this->renderFrameElementlist("packagelist.xml"); + + } // end function generate + + /** + * Saves the generated classtree summary to disk. + * + * @see renderClasstree() + * @access public + */ + function finishClasstree() { + + if (!is_object($this->treeTpl)) + return; + + $this->treeTpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path."phpdoc_classtree".$this->file_extension, $this->treeTpl->get() ); + $this->treeTpl = ""; + + } // end func finishClasstree + + /** + * Adds a classtree to the classtree summary template. + * + * @param string XML Classtree file + * @see finishClasstree() + * @access public + */ + function addClasstree($xmlfile) { + + $this->accessor->loadXMLFile($this->path.$xmlfile); + + if (!is_object($this->treeTpl)) { + $this->treeTpl = new IntegratedTemplate($this->templateRoot); + $this->treeTpl->loadTemplatefile("classtree.html"); + } + + $this->classtree = $this->accessor->getClasstree(); + $this->treeTpl->setCurrentBlock("classtree"); + $this->treeTpl->setVariable("BASECLASS", $this->classtree["baseclass"]); + $this->treeTpl->setVariable("TREE", "<ul>".$this->buildClasstreeHTML($this->classtree["baseclass"])."</ul>"); + $this->treeTpl->parseCurrentBlock(); + + return true; + } // end func addClasstree + + function finishModulegroup() { + + if (!is_object($this->moduleTpl)) + return; + + $this->moduleTpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path."phpdoc_modulegroup".$this->file_extension, $this->moduleTpl->get() ); + $this->moduleTpl = ""; + } // end func finishModulegroups + + /** + * Renders a modulegroup xml file. + * + * @param string XML File + */ + function addModulegroup($xmlfile) { + + $this->accessor->loadXMLFile($this->path.$xmlfile); + + if (!is_object($this->moduleTpl)) { + $this->moduleTpl = new IntegratedTemplate($this->templateRoot); + $this->moduleTpl->loadTemplateFile("modulegroup.html"); + } + + $modulegroup = $this->accessor->getModulegroup(); + $modules = "<ul>"; + + reset($modulegroup["modules"]); + while (list($k, $module) = each($modulegroup["modules"])) + $modules .= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($module) . $this->file_extension, $module); + + $modules .= "</ul>"; + + $this->moduleTpl->setCurrentBlock("modulegroup"); + $this->moduleTpl->setVariable("MODULEGROUP", $modulegroup["group"]); + $this->moduleTpl->setVariable("MODULES", $modules); + $this->moduleTpl->parseCurrentBlock(); + + } // end func addModulegroup + + /** + * Renders the element index list. + * + * @param string XML file + * @access public + * @see generate() + */ + function renderElementlist($xmlfile) { + + $this->accessor->loadXMLFile($this->path.$xmlfile); + $this->tpl->loadTemplatefile("elementlist.html"); + + $chapters = $this->accessor->getChapternames(); + if (0 != count($chapters)) { + + $this->tpl->setCurrentBlock("chaptersummary_loop"); + + reset($chapters); + while (list($k, $chapter) = each($chapters)) { + $this->tpl->setVariable("CHAPTER", $chapter); + $this->tpl->parseCurrentBlock(); + } + + $chapters = $this->accessor->getChapters(); + reset($chapters); + while (list($name, $elements) = each($chapters)) { + + if (!isset($elements["element"][0])) + $elements["element"] = array($elements["element"]); + + $this->tpl->setCurrentBlock("chapter_loop"); + + reset($elements["element"]); + while (list($k, $element) = each($elements["element"])) { + + switch($element["type"]) { + case "package": + $desc = "Package"; + break; + + case "class": + $desc = sprintf('Class <a href="%s">%s</a>.', + $this->nameToUrl($element["name"]) . $this->file_extension, + $element["name"] + ); + break; + + case "module": + $desc = sprintf('Module <a href="%s">%s</a>.', + $this->nameToUrl($element["name"]) . $this->file_extension, + $element["name"] + ); + break; + + case "functions": + $desc = sprintf('Function in %s <a href="%s">%s</a>', + $element["sourcetype"], + $this->nameToUrl($element["source"]) . $this->file_extension, + $element["source"] + ); + break; + + case "variables": + $desc = sprintf('Variable in Class <a href="%s">%s</a>', + $this->nameToUrl($element["source"]) . $this->file_extension, + $element["source"] + ); + break; + + case "uses": + $desc = sprintf('Included file in %s <a href="%s">%s</a>', + $element["sourcetype"], + $this->nameToUrl($element["source"]) . $this->file_extension, + $element["source"] + ); + break; + + case "consts": + $desc = sprintf('Constant defined in %s <a href="%s">%s</a>', + $element["sourcetype"], + $this->nameToUrl($element["source"]) . $this->file_extension, + $element["source"] + ); + break; + + } + + $this->tpl->setVariable("ELEMENTNAME", $element["name"]); + $this->tpl->setVariable("ELEMENT", $desc); + $this->tpl->setVariable("SHORTDESCRIPTION", $element["value"]); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("chapter"); + $this->tpl->setVariable("CHAPTER", $name); + $this->tpl->parseCurrentBlock(); + + } + + } + + $this->tpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path . "phpdoc_elementlist" . $this->file_extension, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderElementlist + + /** + * Renders a complete packagelist. + * + * @param string XML file + * @access public + * @see renderFrameElementlist(), renderFramePackagesummary() + */ + function renderPackagelist($xmlfile) { + + $this->loadPackagelist($xmlfile); + $this->tpl->loadTemplatefile("packagelist.html"); + + reset($this->packages); + while (list($packagename, $package) = each($this->packages)) { + + reset($this->packageFields); + while (list($k, $field) = each($this->packageFields)) { + if (!isset($package[$field])) + continue; + + $this->tpl->setCurrentBlock("package_".$field."_loop"); + + reset($package[$field]); + while (list($k, $element) = each($package[$field])) { + + $this->tpl->setVariable("ELEMENT", sprintf('<a href="%s">%s</a>', + $this->nameToUrl($element) . $this->file_extension, + $element + ) + ); + + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("package_" . $field); + $this->tpl->setVariable("EMPTY", ""); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("package"); + $this->tpl->setVariable("PACKAGE_NAME", $packagename); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path . "phpdoc_packagelist" . $this->file_extension, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderPackagelist + + /** + * Renders files for the lower left frame with the elements of a certain file. + * + * @param string This function needs the packagelist.xml to work! + * @access public + * @see renderFramePackagesummary(), renderPackagelist() + */ + function renderFrameElementlist($xmlfile) { + + $this->loadPackagelist($xmlfile); + + reset($this->packages); + while (list($packagename, $package) = each($this->packages)) { + + $this->tpl->loadTemplatefile("frame_packageelementlist.html"); + + reset($this->packageFields); + while (list($k, $field) = each($this->packageFields)) { + + if (!isset($package[$field])) + continue; + + $this->tpl->setCurrentBlock("package_".$field."_loop"); + + reset($package[$field]); + while (list($k, $element) = each($package[$field])) { + + $this->tpl->setVariable("ELEMENT", sprintf('<a href="%s" target="main">%s</a>', + $this->nameToUrl($element) . $this->file_extension, + $element + ) + ); + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("package_" . $field); + $this->tpl->setVariable("EMPTY", ""); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("package"); + $this->tpl->setVariable("PACKAGE_NAME", $packagename); + $this->tpl->parseCurrentBlock(); + + $this->tpl->setVariable("APPNAME", $this->application); + $packagename = $this->nameToUrl($packagename); + $this->fileHandler->createFile($this->path . "packageelementlist_" . $packagename . $this->file_extension, $this->tpl->get() ); + + } + + $this->tpl->free(); + + } // end func renderFrameElementlist + + /** + * Renders a Packagesummary for the frameset. + * + * @param string XML file. + * @access public + * @see renderPackagelist(), renderFrameElementlist() + */ + function renderFramePackagesummary($xmlfile) { + + $this->loadPackagelist($xmlfile); + + $this->tpl->loadTemplatefile("frame_packagelist.html"); + $this->tpl->setCurrentBlock("package"); + + reset($this->packages); + while (list($packagename, $v) = each($this->packages)) { + + $this->tpl->setVariable("PACKAGE", sprintf('<a href="packageelementlist_%s" target="packageelements">%s</a>', + $this->nameToUrl($packagename) . $this->file_extension, + $packagename ) + ); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path . "frame_packagelist" . $this->file_extension, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderFramePackagesummary + + /** + * Imports the packagelist from the PhpdocIndexAccessor if not done previously. + * + * @param string XMl file. + * @see $packages + */ + function loadPackagelist($xmlfile) { + + if (0 == count($this->packages)) { + $this->accessor->loadXMLFile($this->path . $xmlfile); + $this->packages = $this->accessor->getPackagelist(); + } + + } // end func loadPackagelist + + /** + * Recursivly builds an HTML class tree using <ul><li></ul>. + * + * @param string Name of the class the recursive loop starts with + * @see renderClasstree() + */ + function buildClasstreeHTML($class) { + + $html = ""; + + if (0 == count($this->classtree["classes"][$class])) { + + $html .= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($class) . $this->file_extension, $class); + + } else { + + $html .= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($class) . $this->file_extension, $class); + $html .= "<ul>"; + + reset($this->classtree["classes"][$class]); + while (list($k, $subclass) = each($this->classtree["classes"][$class])) + $html .= $this->buildClasstreeHTML($subclass); + + $html .= "</ul>"; + + } + + return $html; + } // end func buildClasstreeHTML + +} // end class PhpdocHTMLIndexRenderer +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,92 +1,92 @@ -<?php -/** -* Renders modules. -*/ -class PhpdocHTMLModuleRenderer extends PhpdocHTMLDocumentRenderer { - - /** - * Sets the xml and template root directory. - * - * @param string XML file path - * @param string Template file path - * @param string Name of the current application - * @see setPath(), setTemplateRoot() - */ - function PhpdocHTMLModuleRenderer($path, $templateRoot, $application, $extension = ".html") { - - $this->setPath($path); - $this->setTemplateRoot($templateRoot); - $this->application = $application; - $this->file_extension = $extension; - - $this->accessor = new PhpdocModuleAccessor; - $this->tpl = new IntegratedTemplate($this->templateRoot); - $this->fileHandler = new PhpdocFileHandler; - - } // end constructor - - /** - * Renders a module - * @param string XML source file - * @param string Name of the HTML target file. - * @access public - */ - function renderModule($xmlfile, $htmlfile="") { - - $this->tpl->loadTemplatefile("module.html"); - - if (""==$htmlfile) - $htmlfile = substr($xmlfile, 7, -4).$this->file_extension; - - $this->accessor->loadXMLFile($this->path.$xmlfile); - $module = $this->accessor->getModuledata(); - - $this->renderFunctions(); - $this->renderUses(); - $this->renderConstants(); - - $tplvars = array(); - - $tplvars["MODULE_FILE"] = $module["file"]["value"]; - $tplvars["MODULE_NAME"] = $module["name"]; - $tplvars["MODULE_GROUP"] = $module["group"]; - $tplvars["MODULE_ACCESS"] = $module["access"]; - $tplvars["MODULE_PACKAGE"] = $module["package"]; - $tplvars["MODULE_UNDOC"] = ("true" == $module["undoc"]) ? $this->undocumented : ""; - - if (isset($module["doc"]["link"])) - $this->renderLinks($module["doc"]["link"], "class_"); - - if (isset($module["doc"]["author"])) - $this->renderAuthors($module["doc"]["author"], "class_"); - - if (isset($module["doc"]["see"])) - $this->renderSee($module["doc"]["see"], "class_"); - - $fields = array( "version", "deprecated", "copyright" , - "since", "magic"); - reset($fields); - while (list($k, $field)=each($fields)) - if (isset($module["doc"][$field])) { - $this->tpl->setCurrentBlock("module_".strtolower($field)); - $this->tpl->setVariable(strtoupper($field), $module["doc"][$field]["value"]); - $this->tpl->parseCurrentBlock(); - } - - $fields = array( "description", "shortdescription" ); - reset($fields); - while (list($k, $field)=each($fields)) - if (isset($module["doc"][$field])) - $tplvars["MODULE_".strtoupper($field)] = $this->encode($module["doc"][$field]["value"]); - - $this->tpl->setCurrentBlock("__global__"); - $this->tpl->setVariable($tplvars); - $this->tpl->setVariable("APPNAME", $this->application); - - $this->fileHandler->createFile($this->path.$htmlfile, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderModule - -} // end class PhpdocHTMLModuleRenderer -?> +<?php +/** +* Renders modules. +*/ +class PhpdocHTMLModuleRenderer extends PhpdocHTMLDocumentRenderer { + + /** + * Sets the xml and template root directory. + * + * @param string XML file path + * @param string Template file path + * @param string Name of the current application + * @see setPath(), setTemplateRoot() + */ + function PhpdocHTMLModuleRenderer($path, $templateRoot, $application, $extension = ".html") { + + $this->setPath($path); + $this->setTemplateRoot($templateRoot); + $this->application = $application; + $this->file_extension = $extension; + + $this->accessor = new PhpdocModuleAccessor; + $this->tpl = new IntegratedTemplate($this->templateRoot); + $this->fileHandler = new PhpdocFileHandler; + + } // end constructor + + /** + * Renders a module + * + * @param string XML source file + * @param string Name of the HTML target file. + * @access public + */ + function renderModule($xmlfile, $htmlfile = "") { + + $this->tpl->loadTemplatefile("module.html"); + if ("" == $htmlfile) + $htmlfile = substr($xmlfile, 7, -4) . $this->file_extension; + + $this->accessor->loadXMLFile($this->path . $xmlfile); + $module = $this->accessor->getModuledata(); + + $this->renderFunctions(); + $this->renderUses(); + $this->renderConstants(); + + $tplvars = array(); + $tplvars["MODULE_FILE"] = $module["file"]["value"]; + $tplvars["MODULE_NAME"] = $module["name"]; + $tplvars["MODULE_GROUP"] = $module["group"]; + $tplvars["MODULE_ACCESS"] = $module["access"]; + $tplvars["MODULE_PACKAGE"] = $module["package"]; + $tplvars["MODULE_UNDOC"] = ("true" == $module["undoc"]) ? $this->undocumented : ""; + + if (isset($module["doc"]["link"])) + $this->renderLinks($module["doc"]["link"], "class_"); + + if (isset($module["doc"]["author"])) + $this->renderAuthors($module["doc"]["author"], "class_"); + + if (isset($module["doc"]["see"])) + $this->renderSee($module["doc"]["see"], "class_"); + + $fields = array( "version", "deprecated", "copyright", "since", "magic"); + reset($fields); + while (list($k, $field) = each($fields)) + + if (isset($module["doc"][$field])) { + $this->tpl->setCurrentBlock("module_" . strtolower($field)); + $this->tpl->setVariable(strtoupper($field), $module["doc"][$field]["value"]); + $this->tpl->parseCurrentBlock(); + } + + $fields = array( "description", "shortdescription" ); + reset($fields); + while (list($k, $field) = each($fields)) + + if (isset($module["doc"][$field])) + $tplvars["MODULE_" . strtoupper($field)] = $this->encode($module["doc"][$field]["value"]); + + $this->tpl->setCurrentBlock("__global__"); + $this->tpl->setVariable($tplvars); + $this->tpl->setVariable("APPNAME", $this->application); + + $this->fileHandler->createFile($this->path . $htmlfile, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderModule + +} // end class PhpdocHTMLModuleRenderer +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,74 +1,78 @@ -<?php -/** -* Default HTML Renderer based on templates. -*/ -class PhpdocHTMLRenderer extends PhpdocRendererObject { - - /** - * Template object - * @var object IntegratedTemplates $tpl - */ - var $tpl; - - /** - * XML data accessor object. - * @var object PhpdocAccessor - */ - var $accessor; - - /** - * Rootpath for Templatefiles. - * @var string $templateRoot - * @see setTemplateRoot() - */ - var $templateRoot = ""; - - /** - * Directory path prefix. - * @var string $path - */ - var $path = ""; - - /** - * Sets a directory path prefix. - * - * @param string - */ - function setPath($path) { - - if (""!=$path && "/"!=substr($path, -1)) - $path.="/"; - - $this->path = $path; - } // end func path - - /** - * Sets the template directory. - * - * @param string - */ - function setTemplateRoot($templateRoot) { - - if (""!=$path && "/"!=substr($templateRoot, -1)) - $templateRoot.="/"; - - $this->templateRoot = $templateRoot; - } // end func setTemplateRoot - - /** - * Encodes the given string. - * - * This function gets used to encode all userdependend - * elements of the phpdoc xml files. Use it to - * customize your rendering result: beware newlines (nl2br()), - * strip tags etc. - * - * @param string String to encode - * @return string $string Encoded string - */ - function encode($string) { - return nl2br(htmlspecialchars($string)); - } // end func encode - -} // end class PhpdocHTMLRenderer +<?php +/** +* Default HTML Renderer based on templates. +*/ +class PhpdocHTMLRenderer extends PhpdocRendererObject { + + /** + * Template object + * + * @var object IntegratedTemplates $tpl + */ + var $tpl; + + /** + * XML data accessor object. + * + * @var object PhpdocAccessor + */ + var $accessor; + + /** + * Rootpath for Templatefiles. + * + * @var string $templateRoot + * @see setTemplateRoot() + */ + var $templateRoot = ""; + + /** + * Directory path prefix. + * + * @var string $path + */ + var $path = ""; + + /** + * Sets a directory path prefix. + * + * @param string + */ + function setPath($path) { + + if ("" != $path && "/" != substr($path, -1)) + $path .= "/"; + + $this->path = $path; + } // end func path + + /** + * Sets the template directory. + * + * @param string + */ + function setTemplateRoot($templateRoot) { + + if ("" != $path && "/" != substr($templateRoot, -1)) + $templateRoot .= "/"; + + $this->templateRoot = $templateRoot; + } // end func setTemplateRoot + + /** + * Encodes the given string. + * + * This function gets used to encode all userdependend + * elements of the phpdoc xml files. Use it to + * customize your rendering result: beware newlines (nl2br()), + * strip tags etc. + * + * @param string String to encode + * @return string $string Encoded string + */ + function encode($string) { + return nl2br(htmlspecialchars($string)); + } // end func encode + +} // end class PhpdocHTMLRenderer ?> Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php Sun Dec 3 06:36:01 2000 @@ -1,98 +1,99 @@ -<?php -/** -* Controls the HTML Renderer objects. -* -*/ -class PhpdocHTMLRendererManager extends PhpdocObject { - /** - * @var object PhpdocHTMLIndexRenderer - */ - var $indexrenderer; - - /** - * @var object PhpdocHTMLClassRenderer - */ - var $classrenderer; - - /** - * @var object PhpdocHTMLModuleRenderer - */ - var $modulerenderer; - - /** - * @var object PhpdocHTMLWarningRenderer - */ - var $warningrenderer; - - /** - * Creates all necessary renderer objects - * - * @param string Name of the target directory - * @param string Name of the directory with the templates. - * @param string Name of the current application - * @param string Extension of generated files - */ - function PhpdocHTMLRendererManager($target, $template, $application, $extension = ".html") { - - $this->indexrenderer = new PhpdocHTMLIndexRenderer($target, $template, $application, $extension); - $this->indexrenderer->generate(); - - $this->classrenderer = new PhpdocHTMLClassRenderer($target, $template, $application, $extension); - $this->modulerenderer = new PhpdocHTMLModuleRenderer($target, $template, $application, $extension); - $this->warningrenderer = new PhpdocHTMLWarningRenderer($target, $template, $application, $extension); - - } // end constructor - - /** - * Renders the given xml file. - * - * @param string XML file. - * @param string Content of the XML file: class, classtree, - * module, modulegroup, warnings, indexdata - * @access public - */ - function render($xmlfile, $type) { - - switch(strtolower($type)) { - - case "class": - $this->classrenderer->renderClass($xmlfile); - break; - - case "classtree": - $this->indexrenderer->addClasstree($xmlfile); - break; - - case "module": - $this->modulerenderer->renderModule($xmlfile); - break; - - case "modulegroup": - $this->indexrenderer->addModulegroup($xmlfile); - break; - - case "warning": - $this->warningrenderer->addWarnings($xmlfile); - break; - - } - - } // end func render - - /** - * Finishes the rendering process. - * - * Finish means here: write the classtree and modulegroup overview to disk. - * - * @access public - */ - function finish() { - - $this->indexrenderer->finishClasstree(); - $this->indexrenderer->finishModulegroup(); - $this->warningrenderer->finishWarnings(); - - } // end func finish - -} // end class PhpdocHTMLRendererManager +<?php +/** +* Controls the HTML Renderer objects. +* +*/ +class PhpdocHTMLRendererManager extends PhpdocObject { + + /** + * @var object PhpdocHTMLIndexRenderer + */ + var $indexrenderer; + + /** + * @var object PhpdocHTMLClassRenderer + */ + var $classrenderer; + + /** + * @var object PhpdocHTMLModuleRenderer + */ + var $modulerenderer; + + /** + * @var object PhpdocHTMLWarningRenderer + */ + var $warningrenderer; + + /** + * Creates all necessary renderer objects + * + * @param string Name of the target directory + * @param string Name of the directory with the templates. + * @param string Name of the current application + * @param string Extension of generated files + */ + function PhpdocHTMLRendererManager($target, $template, $application, $extension = ".html") { + + $this->indexrenderer = new PhpdocHTMLIndexRenderer($target, $template, $application, $extension); + $this->indexrenderer->generate(); + + $this->classrenderer = new PhpdocHTMLClassRenderer($target, $template, $application, $extension); + $this->modulerenderer = new PhpdocHTMLModuleRenderer($target, $template, $application, $extension); + $this->warningrenderer = new PhpdocHTMLWarningRenderer($target, $template, $application, $extension); + + } // end constructor + + /** + * Renders the given xml file. + * + * @param string XML file. + * @param string Content of the XML file: class, classtree, + * module, modulegroup, warnings, indexdata + * @access public + */ + function render($xmlfile, $type) { + + switch (strtolower($type)) { + + case "class": + $this->classrenderer->renderClass($xmlfile); + break; + + case "classtree": + $this->indexrenderer->addClasstree($xmlfile); + break; + + case "module": + $this->modulerenderer->renderModule($xmlfile); + break; + + case "modulegroup": + $this->indexrenderer->addModulegroup($xmlfile); + break; + + case "warning": + $this->warningrenderer->addWarnings($xmlfile); + break; + + } + + } // end func render + + /** + * Finishes the rendering process. + * + * Finish means here: write the classtree and modulegroup overview to disk. + * + * @access public + */ + function finish() { + + $this->indexrenderer->finishClasstree(); + $this->indexrenderer->finishModulegroup(); + $this->warningrenderer->finishWarnings(); + + } // end func finish + +} // end class PhpdocHTMLRendererManager ?> Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,83 +1,87 @@ -<?php -/** -* Renders files with warnings. -*/ -class PhpdocHTMLWarningRenderer extends PhpdocHTMLRenderer { - - /** - * Sets the xml and template root directory. - * - * @param string XML file path - * @param string Template file path - * @param string Name of the application - * @see setPath(), setTemplateRoot() - */ - function PhpdocHTMLWarningRenderer($path, $templateRoot, $application, $extension = ".html") { - - $this->setPath($path); - $this->setTemplateRoot($templateRoot); - $this->application = $application; - $this->file_extension = $extension; - - $this->accessor = new PhpdocWarningAccessor; - $this->fileHandler = new PhpdocFileHandler; - - } // end constructor - - /** - * Saves the generated report. - * - * @see addWarnings() - * @access public - */ - function finishWarnings() { - - if (!is_object($this->tpl)) - return; - - $this->tpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_warnings".$this->file_extension, $this->tpl->get() ); - $this->tpl = ""; - - } // end func finishWarnings - - /** - * Adds file with warnings to the warning list. - * - * @param string XML file - * @see finishWarnings() - * @access public - */ - function addWarnings($xmlfile) { - - $data = $this->accessor->getWarnings($this->path.$xmlfile); - - if (!is_object($this->tpl)) { - $this->tpl = new IntegratedTemplate($this->templateRoot); - $this->tpl->loadTemplateFile("warnings.html"); - } - reset($data); - while (list($file, $warnings)=each($data)) { - - $this->tpl->setCurrentBlock("warning_loop"); - reset($warnings); - while (list($k, $warning)=each($warnings)) { - $this->tpl->setVariable("WARNINGTYPE", $warning["type"]); - $this->tpl->setVariable("WARNING", $this->encode($warning["value"])); - $this->tpl->setVariable("ELEMENT", htmlentities($warning["name"])); - $this->tpl->setVariable("ELEMENTTYPE", $warning["elementtype"]); - $this->tpl->parseCurrentBlock(); - } - - - $this->tpl->setCurrentBlock("warning"); - $this->tpl->setVariable("FILE", $file); - $this->tpl->setVariable("NUMWARNINGS", count($warnings)); - $this->tpl->parseCurrentBlock(); - } - - return true; - } // end func addWarnings - -} // end class PhpdocHTMLIndexRenderer -?> +<?php +/** +* Renders files with warnings. +*/ +class PhpdocHTMLWarningRenderer extends PhpdocHTMLRenderer { + + /** + * Sets the xml and template root directory. + * + * @param string XML file path + * @param string Template file path + * @param string Name of the application + * @see setPath(), setTemplateRoot() + */ + function PhpdocHTMLWarningRenderer($path, $templateRoot, $application, $extension = ".html") { + + $this->setPath($path); + $this->setTemplateRoot($templateRoot); + $this->application = $application; + $this->file_extension = $extension; + + $this->accessor = new PhpdocWarningAccessor; + $this->fileHandler = new PhpdocFileHandler; + + } // end constructor + + /** + * Saves the generated report. + * + * @see addWarnings() + * @access public + */ + function finishWarnings() { + + if (!is_object($this->tpl)) + return; + + $this->tpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path."phpdoc_warnings" . $this->file_extension, $this->tpl->get() ); + + $this->tpl = ""; + + } // end func finishWarnings + + /** + * Adds file with warnings to the warning list. + * + * @param string XML file + * @see finishWarnings() + * @access public + */ + function addWarnings($xmlfile) { + + $data = $this->accessor->getWarnings($this->path . $xmlfile); + if (!is_object($this->tpl)) { + $this->tpl = new IntegratedTemplate($this->templateRoot); + $this->tpl->loadTemplateFile("warnings.html"); + } + + reset($data); + while (list($file, $warnings) = each($data)) { + + $this->tpl->setCurrentBlock("warning_loop"); + + reset($warnings); + while (list($k, $warning) = each($warnings)) { + + $this->tpl->setVariable("WARNINGTYPE", $warning["type"]); + $this->tpl->setVariable("WARNING", $this->encode($warning["value"])); + $this->tpl->setVariable("ELEMENT", htmlentities($warning["name"])); + $this->tpl->setVariable("ELEMENTTYPE", $warning["elementtype"]); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("warning"); + $this->tpl->setVariable("FILE", $file); + $this->tpl->setVariable("NUMWARNINGS", count($warnings)); + $this->tpl->parseCurrentBlock(); + + } + + return true; + } // end func addWarnings + +} // end class PhpdocHTMLIndexRenderer +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/templates/class.html diff -u php4/pear/PHPDoc/renderer/html/templates/class.html:1.2 php4/pear/PHPDoc/renderer/html/templates/class.html:1.3 --- php4/pear/PHPDoc/renderer/html/templates/class.html:1.2 Sat Dec 2 16:25:24 2000 +++ php4/pear/PHPDoc/renderer/html/templates/class.html Sun Dec 3 06:36:01 2000 @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +C<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- Generated with PHPDoc, http://www.phpdoc.de --> <html> <head> @@ -93,7 +93,7 @@ <!-- BEGIN functionsummary_loop --> <tr> <td align="right" valign="top">{RETURNTYPE}</td> - <td align="left" valign="top" width="100%"><a href="#function_{NAME}"><h4>{NAME}({PARAMETER})</h4></a>{SHORTDESCRIPTION}{UNDOC}</td> + <td align="left" valign="top" width="100%"><a href="#function_{NAME}()"><h4>{NAME}({PARAMETER})</h4></a>{SHORTDESCRIPTION}{UNDOC}</td> </tr> <!-- END functionsummary_loop --> </table> @@ -202,7 +202,7 @@ <td colspan="2" align="left" valign="top"><h2>{ACCESS} Method Details</h2></td> </tr> <!-- BEGIN functiondetails_loop --> - <tr><td colspan="2" align="left" valign="top"><a name="function_{NAME}"><h4>{NAME}</h4></a></td></tr> + <tr><td colspan="2" align="left" valign="top"><a name="function_{NAME}()"><h4>{NAME}</h4></a></td></tr> <tr> <td colspan="2" align="left" valign="top"> <b>{ACCESS} {ABSTRACT} {STATIC} {FINAL} {RETURNTYPE} {NAME}( {PARAMETER} )</b><p> Index: php4/pear/PHPDoc/renderer/html/templates/classtree.html diff -u php4/pear/PHPDoc/renderer/html/templates/classtree.html:1.1 php4/pear/PHPDoc/renderer/html/templates/classtree.html:1.2 --- php4/pear/PHPDoc/renderer/html/templates/classtree.html:1.1 Sun Oct 8 03:05:12 2000 +++ php4/pear/PHPDoc/renderer/html/templates/classtree.html Sun Dec 3 06:36:01 2000 @@ -27,7 +27,7 @@ </tr> <tr> <td align="left" valign="top"><h1>Classtrees</h1></td> - </tr + </tr> <!-- BEGIN classtree --> <tr> <td height="10" align="left" valign="top"> </td> Index: php4/pear/PHPDoc/renderer/html/templates/module.html diff -u php4/pear/PHPDoc/renderer/html/templates/module.html:1.2 php4/pear/PHPDoc/renderer/html/templates/module.html:1.3 --- php4/pear/PHPDoc/renderer/html/templates/module.html:1.2 Sat Dec 2 16:25:24 2000 +++ php4/pear/PHPDoc/renderer/html/templates/module.html Sun Dec 3 06:36:01 2000 @@ -78,7 +78,7 @@ <!-- BEGIN functionsummary_loop --> <tr> <td align="right" valign="top">{RETURNTYPE}</td> - <td align="left" valign="top" width="100%"><a href="#function_{NAME}"><h4>{NAME}({PARAMETER})</h4></a>{SHORTDESCRIPTION}{UNDOC}</td> + <td align="left" valign="top" width="100%"><a href="#function_{NAME}()"><h4>{NAME}({PARAMETER})</h4></a>{SHORTDESCRIPTION}{UNDOC}</td> </tr> <!-- END functionsummary_loop --> </table> @@ -128,7 +128,7 @@ <td colspan="2" align="left" valign="top"><h2>{ACCESS} Method Details</h2></td> </tr> <!-- BEGIN functiondetails_loop --> - <tr><td colspan="2" align="left" valign="top"><a name="function_{NAME}"><h4>{NAME}</h4></a></td></tr> + <tr><td colspan="2" align="left" valign="top"><a name="function_{NAME}()"><h4>{NAME}</h4></a></td></tr> <tr> <td colspan="2" align="left" valign="top"> <b>{ACCESS} {ABSTRACT} {STATIC} {FINAL} {RETURNTYPE} {NAME}( {PARAMETER} )</b><p>
Index: php4/pear/PHPDoc/renderer/PhpdocRendererObject.php diff -u php4/pear/PHPDoc/renderer/PhpdocRendererObject.php:1.2 php4/pear/PHPDoc/renderer/PhpdocRendererObject.php:1.3 --- php4/pear/PHPDoc/renderer/PhpdocRendererObject.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/PhpdocRendererObject.php Sun Dec 3 06:36:00 2000 @@ -1,15 +1,21 @@ -<?php -class PhpdocRendererObject extends PhpdocObject { - - var $warn; - - var $accessor; - - /** - * Extension for generated files. - * @var string $file_extension - */ - var $file_extension = ".html"; - -} // end class PhpdocRendererObject +<?php +/** +* Superclass of all Renderer. +* +* Derive all custom renderer from this class. +* +*/ +class PhpdocRendererObject extends PhpdocObject { + + var $warn; + + var $accessor; + + /** + * Extension for generated files. + * @var string $file_extension + */ + var $file_extension = ".html"; + +} // end class PhpdocRendererObject ?> Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLClassRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,368 +1,385 @@ -<?php -/** -* Renders classes. -*/ -class PhpdocHTMLClassRenderer extends PhpdocHTMLDocumentRenderer { - - /** - * Internal array of " " strings to format HTML output. - * @var array $indent - */ - var $indent = array(); - - /** - * Array of variables found in the xml document. - * @var array $variables - */ - var $variables = array(); - - /** - * Sets the xml and template root directory. - * - * @param string XML file path - * @param string Template file path - * @param string Name of the current application - * @see setPath(), setTemplateRoot() - */ - function PhpdocHTMLClassRenderer($path, $templateRoot, $application, $extension = ".html") { - - $this->setPath($path); - $this->setTemplateRoot($templateRoot); - $this->application = $application; - $this->file_extension = $extension; - - $this->accessor = new PhpdocClassAccessor; - $this->tpl = new IntegratedTemplate($this->templateRoot); - $this->fileHandler = new PhpdocFileHandler; - - } // end constructor - - /** - * Renders a class - * @param string XML source file - * @param string Name of the HTML target file. - * @access public - */ - function renderClass($xmlfile, $htmlfile="") { - - $this->tpl->loadTemplatefile("class.html"); - - if (""==$htmlfile) - $htmlfile = substr($xmlfile, 6, -4).$this->file_extension; - - $this->accessor->loadXMLFile($this->path.$xmlfile); - - $this->renderSubclasses(); - $this->renderInherited(); - $this->renderFunctions(); - $this->renderVariables(); - $this->renderUses(); - $this->renderConstants(); - - $class = $this->accessor->getClassdata(); - - $tplvars = array(); - - $tplvars["CLASS_FILE"] = $class["file"]["value"]; - $tplvars["CLASS_NAME"] = $class["name"]; - $tplvars["CLASS_ACCESS"] = $class["access"]; - $tplvars["CLASS_PACKAGE"] = $class["package"]; - - if (""!=$class["extends"]) - $tplvars["CLASS_EXTENDS"] = sprintf('extends <a href="%s">%s</a>', - $class["extends"].$this->file_extension, - $class["extends"] - ); - - $tplvars["CLASS_UNDOC"] = ("true" == $class["undoc"]) ? $this->undocumented : ""; - - $tplvars["CLASS_ABSTRACT"]= ("true" == $class["abstract"]) ? "abstract" : ""; - $tplvars["CLASS_STATIC"] = ("true" == $class["static"]) ? "static" : ""; - $tplvars["CLASS_FINAL"] = ("true" == $class["final"]) ? "final" : ""; - - $tplvars["CLASS_TREE"] = $this->getClasstree($class["name"]); - - if (isset($class["doc"]["link"])) - $this->renderLinks($class["doc"]["link"], "class_"); - - if (isset($class["doc"]["author"])) - $this->renderAuthors($class["doc"]["author"], "class_"); - - if (isset($class["doc"]["see"])) - $this->renderSee($class["doc"]["see"], "class_"); - - $fields = array( "version", "deprecated", "copyright" , - "since", "magic"); - reset($fields); - while (list($k, $field)=each($fields)) - if (isset($class["doc"][$field])) { - $this->tpl->setCurrentBlock("class_".strtolower($field)); - $this->tpl->setVariable(strtoupper($field), $class["doc"][$field]["value"]); - $this->tpl->parseCurrentBlock(); - } - - $fields = array( "description", "shortdescription" ); - reset($fields); - while (list($k, $field)=each($fields)) - if (isset($class["doc"][$field])) - $tplvars["CLASS_".strtoupper($field)] = $this->encode($class["doc"][$field]["value"]); - - $this->tpl->setCurrentBlock("__global__"); - $this->tpl->setVariable($tplvars); - $this->tpl->setVariable("APPNAME", $this->application); - - $this->fileHandler->createFile($this->path.$htmlfile, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderClass - - /** - * Renders a list of inherited elements. - * @see renderInheritedElements() - */ - function renderInherited() { - - $this->renderInheritedElements( $this->accessor->getInheritedFunctions(), - "inheritedfunctions", - "function" - ); - - $this->renderInheritedElements( $this->accessor->getInheritedVariables(), - "inheritedvariables", - "variable" - ); - - $this->renderInheritedElements( $this->accessor->getInheritedConstants(), - "inheritedconstants", - "constant" - ); - - $this->renderInheritedElements( $this->accessor->getInheritedUses(), - "inheriteduses", - "uses" - ); - - } // end func renderInherited - - /** - * Renders a list of a certain inherited element. - * @see renderInheritedElements() - */ - function renderInheritedElements($inherited, $block, $type) { - - if (0==count($inherited)) - return; - - $this->tpl->setCurrentBlock($block); - reset($inherited); - while (list($source, $elements)=each($inherited)) { - - $value = ""; - reset($elements); - while (list($k, $element)=each($elements)) - $value.= sprintf('<a href="%s#%s_%s">%s</a>, ', - $source.$this->file_extension, - $type, - $element, - $element - ); - $value = substr($value, 0, -2); - - $this->tpl->setVariable("SOURCE", $source); - $this->tpl->setVariable("ELEMENTS", $value); - $this->tpl->parseCurrentBlock(); - } - - } // end func renderInheritedElements - - /** - * Renders a list of direct known subclasses. - */ - function renderSubclasses() { - - $subclasses = $this->accessor->getSubclasses(); - if (0==count($subclasses)) - return; - - $elements = ""; - reset($subclasses); - while (list($k, $subclass)=each($subclasses)) - $elements.= sprintf('<a href="%s">%s</a>, ', $subclass.$this->file_extension, $subclass); - - $elements = substr($elements, 0, -2); - - if (""!=$elements) { - - $this->tpl->setCurrentBlock("subclasses"); - $this->tpl->setVariable("ELEMENTS", $elements); - $this->tpl->parseCurrentBlock(); - - } - } // end func renderSubclasses - - /** - * Adds a summary and a detailed list of all variables to the template. - * @see renderVariableSummary(), renderVariableDetail() - */ - function renderVariables() { - - $this->variables["private"] = $this->accessor->getVariablesByAccess("private"); - $this->variables["public"] = $this->accessor->getVariablesByAccess("public"); - - if (0==count($this->variables["private"]) && 0==count($this->variables["public"])) - return; - - $this->renderVariableSummary(); - $this->renderVariableDetail(); - - $this->variables = array(); - - } // end func renderVariables - - /** - * Adds a summary of all variables to the template. - * - * The function assumes that there is a block named "variablesummary" and - * within it a block names "variablesummay_loop" in the template. - * - * @see renderVariableDetail() - */ - function renderVariableSummary() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->variables[$access])) - continue; - - $this->tpl->setCurrentBlock("variablesummary_loop"); - - reset($this->variables[$access]); - while (list($name, $variable)=each($this->variables[$access])) { - - $this->tpl->setVariable("NAME", $name); - $this->tpl->setVariable("TYPE", $variable["type"]); - - if (isset($variable["doc"]["shortdescription"])) - $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($variable["doc"]["shortdescription"]["value"])); - - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("variablesummary"); - $this->tpl->setVariable("ACCESS", ucfirst($access)); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderVariableSummary - - /** - * Adds a detailed list of all variables to the template. - * - * The function assumes that there is a block named "variabledetails" - * and within it a block names "variablesdetails_loop" in the template. - * - * @see renderVariableSummary() - */ - function renderVariableDetail() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->variables[$access])) - continue; - - reset($this->variables[$access]); - while (list($name, $variable)=each($this->variables[$access])) { - - $tplvars = array(); - $tplvars["NAME"] = $variable["name"]; - $tplvars["ACCESS"] = $variable["access"]; - $tplvars["TYPE"] = $variable["type"]; - $tplvars["VALUE"] = htmlentities($variable["value"]); - - if ("true"==$variable["undoc"]) - $tplvars["UNDOC"] = $this->undocumented; - - if ("true"==$variable["static"]) - $tplvars["STATIC"] = "static"; - - if ("true"==$variable["final"]) - $tplvars["FINAL"] = "final"; - - if (isset($variable["doc"]["shortdescription"])) - $tplvars["SHORTDESCRIPTION"] = $this->encode($variable["doc"]["shortdescription"]["value"]); - if (isset($variable["doc"]["description"])) - $tplvars["DESCRIPTION"] = $this->encode($variable["doc"]["description"]["value"]); - - $this->renderCommonDocfields("variabledetails_", $variable); - - $this->tpl->setCurrentBlock("variabledetails_loop"); - $this->tpl->setVariable($tplvars); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("variabledetails"); - $this->tpl->setVariable("ACCESS", ucfirst($access) ); - $this->tpl->parseCurrentBlock(); - } - - } // end func renderVariableDetail - - /** - * Returns a html string that shows the class tree. - * @param string name of the current class - * @return string HTML that shows the tree - */ - function getClasstree($class) { - - $path = $this->accessor->getClasstree(); - - $level = 0; - $num = count($path)-1; - - for ($i = $num; $i>=0; $i--) { - - $indent = $this->getIndent($level); - if ($level>0) - $value.= sprintf("%s |<br>%s+-- ", $indent, $indent); - $value.= sprintf('<a href="%s">%s</a><br>', - $path[$i].$this->file_extension, - $path[$i] - ); - $level++; - - } - - $indent = $this->getIndent($level); - if ($level>0) - $value.= sprintf("%s |<br>%s+-- ", $indent, $indent); - $value.= sprintf('%s<br>', $class); - - return $value; - } // end func getClasstree - - /** - * Returns a certain number of " "s. - * @param int number of " " required. - * @see $indent - * @return string A string with the requested number of nunbreakable html spaces - */ - function getIndent($level) { - - if (!isset($this->indent[$level])) { - - $html = ""; - for ($i=0; $i<$level; $i++) - $html.= " "; - - $this->indent[$level] = $html; - - } - - return $this->indent[$level]; - - } // end func getIndent - -} // end class PhpdocHTMLClassRenderer -?> +<?php +/** +* Renders classes. +*/ +class PhpdocHTMLClassRenderer extends PhpdocHTMLDocumentRenderer { + + /** + * Internal array of " " strings to format HTML output. + * + * @var array $indent + */ + var $indent = array(); + + /** + * Array of variables found in the xml document. + * + * @var array $variables + */ + var $variables = array(); + + /** + * Sets the xml and template root directory. + * + * @param string XML file path + * @param string Template file path + * @param string Name of the current application + * @see setPath(), setTemplateRoot() + */ + function PhpdocHTMLClassRenderer($path, $templateRoot, $application, $extension = ".html") { + + $this->setPath($path); + $this->setTemplateRoot($templateRoot); + $this->application = $application; + $this->file_extension = $extension; + + $this->accessor = new PhpdocClassAccessor; + $this->tpl = new IntegratedTemplate($this->templateRoot); + $this->fileHandler = new PhpdocFileHandler; + + } // end constructor + + /** + * Renders a class + * @param string XML source file + * @param string Name of the HTML target file. + * @access public + */ + function renderClass($xmlfile, $htmlfile = "") { + + $this->tpl->loadTemplatefile("class.html"); + if ("" == $htmlfile) + $htmlfile = substr($xmlfile, 6, -4) . $this->file_extension; + + $this->accessor->loadXMLFile($this->path.$xmlfile); + + $this->renderSubclasses(); + $this->renderInherited(); + $this->renderFunctions(); + $this->renderVariables(); + $this->renderUses(); + $this->renderConstants(); + + $class = $this->accessor->getClassdata(); + $tplvars = array(); + + $tplvars["CLASS_FILE"] = $class["file"]["value"]; + $tplvars["CLASS_NAME"] = $class["name"]; + $tplvars["CLASS_ACCESS"] = $class["access"]; + $tplvars["CLASS_PACKAGE"] = $class["package"]; + + if ("" != $class["extends"]) + $tplvars["CLASS_EXTENDS"] = sprintf('extends <a href="%s">%s</a>', + $class["extends"].$this->file_extension, + $class["extends"] + ); + + $tplvars["CLASS_UNDOC"] = ("true" == $class["undoc"]) ? $this->undocumented : ""; + + $tplvars["CLASS_ABSTRACT"] = ("true" == $class["abstract"]) ? "abstract" : ""; + $tplvars["CLASS_STATIC"] = ("true" == $class["static"]) ? "static" : ""; + $tplvars["CLASS_FINAL"] = ("true" == $class["final"]) ? "final" : ""; + + $tplvars["CLASS_TREE"] = $this->getClasstree($class["name"]); + + if (isset($class["doc"]["link"])) + $this->renderLinks($class["doc"]["link"], "class_"); + + if (isset($class["doc"]["author"])) + $this->renderAuthors($class["doc"]["author"], "class_"); + + if (isset($class["doc"]["see"])) + $this->renderSee($class["doc"]["see"], "class_"); + + $fields = array( "version", "deprecated", "copyright", "since", "magic"); + reset($fields); + while (list($k, $field) = each($fields)) + if (isset($class["doc"][$field])) { + $this->tpl->setCurrentBlock("class_".strtolower($field)); + $this->tpl->setVariable(strtoupper($field), $class["doc"][$field]["value"]); + $this->tpl->parseCurrentBlock(); + } + + $fields = array( "description", "shortdescription" ); + + reset($fields); + while (list($k, $field)=each($fields)) + if (isset($class["doc"][$field])) + $tplvars["CLASS_".strtoupper($field)] = $this->encode($class["doc"][$field]["value"]); + + $this->tpl->setCurrentBlock("__global__"); + $this->tpl->setVariable($tplvars); + $this->tpl->setVariable("APPNAME", $this->application); + + $this->fileHandler->createFile($this->path.$htmlfile, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderClass + + + + /** + * Renders a list of inherited elements. + * + * @see renderInheritedElements() + */ + function renderInherited() { + + $this->renderInheritedElements( $this->accessor->getInheritedFunctions(), + "inheritedfunctions", + "function" + ); + + $this->renderInheritedElements( $this->accessor->getInheritedVariables(), + "inheritedvariables", + "variable" + ); + + $this->renderInheritedElements( $this->accessor->getInheritedConstants(), + "inheritedconstants", + "constant" + ); + + $this->renderInheritedElements( $this->accessor->getInheritedUses(), + "inheriteduses", + "uses" + ); + + } // end func renderInherited + + /** + * Renders a list of a certain inherited element. + * + * @see renderInheritedElements() + */ + function renderInheritedElements($inherited, $block, $type) { + + if (0 == count($inherited)) + return; + + $this->tpl->setCurrentBlock($block); + + reset($inherited); + while (list($source, $elements) = each($inherited)) { + + $value = ""; + + reset($elements); + while (list($k, $element) = each($elements)) + $value .= sprintf('<a href="%s#%s_%s">%s</a>, ', + $source.$this->file_extension, + $type, + $element, + $element + ); + $value = substr($value, 0, -2); + + $this->tpl->setVariable("SOURCE", $source); + $this->tpl->setVariable("ELEMENTS", $value); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderInheritedElements + + /** + * Renders a list of direct known subclasses. + */ + function renderSubclasses() { + + $subclasses = $this->accessor->getSubclasses(); + if (0 == count($subclasses)) + return; + + $elements = ""; + reset($subclasses); + while (list($k, $subclass) = each($subclasses)) + $elements .= sprintf('<a href="%s">%s</a>, ', $subclass.$this->file_extension, $subclass); + + $elements = substr($elements, 0, -2); + + if ("" != $elements) { + + $this->tpl->setCurrentBlock("subclasses"); + $this->tpl->setVariable("ELEMENTS", $elements); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderSubclasses + + /** + * Adds a summary and a detailed list of all variables to the template. + * + * @see renderVariableSummary(), renderVariableDetail() + */ + function renderVariables() { + + $this->variables["private"] = $this->accessor->getVariablesByAccess("private"); + $this->variables["public"] = $this->accessor->getVariablesByAccess("public"); + + if (0 == count($this->variables["private"]) && 0 == count($this->variables["public"])) + return; + + $this->renderVariableSummary(); + $this->renderVariableDetail(); + + $this->variables = array(); + + } // end func renderVariables + + /** + * Adds a summary of all variables to the template. + * + * The function assumes that there is a block named "variablesummary" and + * within it a block names "variablesummay_loop" in the template. + * + * @see renderVariableDetail() + */ + function renderVariableSummary() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + + if (0 == count($this->variables[$access])) + continue; + + $this->tpl->setCurrentBlock("variablesummary_loop"); + + reset($this->variables[$access]); + while (list($name, $variable) = each($this->variables[$access])) { + + $this->tpl->setVariable("NAME", $name); + $this->tpl->setVariable("TYPE", $variable["type"]); + + if (isset($variable["doc"]["shortdescription"])) + $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($variable["doc"]["shortdescription"]["value"])); + + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("variablesummary"); + $this->tpl->setVariable("ACCESS", ucfirst($access)); + $this->tpl->parseCurrentBlock(); + + } + + } // end func renderVariableSummary + + /** + * Adds a detailed list of all variables to the template. + * + * The function assumes that there is a block named "variabledetails" + * and within it a block names "variablesdetails_loop" in the template. + * + * @see renderVariableSummary() + */ + function renderVariableDetail() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + + if (0 == count($this->variables[$access])) + continue; + + reset($this->variables[$access]); + while (list($name, $variable)=each($this->variables[$access])) { + + $tplvars = array(); + $tplvars["NAME"] = $variable["name"]; + $tplvars["ACCESS"] = $variable["access"]; + $tplvars["TYPE"] = $variable["type"]; + $tplvars["VALUE"] = htmlentities($variable["value"]); + + if ("true" == $variable["undoc"]) + $tplvars["UNDOC"] = $this->undocumented; + + if ("true" == $variable["static"]) + $tplvars["STATIC"] = "static"; + + if ("true" == $variable["final"]) + $tplvars["FINAL"] = "final"; + + if (isset($variable["doc"]["shortdescription"])) + $tplvars["SHORTDESCRIPTION"] = $this->encode($variable["doc"]["shortdescription"]["value"]); + + if (isset($variable["doc"]["description"])) + $tplvars["DESCRIPTION"] = $this->encode($variable["doc"]["description"]["value"]); + + $this->renderCommonDocfields("variabledetails_", $variable); + + $this->tpl->setCurrentBlock("variabledetails_loop"); + $this->tpl->setVariable($tplvars); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("variabledetails"); + $this->tpl->setVariable("ACCESS", ucfirst($access) ); + $this->tpl->parseCurrentBlock(); + + } + + } // end func renderVariableDetail + + /** + * Returns a html string that shows the class tree. + * + * @param string name of the current class + * @return string HTML that shows the tree + */ + function getClasstree($class) { + + $path = $this->accessor->getClasstree(); + $level = 0; + $num = count($path) - 1; + + for ($i = $num; $i >= 0; --$i) { + + $indent = $this->getIndent($level); + + if ($level > 0) + $value.= sprintf("%s |<br>%s+-- ", $indent, $indent); + + $value.= sprintf('<a href="%s">%s</a><br>', + $path[$i].$this->file_extension, + $path[$i] + ); + ++$level; + + } + + $indent = $this->getIndent($level); + + if ($level > 0) + $value.= sprintf("%s |<br>%s+-- ", $indent, $indent); + + $value.= sprintf('%s<br>', $class); + + return $value; + } // end func getClasstree + + /** + * Returns a certain number of " "s. + * + * @param int number of " " required. + * @see $indent + * @return string A string with the requested number of nunbreakable html spaces + */ + function getIndent($level) { + + if (!isset($this->indent[$level])) { + + $html = ""; + for ($i = 0; $i < $level; ++$i) + $html .= " "; + + $this->indent[$level] = $html; + + } + + return $this->indent[$level]; + } // end func getIndent + +} // end class PhpdocHTMLClassRenderer + +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLDocumentRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,741 +1,739 @@ -<?php -/** -* Provides functioninality to render modules and classes. -*/ -class PhpdocHTMLDocumentRenderer extends PhpdocHTMLRenderer { - - /** - * Message displayed if an object lacks documentation. - * @var string $undocumented - * @access public - */ - var $undocmented = "Warning: documentation is missing."; - - /** - * Array of functions found in the xml document. - * @var array $functions - */ - var $functions = array(); - - /** - * Array of included files. - * @var array $uses - */ - var $uses = array(); - - /** - * Array of constants. - * @var array $constants - */ - var $constants = array(); - - /** - * Array of access modifiers. - * @var array $accessModifiers - */ - var $accessModifiers = array("public", "private"); - - /** - * Array of doc container fields that get mapped directly to templateblocks. - * @var array $simpleDocfields - * @see renderVariableDetail() - */ - var $simpleDocfields = array( - "VERSION" => "version", - "SINCE" => "since", - "DEPRECATED" => "deprecated", - "COPYRIGHT" => "copyright", - "MAGIC" => "magic" - ); - - /** - * Known types for @include. - * @var array $usesTypes - * @see renderUses() - */ - var $usesTypes = array( "include", "include_once", "require", "require_once" ); - - /** - * Adds a summary and a detailed list of all constants to the template. - * @see renderConstantSummary(), renderConstantDetail() - */ - function renderConstants() { - - $this->constants["public"] = $this->accessor->getConstantsByAccess("public"); - $this->constants["private"] = $this->accessor->getConstantsByAccess("private"); - - if (0==count($this->constants["public"]) && 0==count($this->constants["private"])) - return; - - $this->renderConstantSummary(); - $this->renderConstantDetail(); - - $this->constants = array(); - - } // end func renderConstants - - /** - * Adds a summary of all constants to the template. - * - * The function assumes that there is a block called "constantssummary" and - * withing this block a bock called "constantssummary_loop" in the template. - * - * @see renderConstantDetail() - */ - function renderConstantSummary() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->constants[$access])) - continue; - - $this->tpl->setCurrentBlock("constantssummary_loop"); - - reset($this->constants[$access]); - while (list($name, $const)=each($this->constants[$access])) { - - $this->tpl->setVariable("NAME", $name); - $this->tpl->setVariable("VALUE", htmlentities($const["value"])); - if (isset($const["doc"]["shortdescription"])) - $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($const["doc"]["shortdescription"]["value"])); - - if ("true" == $const["undoc"]) - $this->tpl->setVariable("UNDOC", $this->undocumented); - - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("constantssummary"); - $this->tpl->setVariable("ACCESS", ucfirst($access)); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderConstantSummary - - /** - * Adds a detailed list of all constants to the template. - * - * The function assumes that there is a block named "constantdetails" and - * withing it another block named "constantdetails_loop". - * - * @see renderConstantSummary() - */ - function renderConstantDetail() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->constants[$access])) - continue; - - reset($this->constants[$access]); - while (list($name, $constant)=each($this->constants[$access])) { - - $tplvars = array(); - - $tplvars["NAME"] = $name; - $tplvars["CASE"] = $constant["case"]; - $tplvars["VALUE"] = htmlentities($constant["value"]); - - if ("true" == $constant["undoc"]) - $tplvars["UNDOC"] = $this->undocumented; - - if (isset($constant["doc"]["shortdescription"])) - $tplvars["SHORTDESCRIPTION"] = $this->encode($constant["doc"]["shortdescription"]["value"]); - if (isset($constant["doc"]["description"])) - $tplvars["DESCRIPTION"] = $this->encode($constant["doc"]["description"]["value"]); - - $this->renderCommonDocfields("constantdetails_", $constant); - - $this->tpl->setCurrentBlock("constantdetails_loop"); - $this->tpl->setVariable($tplvars); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("constantdetails"); - $this->tpl->setVariable("ACCESS", ucfirst($access)); - $this->tpl->parseCurrentBlock(); - } - } // end func renderConstantsDetail - - /** - * Adds a summary and a detailed list of included files to the template. - * @see renderUsesSummary(), renderUsesDetail() - */ - function renderUses() { - - $found = false; - - reset($this->usesTypes); - while (list($k, $type)=each($this->usesTypes)) { - - $this->uses[$type] = $this->accessor->getUsesByType($type); - if (!$found && 0!=count($this->uses[$type])) - $found = true; - - } - - if (!$found) - return; - - $this->renderUsesSummary(); - $this->renderUsesDetail(); - - $this->uses = array(); - - } // end func renderUses - - /** - * Adds a detailed list of all @included files to the template. - * - * The function assumes that there is a block names "usesdetail" and within the block - * a block names "usesdetail_loop" in the template. - * - * @see renderUsesSummary() - */ - function renderUsesDetail() { - - reset($this->usesTypes); - while (list($k, $type)=each($this->usesTypes)) { - if (0==count($this->uses[$type])) - continue; - - reset($this->uses[$type]); - while (list($file, $uses)=each($this->uses[$type])) { - - $tplvars = array(); - $tplvars["FILE"] = $uses["file"]; - $tplvars["TYPE"] = $type; - - if ("true"==$uses["undoc"]) - $tplvars["UNDOC"] = $this->undocumented; - - if (isset($uses["doc"]["shortdescription"])) - $tplvars["SHORTDESCRIPTION"] = $this->encode($uses["doc"]["shortdescription"]["value"]); - if (isset($uses["doc"]["description"])) - $tplvars["DESCRIPTION"] = $this->encode($uses["doc"]["description"]["value"]); - - $this->renderCommonDocfields("usesdetails_", $uses); - - $this->tpl->setCurrentBlock("usesdetails_loop"); - $this->tpl->setVariable($tplvars); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("usesdetails"); - $this->tpl->setVariable("TYPE", $type); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderUsesDetail - - /** - * Adds a summary of all @included files to the template. - * - * The function assumes that there is a block names "usessummary" and within - * the block another block names "usessummary_loop" in the template. - * - * @see renderUsesDetail() - */ - function renderUsesSummary() { - - reset($this->usesTypes); - while (list($k, $type)=each($this->usesTypes)) { - if (0==count($this->uses[$type])) - continue; - - $this->tpl->setCurrentBlock("usessummary_loop"); - - reset($this->uses[$type]); - while (list($file, $uses)=each($this->uses[$type])) { - - $this->tpl->setVariable("FILE", $file); - - if (isset($uses["doc"]["shortdescription"])) - $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($uses["doc"]["shortdescription"]["value"])); - - if ("true"==$uses["undoc"]) - $this->tpl->setVariable("UNDOC", $this->undocumented); - - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("usessummary"); - $this->tpl->setVariable("TYPE", $type); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderUsesSummary - - /** - * Adds a summary and a detailed list of all functions to the template. - * @see renderFunctionSummary(), renderFunctionDetail(), $functions - */ - function renderFunctions() { - - $this->functions["private"] = $this->accessor->getFunctionsByAccess("private"); - $this->functions["public"] = $this->accessor->getFunctionsByAccess("public"); - - if (0==count($this->functions["private"]) && 0==count($this->functions["public"])) - return; - - $this->renderFunctionSummary(); - $this->renderFunctionDetail(); - - $this->functions = array(); - - } // end func renderFunctions - - /** - * Adds a function summary to the template. - * - * The function assumes that there is ablock names "functionsummary" and - * within it a block names "functionsummary_loop" in the template. - * - * @see renderFunctionDetail(), renderFunctions(), $functions, $accessModifiers - */ - function renderFunctionSummary() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->functions[$access])) - continue; - - $this->tpl->setCurrentBlock("functionsummary_loop"); - - reset($this->functions[$access]); - while (list($name, $function)=each($this->functions[$access])) { - - $this->tpl->setVariable("NAME", $name); - - if (isset($function["doc"]["parameter"])) - $this->tpl->setVariable("PARAMETER", $this->getParameter($function["doc"]["parameter"])); - - if (isset($function["doc"]["shortdescription"])) - $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($function["doc"]["shortdescription"]["value"])); - - if (isset($function["doc"]["return"])) - $this->tpl->setVariable("RETURNTYPE", $function["doc"]["return"]["type"]); - else - $this->tpl->setVariable("RETURNTYPE", "void"); - - if ("true"==$function["undoc"]) - $this->tpl->setVariable("UNDOC", $this->undocumented); - - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("functionsummary"); - $this->tpl->setVariable("ACCESS", ucfirst($access) ); - $this->tpl->parseCurrentBlock(); - } - - } // end func renderFunctionSummary - - /** - * Adds a detailed list of functions to the template. - * - * The function assumes that there is a block named "functiondetails" and - * within it a bloc "functiondetails_loop" in the template. - * - * @see renderFunctions(), renderFunctionSummary(), $functions, $accessModifiers - */ - function renderFunctionDetail() { - - reset($this->accessModifiers); - while (list($k, $access)=each($this->accessModifiers)) { - if (0==count($this->functions[$access])) - continue; - - reset($this->functions[$access]); - while (list($name, $function)=each($this->functions[$access])) { - - $tplvars = array(); - $tplvars["NAME"] = $function["name"]; - $tplvars["ACCESS"] = $function["access"]; - - if ("true"==$function["undoc"]) - $tplvars["UNDOC"] = $this->undocumented; - - if ("true"==$function["abstract"]) - $tplvars["ABSTRACT"] = "abstract"; - - if ("true"==$function["static"]) - $tplvars["STATIC"] = "static"; - - if (isset($function["doc"]["shortdescription"])) - $tplvars["SHORTDESCRIPTION"] = $this->encode($function["doc"]["shortdescription"]["value"]); - if (isset($function["doc"]["description"])) - $tplvars["DESCRIPTION"] = $this->encode($function["doc"]["description"]["value"]); - - $this->renderCommonDocfields("functiondetails_", $function); - - if (isset($function["doc"]["parameter"])) { - $tplvars["PARAMETER"] = $this->getParameter($function["doc"]["parameter"]); - $this->renderParameterDetail($function["doc"]["parameter"]); - } - - if (isset($function["doc"]["throws"])) - $this->renderThrows($function["doc"]["throws"], "functiondetails_"); - - if (isset($function["doc"]["global"])) - $this->renderGlobals($function["doc"]["global"], "functiondetails_"); - - if (isset($function["doc"]["return"])) { - - $tplvars["RETURNTYPE"] = $function["doc"]["return"]["type"]; - - $this->tpl->setCurrentBlock("functiondetails_return"); - - $this->tpl->setVariable("TYPE", $function["doc"]["return"]["type"]); - $this->tpl->setVariable("DESCRIPTION", $this->encode($function["doc"]["return"]["value"])); - if (isset($function["doc"]["return"]["name"])) - $this->tpl->setVariable("NAME", $function["doc"]["return"]["name"]); - - $this->tpl->parseCurrentBlock(); - - } else { - - $tplvars["RETURNTYPE"] = "void"; - - } - - $this->tpl->setCurrentBlock("functiondetails_loop"); - $this->tpl->setVariable($tplvars); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("functiondetails"); - $this->tpl->setVariable("ACCESS", ucfirst($access) ); - $this->tpl->parseCurrentBlock(); - - } - - } // end func renderFunctionDetail - - /** - * Renders a detailed list of function parameters. - * - * The function assumes that there is a block named "functiondetails_parameter" in - * the template and within it a block named "functiondetails_parameter_loop". - * - * @param array Parameter - */ - function renderParameterDetail($parameter) { - - if (!isset($parameter[0])) - $parameter = array($parameter); - - $this->tpl->setCurrentBlock("functiondetails_parameter_loop"); - - reset($parameter); - while (list($k, $param)=each($parameter)) { - - $this->tpl->setVariable("NAME", $param["name"]); - $this->tpl->setVariable("DESCRIPTION", $this->encode($param["value"])); - - if (isset($param["type"])) - $this->tpl->setVariable("TYPE", $param["type"]); - - if (isset($param["default"])) - $this->tpl->setVariable("DEFAULT", "= >>".htmlentities($param["default"])."<<"); - - if ("true" == $param["undoc"]) - $this->tpl->setVariable("UNDOC", $this->undocumented); - - $this->tpl->parseCurrentBlock(); - } - - } // end func renderParameterDetail - - /** - * Converts the XML parameter array into formatted string. - * @param array XML parameter array - * @return string Formatted parameter string - */ - function getParameter($parameter) { - - if (!is_array($parameter)) - return "void"; - - $value = ""; - - if (!isset($parameter[0])) { - - if (!isset($parameter["default"])) - $value.= $parameter["type"]." ".$parameter["name"]; - else - $value.= "[ ".$parameter["type"]." ".$parameter["name"]." ]"; - - } else { - - $flag_optional = false; - - reset($parameter); - while (list($k, $param)=each($parameter)) { - - if (!isset($param["default"])) { - - if ($flag_optional) { - $value = substr($value, 0, -2)." ], "; - $flag_optional = false; - } - - } else { - - if (!$flag_optional) { - $value.= "[ "; - $flag_optional = true; - } - } - - $value.= $param["type"]." ".$param["name"].", "; - } - - $value = substr($value, 0, -2); - if ($flag_optional) - $value.= " ]"; - - } - - return $value; - } // end func getParameter - - /** - * Renders a block with references to other source elements, @see. - * @param array XML references array - * @param string optional template blockname prefix - */ - function renderSee($references, $prefix="") { - - $value = ""; - - if (!isset($references[0])) { - - if (isset($references["group"])) - $value.= sprintf('<a href="%s#%s_%s">%s::%s</a>', - $this->nameToUrl($references["group"]).$this->file_extension, - $references["type"], - $references["value"], - $references["group"], - $references["value"] - ); - else - $value.= sprintf('<a href="#%s_%s">%s</a>', - $references["type"], - $references["value"], - $references["value"] - ); - - } else { - - reset($references); - while (list($k, $reference)=each($references)) { - - if (isset($reference["group"])) - $value.= sprintf('<a href="%s#%s_%s">%s::%s</a>, ', - $this->nameToUrl($reference["group"]).$this->file_extension, - $reference["type"], - $reference["value"], - $reference["group"], - $reference["value"] - ); - else - $value.= sprintf('<a href="#%s_%s">%s</a>, ', - $reference["type"], - $reference["value"], - $reference["value"] - ); - - } - - $value = substr($value, 0, -2); - - } - - $this->tpl->setCurrentBlock(strtolower($prefix)."see"); - $this->tpl->setVariable("SEE", $value); - $this->tpl->parseCurrentBlock(); - - } // end func renderSee - - /** - * Renders an author list, @author. - * @param array XML author array - * @param string optional template blockname prefix - */ - function renderAuthors($authors, $prefix="") { - - $value = ""; - - if (!isset($authors[0])) { - - if (isset($authors["email"])) - $value.= sprintf('%s <<a href="mailto:%s">%s</a>>, ', $authors["value"], $authors["email"], $authors["email"]); - else - $value.= $authors["email"].", "; - - } else { - - reset($authors); - while (list($k, $author)=each($authors)) { - - if (isset($author["email"])) - $value.= sprintf('%s <<a href="mailto:%s">%s</a>>, ', $author["value"], $author["email"], $author["email"]); - else - $value.= $author["email"].", "; - - } - - } - - $value = substr($value, 0, -2); - $this->tpl->setCurrentBlock(strtolower($prefix)."authors"); - $this->tpl->setVariable("AUTHOR", $value); - $this->tpl->parseCurrentBlock(); - - } // end func renderAuthors - - /** - * Renders a list of external links, @link. - * @param array XML link array - * @param string optional template blockname prefix - */ - function renderLinks($links, $prefix="") { - - $value= ""; - - if (!isset($links[0])) { - - $value.= sprintf('<a href="%s">%s</a>%s, ', - $links["url"], - $links["url"], - (""!=$links["description"]) ? " - ".$links["description"] : "" - ); - - } else { - - reset($links); - while (list($k, $link)=each($links)) { - - $value.= sprintf('<a href="%s">%s</a>%s, ', - $link["url"], - $link["url"], - (""!=$link["description"]) ? " - ".$links["description"] : "" - ); - - } - - } - - $value = substr($value, 0, 2); - - $this->tpl->setCurrentBlock(strtolower($prefix)."links"); - $this->tpl->setVariable("LINK", $value); - $this->tpl->parseCurrentBlock(); - - } // end func renderLinks - - /** - * Renders a list of exceptions, @throws. - * @param array XML array - * @param string optional template blockname prefix - */ - function renderThrows($throws, $prefix="") { - - $value = ""; - - if (!isset($throws[0])) { - - $value = $throws["value"]; - - } else { - - reset($throws); - while (list($k, $exception)=each($throws)) - $value.= sprintf("%s, ", $exception["value"]); - - $value = substr($value, 0, -2); - - } - - $this->tpl->setCurrentBlock(strtolower($prefix)."throws"); - $this->tpl->setVariable("EXCEPTIONS", $value); - $this->tpl->parseCurrentBlock(); - - } // end func renderThrows - - /** - * Renders a list of global elements, @global - * @param array XML globals array - * @param string optional template blockname prefix - */ - function renderGlobals($globals, $prefix="") { - - $prefix = strtolower($prefix); - $this->tpl->setCurrentBlock($prefix."globals_loop"); - - if (!isset($globals[0])) { - - $this->tpl->setVariable("NAME", $globals["name"]); - $this->tpl->setVariable("DESCRIPTION", $this->encode($globals["value"])); - if (isset($globals["type"])) - $this->tpl->setVariable("TYPE", $globals["type"]); - - $this->tpl->parseCurrentBlock(); - - } else { - - reset($globals); - while (list($k, $global)=each($globals)) { - - $this->tpl->setVariable("NAME", $global["name"]); - $this->tpl->setVariable("DESCRIPTION", $this->encode($global["value"])); - if (isset($globals["type"])) - $this->tpl->setVariable("TYPE", $globals["type"]); - - $this->tpl->parseCurrentBlock(); - - } - - } - - } // end func renderGlobals - - /** - * Adds some tags to the template that are allowed nearly everywhere. - * @param string template blockname prefixs - * @param array - * @see $simpleDocfields, renderLinks(), renderAuthors(), renderSee() - */ - function renderCommonDocfields($block, &$data) { - - reset($this->simpleDocfields); - while (list($varname, $field)=each($this->simpleDocfields)) { - - if (isset($data["doc"][$field])) { - $this->tpl->setCurrentBlock($block.$field); - $this->tpl->setVariable($varname, htmlentities($data["doc"][$field]["value"])); - $this->tpl->parseCurrentBlock(); - } - - } - - if (isset($data["doc"]["link"])) - $this->renderLinks($data["doc"]["link"], $block); - - if (isset($data["doc"]["author"])) - $this->renderAuthors($data["doc"]["author"], $block); - - if (isset($data["doc"]["see"])) - $this->renderSee($data["doc"]["see"], $block); - - } // end func renderCommonDocfields - -} // end func PhpdocHTMLDocumentRenderer -?> +<?php +/** +* Provides functioninality to render modules and classes. +*/ +class PhpdocHTMLDocumentRenderer extends PhpdocHTMLRenderer { + + /** + * Message displayed if an object lacks documentation. + * + * @var string $undocumented + * @access public + */ + var $undocmented = "Warning: documentation is missing."; + + /** + * Array of functions found in the xml document. + * + * @var array $functions + */ + var $functions = array(); + + /** + * Array of included files. + * + * @var array $uses + */ + var $uses = array(); + + /** + * Array of constants. + * @var array $constants + */ + var $constants = array(); + + /** + * Array of access modifiers. + * + * @var array $accessModifiers + */ + var $accessModifiers = array("public", "private"); + + /** + * Array of doc container fields that get mapped directly to templateblocks. + * + * @var array $simpleDocfields + * @see renderVariableDetail() + */ + var $simpleDocfields = array( + "VERSION" => "version", + "SINCE" => "since", + "DEPRECATED" => "deprecated", + "COPYRIGHT" => "copyright", + "MAGIC" => "magic" + ); + + /** + * Known types for @include. + * + * @var array $usesTypes + * @see renderUses() + */ + var $usesTypes = array( "include", "include_once", "require", "require_once" ); + + /** + * Adds a summary and a detailed list of all constants to the template. + * + * @see renderConstantSummary(), renderConstantDetail() + */ + function renderConstants() { + + $this->constants["public"] = $this->accessor->getConstantsByAccess("public"); + $this->constants["private"] = $this->accessor->getConstantsByAccess("private"); + + if (0 == count($this->constants["public"]) && 0 == count($this->constants["private"])) + return; + + $this->renderConstantSummary(); + $this->renderConstantDetail(); + $this->constants = array(); + + } // end func renderConstants + + /** + * Adds a summary of all constants to the template. + * + * The function assumes that there is a block called "constantssummary" and + * withing this block a bock called "constantssummary_loop" in the template. + * + * @see renderConstantDetail() + */ + function renderConstantSummary() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + if (0 == count($this->constants[$access])) + continue; + + $this->tpl->setCurrentBlock("constantssummary_loop"); + + reset($this->constants[$access]); + while (list($name, $const) = each($this->constants[$access])) { + + $this->tpl->setVariable("NAME", $name); + $this->tpl->setVariable("VALUE", htmlentities($const["value"])); + + if (isset($const["doc"]["shortdescription"])) + $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($const["doc"]["shortdescription"]["value"])); + + if ("true" == $const["undoc"]) + $this->tpl->setVariable("UNDOC", $this->undocumented); + + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("constantssummary"); + $this->tpl->setVariable("ACCESS", ucfirst($access)); + $this->tpl->parseCurrentBlock(); + + } + + } // end func renderConstantSummary + + /** + * Adds a detailed list of all constants to the template. + * + * The function assumes that there is a block named "constantdetails" and + * withing it another block named "constantdetails_loop". + * + * @see renderConstantSummary() + */ + function renderConstantDetail() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + if (0 == count($this->constants[$access])) + continue; + + reset($this->constants[$access]); + while (list($name, $constant) = each($this->constants[$access])) { + + $tplvars = array(); + $tplvars["NAME"] = $name; + $tplvars["CASE"] = $constant["case"]; + $tplvars["VALUE"] = htmlentities($constant["value"]); + + if ("true" == $constant["undoc"]) + $tplvars["UNDOC"] = $this->undocumented; + + if (isset($constant["doc"]["shortdescription"])) + $tplvars["SHORTDESCRIPTION"] = $this->encode($constant["doc"]["shortdescription"]["value"]); + + if (isset($constant["doc"]["description"])) + $tplvars["DESCRIPTION"] = $this->encode($constant["doc"]["description"]["value"]); + + $this->renderCommonDocfields("constantdetails_", $constant); + + $this->tpl->setCurrentBlock("constantdetails_loop"); + $this->tpl->setVariable($tplvars); + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("constantdetails"); + $this->tpl->setVariable("ACCESS", ucfirst($access)); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderConstantsDetail + + /** + * Adds a summary and a detailed list of included files to the template. + * @see renderUsesSummary(), renderUsesDetail() + */ + function renderUses() { + + $found = false; + + reset($this->usesTypes); + while (list($k, $type) = each($this->usesTypes)) { + + $this->uses[$type] = $this->accessor->getUsesByType($type); + if (!$found && 0 != count($this->uses[$type])) + $found = true; + + } + + if (!$found) + return; + + $this->renderUsesSummary(); + $this->renderUsesDetail(); + + $this->uses = array(); + } // end func renderUses + + /** + * Adds a detailed list of all @included files to the template. + * + * The function assumes that there is a block names "usesdetail" and within the block + * a block names "usesdetail_loop" in the template. + * + * @see renderUsesSummary() + */ + function renderUsesDetail() { + + reset($this->usesTypes); + while (list($k, $type) = each($this->usesTypes)) { + if (0 == count($this->uses[$type])) + continue; + + reset($this->uses[$type]); + while (list($file, $uses) = each($this->uses[$type])) { + + $tplvars = array(); + $tplvars["FILE"] = $uses["file"]; + $tplvars["TYPE"] = $type; + + if ("true" == $uses["undoc"]) + $tplvars["UNDOC"] = $this->undocumented; + + if (isset($uses["doc"]["shortdescription"])) + $tplvars["SHORTDESCRIPTION"] = $this->encode($uses["doc"]["shortdescription"]["value"]); + + if (isset($uses["doc"]["description"])) + $tplvars["DESCRIPTION"] = $this->encode($uses["doc"]["description"]["value"]); + + $this->renderCommonDocfields("usesdetails_", $uses); + $this->tpl->setCurrentBlock("usesdetails_loop"); + $this->tpl->setVariable($tplvars); + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("usesdetails"); + $this->tpl->setVariable("TYPE", $type); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderUsesDetail + + /** + * Adds a summary of all @included files to the template. + * + * The function assumes that there is a block names "usessummary" and within + * the block another block names "usessummary_loop" in the template. + * + * @see renderUsesDetail() + */ + function renderUsesSummary() { + + reset($this->usesTypes); + while (list($k, $type) = each($this->usesTypes)) { + if (0 == count($this->uses[$type])) + continue; + + $this->tpl->setCurrentBlock("usessummary_loop"); + + reset($this->uses[$type]); + while (list($file, $uses) = each($this->uses[$type])) { + + $this->tpl->setVariable("FILE", $file); + if (isset($uses["doc"]["shortdescription"])) + $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($uses["doc"]["shortdescription"]["value"])); + + if ("true" == $uses["undoc"]) + $this->tpl->setVariable("UNDOC", $this->undocumented); + + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("usessummary"); + $this->tpl->setVariable("TYPE", $type); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderUsesSummary + + /** + * Adds a summary and a detailed list of all functions to the template. + * + * @see renderFunctionSummary(), renderFunctionDetail(), $functions + */ + function renderFunctions() { + + $this->functions["private"] = $this->accessor->getFunctionsByAccess("private"); + $this->functions["public"] = $this->accessor->getFunctionsByAccess("public"); + + if (0 == count($this->functions["private"]) && 0 == count($this->functions["public"])) + return; + + $this->renderFunctionSummary(); + $this->renderFunctionDetail(); + $this->functions = array(); + + } // end func renderFunctions + + /** + * Adds a function summary to the template. + * + * The function assumes that there is ablock names "functionsummary" and + * within it a block names "functionsummary_loop" in the template. + * + * @see renderFunctionDetail(), renderFunctions(), $functions, $accessModifiers + */ + function renderFunctionSummary() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + if (0 == count($this->functions[$access])) + continue; + + $this->tpl->setCurrentBlock("functionsummary_loop"); + reset($this->functions[$access]); + while (list($name, $function) = each($this->functions[$access])) { + + $this->tpl->setVariable("NAME", $name); + + if (isset($function["doc"]["parameter"])) + $this->tpl->setVariable("PARAMETER", $this->getParameter($function["doc"]["parameter"])); + + if (isset($function["doc"]["shortdescription"])) + $this->tpl->setVariable("SHORTDESCRIPTION", $this->encode($function["doc"]["shortdescription"]["value"])); + + if (isset($function["doc"]["return"])) + $this->tpl->setVariable("RETURNTYPE", $function["doc"]["return"]["type"]); + else + $this->tpl->setVariable("RETURNTYPE", "void"); + + if ("true" == $function["undoc"]) + $this->tpl->setVariable("UNDOC", $this->undocumented); + + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("functionsummary"); + $this->tpl->setVariable("ACCESS", ucfirst($access) ); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderFunctionSummary + + /** + * Adds a detailed list of functions to the template. + * + * The function assumes that there is a block named "functiondetails" and + * within it a bloc "functiondetails_loop" in the template. + * + * @see renderFunctions(), renderFunctionSummary(), $functions, $accessModifiers + */ + function renderFunctionDetail() { + + reset($this->accessModifiers); + while (list($k, $access) = each($this->accessModifiers)) { + if (0 == count($this->functions[$access])) + continue; + + reset($this->functions[$access]); + while (list($name, $function) = each($this->functions[$access])) { + + $tplvars = array(); + $tplvars["NAME"] = $function["name"]; + $tplvars["ACCESS"] = $function["access"]; + + if ("true" == $function["undoc"]) + $tplvars["UNDOC"] = $this->undocumented; + + if ("true" == $function["abstract"]) + $tplvars["ABSTRACT"] = "abstract"; + + if ("true" == $function["static"]) + $tplvars["STATIC"] = "static"; + + if (isset($function["doc"]["shortdescription"])) + $tplvars["SHORTDESCRIPTION"] = $this->encode($function["doc"]["shortdescription"]["value"]); + + if (isset($function["doc"]["description"])) + $tplvars["DESCRIPTION"] = $this->encode($function["doc"]["description"]["value"]); + + $this->renderCommonDocfields("functiondetails_", $function); + + if (isset($function["doc"]["parameter"])) { + $tplvars["PARAMETER"] = $this->getParameter($function["doc"]["parameter"]); + $this->renderParameterDetail($function["doc"]["parameter"]); + } + + if (isset($function["doc"]["throws"])) + $this->renderThrows($function["doc"]["throws"], "functiondetails_"); + + if (isset($function["doc"]["global"])) + $this->renderGlobals($function["doc"]["global"], "functiondetails_"); + + if (isset($function["doc"]["return"])) { + + $tplvars["RETURNTYPE"] = $function["doc"]["return"]["type"]; + + $this->tpl->setCurrentBlock("functiondetails_return"); + $this->tpl->setVariable("TYPE", $function["doc"]["return"]["type"]); + $this->tpl->setVariable("DESCRIPTION", $this->encode($function["doc"]["return"]["value"])); + + if (isset($function["doc"]["return"]["name"])) + $this->tpl->setVariable("NAME", $function["doc"]["return"]["name"]); + + $this->tpl->parseCurrentBlock(); + + } else { + + $tplvars["RETURNTYPE"] = "void"; + + } + + $this->tpl->setCurrentBlock("functiondetails_loop"); + $this->tpl->setVariable($tplvars); + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("functiondetails"); + $this->tpl->setVariable("ACCESS", ucfirst($access) ); + $this->tpl->parseCurrentBlock(); + } + + } // end func renderFunctionDetail + + /** + * Renders a detailed list of function parameters. + * + * The function assumes that there is a block named "functiondetails_parameter" in + * the template and within it a block named "functiondetails_parameter_loop". + * + * @param array Parameter + */ + function renderParameterDetail($parameter) { + + if (!isset($parameter[0])) + $parameter = array($parameter); + + $this->tpl->setCurrentBlock("functiondetails_parameter_loop"); + + reset($parameter); + while (list($k, $param) = each($parameter)) { + + $this->tpl->setVariable("NAME", $param["name"]); + $this->tpl->setVariable("DESCRIPTION", $this->encode($param["value"])); + + if (isset($param["type"])) + $this->tpl->setVariable("TYPE", $param["type"]); + + if (isset($param["default"])) + $this->tpl->setVariable("DEFAULT", "= >>".htmlentities($param["default"])."<<"); + + if ("true" == $param["undoc"]) + $this->tpl->setVariable("UNDOC", $this->undocumented); + + $this->tpl->parseCurrentBlock(); + } + + } // end func renderParameterDetail + + /** + * Converts the XML parameter array into formatted string. + * @param array XML parameter array + * @return string Formatted parameter string + */ + function getParameter($parameter) { + + if (!is_array($parameter)) + return "void"; + + $value = ""; + + if (!isset($parameter[0])) { + + if (!isset($parameter["default"])) + $value .= $parameter["type"] . " " . $parameter["name"]; + else + $value .= "[ ".$parameter["type"] . " " . $parameter["name"]." ]"; + + } else { + + $flag_optional = false; + + reset($parameter); + while (list($k, $param) = each($parameter)) { + + if (!isset($param["default"])) { + if ($flag_optional) { + $value = substr($value, 0, -2)." ], "; + $flag_optional = false; + } + } else { + if (!$flag_optional) { + $value .= "[ "; + $flag_optional = true; + } + } + + $value .= $param["type"] . " " . $param["name"].", "; + } + + $value = substr($value, 0, -2); + if ($flag_optional) + $value .= " ]"; + + } + + return $value; + } // end func getParameter + + /** + * Renders a block with references to other source elements, @see. + * + * @param array XML references array + * @param string optional template blockname prefix + */ + function renderSee($references, $prefix = "") { + + $value = ""; + if (!isset($references[0])) { + + if (isset($references["group"])) + $value .= sprintf('<a href="%s#%s_%s">%s::%s</a>', + $this->nameToUrl($references["group"]).$this->file_extension, + $references["type"], + $references["value"], + $references["group"], + $references["value"] + ); + else + $value .= sprintf('<a href="#%s_%s">%s</a>', + $references["type"], + $references["value"], + $references["value"] + ); + + } else { + + reset($references); + while (list($k, $reference) = each($references)) { + + if (isset($reference["group"])) + $value .= sprintf('<a href="%s#%s_%s">%s::%s</a>, ', + $this->nameToUrl($reference["group"]).$this->file_extension, + $reference["type"], + $reference["value"], + $reference["group"], + $reference["value"] + ); + else + $value .= sprintf('<a href="#%s_%s">%s</a>, ', + $reference["type"], + $reference["value"], + $reference["value"] + ); + + } + + $value = substr($value, 0, -2); + } + + $this->tpl->setCurrentBlock(strtolower($prefix) . "see"); + $this->tpl->setVariable("SEE", $value); + $this->tpl->parseCurrentBlock(); + + } // end func renderSee + + /** + * Renders an author list, @author. + * + * @param array XML author array + * @param string optional template blockname prefix + */ + function renderAuthors($authors, $prefix = "") { + + $value = ""; + + if (!isset($authors[0])) { + + if (isset($authors["email"])) + $value .= sprintf('%s <<a href="mailto:%s">%s</a>>, ', $authors["value"], $authors["email"], $authors["email"]); + else + $value .= $authors["email"] . ", "; + + } else { + + reset($authors); + while (list($k, $author) = each($authors)) { + + if (isset($author["email"])) + $value .= sprintf('%s <<a href="mailto:%s">%s</a>>, ', $author["value"], $author["email"], $author["email"]); + else + $value .= $author["email"] . ", "; + + } + + } + + $value = substr($value, 0, -2); + $this->tpl->setCurrentBlock(strtolower($prefix) . "authors"); + $this->tpl->setVariable("AUTHOR", $value); + $this->tpl->parseCurrentBlock(); + + } // end func renderAuthors + + /** + * Renders a list of external links, @link. + * + * @param array XML link array + * @param string optional template blockname prefix + */ + function renderLinks($links, $prefix = "") { + + $value = ""; + if (!isset($links[0])) { + $value .= sprintf('<a href="%s">%s</a>%s, ', + $links["url"], + $links["url"], + ("" != $links["description"]) ? " - " . $links["description"] : "" + ); + } else { + + reset($links); + while (list($k, $link) = each($links)) { + $value .= sprintf('<a href="%s">%s</a>%s, ', + $link["url"], + $link["url"], + ("" != $link["description"]) ? " - " . $links["description"] : "" + ); + } + + } + + $value = substr($value, 0, 2); + $this->tpl->setCurrentBlock(strtolower($prefix) . "links"); + $this->tpl->setVariable("LINK", $value); + $this->tpl->parseCurrentBlock(); + + } // end func renderLinks + + /** + * Renders a list of exceptions, @throws. + * + * @param array XML array + * @param string optional template blockname prefix + */ + function renderThrows($throws, $prefix = "") { + + $value = ""; + if (!isset($throws[0])) { + + $value = $throws["value"]; + + } else { + + reset($throws); + while (list($k, $exception) = each($throws)) + $value .= sprintf("%s, ", $exception["value"]); + + $value = substr($value, 0, -2); + + } + + $this->tpl->setCurrentBlock(strtolower($prefix) . "throws"); + $this->tpl->setVariable("EXCEPTIONS", $value); + $this->tpl->parseCurrentBlock(); + + } // end func renderThrows + + /** + * Renders a list of global elements, @global + * + * @param array XML globals array + * @param string optional template blockname prefix + */ + function renderGlobals($globals, $prefix = "") { + + $prefix = strtolower($prefix); + $this->tpl->setCurrentBlock($prefix . "globals_loop"); + + if (!isset($globals[0])) { + + $this->tpl->setVariable("NAME", $globals["name"]); + $this->tpl->setVariable("DESCRIPTION", $this->encode($globals["value"])); + + if (isset($globals["type"])) + $this->tpl->setVariable("TYPE", $globals["type"]); + + $this->tpl->parseCurrentBlock(); + + } else { + + reset($globals); + while (list($k, $global) = each($globals)) { + + $this->tpl->setVariable("NAME", $global["name"]); + $this->tpl->setVariable("DESCRIPTION", $this->encode($global["value"])); + + if (isset($globals["type"])) + $this->tpl->setVariable("TYPE", $globals["type"]); + + $this->tpl->parseCurrentBlock(); + + } + + } + + } // end func renderGlobals + + /** + * Adds some tags to the template that are allowed nearly everywhere. + * + * @param string template blockname prefixs + * @param array + * @see $simpleDocfields, renderLinks(), renderAuthors(), renderSee() + */ + function renderCommonDocfields($block, &$data) { + + reset($this->simpleDocfields); + while (list($varname, $field) = each($this->simpleDocfields)) { + + if (isset($data["doc"][$field])) { + + $this->tpl->setCurrentBlock($block.$field); + $this->tpl->setVariable($varname, htmlentities($data["doc"][$field]["value"])); + $this->tpl->parseCurrentBlock(); + + } + + } + + if (isset($data["doc"]["link"])) + $this->renderLinks($data["doc"]["link"], $block); + + if (isset($data["doc"]["author"])) + $this->renderAuthors($data["doc"]["author"], $block); + + if (isset($data["doc"]["see"])) + $this->renderSee($data["doc"]["see"], $block); + + } // end func renderCommonDocfields + +} // end func PhpdocHTMLDocumentRenderer +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLIndexRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,447 +1,456 @@ -<?php -/** -* Renders Index lists. -*/ -class PhpdocHTMLIndexRenderer extends PhpdocHTMLRenderer { - - /** - * Some container in the package list. - * @var array - * @see renderPackagelist() - */ - var $packageFields = array("class", "module"); - - /** - * Packagelist from the PhpdocIndexAccessor - * @var array - */ - var $packages = array(); - - /** - * Array with classtree informations - * @var array - */ - var $classtree = array(); - - /** - * IntegratedTemplate Object used be renderClasstree() - * - * @var object IntegratedTemplate - * @see renderClasstree() - */ - var $treeTpl; - - /** - * IntegratedTemplateObject used by renderModulegroup() - * - * @var object IntegratedTemplate - * @see renderModulegroup() - */ - var $moduleTpl; - - /** - * Sets the xml and template root directory. - * - * @param string XML file path - * @param string Template file path - * @param string Name of the application - * @see setPath(), setTemplateRoot() - */ - function PhpdocHTMLIndexRenderer($path, $templateRoot, $application, $extension = ".html") { - - $this->setPath($path); - $this->setTemplateRoot($templateRoot); - $this->application = $application; - $this->file_extension = $extension; - - $this->accessor = new PhpdocIndexAccessor; - $this->tpl = new IntegratedTemplate($this->templateRoot); - $this->fileHandler = new PhpdocFileHandler; - - } // end constructor - - /** - * Builds all index files phpdoc needs assuming that the xml files have default names - * - * @access public - * @see renderElementlist(), renderPackagelist(), renderFramelementlist(), renderFramePackageSummary() - */ - function generate() { - - $this->renderElementlist("elementlist.xml"); - $this->renderFrameElementlist("elementlist.xml"); - - $this->renderPackagelist("packagelist.xml"); - $this->renderFramePackageSummary("packagelist.xml"); - $this->renderFrameElementlist("packagelist.xml"); - - } // end function generate - - /** - * Saves the generated classtree summary to disk. - * - * @see renderClasstree() - * @access public - */ - function finishClasstree() { - - if (!is_object($this->treeTpl)) - return; - - $this->treeTpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_classtree".$this->file_extension, $this->treeTpl->get() ); - $this->treeTpl = ""; - - } // end func finishClasstree - - /** - * Adds a classtree to the classtree summary template. - * - * @param string XML Classtree file - * @see finishClasstree() - * @access public - */ - function addClasstree($xmlfile) { - - $this->accessor->loadXMLFile($this->path.$xmlfile); - - if (!is_object($this->treeTpl)) { - - $this->treeTpl = new IntegratedTemplate($this->templateRoot); - $this->treeTpl->loadTemplatefile("classtree.html"); - - } - - $this->classtree = $this->accessor->getClasstree(); - - $this->treeTpl->setCurrentBlock("classtree"); - $this->treeTpl->setVariable("BASECLASS", $this->classtree["baseclass"]); - $this->treeTpl->setVariable("TREE", "<ul>".$this->buildClasstreeHTML($this->classtree["baseclass"])."</ul>"); - $this->treeTpl->parseCurrentBlock(); - - return true; - } // end func addClasstree - - function finishModulegroup() { - - if (!is_object($this->moduleTpl)) - return; - - $this->moduleTpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_modulegroup".$this->file_extension, $this->moduleTpl->get() ); - $this->moduleTpl = ""; - - } // end func finishModulegroups - /** - * Renders a modulegroup xml file. - * @param string XML File - */ - function addModulegroup($xmlfile) { - - $this->accessor->loadXMLFile($this->path.$xmlfile); - - if (!is_object($this->moduleTpl)) { - - $this->moduleTpl = new IntegratedTemplate($this->templateRoot); - $this->moduleTpl->loadTemplateFile("modulegroup.html"); - - } - - $modulegroup = $this->accessor->getModulegroup(); - - $modules = "<ul>"; - reset($modulegroup["modules"]); - while (list($k, $module)=each($modulegroup["modules"])) - $modules.= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($module).$this->file_extension, $module); - $modules.= "</ul>"; - - $this->moduleTpl->setCurrentBlock("modulegroup"); - $this->moduleTpl->setVariable("MODULEGROUP", $modulegroup["group"]); - $this->moduleTpl->setVariable("MODULES", $modules); - $this->moduleTpl->parseCurrentBlock(); - - } // end func addModulegroup - - /** - * Renders the element index list. - * - * @param string XML file - * @access public - * @see generate() - */ - function renderElementlist($xmlfile) { - - $this->accessor->loadXMLFile($this->path.$xmlfile); - $this->tpl->loadTemplatefile("elementlist.html"); - - $chapters = $this->accessor->getChapternames(); - - if (0!=count($chapters)) { - - $this->tpl->setCurrentBlock("chaptersummary_loop"); - reset($chapters); - while (list($k, $chapter)=each($chapters)) { - $this->tpl->setVariable("CHAPTER", $chapter); - $this->tpl->parseCurrentBlock(); - } - - $chapters = $this->accessor->getChapters(); - - reset($chapters); - while (list($name, $elements)=each($chapters)) { - - if (!isset($elements["element"][0])) - $elements["element"] = array($elements["element"]); - - $this->tpl->setCurrentBlock("chapter_loop"); - - reset($elements["element"]); - while (list($k, $element)=each($elements["element"])) { - - switch($element["type"]) { - case "package": - $desc = "Package"; - break; - - case "class": - $desc = sprintf('Class <a href="%s">%s</a>.', - $this->nameToUrl($element["name"]).$this->file_extension, - $element["name"] - ); - break; - - case "module": - $desc = sprintf('Module <a href="%s">%s</a>.', - $this->nameToUrl($element["name"]).$this->file_extension, - $element["name"] - ); - break; - - case "functions": - $desc = sprintf('Function in %s <a href="%s">%s</a>', - $element["sourcetype"], - $this->nameToUrl($element["source"]).$this->file_extension, - $element["source"] - ); - break; - - case "variables": - $desc = sprintf('Variable in Class <a href="%s">%s</a>', - $this->nameToUrl($element["source"]).$this->file_extension, - $element["source"] - ); - break; - - case "uses": - $desc = sprintf('Included file in %s <a href="%s">%s</a>', - $element["sourcetype"], - $this->nameToUrl($element["source"]).$this->file_extension, - $element["source"] - ); - break; - break; - - case "consts": - $desc = sprintf('Constant defined in %s <a href="%s">%s</a>', - $element["sourcetype"], - $this->nameToUrl($element["source"]).$this->file_extension, - $element["source"] - ); - break; - } - - $this->tpl->setVariable("ELEMENTNAME", $element["name"]); - $this->tpl->setVariable("ELEMENT", $desc); - $this->tpl->setVariable("SHORTDESCRIPTION", $element["value"]); - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("chapter"); - $this->tpl->setVariable("CHAPTER", $name); - $this->tpl->parseCurrentBlock(); - } - - - } - - $this->tpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_elementlist".$this->file_extension, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderElementlist - - /** - * Renders a complete packagelist. - * - * @param string XML file - * @access public - * @see renderFrameElementlist(), renderFramePackagesummary() - */ - function renderPackagelist($xmlfile) { - - $this->loadPackagelist($xmlfile); - $this->tpl->loadTemplatefile("packagelist.html"); - - reset($this->packages); - while (list($packagename, $package)=each($this->packages)) { - - reset($this->packageFields); - while (list($k, $field)=each($this->packageFields)) { - if (!isset($package[$field])) - continue; - - $this->tpl->setCurrentBlock("package_".$field."_loop"); - reset($package[$field]); - while (list($k, $element)=each($package[$field])) { - $this->tpl->setVariable("ELEMENT", sprintf('<a href="%s">%s</a>', - $this->nameToUrl($element).$this->file_extension, - $element - ) - ); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("package_".$field); - $this->tpl->setVariable("EMPTY", ""); - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("package"); - $this->tpl->setVariable("PACKAGE_NAME", $packagename); - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_packagelist".$this->file_extension, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderPackagelist - - /** - * Renders files for the lower left frame with the elements of a certain file. - * - * @param string This function needs the packagelist.xml to work! - * @access public - * @see renderFramePackagesummary(), renderPackagelist() - */ - function renderFrameElementlist($xmlfile) { - - $this->loadPackagelist($xmlfile); - - reset($this->packages); - while (list($packagename, $package)=each($this->packages)) { - - $this->tpl->loadTemplatefile("frame_packageelementlist.html"); - - reset($this->packageFields); - while (list($k, $field)=each($this->packageFields)) { - if (!isset($package[$field])) - continue; - - $this->tpl->setCurrentBlock("package_".$field."_loop"); - reset($package[$field]); - while (list($k, $element)=each($package[$field])) { - - $this->tpl->setVariable("ELEMENT", sprintf('<a href="%s" target="main">%s</a>', - $this->nameToUrl($element).$this->file_extension, - $element - ) - ); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setCurrentBlock("package_".$field); - $this->tpl->setVariable("EMPTY", ""); - $this->tpl->parseCurrentBlock(); - - } - - $this->tpl->setCurrentBlock("package"); - $this->tpl->setVariable("PACKAGE_NAME", $packagename); - $this->tpl->parseCurrentBlock(); - - $this->tpl->setVariable("APPNAME", $this->application); - $packagename = $this->nameToUrl($packagename); - $this->fileHandler->createFile($this->path."packageelementlist_".$packagename.$this->file_extension, $this->tpl->get() ); - } - - $this->tpl->free(); - - } // end func renderFrameElementlist - - /** - * Renders a Packagesummary for the frameset. - * - * @param string XML file. - * @access public - * @see renderPackagelist(), renderFrameElementlist() - */ - function renderFramePackagesummary($xmlfile) { - - $this->loadPackagelist($xmlfile); - $this->tpl->loadTemplatefile("frame_packagelist.html"); - $this->tpl->setCurrentBlock("package"); - - reset($this->packages); - while (list($packagename, $v)=each($this->packages)) { - $this->tpl->setVariable("PACKAGE", sprintf('<a href="packageelementlist_%s" target="packageelements">%s</a>', - $this->nameToUrl($packagename).$this->file_extension, - $packagename ) - ); - $this->tpl->parseCurrentBlock(); - } - - $this->tpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."frame_packagelist".$this->file_extension, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderFramePackagesummary - - /** - * Imports the packagelist from the PhpdocIndexAccessor if not done previously. - * - * @param string XMl file. - * @see $packages - */ - function loadPackagelist($xmlfile) { - - if (0==count($this->packages)) { - $this->accessor->loadXMLFile($this->path.$xmlfile); - $this->packages = $this->accessor->getPackagelist(); - } - - } // end func loadPackagelist - - /** - * Recursivly builds an HTML class tree using <ul><li></ul>. - * - * @param string Name of the class the recursive loop starts with - * @see renderClasstree() - */ - function buildClasstreeHTML($class) { - - $html = ""; - - if (0==count($this->classtree["classes"][$class])) { - - $html.= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($class).$this->file_extension, $class); - - } else { - - $html.= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($class).$this->file_extension, $class); - - $html.= "<ul>"; - reset($this->classtree["classes"][$class]); - while (list($k, $subclass)=each($this->classtree["classes"][$class])) - $html.= $this->buildClasstreeHTML($subclass); - $html.= "</ul>"; - } - - return $html; - } // end func buildClasstreeHTML - -} // end class PhpdocHTMLIndexRenderer -?> +<?php +/** +* Renders Index lists. +*/ +class PhpdocHTMLIndexRenderer extends PhpdocHTMLRenderer { + + /** + * Some container in the package list. + * + * @var array + * @see renderPackagelist() + */ + var $packageFields = array("class", "module"); + + /** + * Packagelist from the PhpdocIndexAccessor + * + * @var array + */ + var $packages = array(); + + /** + * Array with classtree informations + * + * @var array + */ + var $classtree = array(); + + /** + * IntegratedTemplate Object used be renderClasstree() + * + * @var object IntegratedTemplate + * @see renderClasstree() + */ + var $treeTpl; + + /** + * IntegratedTemplateObject used by renderModulegroup() + * + * @var object IntegratedTemplate + * @see renderModulegroup() + */ + var $moduleTpl; + + /** + * Sets the xml and template root directory. + * + * @param string XML file path + * @param string Template file path + * @param string Name of the application + * @see setPath(), setTemplateRoot() + */ + function PhpdocHTMLIndexRenderer($path, $templateRoot, $application, $extension = ".html") { + + $this->setPath($path); + $this->setTemplateRoot($templateRoot); + $this->application = $application; + $this->file_extension = $extension; + + $this->accessor = new PhpdocIndexAccessor; + $this->tpl = new IntegratedTemplate($this->templateRoot); + $this->fileHandler = new PhpdocFileHandler; + + } // end constructor + + /** + * Builds all index files phpdoc needs assuming that the xml files have default names + * + * @access public + * @see renderElementlist(), renderPackagelist(), renderFramelementlist(), renderFramePackageSummary() + */ + function generate() { + + $this->renderElementlist("elementlist.xml"); + $this->renderFrameElementlist("elementlist.xml"); + $this->renderPackagelist("packagelist.xml"); + $this->renderFramePackageSummary("packagelist.xml"); + $this->renderFrameElementlist("packagelist.xml"); + + } // end function generate + + /** + * Saves the generated classtree summary to disk. + * + * @see renderClasstree() + * @access public + */ + function finishClasstree() { + + if (!is_object($this->treeTpl)) + return; + + $this->treeTpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path."phpdoc_classtree".$this->file_extension, $this->treeTpl->get() ); + $this->treeTpl = ""; + + } // end func finishClasstree + + /** + * Adds a classtree to the classtree summary template. + * + * @param string XML Classtree file + * @see finishClasstree() + * @access public + */ + function addClasstree($xmlfile) { + + $this->accessor->loadXMLFile($this->path.$xmlfile); + + if (!is_object($this->treeTpl)) { + $this->treeTpl = new IntegratedTemplate($this->templateRoot); + $this->treeTpl->loadTemplatefile("classtree.html"); + } + + $this->classtree = $this->accessor->getClasstree(); + $this->treeTpl->setCurrentBlock("classtree"); + $this->treeTpl->setVariable("BASECLASS", $this->classtree["baseclass"]); + $this->treeTpl->setVariable("TREE", "<ul>".$this->buildClasstreeHTML($this->classtree["baseclass"])."</ul>"); + $this->treeTpl->parseCurrentBlock(); + + return true; + } // end func addClasstree + + function finishModulegroup() { + + if (!is_object($this->moduleTpl)) + return; + + $this->moduleTpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path."phpdoc_modulegroup".$this->file_extension, $this->moduleTpl->get() ); + $this->moduleTpl = ""; + } // end func finishModulegroups + + /** + * Renders a modulegroup xml file. + * + * @param string XML File + */ + function addModulegroup($xmlfile) { + + $this->accessor->loadXMLFile($this->path.$xmlfile); + + if (!is_object($this->moduleTpl)) { + $this->moduleTpl = new IntegratedTemplate($this->templateRoot); + $this->moduleTpl->loadTemplateFile("modulegroup.html"); + } + + $modulegroup = $this->accessor->getModulegroup(); + $modules = "<ul>"; + + reset($modulegroup["modules"]); + while (list($k, $module) = each($modulegroup["modules"])) + $modules .= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($module) . $this->file_extension, $module); + + $modules .= "</ul>"; + + $this->moduleTpl->setCurrentBlock("modulegroup"); + $this->moduleTpl->setVariable("MODULEGROUP", $modulegroup["group"]); + $this->moduleTpl->setVariable("MODULES", $modules); + $this->moduleTpl->parseCurrentBlock(); + + } // end func addModulegroup + + /** + * Renders the element index list. + * + * @param string XML file + * @access public + * @see generate() + */ + function renderElementlist($xmlfile) { + + $this->accessor->loadXMLFile($this->path.$xmlfile); + $this->tpl->loadTemplatefile("elementlist.html"); + + $chapters = $this->accessor->getChapternames(); + if (0 != count($chapters)) { + + $this->tpl->setCurrentBlock("chaptersummary_loop"); + + reset($chapters); + while (list($k, $chapter) = each($chapters)) { + $this->tpl->setVariable("CHAPTER", $chapter); + $this->tpl->parseCurrentBlock(); + } + + $chapters = $this->accessor->getChapters(); + reset($chapters); + while (list($name, $elements) = each($chapters)) { + + if (!isset($elements["element"][0])) + $elements["element"] = array($elements["element"]); + + $this->tpl->setCurrentBlock("chapter_loop"); + + reset($elements["element"]); + while (list($k, $element) = each($elements["element"])) { + + switch($element["type"]) { + case "package": + $desc = "Package"; + break; + + case "class": + $desc = sprintf('Class <a href="%s">%s</a>.', + $this->nameToUrl($element["name"]) . $this->file_extension, + $element["name"] + ); + break; + + case "module": + $desc = sprintf('Module <a href="%s">%s</a>.', + $this->nameToUrl($element["name"]) . $this->file_extension, + $element["name"] + ); + break; + + case "functions": + $desc = sprintf('Function in %s <a href="%s">%s</a>', + $element["sourcetype"], + $this->nameToUrl($element["source"]) . $this->file_extension, + $element["source"] + ); + break; + + case "variables": + $desc = sprintf('Variable in Class <a href="%s">%s</a>', + $this->nameToUrl($element["source"]) . $this->file_extension, + $element["source"] + ); + break; + + case "uses": + $desc = sprintf('Included file in %s <a href="%s">%s</a>', + $element["sourcetype"], + $this->nameToUrl($element["source"]) . $this->file_extension, + $element["source"] + ); + break; + + case "consts": + $desc = sprintf('Constant defined in %s <a href="%s">%s</a>', + $element["sourcetype"], + $this->nameToUrl($element["source"]) . $this->file_extension, + $element["source"] + ); + break; + + } + + $this->tpl->setVariable("ELEMENTNAME", $element["name"]); + $this->tpl->setVariable("ELEMENT", $desc); + $this->tpl->setVariable("SHORTDESCRIPTION", $element["value"]); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("chapter"); + $this->tpl->setVariable("CHAPTER", $name); + $this->tpl->parseCurrentBlock(); + + } + + } + + $this->tpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path . "phpdoc_elementlist" . $this->file_extension, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderElementlist + + /** + * Renders a complete packagelist. + * + * @param string XML file + * @access public + * @see renderFrameElementlist(), renderFramePackagesummary() + */ + function renderPackagelist($xmlfile) { + + $this->loadPackagelist($xmlfile); + $this->tpl->loadTemplatefile("packagelist.html"); + + reset($this->packages); + while (list($packagename, $package) = each($this->packages)) { + + reset($this->packageFields); + while (list($k, $field) = each($this->packageFields)) { + if (!isset($package[$field])) + continue; + + $this->tpl->setCurrentBlock("package_".$field."_loop"); + + reset($package[$field]); + while (list($k, $element) = each($package[$field])) { + + $this->tpl->setVariable("ELEMENT", sprintf('<a href="%s">%s</a>', + $this->nameToUrl($element) . $this->file_extension, + $element + ) + ); + + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("package_" . $field); + $this->tpl->setVariable("EMPTY", ""); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("package"); + $this->tpl->setVariable("PACKAGE_NAME", $packagename); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path . "phpdoc_packagelist" . $this->file_extension, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderPackagelist + + /** + * Renders files for the lower left frame with the elements of a certain file. + * + * @param string This function needs the packagelist.xml to work! + * @access public + * @see renderFramePackagesummary(), renderPackagelist() + */ + function renderFrameElementlist($xmlfile) { + + $this->loadPackagelist($xmlfile); + + reset($this->packages); + while (list($packagename, $package) = each($this->packages)) { + + $this->tpl->loadTemplatefile("frame_packageelementlist.html"); + + reset($this->packageFields); + while (list($k, $field) = each($this->packageFields)) { + + if (!isset($package[$field])) + continue; + + $this->tpl->setCurrentBlock("package_".$field."_loop"); + + reset($package[$field]); + while (list($k, $element) = each($package[$field])) { + + $this->tpl->setVariable("ELEMENT", sprintf('<a href="%s" target="main">%s</a>', + $this->nameToUrl($element) . $this->file_extension, + $element + ) + ); + $this->tpl->parseCurrentBlock(); + } + + $this->tpl->setCurrentBlock("package_" . $field); + $this->tpl->setVariable("EMPTY", ""); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("package"); + $this->tpl->setVariable("PACKAGE_NAME", $packagename); + $this->tpl->parseCurrentBlock(); + + $this->tpl->setVariable("APPNAME", $this->application); + $packagename = $this->nameToUrl($packagename); + $this->fileHandler->createFile($this->path . "packageelementlist_" . $packagename . $this->file_extension, $this->tpl->get() ); + + } + + $this->tpl->free(); + + } // end func renderFrameElementlist + + /** + * Renders a Packagesummary for the frameset. + * + * @param string XML file. + * @access public + * @see renderPackagelist(), renderFrameElementlist() + */ + function renderFramePackagesummary($xmlfile) { + + $this->loadPackagelist($xmlfile); + + $this->tpl->loadTemplatefile("frame_packagelist.html"); + $this->tpl->setCurrentBlock("package"); + + reset($this->packages); + while (list($packagename, $v) = each($this->packages)) { + + $this->tpl->setVariable("PACKAGE", sprintf('<a href="packageelementlist_%s" target="packageelements">%s</a>', + $this->nameToUrl($packagename) . $this->file_extension, + $packagename ) + ); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path . "frame_packagelist" . $this->file_extension, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderFramePackagesummary + + /** + * Imports the packagelist from the PhpdocIndexAccessor if not done previously. + * + * @param string XMl file. + * @see $packages + */ + function loadPackagelist($xmlfile) { + + if (0 == count($this->packages)) { + $this->accessor->loadXMLFile($this->path . $xmlfile); + $this->packages = $this->accessor->getPackagelist(); + } + + } // end func loadPackagelist + + /** + * Recursivly builds an HTML class tree using <ul><li></ul>. + * + * @param string Name of the class the recursive loop starts with + * @see renderClasstree() + */ + function buildClasstreeHTML($class) { + + $html = ""; + + if (0 == count($this->classtree["classes"][$class])) { + + $html .= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($class) . $this->file_extension, $class); + + } else { + + $html .= sprintf('<li><a href="%s">%s</a>', $this->nameToUrl($class) . $this->file_extension, $class); + $html .= "<ul>"; + + reset($this->classtree["classes"][$class]); + while (list($k, $subclass) = each($this->classtree["classes"][$class])) + $html .= $this->buildClasstreeHTML($subclass); + + $html .= "</ul>"; + + } + + return $html; + } // end func buildClasstreeHTML + +} // end class PhpdocHTMLIndexRenderer +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLModuleRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,92 +1,92 @@ -<?php -/** -* Renders modules. -*/ -class PhpdocHTMLModuleRenderer extends PhpdocHTMLDocumentRenderer { - - /** - * Sets the xml and template root directory. - * - * @param string XML file path - * @param string Template file path - * @param string Name of the current application - * @see setPath(), setTemplateRoot() - */ - function PhpdocHTMLModuleRenderer($path, $templateRoot, $application, $extension = ".html") { - - $this->setPath($path); - $this->setTemplateRoot($templateRoot); - $this->application = $application; - $this->file_extension = $extension; - - $this->accessor = new PhpdocModuleAccessor; - $this->tpl = new IntegratedTemplate($this->templateRoot); - $this->fileHandler = new PhpdocFileHandler; - - } // end constructor - - /** - * Renders a module - * @param string XML source file - * @param string Name of the HTML target file. - * @access public - */ - function renderModule($xmlfile, $htmlfile="") { - - $this->tpl->loadTemplatefile("module.html"); - - if (""==$htmlfile) - $htmlfile = substr($xmlfile, 7, -4).$this->file_extension; - - $this->accessor->loadXMLFile($this->path.$xmlfile); - $module = $this->accessor->getModuledata(); - - $this->renderFunctions(); - $this->renderUses(); - $this->renderConstants(); - - $tplvars = array(); - - $tplvars["MODULE_FILE"] = $module["file"]["value"]; - $tplvars["MODULE_NAME"] = $module["name"]; - $tplvars["MODULE_GROUP"] = $module["group"]; - $tplvars["MODULE_ACCESS"] = $module["access"]; - $tplvars["MODULE_PACKAGE"] = $module["package"]; - $tplvars["MODULE_UNDOC"] = ("true" == $module["undoc"]) ? $this->undocumented : ""; - - if (isset($module["doc"]["link"])) - $this->renderLinks($module["doc"]["link"], "class_"); - - if (isset($module["doc"]["author"])) - $this->renderAuthors($module["doc"]["author"], "class_"); - - if (isset($module["doc"]["see"])) - $this->renderSee($module["doc"]["see"], "class_"); - - $fields = array( "version", "deprecated", "copyright" , - "since", "magic"); - reset($fields); - while (list($k, $field)=each($fields)) - if (isset($module["doc"][$field])) { - $this->tpl->setCurrentBlock("module_".strtolower($field)); - $this->tpl->setVariable(strtoupper($field), $module["doc"][$field]["value"]); - $this->tpl->parseCurrentBlock(); - } - - $fields = array( "description", "shortdescription" ); - reset($fields); - while (list($k, $field)=each($fields)) - if (isset($module["doc"][$field])) - $tplvars["MODULE_".strtoupper($field)] = $this->encode($module["doc"][$field]["value"]); - - $this->tpl->setCurrentBlock("__global__"); - $this->tpl->setVariable($tplvars); - $this->tpl->setVariable("APPNAME", $this->application); - - $this->fileHandler->createFile($this->path.$htmlfile, $this->tpl->get() ); - $this->tpl->free(); - - } // end func renderModule - -} // end class PhpdocHTMLModuleRenderer -?> +<?php +/** +* Renders modules. +*/ +class PhpdocHTMLModuleRenderer extends PhpdocHTMLDocumentRenderer { + + /** + * Sets the xml and template root directory. + * + * @param string XML file path + * @param string Template file path + * @param string Name of the current application + * @see setPath(), setTemplateRoot() + */ + function PhpdocHTMLModuleRenderer($path, $templateRoot, $application, $extension = ".html") { + + $this->setPath($path); + $this->setTemplateRoot($templateRoot); + $this->application = $application; + $this->file_extension = $extension; + + $this->accessor = new PhpdocModuleAccessor; + $this->tpl = new IntegratedTemplate($this->templateRoot); + $this->fileHandler = new PhpdocFileHandler; + + } // end constructor + + /** + * Renders a module + * + * @param string XML source file + * @param string Name of the HTML target file. + * @access public + */ + function renderModule($xmlfile, $htmlfile = "") { + + $this->tpl->loadTemplatefile("module.html"); + if ("" == $htmlfile) + $htmlfile = substr($xmlfile, 7, -4) . $this->file_extension; + + $this->accessor->loadXMLFile($this->path . $xmlfile); + $module = $this->accessor->getModuledata(); + + $this->renderFunctions(); + $this->renderUses(); + $this->renderConstants(); + + $tplvars = array(); + $tplvars["MODULE_FILE"] = $module["file"]["value"]; + $tplvars["MODULE_NAME"] = $module["name"]; + $tplvars["MODULE_GROUP"] = $module["group"]; + $tplvars["MODULE_ACCESS"] = $module["access"]; + $tplvars["MODULE_PACKAGE"] = $module["package"]; + $tplvars["MODULE_UNDOC"] = ("true" == $module["undoc"]) ? $this->undocumented : ""; + + if (isset($module["doc"]["link"])) + $this->renderLinks($module["doc"]["link"], "class_"); + + if (isset($module["doc"]["author"])) + $this->renderAuthors($module["doc"]["author"], "class_"); + + if (isset($module["doc"]["see"])) + $this->renderSee($module["doc"]["see"], "class_"); + + $fields = array( "version", "deprecated", "copyright", "since", "magic"); + reset($fields); + while (list($k, $field) = each($fields)) + + if (isset($module["doc"][$field])) { + $this->tpl->setCurrentBlock("module_" . strtolower($field)); + $this->tpl->setVariable(strtoupper($field), $module["doc"][$field]["value"]); + $this->tpl->parseCurrentBlock(); + } + + $fields = array( "description", "shortdescription" ); + reset($fields); + while (list($k, $field) = each($fields)) + + if (isset($module["doc"][$field])) + $tplvars["MODULE_" . strtoupper($field)] = $this->encode($module["doc"][$field]["value"]); + + $this->tpl->setCurrentBlock("__global__"); + $this->tpl->setVariable($tplvars); + $this->tpl->setVariable("APPNAME", $this->application); + + $this->fileHandler->createFile($this->path . $htmlfile, $this->tpl->get() ); + $this->tpl->free(); + + } // end func renderModule + +} // end class PhpdocHTMLModuleRenderer +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,74 +1,78 @@ -<?php -/** -* Default HTML Renderer based on templates. -*/ -class PhpdocHTMLRenderer extends PhpdocRendererObject { - - /** - * Template object - * @var object IntegratedTemplates $tpl - */ - var $tpl; - - /** - * XML data accessor object. - * @var object PhpdocAccessor - */ - var $accessor; - - /** - * Rootpath for Templatefiles. - * @var string $templateRoot - * @see setTemplateRoot() - */ - var $templateRoot = ""; - - /** - * Directory path prefix. - * @var string $path - */ - var $path = ""; - - /** - * Sets a directory path prefix. - * - * @param string - */ - function setPath($path) { - - if (""!=$path && "/"!=substr($path, -1)) - $path.="/"; - - $this->path = $path; - } // end func path - - /** - * Sets the template directory. - * - * @param string - */ - function setTemplateRoot($templateRoot) { - - if (""!=$path && "/"!=substr($templateRoot, -1)) - $templateRoot.="/"; - - $this->templateRoot = $templateRoot; - } // end func setTemplateRoot - - /** - * Encodes the given string. - * - * This function gets used to encode all userdependend - * elements of the phpdoc xml files. Use it to - * customize your rendering result: beware newlines (nl2br()), - * strip tags etc. - * - * @param string String to encode - * @return string $string Encoded string - */ - function encode($string) { - return nl2br(htmlspecialchars($string)); - } // end func encode - -} // end class PhpdocHTMLRenderer +<?php +/** +* Default HTML Renderer based on templates. +*/ +class PhpdocHTMLRenderer extends PhpdocRendererObject { + + /** + * Template object + * + * @var object IntegratedTemplates $tpl + */ + var $tpl; + + /** + * XML data accessor object. + * + * @var object PhpdocAccessor + */ + var $accessor; + + /** + * Rootpath for Templatefiles. + * + * @var string $templateRoot + * @see setTemplateRoot() + */ + var $templateRoot = ""; + + /** + * Directory path prefix. + * + * @var string $path + */ + var $path = ""; + + /** + * Sets a directory path prefix. + * + * @param string + */ + function setPath($path) { + + if ("" != $path && "/" != substr($path, -1)) + $path .= "/"; + + $this->path = $path; + } // end func path + + /** + * Sets the template directory. + * + * @param string + */ + function setTemplateRoot($templateRoot) { + + if ("" != $path && "/" != substr($templateRoot, -1)) + $templateRoot .= "/"; + + $this->templateRoot = $templateRoot; + } // end func setTemplateRoot + + /** + * Encodes the given string. + * + * This function gets used to encode all userdependend + * elements of the phpdoc xml files. Use it to + * customize your rendering result: beware newlines (nl2br()), + * strip tags etc. + * + * @param string String to encode + * @return string $string Encoded string + */ + function encode($string) { + return nl2br(htmlspecialchars($string)); + } // end func encode + +} // end class PhpdocHTMLRenderer ?> Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLRendererManager.php Sun Dec 3 06:36:01 2000 @@ -1,98 +1,99 @@ -<?php -/** -* Controls the HTML Renderer objects. -* -*/ -class PhpdocHTMLRendererManager extends PhpdocObject { - /** - * @var object PhpdocHTMLIndexRenderer - */ - var $indexrenderer; - - /** - * @var object PhpdocHTMLClassRenderer - */ - var $classrenderer; - - /** - * @var object PhpdocHTMLModuleRenderer - */ - var $modulerenderer; - - /** - * @var object PhpdocHTMLWarningRenderer - */ - var $warningrenderer; - - /** - * Creates all necessary renderer objects - * - * @param string Name of the target directory - * @param string Name of the directory with the templates. - * @param string Name of the current application - * @param string Extension of generated files - */ - function PhpdocHTMLRendererManager($target, $template, $application, $extension = ".html") { - - $this->indexrenderer = new PhpdocHTMLIndexRenderer($target, $template, $application, $extension); - $this->indexrenderer->generate(); - - $this->classrenderer = new PhpdocHTMLClassRenderer($target, $template, $application, $extension); - $this->modulerenderer = new PhpdocHTMLModuleRenderer($target, $template, $application, $extension); - $this->warningrenderer = new PhpdocHTMLWarningRenderer($target, $template, $application, $extension); - - } // end constructor - - /** - * Renders the given xml file. - * - * @param string XML file. - * @param string Content of the XML file: class, classtree, - * module, modulegroup, warnings, indexdata - * @access public - */ - function render($xmlfile, $type) { - - switch(strtolower($type)) { - - case "class": - $this->classrenderer->renderClass($xmlfile); - break; - - case "classtree": - $this->indexrenderer->addClasstree($xmlfile); - break; - - case "module": - $this->modulerenderer->renderModule($xmlfile); - break; - - case "modulegroup": - $this->indexrenderer->addModulegroup($xmlfile); - break; - - case "warning": - $this->warningrenderer->addWarnings($xmlfile); - break; - - } - - } // end func render - - /** - * Finishes the rendering process. - * - * Finish means here: write the classtree and modulegroup overview to disk. - * - * @access public - */ - function finish() { - - $this->indexrenderer->finishClasstree(); - $this->indexrenderer->finishModulegroup(); - $this->warningrenderer->finishWarnings(); - - } // end func finish - -} // end class PhpdocHTMLRendererManager +<?php +/** +* Controls the HTML Renderer objects. +* +*/ +class PhpdocHTMLRendererManager extends PhpdocObject { + + /** + * @var object PhpdocHTMLIndexRenderer + */ + var $indexrenderer; + + /** + * @var object PhpdocHTMLClassRenderer + */ + var $classrenderer; + + /** + * @var object PhpdocHTMLModuleRenderer + */ + var $modulerenderer; + + /** + * @var object PhpdocHTMLWarningRenderer + */ + var $warningrenderer; + + /** + * Creates all necessary renderer objects + * + * @param string Name of the target directory + * @param string Name of the directory with the templates. + * @param string Name of the current application + * @param string Extension of generated files + */ + function PhpdocHTMLRendererManager($target, $template, $application, $extension = ".html") { + + $this->indexrenderer = new PhpdocHTMLIndexRenderer($target, $template, $application, $extension); + $this->indexrenderer->generate(); + + $this->classrenderer = new PhpdocHTMLClassRenderer($target, $template, $application, $extension); + $this->modulerenderer = new PhpdocHTMLModuleRenderer($target, $template, $application, $extension); + $this->warningrenderer = new PhpdocHTMLWarningRenderer($target, $template, $application, $extension); + + } // end constructor + + /** + * Renders the given xml file. + * + * @param string XML file. + * @param string Content of the XML file: class, classtree, + * module, modulegroup, warnings, indexdata + * @access public + */ + function render($xmlfile, $type) { + + switch (strtolower($type)) { + + case "class": + $this->classrenderer->renderClass($xmlfile); + break; + + case "classtree": + $this->indexrenderer->addClasstree($xmlfile); + break; + + case "module": + $this->modulerenderer->renderModule($xmlfile); + break; + + case "modulegroup": + $this->indexrenderer->addModulegroup($xmlfile); + break; + + case "warning": + $this->warningrenderer->addWarnings($xmlfile); + break; + + } + + } // end func render + + /** + * Finishes the rendering process. + * + * Finish means here: write the classtree and modulegroup overview to disk. + * + * @access public + */ + function finish() { + + $this->indexrenderer->finishClasstree(); + $this->indexrenderer->finishModulegroup(); + $this->warningrenderer->finishWarnings(); + + } // end func finish + +} // end class PhpdocHTMLRendererManager ?> Index: php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php diff -u php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php:1.2 php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php:1.3 --- php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php:1.2 Sun Oct 15 06:33:13 2000 +++ php4/pear/PHPDoc/renderer/html/PhpdocHTMLWarningRenderer.php Sun Dec 3 06:36:01 2000 @@ -1,83 +1,87 @@ -<?php -/** -* Renders files with warnings. -*/ -class PhpdocHTMLWarningRenderer extends PhpdocHTMLRenderer { - - /** - * Sets the xml and template root directory. - * - * @param string XML file path - * @param string Template file path - * @param string Name of the application - * @see setPath(), setTemplateRoot() - */ - function PhpdocHTMLWarningRenderer($path, $templateRoot, $application, $extension = ".html") { - - $this->setPath($path); - $this->setTemplateRoot($templateRoot); - $this->application = $application; - $this->file_extension = $extension; - - $this->accessor = new PhpdocWarningAccessor; - $this->fileHandler = new PhpdocFileHandler; - - } // end constructor - - /** - * Saves the generated report. - * - * @see addWarnings() - * @access public - */ - function finishWarnings() { - - if (!is_object($this->tpl)) - return; - - $this->tpl->setVariable("APPNAME", $this->application); - $this->fileHandler->createFile($this->path."phpdoc_warnings".$this->file_extension, $this->tpl->get() ); - $this->tpl = ""; - - } // end func finishWarnings - - /** - * Adds file with warnings to the warning list. - * - * @param string XML file - * @see finishWarnings() - * @access public - */ - function addWarnings($xmlfile) { - - $data = $this->accessor->getWarnings($this->path.$xmlfile); - - if (!is_object($this->tpl)) { - $this->tpl = new IntegratedTemplate($this->templateRoot); - $this->tpl->loadTemplateFile("warnings.html"); - } - reset($data); - while (list($file, $warnings)=each($data)) { - - $this->tpl->setCurrentBlock("warning_loop"); - reset($warnings); - while (list($k, $warning)=each($warnings)) { - $this->tpl->setVariable("WARNINGTYPE", $warning["type"]); - $this->tpl->setVariable("WARNING", $this->encode($warning["value"])); - $this->tpl->setVariable("ELEMENT", htmlentities($warning["name"])); - $this->tpl->setVariable("ELEMENTTYPE", $warning["elementtype"]); - $this->tpl->parseCurrentBlock(); - } - - - $this->tpl->setCurrentBlock("warning"); - $this->tpl->setVariable("FILE", $file); - $this->tpl->setVariable("NUMWARNINGS", count($warnings)); - $this->tpl->parseCurrentBlock(); - } - - return true; - } // end func addWarnings - -} // end class PhpdocHTMLIndexRenderer -?> +<?php +/** +* Renders files with warnings. +*/ +class PhpdocHTMLWarningRenderer extends PhpdocHTMLRenderer { + + /** + * Sets the xml and template root directory. + * + * @param string XML file path + * @param string Template file path + * @param string Name of the application + * @see setPath(), setTemplateRoot() + */ + function PhpdocHTMLWarningRenderer($path, $templateRoot, $application, $extension = ".html") { + + $this->setPath($path); + $this->setTemplateRoot($templateRoot); + $this->application = $application; + $this->file_extension = $extension; + + $this->accessor = new PhpdocWarningAccessor; + $this->fileHandler = new PhpdocFileHandler; + + } // end constructor + + /** + * Saves the generated report. + * + * @see addWarnings() + * @access public + */ + function finishWarnings() { + + if (!is_object($this->tpl)) + return; + + $this->tpl->setVariable("APPNAME", $this->application); + $this->fileHandler->createFile($this->path."phpdoc_warnings" . $this->file_extension, $this->tpl->get() ); + + $this->tpl = ""; + + } // end func finishWarnings + + /** + * Adds file with warnings to the warning list. + * + * @param string XML file + * @see finishWarnings() + * @access public + */ + function addWarnings($xmlfile) { + + $data = $this->accessor->getWarnings($this->path . $xmlfile); + if (!is_object($this->tpl)) { + $this->tpl = new IntegratedTemplate($this->templateRoot); + $this->tpl->loadTemplateFile("warnings.html"); + } + + reset($data); + while (list($file, $warnings) = each($data)) { + + $this->tpl->setCurrentBlock("warning_loop"); + + reset($warnings); + while (list($k, $warning) = each($warnings)) { + + $this->tpl->setVariable("WARNINGTYPE", $warning["type"]); + $this->tpl->setVariable("WARNING", $this->encode($warning["value"])); + $this->tpl->setVariable("ELEMENT", htmlentities($warning["name"])); + $this->tpl->setVariable("ELEMENTTYPE", $warning["elementtype"]); + $this->tpl->parseCurrentBlock(); + + } + + $this->tpl->setCurrentBlock("warning"); + $this->tpl->setVariable("FILE", $file); + $this->tpl->setVariable("NUMWARNINGS", count($warnings)); + $this->tpl->parseCurrentBlock(); + + } + + return true; + } // end func addWarnings + +} // end class PhpdocHTMLIndexRenderer +?> \ No newline at end of file Index: php4/pear/PHPDoc/renderer/html/templates/class.html diff -u php4/pear/PHPDoc/renderer/html/templates/class.html:1.2 php4/pear/PHPDoc/renderer/html/templates/class.html:1.3 --- php4/pear/PHPDoc/renderer/html/templates/class.html:1.2 Sat Dec 2 16:25:24 2000 +++ php4/pear/PHPDoc/renderer/html/templates/class.html Sun Dec 3 06:36:01 2000 @@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +C<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- Generated with PHPDoc, http://www.phpdoc.de --> <html> <head> @@ -93,7 +93,7 @@ <!-- BEGIN functionsummary_loop --> <tr> <td align="right" valign="top">{RETURNTYPE}</td> - <td align="left" valign="top" width="100%"><a href="#function_{NAME}"><h4>{NAME}({PARAMETER})</h4></a>{SHORTDESCRIPTION}{UNDOC}</td> + <td align="left" valign="top" width="100%"><a href="#function_{NAME}()"><h4>{NAME}({PARAMETER})</h4></a>{SHORTDESCRIPTION}{UNDOC}</td> </tr> <!-- END functionsummary_loop --> </table> @@ -202,7 +202,7 @@ <td colspan="2" align="left" valign="top"><h2>{ACCESS} Method Details</h2></td> </tr> <!-- BEGIN functiondetails_loop --> - <tr><td colspan="2" align="left" valign="top"><a name="function_{NAME}"><h4>{NAME}</h4></a></td></tr> + <tr><td colspan="2" align="left" valign="top"><a name="function_{NAME}()"><h4>{NAME}</h4></a></td></tr> <tr> <td colspan="2" align="left" valign="top"> <b>{ACCESS} {ABSTRACT} {STATIC} {FINAL} {RETURNTYPE} {NAME}( {PARAMETER} )</b><p> Index: php4/pear/PHPDoc/renderer/html/templates/classtree.html diff -u php4/pear/PHPDoc/renderer/html/templates/classtree.html:1.1 php4/pear/PHPDoc/renderer/html/templates/classtree.html:1.2 --- php4/pear/PHPDoc/renderer/html/templates/classtree.html:1.1 Sun Oct 8 03:05:12 2000 +++ php4/pear/PHPDoc/renderer/html/templates/classtree.html Sun Dec 3 06:36:01 2000 @@ -27,7 +27,7 @@ </tr> <tr> <td align="left" valign="top"><h1>Classtrees</h1></td> - </tr + </tr> <!-- BEGIN classtree --> <tr> <td height="10" align="left" valign="top"> </td> Index: php4/pear/PHPDoc/renderer/html/templates/module.html diff -u php4/pear/PHPDoc/renderer/html/templates/module.html:1.2 php4/pear/PHPDoc/renderer/html/templates/module.html:1.3 --- php4/pear/PHPDoc/renderer/html/templates/module.html:1.2 Sat Dec 2 16:25:24 2000 +++ php4/pear/PHPDoc/renderer/html/templates/module.html Sun Dec 3 06:36:01 2000 @@ -78,7 +78,7 @@ <!-- BEGIN functionsummary_loop --> <tr> <td align="right" valign="top">{RETURNTYPE}</td> - <td align="left" valign="top" width="100%"><a href="#function_{NAME}"><h4>{NAME}({PARAMETER})</h4></a>{SHORTDESCRIPTION}{UNDOC}</td> + <td align="left" valign="top" width="100%"><a href="#function_{NAME}()"><h4>{NAME}({PARAMETER})</h4></a>{SHORTDESCRIPTION}{UNDOC}</td> </tr> <!-- END functionsummary_loop --> </table> @@ -128,7 +128,7 @@ <td colspan="2" align="left" valign="top"><h2>{ACCESS} Method Details</h2></td> </tr> <!-- BEGIN functiondetails_loop --> - <tr><td colspan="2" align="left" valign="top"><a name="function_{NAME}"><h4>{NAME}</h4></a></td></tr> + <tr><td colspan="2" align="left" valign="top"><a name="function_{NAME}()"><h4>{NAME}</h4></a></td></tr> <tr> <td colspan="2" align="left" valign="top"> <b>{ACCESS} {ABSTRACT} {STATIC} {FINAL} {RETURNTYPE} {NAME}( {PARAMETER} )</b><p>