Initial Commit
This commit is contained in:
141
database/php/pear/Text/Wiki/Parse/Default/Function.php
Normal file
141
database/php/pear/Text/Wiki/Parse/Default/Function.php
Normal file
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
*
|
||||
* Parses for an API function documentation block.
|
||||
*
|
||||
* @category Text
|
||||
*
|
||||
* @package Text_Wiki
|
||||
*
|
||||
* @author Paul M. Jones <pmjones@php.net>
|
||||
*
|
||||
* @license LGPL
|
||||
*
|
||||
* @version $Id: Function.php 180591 2005-02-23 17:38:29Z pmjones $
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* Parses for an API function documentation block.
|
||||
*
|
||||
* @category Text
|
||||
*
|
||||
* @package Text_Wiki
|
||||
*
|
||||
* @author Paul M. Jones <pmjones@php.net>
|
||||
*
|
||||
*/
|
||||
|
||||
class Text_Wiki_Parse_Function extends Text_Wiki_Parse {
|
||||
|
||||
var $regex = '/^(\<function\>)\n(.+)\n(\<\/function\>)(\s|$)/Umsi';
|
||||
|
||||
function process(&$matches)
|
||||
{
|
||||
// default options
|
||||
$opts = array(
|
||||
'name' => null,
|
||||
'access' => null,
|
||||
'return' => null,
|
||||
'params' => array(),
|
||||
'throws' => array()
|
||||
);
|
||||
|
||||
// split apart the markup lines and loop through them
|
||||
$lines = explode("\n", $matches[2]);
|
||||
foreach ($lines as $line) {
|
||||
|
||||
// skip blank lines
|
||||
if (trim($line) == '') {
|
||||
continue;
|
||||
}
|
||||
|
||||
// find the first ':' on the line; the left part is the
|
||||
// type, the right part is the value. skip lines without
|
||||
// a ':' on them.
|
||||
$pos = strpos($line, ':');
|
||||
if ($pos === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// $type is the line type: name, access, return, param, throws
|
||||
// 012345678901234
|
||||
// name: something
|
||||
$type = trim(substr($line, 0, $pos));
|
||||
$val = trim(substr($line, $pos+1));
|
||||
|
||||
switch($type) {
|
||||
|
||||
case 'a':
|
||||
case 'access':
|
||||
$opts['access'] = $val;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
case 'name':
|
||||
$opts['name'] = $val;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
case 'param':
|
||||
$tmp = explode(',', $val);
|
||||
$k = count($tmp);
|
||||
if ($k == 1) {
|
||||
$opts['params'][] = array(
|
||||
'type' => $tmp[0],
|
||||
'descr' => null,
|
||||
'default' => null
|
||||
);
|
||||
} elseif ($k == 2) {
|
||||
$opts['params'][] = array(
|
||||
'type' => $tmp[0],
|
||||
'descr' => $tmp[1],
|
||||
'default' => null
|
||||
);
|
||||
} else {
|
||||
$opts['params'][] = array(
|
||||
'type' => $tmp[0],
|
||||
'descr' => $tmp[1],
|
||||
'default' => $tmp[2]
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
case 'return':
|
||||
case 'returns':
|
||||
$opts['return'] = $val;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
case 'throws':
|
||||
$tmp = explode(',', $val);
|
||||
$k = count($tmp);
|
||||
if ($k == 1) {
|
||||
$opts['throws'][] = array(
|
||||
'type' => $tmp[0],
|
||||
'descr' => null
|
||||
);
|
||||
} else {
|
||||
$opts['throws'][] = array(
|
||||
'type' => $tmp[0],
|
||||
'descr' => $tmp[1]
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
$opts[$type] = $val;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// add the token back in place
|
||||
return $this->wiki->addToken($this->rule, $opts) . $matches[4];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user