Database name can now contain dashes (as per requested at http://forum.enanocms.org/viewtopic.php?f=5&t=14); corrected some installer behavior issues with connecting as root and setting up permissions resulting in logs not being flushed, configs not being inserted, and what have you.
+ − <?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,v 1.3 2005/02/23 17:38:29 pmjones Exp $
+ − *
+ − */
+ −
+ − /**
+ − *
+ − * 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];
+ − }
+ − }
+ −
+ − ?>