svn: /phd/trunk/phpdotnet/phd/Package/IDE/ Factory.php PHPStub.php

From: Date: Wed, 05 Jan 2011 13:26:25 +0000
Subject: svn: /phd/trunk/phpdotnet/phd/Package/IDE/ Factory.php PHPStub.php
Groups: php.doc.cvs 
Request: Send a blank email to doc-cvs+get-7616@lists.php.net to get a copy of this message
shein Wed, 05 Jan 2011 13:26:25 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=307118 Log: Commited first version of PHPStub package format for Phd_IDE. Changed paths: U phd/trunk/phpdotnet/phd/Package/IDE/Factory.php A phd/trunk/phpdotnet/phd/Package/IDE/PHPStub.php Modified: phd/trunk/phpdotnet/phd/Package/IDE/Factory.php =================================================================== --- phd/trunk/phpdotnet/phd/Package/IDE/Factory.php 2011-01-05 13:20:13 UTC (rev 307117) +++ phd/trunk/phpdotnet/phd/Package/IDE/Factory.php 2011-01-05 13:26:25 UTC (rev 307118) @@ -8,6 +8,7 @@ 'funclist' => 'Package_IDE_Funclist', 'json' => 'Package_IDE_JSON', 'php' => 'Package_IDE_PHP', + 'phpstub' => 'Package_IDE_PHPStub' ); public function __construct() { Added: phd/trunk/phpdotnet/phd/Package/IDE/PHPStub.php =================================================================== --- phd/trunk/phpdotnet/phd/Package/IDE/PHPStub.php (rev 0) +++ phd/trunk/phpdotnet/phd/Package/IDE/PHPStub.php 2011-01-05 13:26:25 UTC (rev 307118) @@ -0,0 +1,89 @@ +<?php +namespace phpdotnet\phd; +/* $Id$ */ + +class Package_IDE_PHPStub extends Package_IDE_Base { + + public function __construct() { + $this->registerFormatName('IDE-PHPStub'); + $this->setExt(Config::ext() === null ? ".php" : Config::ext()); + } + + public function parseFunction() { + $str = <<< EOD +{$this->renderFunctionDocBlock()} +{$this->renderFunctionDefinition()} +EOD; + return $str; + } + + private function renderFunctionDefinition() { + return "function {$this->function['name']}({$this->renderParamBody()}) {}"; + } + + private function renderFunctionDocBlock() { + $valid_parts = array_filter(array( + '/**', + $this->renderFunctionVersion(), + $this->renderFunctionPurpose(), + $this->renderFunctionLink(), + $this->renderParamDocs(), + $this->renderReturnDocBlock() + )); + + return implode("\n", $valid_parts) . "\n */"; + } + + private function renderFunctionVersion() { + if (empty($this->function['version'])) { + return ""; + } + + return " * ({$this->function['version']})<br/>"; + } + + private function renderFunctionPurpose() { + if (empty($this->function['purpose'])) { + return ""; + } + + return " * {$this->function['purpose']}"; + } + + private function renderFunctionLink() { + return " * @link http://php.net/manual/en/{$this->function['manualid']}.php"; + } + + private function renderReturnDocBlock() { + $description = preg_replace('/\n\s+/', "\n * ", $this->function['return']['description']); + return " * @return {$this->function['return']['type']} $description"; + } + + private function renderParamDocs() { + $result = array(); + foreach($this->function['params'] as $param) { + $optional = $param['optional'] ? '[optional]' : ''; + $result[] = " * @param {$param['type']} \${$param['name']} $optional <p> TODO DESCRIPTION </p>"; + } + + return implode("\n", $result); + } + + private function renderParamBody() { + $result = array(); + foreach($this->function['params'] as $param) { + if ($param['optional'] && isset($param['initializer'])) { + $result[] = "\${$param['name']} = {$param['initializer']}"; + } else { + $result[] = "\${$param['name']}"; + } + } + + return implode(", ", $result); + } +} + +/* +* vim600: sw=4 ts=4 syntax=php et +* vim<600: sw=4 ts=4 +*/

« previous php.doc.cvs (#7616) next »