svn: /phd/trunk/phpdotnet/phd/Package/IDE/ Factory.php PHPStub.php
| From: | Shein Alexey | 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
+*/