summaryrefslogtreecommitdiff
path: root/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc
diff options
context:
space:
mode:
Diffstat (limited to 'buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc')
-rwxr-xr-xbuildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc2946
1 files changed, 0 insertions, 2946 deletions
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc b/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc
deleted file mode 100755
index 5f901232..00000000
--- a/buildscripts/PhpDocumentor/phpDocumentor/phpDocumentorTParser.inc
+++ /dev/null
@@ -1,2946 +0,0 @@
-<?php
-/**
- * tokenizer extension-based parser for PHP code
- *
- * phpDocumentor :: automatic documentation generator
- *
- * PHP versions 4 and 5
- *
- * Copyright (c) 2002-2008 Gregory Beaver
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it
- * and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation;
- * either version 2.1 of the License, or (at your option) any
- * later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version CVS: $Id: phpDocumentorTParser.inc 286921 2009-08-08 05:01:24Z ashnazg $
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @since 1.2
- * @todo CS cleanup - change package to PhpDocumentor
- */
-
-/**
- * Tokenizer-based parser for PHP source code
- *
- * @category ToolsAndUtilities
- * @package phpDocumentor
- * @subpackage Parsers
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 2002-2008 Gregory Beaver
- * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
- * @version Release: 1.4.3
- * @link http://www.phpdoc.org
- * @link http://pear.php.net/PhpDocumentor
- * @todo CS cleanup - change package to PhpDocumentor
- * @todo CS cleanup - change classname to PhpDocumentor_*
- */
-class phpDocumentorTParser extends Parser
-{
- /**#@+
- * @access private
- */
- /**
- * @var EventStack
- */
- var $_event_stack;
- /**
- * last event triggered before the current event
- * @var integer
- */
- var $_last_pevent;
- /**
- * last word parsed
- * @var integer
- */
- var $_last_word;
- /**
- * full path of the currently parsed file
- * @var string
- */
- var $_path;
- /**#@-*/
-
- /**#@+
- * Parser Variables
- * @access private
- */
- var $_pv_class;
- var $_pv_cur_class;
- var $_pv_define;
- var $_pv_define_name;
- var $_pv_define_value;
- var $_pv_define_params_data;
- var $_pv_dtype;
- var $_pv_docblock;
- var $_pv_dtemplate;
- var $_pv_func;
- var $_pv_func_param;
- var $_pv_findglobal;
- var $_pv_global_name;
- var $_pv_global_val;
- var $_pv_globals;
- var $_pv_global_count;
- var $_pv_include_params_data;
- var $_pv_include_name;
- var $_pv_include_value;
- var $_pv_linenum;
- var $_pv_periodline;
- var $_pv_paren_count = 0;
- var $_pv_statics;
- var $_pv_static_count;
- var $_pv_static_val;
- var $_pv_quote_data;
- var $_pv_function_data;
- var $_pv_var;
- var $_pv_varname;
- var $_pv_var_value;
- /**#@-*/
-
- /**#@+
- * Parser Flags
- * @access private
- */
- var $_pf_definename_isset = false;
- var $_pf_includename_isset = false;
- var $_pf_get_source = false;
- var $_pf_getting_source = false;
- var $_pf_internal = false;
- var $_pf_in_class = false;
- var $_pf_in_define = false;
- var $_pf_in_global = false;
- var $_pf_in_include = false;
- var $_pf_in_include_value = false;
- var $_pf_in_var = false;
- var $_pf_interface = false;
- var $_pf_funcparam_val = false;
- var $_pf_quote_active = false;
- var $_pf_reset_quote_data = true;
- var $_pf_useperiod = false;
- var $_pf_set_var_value = false;
- var $_pf_var_equals = false;
- /**#@-*/
-
- /**
- * relative path of the parsed file from the base parse directory
- * @var string
- */
- var $source_location;
- var $eventHandlers = array(
- PARSER_EVENT_ARRAY => 'handleArray',
- PARSER_EVENT_VAR_ARRAY => 'handleArray',
- PARSER_EVENT_VAR_ARRAY_COMMENT => 'handleVarArrayComment',
- PARSER_EVENT_CLASS => 'handleClass',
- PARSER_EVENT_COMMENT => 'handleComment',
- PARSER_EVENT_DOCBLOCK_TEMPLATE => 'handleDocBlockTemplate',
- PARSER_EVENT_END_DOCBLOCK_TEMPLATE => 'handleEndDocBlockTemplate',
- PARSER_EVENT_LOGICBLOCK => 'handleLogicBlock',
- PARSER_EVENT_NOEVENTS => 'defaultHandler',
- PARSER_EVENT_OUTPHP => 'defaultHandler',
- PARSER_EVENT_DEFINE => 'handleDefine',
- PARSER_EVENT_DEFINE_PARAMS => 'handleDefineParams',
- PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS => 'handleDefineParamsParenthesis',
- PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS => 'handleIncludeParamsParenthesis',
- PARSER_EVENT_DOCBLOCK => 'handleDocBlock',
- PARSER_EVENT_TAGS => 'handleTags',
- PARSER_EVENT_DESC => 'handleDesc',
- PARSER_EVENT_DOCKEYWORD => 'handleTag',
- PARSER_EVENT_DOCKEYWORD_EMAIL => 'handleDockeywordEmail',
- PARSER_EVENT_EOFQUOTE => 'handleHereDoc',
- PARSER_EVENT_FUNCTION => 'handleFunction',
- PARSER_EVENT_FUNCTION_PARAMS => 'handleFunctionParams',
- PARSER_EVENT_FUNCTION_PARAM_VAR => 'handleFunctionParams',
- PARSER_EVENT_FUNC_GLOBAL => 'handleFuncGlobal',
- PARSER_EVENT_DEFINE_GLOBAL => 'handleGlobal',
- PARSER_EVENT_GLOBAL_VALUE => 'handleGlobalValue',
- PARSER_EVENT_INLINE_DOCKEYWORD => 'handleInlineDockeyword',
- PARSER_EVENT_INCLUDE => 'handleInclude',
- PARSER_EVENT_INCLUDE_PARAMS => 'handleIncludeParams',
- PARSER_EVENT_QUOTE => 'handleQuote',
- PARSER_EVENT_PHPCODE => 'handlePhpCode',
- PARSER_EVENT_SINGLEQUOTE => 'handleSingleQuote',
- PARSER_EVENT_STATIC_VAR => 'handleStaticVar',
- PARSER_EVENT_STATIC_VAR_VALUE => 'handleStaticValue',
- PARSER_EVENT_VAR => 'handleVar',
- PARSER_EVENT_ACCESS_MODIFIER => 'handleAccessModifier',
- PARSER_EVENT_IMPLEMENTS => 'handleImplements',
- PARSER_EVENT_CLASS_CONSTANT => 'handleClassConstant',
- );
-
- var $inlineTagHandlers = array(
- '*' => 'handleDefaultInlineTag',
- 'link' => 'handleLinkInlineTag',
- );
-
- /**
- * Constructor
- *
- */
- function phpDocumentorTParser()
- {
- $this->allowableTags
- = $GLOBALS['_phpDocumentor_tags_allowed'];
- $this->allowableInlineTags
- = $GLOBALS['_phpDocumentor_inline_doc_tags_allowed'];
- $this->subscribe(PHPDOCUMENTOR_EVENT_NEWLINENUM,
- $GLOBALS['phpDocumentor_errors']);
- $this->subscribe(PHPDOCUMENTOR_EVENT_NEWFILE,
- $GLOBALS['phpDocumentor_errors']);
- $this->tagHandlers['author'] = 'authorTagHandler';
- $this->tagHandlers['filesource'] = 'filesourceTagHandler';
- $this->setupEventStates();
- }
-
- /**
- * Parse a new file
- *
- * @param string &$parse_data the parse data
- * @param string $path the path
- * @param int $base number of directories to drop off the bottom
- * when creating names using path
- * @param bool $packages ???
- *
- * @staticvar int used for recursion limiting
- * if a handler for an event is not found
- * @return bool
- */
- function parse (&$parse_data, $path, $base = 0, $packages = false)
- {
- global $_phpDocumentor_options;
- static $endrecur = 0;
-
- $this->setupStates();
- if (strlen($parse_data) == 0) {
- return false;
- }
-
- $this->configWordParser($parse_data);
- // initialize variables so E_ALL error_reporting doesn't complain
- $pevent = 0;
- $word = 0;
-
- $page = new ParserPage;
- $page->setSource($this->_wp->getFileSource());
- $page->setPath($path);
- $this->_path = $path;
- $page->setPackageOutput($packages);
- $page->setFile(basename($path));
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWFILE, basename($path));
- //$name = str_replace("/","_",dirname($path)) . "_"
- // . array_shift(explode(".",$page->getFile()));
- // fc@fc.clever-soft.com 11/29/2001
- $name = str_replace(':', '', dirname($path)
- . PATH_DELIMITER . $page->getFile());
- $tmp = explode(PATH_DELIMITER, $name);
- $name = implode("---", array_slice($tmp, $base));
- // if base is '', drive letter is present in windows
-
- $page->setName($name);
- $temploc = $_phpDocumentor_options['Program_Root']
- . PATH_DELIMITER . implode(PATH_DELIMITER,
- array_slice(explode(PATH_DELIMITER, $path), $base));
-
- if ($temploc == $_phpDocumentor_options['Program_Root'] . PATH_DELIMITER) {
- $temploc .= $path;
- }
-
- $this->source_location = $source_location = $temploc;
- $page->setSourceLocation($source_location);
-
- $this->publishEvent(PHPDOCUMENTOR_EVENT_PAGE, $page);
- unset($page);
- do {
- $lpevent = $pevent;
- $pevent = $this->_event_stack->getEvent();
- if ($lpevent != $pevent) {
- $this->_last_pevent = $lpevent;
- }
-
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE, ($pevent + 100));
-
- $this->_pv_last_word = $word;
-
- $word = $this->_wp->getWord();
- if (isset($this->_pv_findglobal) && $word == $this->_pv_findglobal) {
- $this->_last_pevent = $pevent;
-
- $this->_event_stack->pushEvent($pevent = PARSER_EVENT_DEFINE_GLOBAL);
- }
- // in wordparser, have to keep track of lines
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWLINENUM, $this->_wp->linenum);
- if ($this->_pf_get_source) {
- if ($word[0] == T_FUNCTION) {
- $this->_wp->retrievesource($word);
- $this->_pf_get_source = false;
- $this->_pf_getting_source = true;
- }
- }
-
- if (PHPDOCUMENTOR_DEBUG == true) {
- echo "LAST: ";
- if (is_array($this->_pv_last_word)) {
- echo token_name($this->_pv_last_word[0]) . ' => |'
- . htmlspecialchars($this->_pv_last_word[1]);
- } else {
- echo "|" . $this->_pv_last_word;
- }
- echo "|\n";
- echo "PEVENT: " . $this->getParserEventName($pevent) . "\n";
- echo "LASTPEVENT: "
- . $this->getParserEventName($this->_last_pevent) . "\n";
- echo $this->_wp->getPos() . ": ";
- if (is_array($word)) {
- echo token_name($word[0]) . ' => |'
- . htmlspecialchars($word[1]);
- } else {
- echo '|' . htmlspecialchars($word);
- }
- echo "|\n-------------------\n\n\n";
- }
-
- // $this->_pf_getting_source &&
- // ($pevent == PARSER_EVENT_DOCBLOCK) ||
- // ($pevent == PARSER_EVENT_NOEVENTS))
- if (0) {
- addError(PDERROR_SOURCE_TAG_FUNCTION_NOT_FOUND);
- // throw away source
- $this->_wp->getSource();
- }
- if (isset($this->eventHandlers[$pevent])) {
- $handle = $this->eventHandlers[$pevent];
- $this->$handle($word, $pevent);
- } else {
- debug('WARNING: possible error, no handler for event number '
- . $pevent);
- if ($endrecur++ == 25) {
- die("FATAL ERROR, recursion limit reached");
- }
- }
- } while (!($word === false));
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,
- PHPDOCUMENTOR_EVENT_END_PAGE);
- }
-
- /**#@+
- * @param string $word the string word
- * @param int $pevent the token constant
- * @access private
- * @return void
- */
-
- /**
- * handler for COMMENT
- */
- function handleComment($word, $pevent)
- {
- $this->_wp->backupPos();
- $this->_event_stack->popEvent();
- }
-
- /**
- * handler for PHPCODE.
- *
- * this handler recognizes the <code><?</code> php processor directive,
- * and begins parsing php code
- */
- function handlePhpCode($word, $pevent)
- {
- $e = $this->checkEventPush($word, $pevent);
- if (isset($this->_pv_findglobal) && $e) {
- if ($e != PARSER_EVENT_DEFINE_GLOBAL
- && $e != PARSER_EVENT_ARRAY
- && $e != PARSER_EVENT_QUOTE
- && $e != PARSER_EVENT_SINGLEQUOTE
- && $e != PARSER_EVENT_COMMENT
- && $e != PARSER_EVENT_COMMENTBLOCK
- ) {
- addError(PDERROR_GLOBAL_NOT_FOUND, $this->_pv_findglobal);
- $this->_wp->findGlobal(false);
- unset($this->_pv_findglobal);
- }
- }
- }
-
- /**
- * handler for FUNC_GLOBAL.
- *
- * this handler recognizes "global $var1, $var2" declarations in a function,
- * and parses them
- */
- function handleFuncGlobal($word, $pevent)
- {
- if ($this->checkEventPop($word, $pevent)) {
- return;
- }
- if (!$this->checkEventPush($word, $pevent)) {
- if ($word == ',') {
- // another variable
- $this->_pv_global_count++;
- } else {
- if (!isset($this->_pv_globals[$this->_pv_global_count])) {
- $this->_pv_globals[$this->_pv_global_count] = '';
- }
-
- // if (!empty($this->_pv_globals[$this->_pv_global_count])) {
- // $this->_pv_global_count++;
- // }
-
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_globals[$this->_pv_global_count] .= $word;
- }
- }
- }
-
- /**
- * handler for DEFINE_GLOBAL
- */
- function handleGlobal($word, $pevent)
- {
- if (isset($this->_pv_findglobal)) {
- $this->_pv_global_name = $this->_pv_findglobal;
- unset($this->_pv_findglobal);
- }
- if (!$this->_pf_in_global) {
- $this->_pv_linenum = $this->_wp->linenum + 1;
- }
- $this->_pf_in_global = true;
- if ($this->checkEventPush($word, $pevent)) {
- $this->_wp->setWhitespace(true);
- }
- if ($this->checkEventPop($word, $pevent)) {
- $this->_pf_in_global = false;
- $a = new parserGlobal;
- $a->setDataType($this->_pv_global_type);
- $this->_pv_global_type = '';
- $a->setLineNumber($this->_pv_linenum);
- $a->setName($this->_pv_global_name);
- if (isset($this->_pv_global_val)) {
- $a->setValue(trim($this->_pv_global_val));
- }
- $this->publishEvent(PHPDOCUMENTOR_EVENT_GLOBAL, $a);
- unset($this->_pv_global_val);
- unset($this->_pv_global_type);
- }
- }
-
- /**
- * handler for GLOBAL_VALUE
- */
- function handleGlobalValue($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent)) {
- return;
- }
- $this->_wp->setWhitespace(true);
- if (!isset($this->_pv_global_val)) {
- $this->_pv_global_val = '';
- }
- if ($this->_last_pevent == PARSER_EVENT_ARRAY) {
- $this->_pv_global_val .= $this->_pv_function_data;
- $this->_pv_function_data = '';
- }
- if ($this->_last_pevent == PARSER_EVENT_QUOTE ||
- $this->_last_pevent == PARSER_EVENT_EOFQUOTE
- ) {
- $this->_pv_global_val .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if ($this->checkEventPop($word, $pevent)) {
- $this->_wp->setWhitespace(false);
- $this->_wp->backupPos();
- return;
- }
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_global_val .= $word;
- }
-
- /**
- * handler for STATIC_VAR.
- *
- * this handler recognizes "static $var1,
- * $var2 = 6" declarations in a function,
- * and parses them
- */
- function handleStaticVar($word, $pevent)
- {
- if ($this->checkEventPop($word, $pevent)) {
- $this->_pv_static_count++;
- return;
- }
- if (!$this->checkEventPush($word, $pevent)) {
- if ($word == ',') {
- $this->_pv_static_count++;
- return;
- }
- if (!isset($this->_pv_statics[$this->_pv_static_count])) {
- $this->_pv_statics[$this->_pv_static_count] = '';
- }
- if (!empty($this->_pv_statics[$this->_pv_static_count])) {
- $this->_pv_static_count++;
- }
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_statics[$this->_pv_static_count] = $word;
- }
- }
-
- /**
- * handler for STATIC_VAR_VALUE.
- *
- * this handler parses the 6 in "static $var1, $var2 = 6"
- */
- function handleStaticValue($word, $pevent)
- {
- if ($this->checkEventPush($word, $pevent)) {
- return;
- }
- if (!isset($this->_pv_static_val[$this->_pv_static_count])) {
- $this->_pv_static_val[$this->_pv_static_count] = '';
- }
- if ($this->_last_pevent == PARSER_EVENT_QUOTE) {
- $this->_pv_static_val[$this->_pv_static_count]
- .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if ($this->_last_pevent == PARSER_EVENT_ARRAY) {
- $this->_pv_static_val[$this->_pv_static_count]
- .= $this->_pv_function_data;
- $this->_pv_function_data = '';
- }
- if ($this->checkEventPop($word, $pevent)) {
- $this->_pv_static_val[$this->_pv_static_count]
- = trim($this->_pv_static_val[$this->_pv_static_count]);
- $this->_wp->backupPos($word);
- return;
- } else {
- if (is_array($word)) $word = $word[1];
- $this->_pv_static_val[$this->_pv_static_count] .= $word;
- }
- }
-
- /**
- * handler for LOGICBLOCK
- *
- * Logic Blocks are the stuff between { and } in a function/method. A
- * logic block can clearly contain other logic blocks, as in:
- *
- * <code>
- * function test($a)
- * {
- * if (testcondition)
- * { // nested logic block
- * }
- * }
- * </code>
- *
- * So, the exit portion of the logic block handler must check to see if the
- * logic block being exited is the top-level, and it does this by retrieving
- * the last event from the stack. If it is a function (and not a logic block)
- * then it backs up the word parser so that the function will exit properly.
- *
- * {@source 11}
- */
- function handleLogicBlock($word, $pevent)
- {
- $a = $this->checkEventPush($word, $pevent);
- if ($this->checkEventPop($word, $pevent)) {
- $e = $this->_event_stack->popEvent();
- $this->_event_stack->pushEvent($e);
- if ($e == PARSER_EVENT_FUNCTION) {
- $this->_wp->backupPos();
- }
- }
- }
-
- /**
- * handler for FUNCTION.
- *
- * this handler recognizes function declarations, and parses them. The body
- * of the function is parsed by handleLogicBlock()
- *
- * @see handleLogicBlock()
- */
- function handleFunction($word, $pevent)
- {
- if ($e = $this->checkEventPush($word, $pevent)) {
- $this->_pv_function_data = '';
- if ($e == PARSER_EVENT_FUNCTION_PARAMS && !is_object($this->_pv_func)
- ) {
- addErrorDie(PDERROR_FUNCTION_HAS_NONAME);
- }
- if ($e == PARSER_EVENT_COMMENT || $e == PARSER_EVENT_COMMENTBLOCK ||
- $e == PARSER_EVENT_FUNCTION_PARAMS || $e == PARSER_EVENT_LOGICBLOCK
- ) {
- return;
- }
- }
-
- if (!isset($this->_pv_func)) {
- $this->_pv_func = false;
- }
- if (! is_object($this->_pv_func)) {
- $this->_pv_globals = array();
- $this->_pv_global_count = $this->_pv_static_count = 0;
- if ($this->_pf_in_class) {
- $this->_pv_func = new parserMethod($this->_pv_cur_class);
- } else {
- $this->_pv_func = new parserFunction;
- unset($this->_accessModifiers);
- }
- if (isset($this->_accessModifiers)) {
- $this->_pv_func->setModifiers($this->_accessModifiers);
- unset($this->_accessModifiers);
- }
- $this->_pv_func->setLineNumber($this->_wp->linenum + 1);
- if (is_string($word) && $word == '&') {
- $this->_pv_func->setReturnsReference();
- }
- if (is_array($word) && $word[0] == T_STRING) {
- $this->_pv_func->setName($word[1]);
- }
- } else {
- if ($this->_pv_func->getReturnsReference()) {
- if (is_array($word) && $word[0] == T_STRING) {
- $this->_pv_func->setName($word[1]);
- }
- }
- }
- if ($this->checkEventPop($word, $pevent)) {
- $this->_pv_func->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_func->addGlobals($this->_pv_globals);
- $this->_pv_func->addStatics($this->_pv_statics, $this->_pv_static_val);
- $this->_pv_globals = array();
- $this->_pv_global_count = 0;
- if ($this->_pf_getting_source) {
- $x = $this->_wp->getSource();
- $this->_pv_func->addSource($x);
- $this->_pf_get_source = false;
- $this->_pf_getting_source = false;
- }
- $this->publishEvent(PHPDOCUMENTOR_EVENT_FUNCTION, $this->_pv_func);
- $this->_pv_func = false;
-
- // subtle bug fixed by this, sometimes string from function body
- unset($this->_pv_quote_data); // was picked up by the next function
- // as a default value for a parameter!
- }
- }
-
- /**
- * handler for FUNCTION_PARAMS.
- *
- * this handler recognizes the parameters of a function within parentheses
- * like function(param, param = default_value) and parses them
- *
- * @see endFunctionParam()
- */
- function handleFunctionParams($word, $pevent)
- {
- //echo $this->_wp->getPos() . ": word=|$word|\t\t\tlastword=|"
- // . $this->_pv_last_word."|\n";
- //echo "function_param = '".$this->_pv_function_param."'\n";
- //echo "function_data = '".$this->_pv_function_data."'\n";
- $e1 = $this->checkEventPush($word, $pevent);
-
- if (!$e1) {
- if (($pop = $this->checkEventPop($word, $pevent)) &&
- $pevent == PARSER_EVENT_FUNCTION_PARAM_VAR
- ) {
- // end of [typehint ]$param[= defaultval]
- if (is_string($word) && $word == ')') {
- $this->_wp->backupPos();
- }
- $this->endFunctionParam($word);
- } elseif ($word == '=') {
- // about to parse the default value
- $this->_pf_funcparam_val = true;
- } else {
- if ($this->_pf_funcparam_val) {
- // parsing default value
- if (isset($this->_pv_quote_data)) {
- $this->_pv_function_data .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_function_data .= $word;
- } else {
- // pre-param
- if ($pop) {
- return;
- }
- if (!isset($this->_pv_function_param)) {
- $this->_pv_function_param = '';
- }
- if (is_array($word) && $pevent == PARSER_EVENT_FUNCTION_PARAMS
- ) {
- if ($word[0] == T_STRING || $word[0] == T_ARRAY) {
- // object or array type hint
- $this->_pv_function_param_type = $word[1];
- return;
- }
- $word = $word[1];
- }
- $this->_pv_function_param .= $word;
- }
- }
- } elseif ($e1 == PARSER_EVENT_ARRAY) {
- $this->_wp->setWhiteSpace(true);
- } elseif ($e1 == PARSER_EVENT_FUNCTION_PARAM_VAR) {
- if (!isset($this->_pv_function_param)) {
- $this->_pv_function_param = '';
- }
- // we just got the $var part of the param
- $this->_pv_function_param .= $word[1];
- }
- }
-
- /**
- * handler for ARRAY.
- *
- * this event handler parses arrays in default values of function
- * and var definitions
- */
- function handleArray($word, $pevent)
- {
- $e = $this->checkEventPush($word, $pevent);
- if ($e) {
- return;
- }
-
- if (!isset($this->_pv_function_data) ||
- (isset($this->_pv_function_data) && empty($this->_pv_function_data))
- ) {
- $this->_pv_function_data = "array";
- }
-
- if ($word == '(' && $this->_pv_paren_count++) {
- // need extra parentheses help
- $this->_event_stack->pushEvent($pevent);
- }
- if (is_array($word)) {
- $this->_pv_function_data .= $word[1];
- } else {
- $this->_pv_function_data .= $word;
- }
- //echo "function_data = |$this->_pv_function_data|\n";
-
- if ($this->checkEventPop($word, $pevent)) {
- $this->_pv_paren_count--;
- $this->_wp->setWhiteSpace(false);
- }
- }
-
- /**
- * handler for HEREDOC in a function logic block.
- *
- * this handler recognizes function declarations, and parses them. The body
- * of the function is parsed by handleLogicBlock()
- *
- * @see handleLogicBlock()
- */
- function handleHereDoc($word, $pevent)
- {
- if (is_array($this->_pv_last_word) &&
- $this->_pv_last_word[0] == T_START_HEREDOC
- ) {
- $save = $word;
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_quote_data = $this->_pv_last_word[1] . $word;
- $this->_pf_quote_active = true;
- } elseif (!$this->_pf_quote_active) {
- $this->_pv_quote_data = $this->_pv_last_word[1];
- $this->_event_stack->popEvent();
- $this->_wp->backupPos();
- return;
- }
- $save = $word;
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_quote_data .= $word;
- if ($this->checkEventPop($save, $pevent)) {
- $this->_pf_quote_active = false;
- }
- }
-
- /**
- * handler for QUOTE.
- *
- * this handler recognizes strings defined with double quotation marks (")
- * and single quotation marks and handles them correctly
- * in any place that they legally appear in php code
- */
- function handleQuote($word, $pevent)
- {
- if ($this->_pv_last_word == '"' || $this->_pv_last_word == "'" &&
- $this->_last_pevent != PARSER_EVENT_QUOTE
- ) {
- $save = $word;
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_quote_data = $this->_pv_last_word . $word;
- $this->_pf_quote_active = true;
- $this->checkEventPop($save, $pevent);
- } elseif (!$this->_pf_quote_active) {
- $this->_pv_quote_data = $this->_pv_last_word[1];
- $this->_event_stack->popEvent();
- $this->_wp->backupPos();
- return;
- }
- $save = $word;
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_quote_data .= $word;
- if ($this->checkEventPop($save, $pevent)) {
- $this->_pf_quote_active = false;
- }
- }
-
- /**
- * handler for INCLUDE.
- *
- * this handler recognizes include/require/include_once/include_once statements,
- * and publishes the data to Render
- */
- function handleInclude($word, $pevent)
- {
- if (!$this->_pf_in_include) {
- $this->_pv_linenum = $this->_wp->linenum;
- }
- $this->_pf_in_include = true;
-
- $a = $this->checkEventPush($word, $pevent);
- if (!$this->_pf_includename_isset) {
- $this->_pf_includename_isset = true;
-
- $w = $this->_pv_last_word;
- if (is_array($w)) {
- $w = $w[1];
- }
- $this->_pv_include_name = $w;
- if ($a) {
- $this->_pv_include_value = '';
- } else {
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_include_value = $word;
- }
- unset($this->_pv_quote_data);
- } else {
- if (!$a) {
- if (empty($this->_pv_include_params_data)) {
- if ($word != ';') {
- if (is_array($word)) $word = $word[1];
- $this->_pv_include_value .= $word;
- }
- }
- } else {
- if ($this->_pf_in_include_value && $a == PARSER_EVENT_INCLUDE_PARAMS
- ) {
- /* we're already inside the include value,
- * so an open paren does NOT mean the beginning
- * of "include parameters"...
- * it's just a part of the include's value string...
- * but we've already pushed PARSER_EVENT_INCLUDE_PARAMS
- * onto the stack...
- * we need to pop it off
- * before handleIncludeParams gets called...
- */
- $this->_event_stack->popEvent();
- // also need to keep that open parens...
- $this->_pv_include_value .= $word;
- }
- $this->_pv_include_params_data = '';
- }
- }
-
- if (!empty($this->_pv_include_value)) {
- $this->_pf_in_include_value = true;
- }
-
- if ($this->checkEventPop($word, $pevent)) {
- $this->_pv_include = new parserInclude;
- $this->_pv_include->setLineNumber($this->_pv_linenum + 1);
- $this->_pf_in_include = false;
- $this->_pv_include->setName($this->_pv_include_name);
- $this->_pv_include->setValue($this->_pv_include_value);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_INCLUDE, $this->_pv_include);
- $this->_pf_includename_isset = false;
- $this->_pf_in_include_value = false;
- unset($this->_pv_include);
- unset($this->_pv_include_name);
- unset($this->_pv_include_value);
- unset($this->_pv_include_params_data);
- } elseif ($this->_last_pevent == PARSER_EVENT_INCLUDE_PARAMS) {
- // include is part of a larger statement
- // force ending of include
- $this->_event_stack->popEvent();
- $this->_pv_include = new parserInclude;
- $this->_pv_include->setLineNumber($this->_pv_linenum + 1);
- $this->_pf_in_include = false;
- $this->_pv_include->setName($this->_pv_include_name);
- $this->_pv_include->setValue($this->_pv_include_value);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_INCLUDE, $this->_pv_include);
- $this->_pf_includename_isset = false;
- $this->_pf_in_include_value = false;
- unset($this->_pv_include);
- unset($this->_pv_include_name);
- unset($this->_pv_include_value);
- unset($this->_pv_include_params_data);
- }
- }
-
- /**
- * handler for INCLUDE_PARAMS.
- *
- * this handler parses the contents of ( )
- * in include/require/include_once/include_once statements
- */
- function handleIncludeParams($word, $pevent)
- {
- $e = $this->checkEventPush($word, $pevent);
- if ($e == PARSER_EVENT_COMMENT) {
- return;
- }
-
- if (!isset($this->_pv_include_params_data)) {
- $this->_pv_include_params_data = '';
- }
-
- if ($this->checkEventPop($word, $pevent)) {
- if (!empty($this->_pv_include_params_data)) {
- $this->_pv_include_value = $this->_pv_include_params_data;
- } else {
- $w = $this->_pv_last_word;
- if (is_array($w)) {
- $w = $w[1];
- }
- $this->_pv_include_value = $w;
- }
- }
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_include_params_data .= $word;
- }
-
- /**
- * handler for INCLUDE_PARAMS_PARENTHESIS.
- *
- * this handler takes all parenthetical statements within file in:
- * include statement include(file), and handles them properly
- */
- function handleIncludeParamsParenthesis($word, $pevent)
- {
- $this->checkEventPush($word, $pevent);
- $this->checkEventPop($word, $pevent);
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_include_params_data .= $word;
- }
-
- /**
- * handler for DEFINE.
- *
- * handles define(constant, value); statements
- */
- function handleDefine($word, $pevent)
- {
- if (!$this->_pf_in_define) {
- $this->_pv_linenum = $this->_wp->linenum + 1;
- }
- $this->_pf_in_define = true;
- $this->checkEventPush($word, $pevent);
-
- $this->_pf_definename_isset = false;
- $this->_pv_define_params_data = '';
- unset($this->_pv_quote_data);
- if ($this->checkEventPop($word, $pevent)) {
- $this->_pf_in_define = false;
- $this->_pv_define = new parserDefine;
- $this->_pv_define->setLineNumber($this->_pv_linenum);
- $this->_pv_define->setName($this->_pv_define_name);
- $this->_pv_define->setValue($this->_pv_define_value);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DEFINE, $this->_pv_define);
- $this->_pf_definename_isset = false;
- unset($this->_pv_define);
- unset($this->_pv_define_name);
- unset($this->_pv_define_value);
- $this->_pf_in_define = false;
- $this->_pv_define_params_data = '';
- }
- }
-
- /**
- * handler for DEFINE_PARAMS.
- *
- * handles the parsing of constant and value in define(constant, value);
- */
- function handleDefineParams($word, $pevent)
- {
- $e = $this->checkEventPush($word, $pevent);
- if ($e && $e != PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS) {
- return;
- }
-
- if (!isset($this->_pv_define_params_data)) {
- $this->_pv_define_params_data = '';
- }
-
- if ($this->checkEventPop($word, $pevent)) {
- if ($this->_last_pevent == PARSER_EVENT_QUOTE ||
- $this->_last_pevent == PARSER_EVENT_EOFQUOTE
- ) {
- $this->_pv_define_params_data .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if (is_array($word)) {
- $word = $word[1];
- }
- if (!empty($this->_pv_define_params_data)) {
- //echo $this->_pv_define_params_data."\n";
- $this->_pv_define_value = $this->_pv_define_params_data;
- } else {
- $w = $this->_pv_last_word;
- if (is_array($this->_pv_last_word)) {
- $w = $this->_pv_last_word[1];
- }
- if (!empty($w)) {
- $this->_pv_define_value = $w;
- } else {
- $this->_pv_define_value = "";
- switch ($w) {
- case 0:
- $this->_pv_define_value = "0";
- break;
- case null:
- $this->_pv_define_value = "null";
- break;
- case "":
- $this->_pv_define_value = "";
- break;
- }
- }
- }
- }
- if ($this->_pf_definename_isset) {
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_define_params_data .= $word;
- } else {
- if ($word != ",") {
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_define_params_data .= $word;
- } else {
- if (substr($this->_pv_define_params_data, 0, 1) ==
- substr($this->_pv_define_params_data,
- strlen($this->_pv_define_params_data) - 1) &&
- in_array(substr($this->_pv_define_params_data,
- 0, 1), array('"', "'"))
- ) {
- // remove leading and ending quotation marks
- // if there are only two
- $a = substr($this->_pv_define_params_data, 0, 1);
- $b = substr($this->_pv_define_params_data, 1,
- strlen($this->_pv_define_params_data) - 2);
- if (strpos($b, $a) === false) {
- $this->_pv_define_params_data = $b;
- }
- }
- $this->_pf_definename_isset = true;
- $this->_pv_define_name = $this->_pv_define_params_data;
- $this->_pv_define_params_data = '';
- }
- }
- }
-
- /**
- * handler for DEFINE_PARAMS_PARENTHESIS.
- *
- * this handler takes all parenthetical statements within constant or value in:
- * define(constant, value) of a define statement, and handles them properly
- */
- function handleDefineParamsParenthesis($word, $pevent)
- {
- $e = $this->checkEventPush($word, $pevent);
- $this->checkEventPop($word, $pevent);
- if ($this->_last_pevent == PARSER_EVENT_QUOTE) {
- $this->_pv_define_params_data .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_define_params_data .= $word;
- }
-
- /**
- * handler for IMPLEMENTS.
- *
- * this handler parses a class statement's implements clause (PHP 5)
- */
- function handleImplements($word, $pevent)
- {
- if ($this->checkEventPop($word, $pevent)) {
- $this->_wp->backupPos();
- return;
- }
- if (is_array($word) && $word[0] == T_STRING) {
- $this->_pv_class->addImplements($word[1]);
- }
- }
-
- /**
- * handler for ACCESS_MODIFIER.
- *
- * this handler parses public/private/protected/static/abstract PHP 5 modifiers
- */
- function handleAccessModifier($word, $pevent)
- {
- if (!isset($this->_accessModifiers)) {
- $this->_accessModifiers = array();
- }
- $this->_wp->backupPos();
- $this->_event_stack->popEvent();
- if ($word[0] == T_VARIABLE) {
- // this is a PHP5-style variable with no "var"
- $this->_event_stack->pushEvent(PARSER_EVENT_VAR);
- }
- $this->_accessModifiers[] = strtolower($this->_pv_last_word[1]);
- }
-
- /**
- * handler for CLASS.
- *
- * this handler parses a class/interface statement
- */
- function handleClass($word, $pevent)
- {
- if (!$this->_pf_in_class) {
- $this->_pf_in_class = true;
- if ($this->_pv_last_word[0] == T_INTERFACE) {
- $this->_pf_interface = true;
- } else {
- $this->_pf_interface = false;
- }
- }
- $a = $this->checkEventPush($word, $pevent);
-
- if (!isset($this->_pv_class)) {
- $this->_pv_class = false;
- }
- if (!is_subclass_of($this->_pv_class, "parserBase")) {
- $this->_pv_class = new parserClass;
- if (isset($this->_accessModifiers)) {
- $this->_pv_class->setModifiers($this->_accessModifiers);
- unset($this->_accessModifiers);
- }
- if ($this->_pf_interface) {
- $this->_pv_class->setInterface();
- }
- $this->_pv_class->setLineNumber($this->_wp->linenum + 1);
- $this->_pv_class->setname($word[1]);
- $this->_pv_cur_class = $word[1];
- $this->_pv_class->setSourceLocation($this->source_location);
- }
-
- if (is_array($this->_pv_last_word) && $this->_pv_last_word[0] == T_EXTENDS
- ) {
- // I don't know why I am so nice, this fixes 1150809
- if ($word[1] == $this->_pv_class->getName()) {
- addErrorDie(PDERROR_CANNOT_EXTEND_SELF, $word[1]);
- }
- $this->_pv_class->setExtends($word[1]);
- }
-
- if ($word == "{") {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_CLASS, $this->_pv_class);
- }
- //echo $this->wp->getPos() . ": |$word|\n";
- if ($this->checkEventPop($word, $pevent)) {
- $this->_pv_class->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pf_in_class = $this->_pf_interface = false;
- // throw an event when class is done
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE, STATE_END_CLASS);
- $this->_pv_class = false;
- }
- }
-
- /**
- * handler for VAR_ARRAY_COMMENT
- *
- * if parsing a default value, add the comment to the text
- */
- function handleVarArrayComment($word, $pevent)
- {
- $this->_pv_function_data .= $this->_pv_last_word[1];
- return $this->handleComment($word, $pevent);
- }
-
- /**
- * handler for VAR.
- *
- * handle a var $varname = default_value;
- * or var $varname; statement
- * in a class definition
- */
- function handleVar($word, $pevent)
- {
- if (!$this->_pf_in_var) {
- $this->_pf_set_var_value = false;
- $this->_pv_var_value = '';
- $this->_pv_linenum = $this->_wp->linenum + 1;
- }
- $this->_pf_in_var = true;
- //echo $word."\n";
- $e = $this->checkEventPush($word, $pevent);
-
- if (!isset($this->_pv_var)) {
- $this->_pv_var = false;
- }
- if ($word == '=' || $word == ';' || $word == ',') {
- $this->_wp->setWhitespace(true);
- $this->_pf_var_equals = true;
- $this->_pv_var = new parserVar($this->_pv_cur_class);
- $this->_pv_var->setName($this->_pv_varname);
- }
- if ($this->_last_pevent == PARSER_EVENT_VAR_ARRAY) {
- if (isset($this->_pv_function_data)) {
- $this->_pv_var->setValue($this->_pv_function_data);
- }
- $this->_pf_set_var_value = true;
- unset($this->_pv_function_data);
- } elseif ($this->_pf_var_equals && $word != ';' &&
- $word != '=' && $word != ',' && !$e
- ) {
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_var_value .= $word;
- }
- if ($word == ',') {
- if (!$this->_pf_set_var_value) {
- $this->_pv_var->setValue($this->_pv_var_value);
- }
- $this->_pf_set_var_value = false;
- unset($this->_pv_var_value);
- $this->_pv_var->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_var->setLineNumber($this->_pv_linenum);
- if (isset($this->_accessModifiers)) {
- $this->_pv_var->setModifiers($this->_accessModifiers);
- }
- $this->publishEvent(PHPDOCUMENTOR_EVENT_VAR, $this->_pv_var);
- unset($this->_pv_var);
- $this->_pf_in_var = false;
- $this->_pf_var_equals = false;
- $this->_pv_varname = '';
- return;
- }
- if ($this->checkEventPop($word, $pevent)) {
- $this->_wp->setWhitespace(false);
- if (!$this->_pf_set_var_value) {
- $this->_pv_var->setValue($this->_pv_var_value);
- }
- $this->_pf_set_var_value = false;
- unset($this->_pv_var_value);
- $this->_pv_var->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_var->setLineNumber($this->_pv_linenum);
- if (isset($this->_accessModifiers)) {
- $this->_pv_var->setModifiers($this->_accessModifiers);
- unset($this->_accessModifiers);
- }
- $this->publishEvent(PHPDOCUMENTOR_EVENT_VAR, $this->_pv_var);
- unset($this->_pv_var);
- $this->_pf_in_var = false;
- $this->_pf_var_equals = false;
- $this->_pv_varname = '';
- return;
- }
- if ($word[0] == T_VARIABLE) {
- $this->_pv_varname = $word[1];
- }
- }
-
- /**
- * handler for CLASS_CONSTANT.
- *
- * handle a const constname = default_value; statement in a class definition
- */
- function handleClassConstant($word, $pevent)
- {
- if (!$this->_pf_in_const) {
- $this->_pf_set_const_value = false;
- $this->_pv_const_value = '';
- $this->_pv_linenum = $this->_wp->linenum + 1;
- }
- $this->_pf_in_const = true;
- //echo $word."\n";
- $e = $this->checkEventPush($word, $pevent);
-
- if (!isset($this->_pv_const)) {
- $this->_pv_const = false;
- }
- if ($word == '=' || $word == ';' || $word == ',') {
- $this->_wp->setWhitespace(true);
- $this->_pf_const_equals = true;
- $this->_pv_const = new parserConst($this->_pv_cur_class);
- $this->_pv_const->setName($this->_pv_constname);
- }
- if ($this->_last_pevent == PARSER_EVENT_VAR_ARRAY) {
- if (isset($this->_pv_function_data)) {
- $this->_pv_const->setValue($this->_pv_function_data);
- }
- $this->_pf_set_const_value = true;
- unset($this->_pv_function_data);
- } elseif ($this->_pf_const_equals && $word != ';' &&
- $word != '=' && $word != ',' && !$e
- ) {
- if (is_array($word)) {
- $word = $word[1];
- }
- $this->_pv_const_value .= $word;
- }
- if ($word == ',') {
- if (!$this->_pf_set_const_value) {
- $this->_pv_const->setValue($this->_pv_const_value);
- }
- $this->_pf_set_const_value = false;
- unset($this->_pv_const_value);
- $this->_pv_const->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_const->setLineNumber($this->_pv_linenum);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_CONST, $this->_pv_const);
- unset($this->_pv_const);
- $this->_pf_in_const = false;
- $this->_pf_const_equals = false;
- $this->_pv_constname = '';
- return;
- }
- if ($this->checkEventPop($word, $pevent)) {
- $this->_wp->setWhitespace(false);
- if (!$this->_pf_set_const_value) {
- $this->_pv_const->setValue($this->_pv_const_value);
- }
- $this->_pf_set_const_value = false;
- unset($this->_pv_const_value);
- $this->_pv_const->setEndLineNumber($this->_wp->linenum + 1);
- $this->_pv_const->setLineNumber($this->_pv_linenum);
- $this->publishEvent(PHPDOCUMENTOR_EVENT_VAR, $this->_pv_const);
- unset($this->_pv_const);
- $this->_pf_in_const = false;
- $this->_pf_const_equals = false;
- $this->_pv_constname = '';
- return;
- }
- if ($word[0] == T_STRING && !$this->_pf_const_equals) {
- $this->_pv_constname = $word[1];
- }
- }
-
- /**
- * Handler for the
- * {@tutorial phpDocumentor.howto.pkg#using.command-line.javadocdesc}
- * command-line switch DocBlocks.
- *
- * @todo CS cleanup - rename to javaDoc* for camelCasing rule
- */
- function JavaDochandleDocblock($word, $pevent)
- {
- $this->commonDocBlock($word, $pevent, 'handleJavaDocDesc');
- }
-
- /**
- * Handler for normal DocBlocks
- */
- function handleDocBlock($word, $pevent)
- {
- $this->commonDocBlock($word, $pevent, 'handleDesc');
- }
- /**#@-*/
-
- /**
- * Helper function for {@link handleFunctionParams()}
- *
- * This function adds a new parameter to the parameter list
- *
- * @param string $word the parameter word
- *
- * @return void
- * @access private
- */
- function endFunctionParam($word)
- {
- if (isset($this->_pv_quote_data)) {
- $this->_pv_function_data .= $this->_pv_quote_data;
- unset($this->_pv_quote_data);
- }
- if (isset($this->_pv_function_param)) {
- $this->_pv_func->addParam($this->_pv_function_param,
- $this->_pv_function_data,
- $this->_pf_funcparam_val,
- $this->_pv_function_param_type);
- unset($this->_pv_function_param);
- $this->_pv_function_data = '';
- $this->_pf_funcparam_val = false;
- $this->_pv_function_param_type = null;
- }
- }
-
- /**
- * Common DocBlock Handler for both JavaDoc-format and normal DocBlocks
- *
- * @param string $word the word
- * @param int $pevent the parser event
- * @param string $deschandler the handler to use
- *
- * @return void
- * @access private
- */
- function commonDocBlock($word, $pevent, $deschandler)
- {
- $this->_wp->backupPos();
- $this->_event_stack->popEvent();
- $word = $this->_pv_last_word[1];
- $dtype = '_pv_docblock';
- if (strpos($word, '/**') !== 0) {
- // not a docblock
- // $this->_wp->backupPos();
- $this->_event_stack->pushEvent(PARSER_EVENT_COMMENT);
- return;
- }
- if ($word == '/**#@-*/') {
- // stop using docblock template
- $this->publishEvent(PHPDOCUMENTOR_EVENT_NEWSTATE,
- PHPDOCUMENTOR_EVENT_END_DOCBLOCK_TEMPLATE);
- unset($this->_pv_dtemplate);
- return;
- }
- if (strpos($word, '/**#@+') === 0) {
- // docblock template definition
- $dtype = '_pv_dtemplate';
- // strip /**#@+ and */
- $word = substr($word, 6).'*';
- $word = trim(substr($word, 0, strlen($word) - 3));
- if (strlen($word) && $word{0} != '*') {
- $word = "* $word";
- }
- } else {
- // strip /** and */
- $word = substr($word, 2);
- $word = substr($word, 0, strlen($word) - 2);
- }
- $lines = explode("\n", trim($word));
- $go = count($lines);
- for ($i=0; $i < $go; $i++) {
- if (substr(trim($lines[$i]), 0, 1) != '*') {
- unset($lines[$i]);
- } else {
- // remove leading "* "
- $lines[$i] = substr(trim($lines[$i]), 1);
- }
- }
- // remove empty lines
- if ($lines == array(false)) {
- // prevent PHP 5.2 segfault (see http://bugs.php.net/bug.php?id=39350)
- $lines = array('');
- }
- $lines = explode("\n", trim(join("\n", $lines)));
- for ($i = 0; $i < count($lines); $i++) {
- if (substr(trim($lines[$i]), 0, 1) == '@' &&
- substr(trim($lines[$i]), 0, 2) != '@ '
- ) {
- $tagindex = $i;
- $i = count($lines);
- }
- }
- if (isset($tagindex)) {
- $tags = array_slice($lines, $tagindex);
- $desc = array_slice($lines, 0, $tagindex);
- } else {
- $tags = array();
- $desc = $lines;
- }
- //var_dump($desc,$tags);
- $this->$dtype = new parserDocBlock;
- $this->$dtype->setLineNumber($this->_wp->_docblock_linenum + 1);
- $this->$dtype->setEndLineNumber($this->_wp->linenum);
- $this->_pv_dtype = $dtype;
- $this->$deschandler($desc);
- $this->handleTags($tags);
- if ($dtype == '_pv_docblock') {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DOCBLOCK, $this->$dtype);
- $this->$dtype = new parserDocBlock();
- } else {
- $this->publishEvent(PHPDOCUMENTOR_EVENT_DOCBLOCK_TEMPLATE,
- $this->$dtype);
- }
- }
-
- /**
- * Handles JavaDoc descriptions
- *
- * @param string $desc the description
- *
- * @return void
- * @access private
- */
- function handleJavaDocDesc($desc)
- {
- unset($this->_pv_periodline);
- $this->_pf_useperiod = false;
- if (empty($desc)) {
- $desc = array('');
- }
- foreach ($desc as $i => $line) {
- $line = trim($line);
- if (!isset($this->_pv_periodline) &&
- substr($line, strlen($line) - 1) == '.'
- ) {
- $this->_pv_periodline = $i;
- $this->_pf_useperiod = true;
- }
- }
- if (!isset($this->_pv_periodline)) {
- $this->_pv_periodline = 0;
- }
-
- $dtype = $this->_pv_dtype;
- if ($dtype == '_pv_docblock') {
- $save = $desc;
- // strip leading <p>
- if (strpos($desc[0], '<p>') === 0) {
- $desc[0] = substr($desc[0], 3);
- }
- $sdesc = new parserDesc;
- $desci = '';
- for ($i = 0; ($i <= $this->_pv_periodline) && ($i < count($desc)); $i++
- ) {
- if (strpos($desc[$i], '.') !== false) {
- $desci .= substr($desc[$i], 0, strpos($desc[$i], '.') + 1);
- } else {
- $desci .= $desc[$i];
- }
- $desci .= "\n";
- }
- $sdesc->add($this->getInlineTags($desci));
- $desc = $save;
-
- $my_desc = new parserDesc;
- if (isset($this->_pv_dtemplate)) {
- // copy template values if not overridden
- if (!$this->_pv_docblock->getExplicitPackage()) {
- if ($p = $this->_pv_dtemplate->getKeyword('package')) {
- $this->_pv_docblock->addKeyword('package', $p);
- $this->_pv_docblock->setExplicitPackage();
- }
- if ($p = $this->_pv_dtemplate->getKeyword('category')) {
- $this->_pv_docblock->addKeyword('category', $p);
- $this->_pv_docblock->setExplicitCategory();
- }
- if ($p = $this->_pv_dtemplate->getKeyword('subpackage')) {
- $this->_pv_docblock->addKeyword('subpackage', $p);
- }
- }
- $tags = $this->_pv_dtemplate->listTags();
- foreach ($tags as $tag) {
- $this->_pv_docblock->addTag($tag);
- }
- if (!count($this->_pv_docblock->params)) {
- $this->_pv_docblock->params = $this->_pv_dtemplate->params;
- }
- $my_desc->add($this->_pv_dtemplate->desc);
- }
- //echo "i = ".$this->_pv_periodline."; i < " . count($desc) . "\n";
- $desci = '';
- for ($i = 0; $i < count($desc); $i++) {
- // the line will not be set if it doesn't start with a *
- if (isset($desc[$i])) {
- $desci .= $desc[$i] . "\n";
- }
- }
- $my_desc->add($this->getInlineTags($desci));
- } else {
- $sdesc = new parserDesc;
- $save = $desc;
- // strip leading <p>
- if (strpos($desc[0], '<p>') === 0) {
- $desc[0] = substr($desc[0], 3);
- }
- $desci = '';
- for ($i = 0; ($i <= $this->_pv_periodline) && ($i < count($desc)); $i++
- ) {
- if (strpos($desc[$i], '.') !== false) {
- $desci .= substr($desc[$i], 0, strpos($desc[$i], '.') + 1);
- } else {
- $desci .= $desc[$i];
- }
- $desci .= "\n";
- }
- $sdesc->add($this->getInlineTags($desci));
- $desc = $save;
-
- $my_desc = new parserDesc;
- $desci = '';
- for ($i=0; $i < count($desc); $i++) {
- if (isset($desc[$i])) {
- $desci .= $desci[$i] . "\n";
- }
- }
- $my_desc->add($this->getInlineTags($desci));
- }
-
- if ($this->_pf_internal) {
- addError(PDERROR_INTERNAL_NOT_CLOSED);
- $this->_pf_internal = false;
- }
- $this->$dtype->setShortDesc($sdesc);
- $this->$dtype->setDesc($my_desc);
- unset($my_desc);
- //var_dump($this->$dtype);
- //exit;
- }
-
- /**
- * Process the Long Description of a DocBlock
- *
- * @param array $desc array of lines containing the description
- * with leading asterisk "*" stripped off.
- *
- * @return void
- * @access private
- */
- function handleDesc($desc)
- {
- unset($this->_pv_periodline);
- $this->_pf_useperiod = false;
- foreach ($desc as $i => $line) {
- $line = trim($line);
- if (!isset($this->_pv_periodline) &&
- substr($line, strlen($line) - 1) == '.'
- ) {
- $this->_pv_periodline = $i;
- $this->_pf_useperiod = true;
- }
- }
- if (!isset($this->_pv_periodline)) {
- $this->_pv_periodline = 0;
- }
- if ($this->_pv_periodline > 3) {
- $this->_pf_useperiod = false;
- } else {
- for ($i = 0; $i < $this->_pv_periodline; $i++) {
- if (strlen($desc[$i]) == 0 && isset($desc[$i - 1]) &&
- strlen($desc[$i - 1])
- ) {
- $this->_pv_periodline = $i;
- }
- }
- }
- for ($i=0;$i <= $this->_pv_periodline && $i < count($desc);$i++) {
- if (!strlen(trim($desc[$i]))) {
- $this->_pf_useperiod = false;
- }
- }
- // figure out the shortdesc
- if ($this->_pf_useperiod === false) {
- // use the first non blank line for short desc
- for ($i = 0; $i < count($desc); $i++) {
- if (strlen($desc[$i]) > 0) {
- $this->_pv_periodline = $i;
- $i = count($desc);
- }
- }
-
- // check to see if we are going to use a blank line to end the shortdesc
- // this can only be in the first 4 lines
- if (count($desc) > 4) {
- $max = 4;
- } else {
- $max = count($desc);
- }
-
- for ($i = $this->_pv_periodline; $i < $max; $i++) {
- if (strlen(trim($desc[$i])) == 0) {
- $this->_pv_periodline = $i;
- $i = $max;
- }
- }
- }
-
- $dtype = $this->_pv_dtype;
- if ($dtype == '_pv_docblock') {
- $sdesc = new parserDesc;
- $desci = '';
- for ($i = 0; ($i <= $this->_pv_periodline) && ($i < count($desc)); $i++
- ) {
- $desci .= $desc[$i] . "\n";
- }
- $sdesc->add($this->getInlineTags($desci));
- $this->_pv_periodline++;
-
- $my_desc = new parserDesc;
- if (isset($this->_pv_dtemplate)) {
- // copy template values if not overridden
- if (!$this->_pv_docblock->getExplicitPackage()) {
- if ($p = $this->_pv_dtemplate->getKeyword('package')) {
- $this->_pv_docblock->addKeyword('package', $p);
- $this->_pv_docblock->setExplicitPackage();
- }
- if ($p = $this->_pv_dtemplate->getKeyword('category')) {
- $this->_pv_docblock->addKeyword('category', $p);
- $this->_pv_docblock->setExplicitCategory();
- }
- if ($p = $this->_pv_dtemplate->getKeyword('subpackage')) {
- $this->_pv_docblock->addKeyword('subpackage', $p);
- }
- }
- $tags = $this->_pv_dtemplate->listTags();
- foreach ($tags as $tag) {
- $this->_pv_docblock->addTag($tag);
- }
- if (!count($this->_pv_docblock->params)) {
- $this->_pv_docblock->params = $this->_pv_dtemplate->params;
- }
- if (!$this->_pv_docblock->return) {
- $this->_pv_docblock->return = $this->_pv_dtemplate->return;
- }
- if (!$this->_pv_docblock->var) {
- $this->_pv_docblock->var = $this->_pv_dtemplate->var;
- }
- $my_desc->add($this->_pv_dtemplate->sdesc);
- $my_desc->add($this->_pv_dtemplate->desc);
- }
- //echo "i = ".$this->_pv_periodline."; i < " . count($desc) . "\n";
- $desci = '';
- for ($i = $this->_pv_periodline; $i < count($desc); $i++) {
- // the line will not be set if it doesn't start with a *
- if (isset($desc[$i])) {
- $desci .= $desc[$i] . "\n";
- }
- }
- $my_desc->add($this->getInlineTags($desci));
- } else {
- // this is a docblock template
- $sdesc = new parserDesc;
- $desci = '';
- for ($i = 0; ($i <= $this->_pv_periodline) && ($i < count($desc)); $i++
- ) {
- if (isset($desc[$i])) {
- $desci .= $desc[$i] . "\n";
- }
- }
- $sdesc->add($this->getInlineTags($desci));
- $this->_pv_periodline++;
-
- $my_desc = new parserDesc;
- $desci = '';
- for ($i=$this->_pv_periodline; $i < count($desc); $i++) {
- if (isset($desc[$i])) {
- $desci .= $desc[$i] . "\n";
- }
- }
- $my_desc->add($this->getInlineTags($desci));
- }
- if ($this->_pf_internal) {
- addError(PDERROR_INTERNAL_NOT_CLOSED);
- $this->_pf_internal = false;
- }
- $this->$dtype->setShortDesc($sdesc);
- $this->$dtype->setDesc($my_desc);
- unset($my_desc);
- //var_dump($this->$dtype);
- //exit;
- }
-
- /**
- * Process the tags of a DocBlock
- *
- * @param array $tags array of lines that contain all @tags
- *
- * @return void
- * @access private
- */
- function handleTags($tags)
- {
- $newtags = array();
- $curtag = '';
- for ($i=0; $i < count($tags); $i++) {
- if (strpos(trim($tags[$i]), '@') === 0) {
- $tags[$i] = ltrim($tags[$i]);
- }
- if (substr($tags[$i], 0, 1) == '@' && substr($tags[$i], 0, 2) != '@ '
- ) {
- // start a new tag
- if (!empty($curtag)) {
- $newtags[] = $curtag;
- }
- $curtag = $tags[$i];
- } else {
- $curtag .= "\n" . $tags[$i];
- }
- }
- if (!empty($curtag)) {
- $newtags[] = $curtag;
- }
- foreach ($newtags as $tag) {
- $x = explode(' ', str_replace("\t", ' ', $tag));
- $tagname = trim(substr(array_shift($x), 1));
- $restoftag = $x;
- if (isset($this->tagHandlers[$tagname])) {
- $handle = $this->tagHandlers[$tagname];
- } else {
- $handle = $this->tagHandlers['*'];
- }
- $this->$handle($tagname, $restoftag);
- }
- }
-
- /**
- * Process all inline tags in text, and convert them to their abstract
- * object representations.
- *
- * @param string|array $value complete code to search for inline tags,
- * if an array, it's an array of strings
- *
- * @return parserStringWithInlineTags
- * @access private
- */
- function getInlineTags($value)
- {
- if (is_array($value)) {
- $value = join("\n", $value);
- }
- global $_phpDocumentor_setting;
- $priv = (isset($_phpDocumentor_setting['parseprivate']) &&
- $_phpDocumentor_setting['parseprivate'] == 'on');
- $a = new parserStringWithInlineTags();
- if (!$priv && $this->_pf_internal) {
- if ($x = strpos($value, '}}')) {
- $x = strrpos($value, '}}');
- $value = substr($value, $x + 1);
- $this->_pf_internal = false;
- } else {
- $value = '';
- }
- } elseif ($this->_pf_internal) {
- if ($x = strpos($value, '}}')) {
- $x = strrpos($value, '}}');
- $value = substr($value, 0, $x) . substr($value, $x+2);
- }
- }
- $save = $value;
- $value = explode('{@', $value);
- $newval = array();
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $a->add($value[0]);
- }
- for ($i=1; $i < count($value); $i++) {
- if (substr($value[$i], 0, 1) == '}') {
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $a->add('{@' . substr($value[$i], 1));
- }
- } elseif (substr($value[$i], 0, 2) == '*}') {
- // used for inserting */ in code examples
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $a->add('*/' . substr($value[$i], 2));
- }
- } else {
- $save = $value[$i];
- $value[$i] = preg_split("/[\t ]/", str_replace("\t", ' ', $value[$i]));
- $word = trim(array_shift($value[$i]));
- $val = join(' ', $value[$i]);
- if (trim($word) == 'internal') {
- if ($this->_pf_internal) {
- addErrorDie(PDERROR_NESTED_INTERNAL);
- }
- $this->_pf_internal = true;
- $value[$i] = substr($save, strlen('internal') + 1);
- if (!$value[$i]) {
- // substr can set this to false
- $value[$i] = '';
- }
- if (strpos($value[$i], '}}') !== false) {
- $x = strrpos($value[$i], '}}');
- // strip internal and cycle as if it were normal text.
- $startval = substr($value[$i], 0, $x);
- if ($priv) {
- $a->add($startval);
- }
- $value[$i] = substr($value[$i], $x + 2);
- if (!$value[$i]) {
- $value[$i] = '';
- }
- $this->_pf_internal = false;
- $a->add($value[$i]);
- continue;
- } elseif ($priv) {
- $a->add($value[$i]);
- }
- continue;
- }
- if (in_array(str_replace('}', '', trim($word)),
- $this->allowableInlineTags)
- ) {
- if (strpos($word, '}')) {
- $res = substr($word, strpos($word, '}'));
- $word = str_replace('}', '', trim($word));
- $val = $res . $val;
- }
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- if ($word == 'source') {
- $this->_pf_get_source = true;
- }
- }
- $val = explode('}', $val);
- if (count($val) == 1) {
- addError(PDERROR_UNTERMINATED_INLINE_TAG,
- $word, '', $save);
- }
- $rest = $val;
- $val = array_shift($rest);
- $rest = join('}', $rest);
- if (isset($this->inlineTagHandlers[$word])) {
- $handle = $this->inlineTagHandlers[$word];
- } else {
- $handle = $this->inlineTagHandlers['*'];
- }
- $val = $this->$handle($word, $val);
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $a->add($val);
- }
- if ($this->_pf_internal) {
- if (($x = strpos($rest, '}}')) !== false) {
- $value[$i] = $rest;
- $startval = substr($value[$i], 0, $x);
- if ((false !== $startval) && $priv) {
- $a->add($startval);
- }
- $value[$i] = substr($value[$i], $x + 2);
- if (!$value[$i]) {
- $value[$i] = '';
- }
- $this->_pf_internal = false;
- $a->add($value[$i]);
- } else {
- $rest = explode('}}', $rest);
- if ($priv) {
- $a->add(array_shift($rest));
- }
- $this->_pf_internal = false;
- // try this line again without internal
- $value[$i--] = join('}}', $rest);
- continue;
- }
- } else {
- $a->add($rest);
- }
- } else {
- $val = $word . ' ' . $val;
- if ($priv || (!$priv && !$this->_pf_internal)) {
- // ignore anything between {@internal and }}
- $a->add('{@' . $val);
- }
- }
- }
- }
- return $a;
- }
-
- /**#@+
- * @param string $name name of the tag
- * @param string $value any parameters passed to the inline tag
- * @access private
- */
- /**
- * Most inline tags require no special processing
- *
- * @return mixed some type of parser_*_InlineTag object
- */
- function handleDefaultInlineTag($name, $value)
- {
- $tag = 'parser' . ucfirst($name) . 'InlineTag';
- return new $tag($value, $value);
- }
-
- /**
- * Handle the inline {@}link} tag
- *
- * @return parserLinkInlineTag
- * @tutorial tags.inlinelink.pkg
- */
- function handleLinkInlineTag($name, $value)
- {
- // support hyperlinks of any protocol
- if (is_numeric(strpos($value, '://')) ||
- (strpos(trim($value), 'mailto:') === 0)
- ) {
- $value = str_replace('\\,', '###commanana####', $value);
- if (strpos($value, ',')) {
- $val = new parserLinkInlineTag($value, $value);
- } elseif (strpos(trim($value), ' ')) {
- // if there is more than 1 parameter,
- // the stuff after the space is the hyperlink text
- $i1 = strpos(trim($value), ' ') + 1;
- $link = substr(trim($value), 0, $i1 - 1);
- $text = substr(trim($value), $i1);
- $val = new parserLinkInlineTag($link, $text);
- } else {
- $val = new parserLinkInlineTag($value, $value);
- }
- } else {
- $value = str_replace('\\,', '###commanana####', $value);
- if (!strpos($value, ',')) {
- $testp = explode('#', $value);
- if (count($testp) - 1) {
- $val = new parserLinkInlineTag($value, $testp[1]);
- } else {
- $val = new parserLinkInlineTag($value, $value);
- }
- } else {
- $val = new parserLinkInlineTag($value, $value);
- }
- }
- return $val;
- }
- /**#@-*/
-
- /**#@+
- * @access private
- * @param string $name name of tag
- * @param array $value all words in the tag that were separated by a space ' '
- * @return void
- */
- /**
- * Most tags only need the value as a string
- *
- * @uses getInlineTags() all tag handlers check their values for inline tags
- * @uses parserDocBlock::addKeyword()
- */
- function defaultTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $this->$dtype->addKeyword($name, $this->getInlineTags(join(' ', $value)));
- }
-
- /**
- * handles the @example tag
- *
- * @tutorial tags.example.pkg
- * @uses parserDocBlock::addExample()
- */
- function exampleTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $this->$dtype->addExample($this->getInlineTags(join(' ', $value)),
- $this->_path);
- }
-
- /**
- * handles the @filesource tag
- *
- * @tutorial tags.filesource.pkg
- * @uses phpDocumentorTWordParser::getFileSource() retrieves the source for
- * use in the @filesource tag
- * @uses parserDocBlock::addFileSource()
- */
- function filesourceTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $this->$dtype->addFileSource($this->_path, $this->_wp->getFileSource());
- }
-
- /**
- * handles the @uses tag
- *
- * @tutorial tags.uses.pkg
- * @uses parserDocBlock::addUses()
- */
- function usesTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $seel = '';
- while ($seel == '' && count($value)) {
- $seel = array_shift($value);
- }
- $this->$dtype->addUses($this->getInlineTags($seel),
- $this->getInlineTags(join(' ', $value)));
- }
-
- /**
- * handles the @author tag
- *
- * @tutorial tags.author.pkg
- * @uses parserDocBlock::addKeyword()
- */
- function authorTagHandler($name, $value)
- {
- $dtype = $this->_pv_dtype;
- $value = join(' ', $value);
- if ((strpos($value, '<') !== false) && (strpos($value, '>') !== false)) {
- $email = substr($value,
- strpos($value, '<') + 1,
- strpos($value, '>') - strpos($value, '<') - 1);
- $value = str_replace('<' . $email . '>',
- '<{@link mailto:' . $email . ' ' . $email . '}>',
- $value);
- }
- $this->$dtype->addKeyword('author', $this->getInlineTags($value));
- }
-
- /**
- * handles the @package tag
- *
- * @tutorial tags.package.pkg
- * @uses parserDocBlock::setExplicitPackage()
- */
- function packageTagHandler($name, $value)
- {
- if (count($value) && empty($value[0])) {
- $found = false;
- // CRB - I believe this loop is correct in not having a body...
- // I think it is only to determine the $i value needed
- // by the one array_splice() call...
- for ($i=0; $i < count($value) && !strlen($value[$i]); $i++);
- array_splice($value, 0, $i);
- }
- $this->defaultTagHandler($name, $value);
- $dtype = $this->_pv_dtype;
- $this->$dtype->setExplicitPackage();
- }
-
- /**
- * handles the @category tag
- *
- * @tutorial tags.category.pkg
- * @uses parserDocBlock::setExplicitCategory()
- */
- function categoryTagHandler($name, $value)
- {
- if (count($value) && empty($value[0])) {
- $found = false;
- // CRB - I believe this loop is correct in not having a body...
- // I think it is only to determine the $i value needed
- // by the one array_splice() call...
- for ($i=0; $i < count($value) && !strlen($value[$i]); $i++);
- array_splice($value, 0, $i);
- }
- $this->defaultTagHandler($name, $value);
- $dtype = $this->_pv_dtype;
- $this->$dtype->setExplicitCategory();
- }
-
- /**
- * handles the @global tag
- *
- * @tutorial tags.global.pkg
- * @uses parserDocBlock::addFuncGlobal()
- */
- function globalTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(PDERROR_MALFORMED_TAG, '@global');
- }
- $type = $info['type'];
- $var = $info['var'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- if (!$var && empty($desc)) {
- if ($type{0} == '$') {
- addError(PDERROR_MALFORMED_GLOBAL_TAG);
- }
- return $this->$dtype->addFuncGlobal($type,
- new parserStringWithInlineTags);
- }
- if ($var) {
- // global define
- $this->_pv_global_type = $type;
- if (!empty($desc)) {
- $var .= ' '.$desc;
- }
- $this->findGlobal(trim($var));
- } elseif (!empty($desc)) {
- // function global
- if ($type{0} == '$') {
- addError(PDERROR_MALFORMED_GLOBAL_TAG);
- }
- $this->$dtype->addFuncGlobal($type, $this->getInlineTags($desc));
- } else {
- addError(PDERROR_MALFORMED_GLOBAL_TAG);
- }
- }
-
- /**
- * handles the @staticvar tag
- *
- * @tutorial tags.staticvar.pkg
- * @uses parserDocBlock::addStaticVar()
- */
- function staticvarTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(PDERROR_MALFORMED_TAG, '@staticvar');
- }
- $type = $info['type'];
- $var = $info['var'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- if (!$var && empty($desc)) {
- $this->$dtype->addStaticVar(null, $type,
- new parserStringWithInlineTags);
- } else {
- if ($var) {
- $this->$dtype->addStaticVar($var, $type,
- $this->getInlineTags($desc));
- } else {
- $this->$dtype->addStaticVar(null, $type,
- $this->getInlineTags($desc));
- }
- }
- }
-
- /**
- * handles the @param tag
- *
- * @tutorial tags.param.pkg
- * @uses parserDocBlock::addParam()
- */
- function paramTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(PDERROR_MALFORMED_TAG, '@param');
- return;
- }
- $type = $info['type'];
- $var = $info['var'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- if (!$var && empty($desc)) {
- $this->$dtype->addParam(null, $type, new parserStringWithInlineTags);
- } else {
- if ($var) {
- $this->$dtype->addParam($var, $type, $this->getInlineTags($desc));
- } else {
- $this->$dtype->addParam(null, $type, $this->getInlineTags($desc));
- }
- }
- }
-
- /**
- * handles the @return tag
- *
- * @tutorial tags.return.pkg
- * @uses parserDocBlock::addReturn()
- */
- function returnTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(PDERROR_MALFORMED_TAG, '@return');
- return;
- }
- $type = $info['type'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- $this->$dtype->addReturn($type, $this->getInlineTags($desc));
- }
-
- /**
- * handles the @var tag
- *
- * @tutorial tags.var.pkg
- * @uses parserDocBlock::addVar()
- */
- function varTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(PDERROR_MALFORMED_TAG, '@var');
- }
- $type = $info['type'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- $this->$dtype->addVar($type, $this->getInlineTags($desc));
- }
-
- /**
- * Handles @property(-read or -write) and @method magic tags
- *
- * @tutorial tags.method.pkg
- * @tutorial tags.property.pkg
- * @uses parserDocBlock::addProperty()
- */
- function propertyTagHandler($name, $value)
- {
- $info = $this->retrieveType($value, true);
- if (!$info) {
- addError(PDERROR_MALFORMED_TAG, '@' . $name);
- }
- $type = $info['type'];
- $var = $info['var'];
- $desc = $info['desc'];
- $dtype = $this->_pv_dtype;
- $this->$dtype->addProperty($name, $var, $type, $this->getInlineTags($desc));
- }
- /**#@-*/
-
- /**#@+
- * @access private
- */
-
- /**
- * Retrieve the type portion of a @tag type description
- *
- * Tags like @param, @return and @var all have a PHP type portion in their
- * description. Since the type may contain the expression "object blah"
- * where blah is a classname, it makes parsing out the type field complex.
- *
- * Even more complicated is the case where a tag variable can contain
- * multiple types, such as object blah|object blah2|false, and so this
- * method handles these cases.
- *
- * @param array $value array of words that were separated by spaces
- * @param bool $checkforvar flag to determine whether to check for the end of a
- * type is defined by a $varname
- *
- * @return bool|array FALSE if there is no value,
- * or an array of Format:
- * <pre>
- * array(
- * 'type' => string,
- * 'var' => false|string variable name,
- * 'desc' => rest of the tag
- * )
- * </pre>
- */
- function retrieveType($value, $checkforvar = false)
- {
- if (!count($value)) {
- return false;
- }
- $result = array();
- $types = '';
- // remove empty entries resulting from extra spaces between @tag and type
- $this->_removeWhiteSpace($value, 0);
- $index = 0;
- if (trim($value[0]) == 'object') {
- $types .= array_shift($value) . ' ';
- $this->_removeWhiteSpace($value, 0);
- if (!count($value)) {
- // was just passed "object"
- $result = array('type' => rtrim($types), 'desc' => '');
- if ($checkforvar) {
- $result['var'] = false;
- }
- return $result;
- }
- if ($value[0]{0} == '$' || substr($value[0], 0, 2) == '&$') {
- // was just passed "object" and the next thing is a variable name
- $result['var'] = trim($value[0]);
- $result['type'] = 'object';
- array_shift($value);
- $result['desc'] = join(' ', $value);
- return $result;
- }
- }
- $done = false;
- do {
- // this loop checks for type|type|type
- // and for type|object classname|type|object classname2
- if (strpos($value[0], '|')) {
- $temptypes = explode('|', $value[0]);
- while (count($temptypes)) {
- $type = array_shift($temptypes);
- $types .= $type;
- if (count($temptypes)) {
- $types .= '|';
- }
- }
- if (trim($type) == 'object') {
- $types .= ' ';
- $this->_removeWhiteSpace($value, 0);
- } else {
- $done = true;
- }
- array_shift($value);
- if (isset ($value[0]) && strlen($value[0]) && ($value[0]{0} == '$' ||
- substr($value[0], 0, 2) == '&$')
- ) {
- // was just passed "object" and the next thing is a variable name
- $result['var'] = trim($value[0]);
- $result['type'] = $types;
- array_shift($value);
- $result['desc'] = join(' ', $value);
- return $result;
- }
- } else {
- $types .= $value[0];
- array_shift($value);
- $done = true;
- }
- } while (!$done && count($value));
- $result['type'] = rtrim($types);
- $this->_removeWhiteSpace($value, 0);
- if ($checkforvar) {
- if (!count($value)) {
- $result['var'] = false;
- } else {
- /*
- * check for:
- * variable name ($)
- * var passed by reference (&$)
- * method name (only used by magic method)
- */
- if (substr($value[0], 0, 1) == '$' ||
- substr($value[0], 0, 2) == '&$' ||
- substr($value[0], -2, 2) == '()'
- ) {
- $result['var'] = trim($value[0]);
- array_shift($value);
- } else {
- $result['var'] = false;
- }
- }
- }
- $result['desc'] = join(' ', $value);
- return $result;
- }
-
- /**
- * remove whitespace from a value
- *
- * @param array &$value array of string
- * @param integer $index index to seek non-whitespace to
- *
- * @return void
- */
- function _removeWhiteSpace(&$value, $index)
- {
- if (count($value) > $index && empty($value[$index])) {
- $found = false;
- // CRB - I believe this loop is correct in not having a body...
- // I think it is only to determine the $i value needed
- // by the one array_splice() call...
- for ($i=$index; $i < count($value) && !strlen($value[$i]); $i++);
- array_splice($value, $index, $i - $index);
- }
- }
-
- /**
- * Retrieve all the tokens that represent the definition of the global variable
- *
- * {@source}
- *
- * @param string $name the global variable to find
- *
- * @return void
- */
- function findGlobal($name)
- {
- $tokens = token_get_all('<?php ' . $name);
- $tokens = array_slice($tokens, 1);
- $this->_wp->findGlobal($tokens);
- $this->_pv_findglobal = $name;
- }
-
- /**
- * this function checks whether parameter $word
- * is a token for pushing a new event onto the Event Stack.
- *
- * @param string $word the word to check
- * @param int $pevent the event to push
- *
- * @return mixed returns false, or the event number
- */
- function checkEventPush($word, $pevent)
- {
- if (is_array($word) && $word[0] == T_STRING) {
- $word = $word[1];
- }
- if (is_array($word)) {
- $pushEvent = &$this->tokenpushEvent;
- $word = $word[0];
- } else {
- $pushEvent = &$this->wordpushEvent;
- $word = strtolower($word);
- }
- $e = false;
- if (isset($pushEvent[$pevent])) {
- if (isset($pushEvent[$pevent][$word])) {
- $e = $pushEvent[$pevent][$word];
- }
- }
- if ($e) {
- $this->_event_stack->pushEvent($e);
- return $e;
- } else {
- return false;
- }
- }
-
- /**
- * this function checks whether parameter $word
- * is a token for popping the current event off of the Event Stack.
- *
- * @param string $word the word to check
- * @param int $pevent the event to pop
- *
- * @return mixed returns false, or the event number popped off of the stack
- */
- function checkEventPop($word, $pevent)
- {
- if (is_array($word) && $word[0] == T_STRING) {
- $word = $word[1];
- }
- if (is_array($word)) {
- $popEvent = &$this->tokenpopEvent;
- $word = $word[0];
- } else {
- $popEvent = &$this->wordpopEvent;
- $word = strtolower($word);
- }
- if (!isset($popEvent[$pevent])) {
- return false;
- }
- if (in_array($word, $popEvent[$pevent])) {
- return $this->_event_stack->popEvent();
- } else {
- return false;
- }
- }
-
- /**
- * returns the token from the $word array
- *
- * @param mixed $word the token array
- *
- * @return mixed the token from the array,
- * or FALSE if it's not an array
- */
- function getToken($word)
- {
- if (is_array($word)) {
- return $word[0];
- }
- return false;
- }
-
- /**
- * setup the parser tokens, and the pushEvent/popEvent arrays
- *
- * @return void
- * @see $tokens, $pushEvent, $popEvent
- */
- function setupStates()
- {
- unset($this->_wp);
- $this->_wp = new phpDocumentorTWordParser;
- $this->_pv_class = null;
- $this->_pv_cur_class = null;
- $this->_pv_define = null;
- $this->_pv_define_name = null;
- $this->_pv_define_value = null;
- $this->_pv_define_params_data = null;
- $this->_pv_dtype = null;
- $this->_pv_docblock = null;
- $this->_pv_dtemplate = null;
- $this->_pv_func = null;
- $this->_pv_findglobal = null;
- $this->_pv_global_name = null;
- $this->_pv_global_val = null;
- $this->_pv_globals = null;
- $this->_pv_global_count = null;
- $this->_pv_include_params_data = null;
- $this->_pv_include_name = null;
- $this->_pv_include_value = null;
- $this->_pv_linenum = null;
- $this->_pv_periodline = null;
- $this->_pv_paren_count = 0;
- $this->_pv_statics = null;
- $this->_pv_static_count = null;
- $this->_pv_static_val = null;
- $this->_pv_quote_data = null;
- $this->_pv_function_data = null;
- $this->_pv_var = null;
- $this->_pv_varname = null;
- $this->_pv_const = null;
- $this->_pv_constname = null;
- $this->_pv_function_param_type = null;
- $this->_pf_definename_isset = false;
- $this->_pf_includename_isset = false;
- $this->_pf_get_source = false;
- $this->_pf_getting_source = false;
- $this->_pf_in_class = false;
- $this->_pf_in_define = false;
- $this->_pf_in_global = false;
- $this->_pf_in_include = false;
- $this->_pf_in_var = false;
- $this->_pf_in_const = false;
- $this->_pf_funcparam_val = false;
- $this->_pf_quote_active = false;
- $this->_pf_reset_quote_data = true;
- $this->_pf_useperiod = false;
- $this->_pf_var_equals = false;
- $this->_pf_const_equals = false;
- $this->_event_stack = new EventStack;
- }
-
- /**
- * Creates the state arrays
- *
- * @return void
- */
- function setupEventStates()
- {
- if (!defined('T_DOC_COMMENT')) {
- define('T_DOC_COMMENT', T_DOC_COMMENT);
- }
- /**************************************************************/
-
- $this->wordpushEvent[PARSER_EVENT_LOGICBLOCK] =
- array(
- "{" => PARSER_EVENT_LOGICBLOCK,
- '"' => PARSER_EVENT_QUOTE,
- );
- $this->tokenpushEvent[PARSER_EVENT_LOGICBLOCK] =
- array(
- T_GLOBAL => PARSER_EVENT_FUNC_GLOBAL,
- T_STATIC => PARSER_EVENT_STATIC_VAR,
- T_START_HEREDOC => PARSER_EVENT_EOFQUOTE,
- T_CURLY_OPEN => PARSER_EVENT_LOGICBLOCK,
- T_DOLLAR_OPEN_CURLY_BRACES => PARSER_EVENT_LOGICBLOCK,
- );
-
- $this->wordpopEvent[PARSER_EVENT_LOGICBLOCK] = array("}");
- $this->tokenpopEvent[PARSER_EVENT_LOGICBLOCK] = array(T_CURLY_OPEN);
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_NOEVENTS] =
- array(
- T_OPEN_TAG => PARSER_EVENT_PHPCODE,
- );
-
- /**************************************************************/
-
- $this->tokenpopEvent[PARSER_EVENT_EOFQUOTE] = array(T_END_HEREDOC);
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_PHPCODE] =
- array(
- T_FUNCTION => PARSER_EVENT_FUNCTION,
- T_ABSTRACT => PARSER_EVENT_ACCESS_MODIFIER,
- T_CLASS => PARSER_EVENT_CLASS,
- T_INTERFACE => PARSER_EVENT_CLASS,
- T_INCLUDE_ONCE => PARSER_EVENT_INCLUDE,
- T_INCLUDE => PARSER_EVENT_INCLUDE,
- T_REQUIRE => PARSER_EVENT_INCLUDE,
- T_REQUIRE_ONCE => PARSER_EVENT_INCLUDE,
- T_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- //"/**#@+" => PARSER_EVENT_DOCBLOCK_TEMPLATE,
- //"/**#@-*/" => PARSER_EVENT_END_DOCBLOCK_TEMPLATE,
- T_CLOSE_TAG => PARSER_EVENT_OUTPHP,
- );
- $this->wordpushEvent[PARSER_EVENT_PHPCODE] =
- array(
- "define" => PARSER_EVENT_DEFINE,
- );
- /**************************************************************/
-
- $this->tokenpopEvent[PARSER_EVENT_OUTPHP] = array(T_OPEN_TAG);
- /**************************************************************/
-
- $this->wordpushEvent[PARSER_EVENT_FUNCTION] =
- array(
- '{' => PARSER_EVENT_LOGICBLOCK,
- '(' => PARSER_EVENT_FUNCTION_PARAMS,
- );
- $this->tokenpushEvent[PARSER_EVENT_FUNCTION] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
-
- $this->wordpopEvent[PARSER_EVENT_FUNCTION] = array("}",';');
- /**************************************************************/
-
- $this->wordpopEvent[PARSER_EVENT_QUOTE] = array('"');
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_FUNCTION_PARAMS] =
- array(
- T_VARIABLE => PARSER_EVENT_FUNCTION_PARAM_VAR,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpopEvent[PARSER_EVENT_FUNCTION_PARAMS] = array(")");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_FUNCTION_PARAM_VAR] =
- array(
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_ARRAY => PARSER_EVENT_ARRAY,
- );
- $this->wordpushEvent[PARSER_EVENT_FUNCTION_PARAM_VAR] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_FUNCTION_PARAM_VAR] = array(",", ")");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_ARRAY] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpopEvent[PARSER_EVENT_ARRAY] = array(")");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_VAR_ARRAY] =
- array(
- T_COMMENT => PARSER_EVENT_VAR_ARRAY_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_VAR_ARRAY_COMMENT,
- );
- $this->wordpopEvent[PARSER_EVENT_VAR_ARRAY] = array(")");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_FUNC_GLOBAL] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpopEvent[PARSER_EVENT_FUNC_GLOBAL] = array(";");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_STATIC_VAR] =
- array(
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_STATIC_VAR] =
- array(
- "=" => PARSER_EVENT_STATIC_VAR_VALUE,
- );
- $this->wordpopEvent[PARSER_EVENT_STATIC_VAR] = array(";");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_STATIC_VAR_VALUE] =
- array(
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_ARRAY => PARSER_EVENT_ARRAY,
- );
- $this->wordpushEvent[PARSER_EVENT_STATIC_VAR_VALUE] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_STATIC_VAR_VALUE] = array(";",",");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_CONSTANT_ENCAPSED_STRING => PARSER_EVENT_QUOTE,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE] = array(";");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_INCLUDE] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_INCLUDE] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS,
- );
- $this->wordpopEvent[PARSER_EVENT_INCLUDE] = array(";");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE_PARAMS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_START_HEREDOC => PARSER_EVENT_EOFQUOTE,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE_PARAMS] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS,
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE_PARAMS] = array(")");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_INCLUDE_PARAMS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_INCLUDE_PARAMS] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS,
- );
- $this->wordpopEvent[PARSER_EVENT_INCLUDE_PARAMS] = array(")");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] =
- array(
- "(" => PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS,
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE_PARAMS_PARENTHESIS] = array(")");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] =
- array(
- "(" => PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS,
- );
- $this->wordpopEvent[PARSER_EVENT_INCLUDE_PARAMS_PARENTHESIS] = array(")");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_VAR] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_ARRAY => PARSER_EVENT_VAR_ARRAY,
- );
- $this->wordpopEvent[PARSER_EVENT_VAR] = array(";");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_CLASS_CONSTANT] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_ARRAY => PARSER_EVENT_VAR_ARRAY,
- );
- $this->wordpopEvent[PARSER_EVENT_CLASS_CONSTANT] = array(";");
- /**************************************************************/
-
- $this->wordpopEvent[PARSER_EVENT_IMPLEMENTS] = array('{');
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_CLASS] =
- array(
- T_ABSTRACT => PARSER_EVENT_ACCESS_MODIFIER,
- T_PUBLIC => PARSER_EVENT_ACCESS_MODIFIER,
- T_PRIVATE => PARSER_EVENT_ACCESS_MODIFIER,
- T_PROTECTED => PARSER_EVENT_ACCESS_MODIFIER,
- T_STATIC => PARSER_EVENT_ACCESS_MODIFIER,
- T_IMPLEMENTS => PARSER_EVENT_IMPLEMENTS,
- T_CONST => PARSER_EVENT_CLASS_CONSTANT,
- T_FUNCTION => PARSER_EVENT_FUNCTION,
- T_VAR => PARSER_EVENT_VAR,
- T_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_DOC_COMMENT => PARSER_EVENT_DOCBLOCK,
- T_CLOSE_TAG => PARSER_EVENT_OUTPHP,
- );
- $this->wordpopEvent[PARSER_EVENT_CLASS] = array("}");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_DEFINE_GLOBAL] =
- array(
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- );
- $this->wordpushEvent[PARSER_EVENT_DEFINE_GLOBAL] =
- array(
- "=" => PARSER_EVENT_GLOBAL_VALUE,
- );
- $this->wordpopEvent[PARSER_EVENT_DEFINE_GLOBAL] = array(";");
- /**************************************************************/
-
- $this->tokenpushEvent[PARSER_EVENT_GLOBAL_VALUE] =
- array(
- T_ARRAY => PARSER_EVENT_ARRAY,
- T_COMMENT => PARSER_EVENT_COMMENT,
- T_DOC_COMMENT => PARSER_EVENT_COMMENT,
- T_START_HEREDOC => PARSER_EVENT_EOFQUOTE,
- );
- $this->wordpushEvent[PARSER_EVENT_GLOBAL_VALUE] =
- array(
- '"' => PARSER_EVENT_QUOTE,
- "'" => PARSER_EVENT_QUOTE,
- );
- $this->wordpopEvent[PARSER_EVENT_GLOBAL_VALUE] = array(";");
- }
-
- /**
- * initializes all the setup
- *
- * @param mixed &$data the data parser (?)
- *
- * @return void
- */
- function configWordParser(&$data)
- {
- $this->_wp->setup($data);
- $this->_wp->setWhitespace(false);
- }
-
- /**#@-*/
-
-}
-?>