+++ /dev/null
-<?php\r
-/**\r
-* Extract class variables and their documentation from phpcode\r
-*\r
-* @version $Id: PhpdocVariableParser.php,v 1.3 2000/12/03 22:37:37 uw Exp $\r
-*/\r
-class PhpdocVariableParser extends PhpdocModuleParser {\r
-\r
- /**\r
- * Array with default values of a variable\r
- * \r
- * @var array $emptyVariable\r
- */\r
- var $emptyVariable = array(\r
- "name" => "",\r
- "undoc" => true\r
- );\r
-\r
- /**\r
- * Array of tags that are allowed in front of the var keyword\r
- * @var array $variableTags\r
- * @see analyseVariableParagraph()\r
- */\r
- var $variableTags = array(\r
- "access" => true,\r
- "abstract" => true,\r
- "static" => true,\r
- "final" => true,\r
- \r
- "see" => true,\r
- "link" => true,\r
- \r
- "var" => true,\r
- \r
- "version" => true,\r
- "since" => true,\r
- \r
- "deprecated" => true,\r
- "deprec" => true,\r
- \r
- "brother" => true, \r
- "sister" => true,\r
- \r
- "exclude" => true,\r
- "magic" => true,\r
- "todo" => true\r
- ); \r
-\r
- /**\r
- * Analyses a variable doc comment\r
- * @param array Hash returned by getPhpdocParagraph()\r
- * @return array \r
- */ \r
- function analyseVariable($para) {\r
- \r
- $variable = $this->emptyVariable;\r
- $variable["name"] = $para["name"];\r
- \r
- if ("" != $para["doc"]) {\r
- \r
- $variable = $this->analyseTags($this->getTags($para["doc"]), $variable, $this->variableTags);\r
- \r
- list($msg, $variable) = $this->checkParserErrors($variable, "variable");\r
- if ("" != $msg)\r
- $this->warn->addDocWarning($this->currentFile, "variable", $variable["name"], $msg, "mismatch");\r
- \r
- list($variable["sdesc"], $variable["desc"]) = $this->getDescription($para["doc"]);\r
- \r
- $variable["undoc"] = false;\r
- \r
- }\r
- \r
- list($type, $value, $raw_value) = $this->getVariableTypeAndValue($para["value"], false);\r
- $variable["type"] = $type;\r
- \r
- if ("unknown" != $value) \r
- $variable["value"] = $value;\r
- \r
- $variable = $this->checkVarDocs($variable);\r
- \r
- return $variable;\r
- } // end func analyseVariables\r
- \r
- /**\r
- * Compares the var tag informations with the analyse of the source code.\r
- *\r
- * @param array $variable\r
- * @return array $variable\r
- */\r
- function checkVarDocs($variable) {\r
- \r
- if (!isset($variable["var"]))\r
- return $variable;\r
- \r
- if ("unknown" != $variable["type"] && "mixed" != $variable["type"] && $variable["var"]["type"] != $variable["type"]) {\r
- \r
- $msg = sprintf("The documented class variable type does not match the type found. Update the tag to '@var %s [%s]%s'.",\r
- $variable["type"],\r
- $variable["name"],\r
- (isset($variable["var"]["desc"])) ? " " . $variable["var"]["desc"] : ""\r
- );\r
- $this->warn->addDocWarning($this->currentFile, "variable", $variable["name"], $msg, "mismatch");\r
- \r
- } else if ("unknown" == $variable["type"] && "" != $variable["var"]["type"]) {\r
- \r
- $variable["type"] = $variable["var"]["type"];\r
- \r
- }\r
- \r
- if ("" != $variable["var"]["name"] && $variable["var"]["name"] != $variable["name"]) {\r
- \r
- $msg = sprintf("The documented class variable name does not match the name found. Update the tag to '@var %s [%s]%s'.",\r
- ("" != $variable["var"]["type"]) ? $variable["var"]["type"] : $variable["type"],\r
- $variable["name"],\r
- (isset($variable["var"]["desc"])) ? " " . $variable["var"]["desc"] : ""\r
- );\r
- $this->warn->addDocWarning($this->currentFile, "variable", $variable["name"], $msg, "mismatch");\r
- }\r
- \r
- \r
- unset($variable["var"]);\r
- \r
- return $variable;\r
- } // end func checkVarDocs\r
-\r
-} // end class PhpdocVariableParser\r
-?>
\ No newline at end of file