| // +----------------------------------------------------------------------+ // /** * Docbook data container (for pages and sections) * * @package PHP_CodeDoc * @access public * @author Alan Knowles * */ class PHP_CodeDoc_Parser_Docbook { static function read(PHP_CodeDoc_Parser $thiz, $comment,$inclass) { // called statically as part of the parser (and $this will actually be Parser) //class name should be next! $thiz->debug(__METHOD__, substr($comment, 0, 30)); // is docbook generation enabled? $options = PHP_CodeDoc::$options; if (!@$options['makeDocbook']) return; // all docbook comments should start /* if (substr(trim($comment),0,2) != "/*") { return; } $parts = explode("_",$thiz->active_package->name); $pfile = $parts[count($parts) -1]; //* we only read sections when the filename matches the package name //if (!preg_match("/\/{$pfile}.php$/",$this->rfilename)) { // return; //} if (!$inclass) { // only understand page breaks when comments in classes /* valid comment is /**(*****) some stuff without a start **** / */ echo "LOOKING FOR DOC BOOK \n"; $args = array(); if (preg_match('/^\s*\*\s*@/mi',$comment,$args)) { $docbook = &$thiz->active_package->docbook; $docbook->addPage($thiz->active_package->name); $docbook->addSection('Introduction'); $thiz->active_package->docbookBase = $docbook->parse($comment); } return; } /* otherwise we are in a header area?? */ } function parse($comment) { $lines = explode("\n",$comment); $buffer = ""; foreach ($lines as $line) { // get rid of trailing * $line = preg_replace("/^\s*\/*[\*]+\/*/","",$line); //$line = preg_replace("/^\s*\*/","",$line); $bits = explode(' ', strtolower(trim($line))); //echo "CASE {$bits[0]}\n"; switch ($bits[0]) { case "@docbook": break; case "page:": $page = preg_replace("/\s*page:\s*/i","",$line); PHP_CodeDoc_Parser_Docbook::addPara($buffer); $buffer =""; PHP_CodeDoc_Parser_Docbook::addPage($page); break; case "section:": $section = preg_replace("/\s*section:\s*/i","",$line); PHP_CodeDoc_Parser_Docbook::addPara($buffer); $buffer =""; PHP_CodeDoc_Parser_Docbook::addSection($section); break; case "pagesummary:": $summary = preg_replace("/\s*pagesummary:\s*/i","",$line); PHP_CodeDoc_Parser_Docbook::addPara($buffer); $buffer =""; PHP_CodeDoc_Parser_Docbook::addPageSummary($summary); break; case "packagesection:": PHP_CodeDoc_Parser_Docbook::addPara($buffer); $buffer =""; $ps = preg_replace("/\s*packagesection:\s*/i","",$line); $this->active_package->docbookBase = trim($ps); break; case "list:": PHP_CodeDoc_Parser_Docbook::addPara($buffer); $buffer =""; break; case "endlist:": PHP_CodeDoc_Parser_Docbook::addList($buffer); $buffer =""; break; default: if (trim($line) == "") { if (trim($buffer) == "") { break; } PHP_CodeDoc_Parser_Docbook::addPara($buffer); $buffer= ""; break; } $buffer .= $line . "\n"; } } PHP_CodeDoc_Parser_Docbook::addPara($buffer); //print_r($this->active_package->docbook); } function addPara($lines) { if ($lines == "") { return; } $this->active_package->docbook->Operations = & $this->classes[$this->_active_class]->Operations; $this->active_package->docbook->iOperations = & $this->classes[$this->_active_class]->iOperations; } /* ---------- method notes ------------- */ function parseMethodComment(&$method) { // add a new section for it! /* if ($method->class != $this->_active_package..... */ if ($method->name{0} == "_") return; $docbook->addSection($method->class . "::". $method->name); $this->_activeSection->method = &$method; } } ?>