From 588727c7e2b8954ec3dbde293cf4c4d68b119f9b Mon Sep 17 00:00:00 2001 From: xue <> Date: Mon, 19 Jun 2006 18:38:29 +0000 Subject: Merge from 3.0 branch till 1185. --- .../phpDocumentor/ParserDescCleanup.inc | 1456 ++++++++++++++++++++ 1 file changed, 1456 insertions(+) create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc (limited to 'buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc') diff --git a/buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc b/buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc new file mode 100644 index 00000000..bd80d104 --- /dev/null +++ b/buildscripts/PhpDocumentor/phpDocumentor/ParserDescCleanup.inc @@ -0,0 +1,1456 @@ + + * @since 1.2 + */ +/**#@+ + * {@link parserDescParser} token constants + */ +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_CODE', 600); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_CODE', 700); +/** when <

> is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_P', 601); +/** when <

> is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_P', 701); +/** when \n\n is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_DOUBLECR', 602); +/** when \n\n is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_DOUBLECR', 702); +/** when <

> is found in a desc */
+define('PHPDOCUMENTOR_PDP_EVENT_PRE', 603);
+/** when <
> is found in a desc */
+define('PHPDOCUMENTOR_PDP_STATE_PRE', 703);
+/** when <
    >/<
      > is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_LIST', 604); +/** when <
        >/<
          > is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_LIST', 704); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_B', 605); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_B', 705); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_I', 606); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_I', 706); +/** when <
          > is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_BR', 607); +/** when <
          > is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_BR', 707); +/** when the << potential escape for tags is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_ESCAPE',608); +/** when the << potential escape for tags is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_ESCAPE',708); +/** when << /pre>> is found in a <
          ><
          > section */ +define('PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE',609); +/** when << /pre>> is found in a <
          ><
          > section */ +define('PHPDOCUMENTOR_PDP_STATE_ESCAPE_PRE',709); +/** when << /code>> is found in a <><> section */ +define('PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE',610); +/** when << /code>> is found in a <><> section */ +define('PHPDOCUMENTOR_PDP_STATE_ESCAPE_CODE',710); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_VAR',611); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_VAR',711); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_SAMP',612); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_SAMP',712); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_EVENT_KBD',613); +/** when <> is found in a desc */ +define('PHPDOCUMENTOR_PDP_STATE_KBD',713); +/** when a simple list is found in a desc + * + * like + *
          + *  o item 1
          + *  o item 2
          + * 
          + */ +define('PHPDOCUMENTOR_PDP_EVENT_SIMLIST',614); +/** when a simple list is found in a desc + * + * like + *
          + *  o item 1
          + *  o item 2
          + * 
          + */ +define('PHPDOCUMENTOR_PDP_STATE_SIMLIST',714); +/**#@-*/ +/** +* Like WordParser but designed to handle an array with strings and +* {@link parserInlineTag}s +* @package phpDocumentor +* @subpackage WordParsers +* @author Greg Beaver +* @since 1.2 +*/ +class ObjectWordParser extends WordParser +{ + /** + * Determines whether text searching is case-sensitive or not + * @access private + */ + var $_casesensitive = false; + + function ObjectWordParser($casesensitive = false) + { + $this->_casesensitive = $casesensitive; + } + + /** + * Set the word parser to go. + * + * @param array {@link parserStringWithInlineTags::$value} style-array, with + * alternating text and inline tags + */ + function setup(&$input) + { +// if (is_string($input[0])) $input[0] = ltrim($input[0]); + $this->data = & $input; + $this->pos = 0; + $this->linenum = 0; + $this->linenumpos = 0; + $this->cache = array(); + reset($this->data); + list($this->index,) = each($this->data); + if (!is_object($this->data[$this->index])) + $this->size = strlen($this->data[$this->index]); + else $this->size = 0; + //$this->run = 0; + //$this->word = WORD_PARSER_RET_WORD; + } + + function getWord() + { + if (!isset($this->data[$this->index])) return false; + // return any inline tags unchanged + if (is_object($this->data[$this->index])) + { + $index = $this->index; + list($this->index,) = each($this->data); + $this->pos = 0; + if ($this->index) + { + if (!is_object($this->data[$this->index])) + $this->size = strlen($this->data[$this->index]); + else $this->size = 0; + $this->cache = array(); + return $this->data[$index]; + } else + { + return false; + } + } + //$st = $this->mtime(); + if ($this->size == $this->pos) + { + // cycle to next line in the array + list($this->index,) = each($this->data); + if (!$this->index) return false; + $this->pos = 0; + if (!is_object($this->data[$this->index])) + $this->size = strlen($this->data[$this->index]); + else $this->size = 0; + $this->cache = array(); + return $this->getWord(); + } + + $npos = $this->size; + if (is_array($this->wordseperators)) + { + //$this->wordseperators = array(); + foreach($this->wordseperators as $sep) + { + if (isset($this->cache[$sep])) + $tpos = $this->cache[$sep]; + else + $tpos = false; + if ($tpos < $this->pos || !is_int($tpos)) + { + if ($this->_casesensitive) + $tpos = strpos($this->data[$this->index],$sep,$this->pos); + else + $tpos = strpos(strtolower($this->data[$this->index]),$sep,$this->pos); + } + + if ( ($tpos < $npos) && !($tpos === false)) + { + //echo trim($sep) . "=$tpos\n"; + $npos = $tpos; + $seplen = strlen($sep); + } + else if (!($tpos === false)) + { + $this->cache[$sep] = $tpos; + } + } + } else { + // its time to cycle + return ""; + } + + $len = $npos - $this->pos; + if ($len == 0) + { + $len = $seplen; + } + + //$st3 = $this->mtime(); + $word = substr($this->data[$this->index],$this->pos,$len); + + // Change random other os newlines to the unix one + if ($word == "\r" || $word == "\r\n") + { + $word = "\n"; + } + + if ($this->linenumpos <= $this->pos) + { + $this->linenumpos = $this->pos + $len; + $this->linenum += count(explode("\n",$word)) - 1; + } + + if ($this->getsource) + { + $this->source .= $word; + } + $this->pos = $this->pos + $len; + //$this->word = WORD_PARSER_RET_SEP; + + // Things like // commenats rely on the newline to find their end so im going to have to return them + // never return worthless white space /t ' ' + if ($this->returnWhiteSpace == false) + { + if (strlen(trim($word)) == 0 && $word != "\n") + { + $word = $this->getWord(); + } + } + //$this->time3 = $this->time3 + ($this->mtime() - $st3); + //$this->time = $this->time + ($this->mtime() - $st); + return $word; + } + + /** + * Determine if the next word is an inline tag + * @return boolean + */ + function nextIsObjectOrNonNL() + { + return (($this->size == $this->pos) && isset($this->data[$this->index + 1]) + && is_object($this->data[$this->index + 1])) || + (($this->size > $this->pos) && !in_array($this->data[$this->index]{$this->pos}, array("\n", "\r"))); + } +} + +/** + * Parses a DocBlock description to retrieve abstract representations of + * <
          >,<>,<

          >,<

            >,<
              >,<
            1. >,<>,<> + * @tutorial phpDocumentor.howto.pkg#basics.desc + * @package phpDocumentor + * @subpackage Parsers + * @author Greg Beaver + * @since 1.2 + */ +class parserDescParser extends Parser +{ + /**#@+ + * @access private + */ + /** + * @var array + */ + var $eventHandlers = array(PHPDOCUMENTOR_PDP_EVENT_CODE => 'handleCode', + PHPDOCUMENTOR_PDP_EVENT_PRE => 'handlePre', + PHPDOCUMENTOR_PDP_EVENT_P => 'handleP', + PHPDOCUMENTOR_PDP_EVENT_DOUBLECR => 'handleDoubleCR', + PHPDOCUMENTOR_PDP_EVENT_LIST => 'handleList', + PHPDOCUMENTOR_PDP_EVENT_B => 'handleB', + PHPDOCUMENTOR_PDP_EVENT_I => 'handleI', + PHPDOCUMENTOR_PDP_EVENT_VAR => 'handleVar', + PHPDOCUMENTOR_PDP_EVENT_KBD => 'handleKbd', + PHPDOCUMENTOR_PDP_EVENT_SAMP => 'handleSamp', + PHPDOCUMENTOR_PDP_EVENT_BR => 'handleBr', + PHPDOCUMENTOR_PDP_EVENT_ESCAPE => 'handleEscape', + PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE => 'handleEscapeCode', + PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE => 'handleEscapePre', + PHPDOCUMENTOR_PDP_EVENT_SIMLIST => 'handleSimpleList', + PARSER_EVENT_NOEVENTS => 'defaultHandler', + ); + + /** + * @var array + */ + var $pars = array(); + /** + * Determines whether parsing of <p> tags will occur, or double CR will + * be used + * @var boolean + */ + var $parse_Ps; + /** + * Context stack. + * + * Values can be 'normal', or any tag container like 'my_i', 'my_b'. This + * is used to determine which tag text or nested tags should be added to + * @var array + */ + var $_context = array('normal'); + /**#@-*/ + + /** + * sets $wp to be a {@link ObjectWordParser} + * + * $wp is the word parser that retrieves tokens + */ + function parserDescParser() + { + $this->wp = new ObjectWordParser; + } + + /** + * Parse a long or short description for tags + * + * @param array array of strings or {@link parserInlineTag}s + * @param boolean true if the description is a short description. (only 1 paragraph allowed in short desc) + * @param string name of the class to instantiate for each paragraph. parserDesc for desc/sdesc, + * parserStringWithInlineTags for tag data + * @staticvar integer used for recursion limiting if a handler for an event is not found + */ + function parse (&$parse_data,$sdesc = false,$ind_type = 'parserDesc') + { + static $endrecur = 0; + global $_phpDocumentor_setting; + if (!is_array($parse_data) || count($parse_data) == 0) + { + return false; + } + $this->p_vars['indtype'] = $ind_type; + $this->setupStates($sdesc); + if (isset($_phpDocumentor_setting['javadocdesc']) && $_phpDocumentor_setting['javadocdesc'] == 'on') + $this->parse_Ps = true; + + // initialize variables so E_ALL error_reporting doesn't complain + $pevent = 0; + $word = 0; + $this->p_vars['curpar'] = 0; + $this->pars = array(); + $this->p_vars['start'] = true; + $this->p_vars['event_stack'] = new EventStack; + + $this->wp->setup($parse_data,$sdesc); + $this->wp->setWhitespace(true); + $this->p_vars['list_count'] = 0; + if ($sdesc) $this->p_vars['start'] = false; + do + { + if (!isset($this->pars[$this->p_vars['curpar']])) $this->pars[$this->p_vars['curpar']] = new $ind_type; + $lpevent = $pevent; + $pevent = $this->p_vars['event_stack']->getEvent(); + if ($lpevent != $pevent) + { + $this->p_vars['last_pevent'] = $lpevent; + } + + if ($this->p_vars['last_pevent'] != $pevent) + { + // its a new event so the word parser needs to be reconfigured + $this->configWordParser($pevent); + } + + + $this->p_vars['last_word'] = $word; + $word = $this->wp->getWord(); + + if (0)//PHPDOCUMENTOR_DEBUG == true) + { + echo "----------------\n"; + echo "LAST: |" . htmlentities($this->p_vars['last_word']) . "|\n"; +// echo "INDEX: ".$this->p_vars['curpar']."\n"; + echo "PEVENT: " . $this->getParserEventName($pevent) . "\n"; + echo "LASTPEVENT: " . $this->getParserEventName($this->p_vars['last_pevent']) . "\n"; + echo $this->wp->getPos() . " WORD: |".htmlentities($word)."|\n\n"; + var_dump($this->_context); + } + if (isset($this->eventHandlers[$pevent])) + { + $handle = $this->eventHandlers[$pevent]; + if ($word !== false) $this->$handle($word, $pevent); + else + { + if (!count($this->pars[$this->p_vars['curpar']]->value)) unset($this->pars[$this->p_vars['curpar']]); + } + } else + { + debug('WARNING: possible error, no ParserDescParser handler for event number '.$pevent); + if ($endrecur++ == 25) + { + die("FATAL ERROR, recursion limit reached"); + } + } + if (is_object($word) || trim($word) != '') + { + $this->p_vars['start'] = false; + } + } while (is_object($word) || !($word === false) && $word != ''); + $context = $this->getContext(); + if ($context != 'normal') + { + if ($context == 'list' && $this->p_flags['simplelist']) + { + $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]); + unset($this->p_vars['list_item'][0]); + $this->setContext('normal'); + $this->addText($this->p_vars['lists'][0]); + } else addError(PDERROR_UNCLOSED_TAG,str_replace('my_','',$context)); + } + if ($this->p_vars['list_count'] > 0) addError(PDERROR_UNMATCHED_LIST_TAG); + if ($sdesc) + $this->publishEvent(2,$this->pars); + else + $this->publishEvent(1,$this->pars); + } + /**#@+ @access private */ + /** + * basic handling + * + * This function checks to see if the first thing in + * a description is the

              tag. If so, it will switch + * into a mode of parsing out paragraphs by

              instead + * of a double line-break + * + * It also removes extra whitespace + * @uses doSimpleList() + */ + function defaultHandler($word, $pevent) + { + $context = $this->getContext(); + if ($context != 'normal') $this->setContext('normal'); + if ($this->p_vars['start'] && is_string($word) && strtolower($word) == '

              ') + { + $this->parse_Ps = true; + } + if (is_string($word) && $this->checkEventPush($word, $pevent)) return; +// if (!isset($this->parse_Ps) || !$this->parse_Ps) + { + if (!is_object($word) && ($word == ' ' && $this->p_vars['last_word'] == ' ')) return; + if ($pevent == PARSER_EVENT_NOEVENTS) + { + if ($this->doSimpleList($word)) return; + } + $this->addText($word); + } + } + + /** + * Retrieve the current top-level tag to add text into + * @uses $_context + */ + function getContext() + { + array_push($this->_context,$a = array_pop($this->_context)); + return $a; + } + + /** + * Pop a context off of the context stack + * @uses $_context + */ + function dropContext() + { + array_pop($this->_context); + if (count($this->_context) == 0) + $this->_context = array('normal'); + } + + /** + * @uses $_context + * @param string context name + */ + function setContext($context) + { + array_push($this->_context,$context); + } + + /** + * add input as text to the current paragraph or list + * @param string|parserInlineTag + */ + function addText($text) + { + $context = $this->getContext(); + if ($context == 'list') + { +// debug('aded to '.$context); + $this->p_vars['list_item'][$this->p_vars['list_count']]->add($text); + } elseif ($context != 'normal') + { +// debug('added to '.$context); + $this->p_vars[$context]->add($text); + } else + { +// debug('added to normal '); + $indtype = $this->p_vars['indtype']; + if (!isset($this->pars[$this->p_vars['curpar']])) + $this->pars[$this->p_vars['curpar']] = new $indtype; + $this->pars[$this->p_vars['curpar']]->add($text); + } + } + + /**#@-*/ + /**#@+ + * @access private + * @param string|parserInlineTag token from the ObjectWordParser + * @param integer parser event from {@link ParserDescCleanup.inc} + */ + /** + * Handles special case where a description needs the text "" and tag + * is one of code, b, i, pre, var, or any other valid in-DocBlock html tag. + * + * the text <<>> in a DocBlock will parse out as <>, instead + * of being parsed as markup. + */ + function handleEscape($word, $pevent) + { + $this->p_vars['event_stack']->popEvent(); + if (!in_array($word, $this->tokens[PHPDOCUMENTOR_PDP_STATE_ESCAPE])) + { + if ($word == '<') + { + $this->addText($word); + $this->wp->backupPos($word.$word); + } else + $this->wp->backupPos($word); + return; + } + $this->addText('<'.str_replace('>>','>',$word)); + } + + /** + * Just like {@link handleEscape}, except the only valid escape is + * <<

          >> + */ + function handleEscapePre($word, $pevent) + { + $this->p_vars['event_stack']->popEvent(); + $this->addText('
'); + } + + /** + * Just like {@link handleEscape}, except the only valid escape is + * <<>> + */ + function handleEscapeCode($word, $pevent) + { + $this->p_vars['event_stack']->popEvent(); + $this->addText(''); + } + + /** + * Handle "<
>" + * Add a new {@link parserBr} + * @uses addText() + */ + function handleBr($word, $pevent) + { + if (is_string($word) && $this->checkEventPop($word, $pevent)) + { + $this->addText(new parserBr); + } + } + + /** + * Handles simple lists + * + * phpEdit has an ingenious facility to handle simple lists used in a + * DocBlock like this: + * + * - item 1 + * - item 2 + * - item 3 + * + * The DocBlock is: + *
+     * * - item 1
+     * * - item 2
+     * * - item 3
+     * 
+ * This function converts these simple lists into the parserList class + * @param boolean true if this is the first list item in the list + */ + function handleSimpleList($word, $pevent, $start = false) + { + if (is_object($word) && $this->p_flags['in_item']) + { + $this->p_vars['list_item'][0]->add($word); + return; + } + if (is_string($word) && $this->checkEventPush($word, $pevent)) + { + $this->p_flags['in_event'] = true; + return; + } + $ltrimword = @substr($word, @strpos($word, ltrim($word))); + $is_valid = false; + if (strlen(trim($word)) == 0) + { + if ($this->wp->nextIsObjectOrNonNL()) + { + $is_valid = true; + } + } + if ($word == "\n" && is_string($this->p_vars['last_word']) + && $this->p_vars['last_word']{strlen($this->p_vars['last_word']) - 1} + == "\n") + { + if ($this->p_flags['in_item']) + { + $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]); + unset($this->p_vars['list_item'][0]); + $this->setContext('normal'); + $this->p_flags['simplelist'] = false; + $this->addText($this->p_vars['lists'][0]); + unset($this->p_vars['lists']); + unset($this->p_vars['last_list']); + $this->wp->backuppos($word); + $this->p_vars['event_stack']->popEvent(); + $this->p_flags['in_item'] = false; +// debug('end of list 3'); + return; + } else + { + $this->wp->backuppos($word); + $this->p_vars['event_stack']->popEvent(); + $this->p_flags['in_item'] = false; +// debug('not a list 2'); + return; + } + } + $start_list = $this->getStartList($word); + if (substr($ltrimword,0,strlen($start_list)) != $start_list + || $this->p_flags['in_event'] || is_object($this->p_vars['last_word'])) + { + if (((strlen($this->p_vars['whitespace']) + 1) < strlen(substr($word,0,strpos($word, $ltrimword)))) + || $word == "\n" + || $is_valid + || $this->p_flags['in_event'] + || (is_object($this->p_vars['last_word']) && $this->p_flags['in_item'])) + { + $this->p_vars['list_item'][0]->add($word); + $this->resetStartList($start_list); + $this->p_flags['in_event'] = false; +// debug('middle of list'); + } else + { + if ($this->p_flags['in_item']) + { + $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]); + unset($this->p_vars['list_item'][0]); + $this->setContext('normal'); + $this->p_flags['simplelist'] = false; + $this->addText($this->p_vars['lists'][0]); + unset($this->p_vars['lists']); + unset($this->p_vars['last_list']); + $this->wp->backuppos($word); + $this->p_vars['event_stack']->popEvent(); + $this->p_flags['in_item'] = false; +// debug('end of list 1'); + return; + } else + { + $this->wp->backuppos($word); + $this->p_vars['event_stack']->popEvent(); + $this->p_flags['in_item'] = false; +// debug('not a list'); + return; + } + } + } else + { + if ($this->p_vars['whitespace'] != substr($word,0,strpos($word, $start_list))) + { // if the whitespace is greater than that preceding the list + // delimiter, it's a multi-line list item + $this->setContext('normal'); + $this->p_flags['simplelist'] = false; + $this->addText($this->p_vars['lists'][0]); + unset($this->p_vars['lists']); + $this->wp->backuppos($word); + $this->p_vars['event_stack']->popEvent(); + unset($this->p_vars['last_list']); + $this->p_flags['in_item'] = false; +// debug('end of list 2'); + return; + } else + { + if ($this->p_flags['in_item']) + { + // end of a list item, add it to the list + $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]); + unset($this->p_vars['list_item'][0]); + } +// debug('next list item'); + $this->p_vars['list_item'][0] = new parserStringWithInlineTags; + $this->p_vars['list_item'][0]->add(ltrim(substr($ltrimword,strlen($start_list)))); + $this->p_flags['in_item'] = true; + } + } + } + /**#@-*/ + /** + * Get the next list marker + * + * In unordered lists, this will be something like "o", "-" + * + * In ordered lists, this will be either the number "3", "5" or "3.", "5." + * @return string text of the next list marker to look for + * @param string current word from the parser + * @access private + */ + function getStartList($word) + { + // unordered, return the first marker found + if (!$this->p_flags['orderedlist']) return $this->p_vars['start_list']; + if (isset($this->p_vars['last_list'])) + { + $this->p_vars['save_list'] = $this->p_vars['last_list']; + $next = $this->p_vars['last_list']; + // increment to next list number, convert to string + if (substr($this->p_vars['start_list'], strlen($this->p_vars['start_list']) - 1) == '.') + $next = (substr($next, 0, strpos($next,'.')) + 1) . '.'; + else + $next = ($next + 1) . ''; +// debug("next is '$next'"); + if ($this->p_vars['whitespace'] == substr($word,0,strpos($word, $next))) + return $this->p_vars['last_list'] = $next; + // the next number is not in this word, so return but don't save + return $next; + } else + { + $this->p_vars['last_list'] = $this->p_vars['start_list']; + return $this->p_vars['start_list']; + } + } + + /** + * Set the next list marker to the current list marker + * + * In ordered lists, this will ensure that the next number returned is the + * right number + * @param string token for next list marker + * @access private + */ + function resetStartList($start) + { + if (!isset($this->p_vars['save_list'])) return false; + $this->p_vars['last_list'] = $this->p_vars['save_list']; + } + + /**#@+ + * @access private + * @param string|parserInlineTag token from the ObjectWordParser + * @param integer parser event from {@link ParserDescCleanup.inc} + */ + /** + * Handles <
    >,<
  1. >,<
      > + * + * This allows parsing of lists nested to any level. Using + * the lists and list_item temporary variables and using + * list_count to control nesting, the method creates a {@link parserList} + * for each <
        > or <
          > tag, and a + * standard {@link parserStringWithInlineTags} for all the text, adding + * in nested lists as if they were inline tags (the conversion interface + * is the same for both object types) + */ + function handleList($word, $pevent) + { + if (is_string($word) && $this->checkEventPush($word, $pevent)) + { + return; + } + $ordered = false; + if (!is_object($this->p_vars['last_word']) && strtolower($this->p_vars['last_word']) == '
            ') + { + // ordered list + $ordered = true; + } + // start a new list + if (!is_object($this->p_vars['last_word']) && (strtolower($this->p_vars['last_word']) == '
              ' || strtolower($this->p_vars['last_word']) == '
                ')) + { + $this->p_flags['in_item'] = false; + $this->setContext('list'); + $this->p_vars['lists'][++$this->p_vars['list_count']] = new parserList($ordered); + } + if (!is_object($word) && strtolower($word) == '
              • ') + { + if ($this->p_flags['in_item']) + { + // end of a list item (no end tag), add it to the list + $this->p_vars['lists'][$this->p_vars['list_count']]->addItem($this->p_vars['list_item'][$this->p_vars['list_count']]); + unset($this->p_vars['list_item'][$this->p_vars['list_count']]); + } + // start a new list item + $this->p_vars['list_item'][$this->p_vars['list_count']] = new parserStringWithInlineTags; + $this->p_flags['in_item'] = true; + } else + { + if (is_object($word) || (strtolower($word) != '
              • ')) + { + if (is_object($word) || (strtolower($word) != '
              ' && strtolower($word) != '
            ')) + { + // item text + if (isset($this->p_vars['list_item'][$this->p_vars['list_count']])) + { + if ($word == ' ' && $this->p_vars['last_word'] == ' ') return; + $this->p_vars['list_item'][$this->p_vars['list_count']]->add($word); + } + } else + { + if ($this->p_flags['in_item']) + { + // end the current list item before ending a list + $this->p_vars['lists'][$this->p_vars['list_count']]->addItem($this->p_vars['list_item'][$this->p_vars['list_count']]); + unset($this->p_vars['list_item'][$this->p_vars['list_count']]); + $this->p_flags['in_item'] = false; + } + if (is_string($word) && $this->checkEventPop($word, $pevent)) + { + if ($this->p_vars['list_count'] > 1) + { + // this is a sublist, add it to the list item of the parent list + $this->p_vars['list_item'][$this->p_vars['list_count'] - 1]->add($this->p_vars['lists'][$this->p_vars['list_count']]); + // remove the sublist item and sublist, drop to parent list + unset($this->p_vars['lists'][$this->p_vars['list_count']]); + unset($this->p_vars['lists'][$this->p_vars['list_count']]); + $this->p_vars['list_count']--; + $this->p_flags['in_item'] = true; + } else + { + // this is a primary list and it has concluded + $this->pars[$this->p_vars['curpar']]->add($this->p_vars['lists'][$this->p_vars['list_count']]); + unset($this->p_vars['lists']); + unset($this->p_vars['list_item']); + $this->p_vars['list_count'] = 0; + $this->dropContext(); + } + } + } + } else + { + // check to make sure our list item is not unclosed + if (!$this->p_flags['in_item']) + { + addError(PDERROR_TEXT_OUTSIDE_LI); + } else + { + // end of a list item, add it to the list + $this->p_vars['lists'][$this->p_vars['list_count']]->addItem($this->p_vars['list_item'][$this->p_vars['list_count']]); + unset($this->p_vars['list_item'][$this->p_vars['list_count']]); + $this->p_flags['in_item'] = false; + } + } + } + } + + /** + * Handles <><> blocks + */ + function handleCode($word, $pevent) + { + if (!isset($this->p_vars['my_code'])) + { + $this->setContext('my_code'); + $this->p_vars['my_code'] = new parserCode; + } + if (is_string($word) && $this->checkEventPush($word, $pevent)) return; + if (is_object($word) || strtolower($word) != '
            ') $this->p_vars['my_code']->add($word); + if (is_string($word)) + { + if ($this->checkEventPop($word,$pevent)) + { + $this->dropContext(); + $this->addText($this->p_vars['my_code']); + unset($this->p_vars['my_code']); + } + } + } + + /** + * Handles <
            ><
            > blocks + */ + function handlePre($word, $pevent) + { + if (!isset($this->p_vars['my_pre'])) + { + $this->setContext('my_pre'); + $this->p_vars['my_pre'] = new parserPre; + } + if (is_string($word) && $this->checkEventPush($word, $pevent)) return; + if (is_object($word) || strtolower($word) != '
') $this->p_vars['my_pre']->add($word); + if (is_string($word)) + { + if ($this->checkEventPop($word,$pevent)) + { + $this->dropContext(); + $this->addText($this->p_vars['my_pre']); + unset($this->p_vars['my_pre']); + } + } + } + + /** + * Handles <><> blocks + */ + function handleB($word, $pevent) + { + if (!isset($this->p_vars['my_b'])) + { + $this->setContext('my_b'); + $this->p_vars['my_b'] = new parserB; + } + if (is_string($word)) + { + if ($this->checkEventPop($word,$pevent)) + { + $this->dropContext(); + $this->addText($this->p_vars['my_b']); + unset($this->p_vars['my_b']); + } else + { + $this->p_vars['my_b']->add($word); + } + } else $this->p_vars['my_b']->add($word); + } + + /** + * Handles <><> blocks + */ + function handleI($word, $pevent) + { + if (!isset($this->p_vars['my_i'])) + { + $this->p_vars['my_i'] = new parserI; + $this->setContext('my_i'); + } + if (is_string($word)) + { + if ($this->checkEventPop($word,$pevent)) + { + $this->dropContext(); + $this->addText($this->p_vars['my_i']); + unset($this->p_vars['my_i']); + } else + { + $this->p_vars['my_i']->add($word); + } + } else $this->p_vars['my_i']->add($word); + } + + /** + * Handles <><> blocks + */ + function handleVar($word, $pevent) + { + if (!isset($this->p_vars['my_var'])) + { + $this->setContext('my_var'); + $this->p_vars['my_var'] = new parserDescVar; + } + if (is_string($word)) + { + if ($this->checkEventPop($word,$pevent)) + { + $this->dropContext(); + $this->addText($this->p_vars['my_var']); + unset($this->p_vars['my_var']); + } else + { + $this->p_vars['my_var']->add($word); + } + } else $this->p_vars['my_var']->add($word); + } + + /** + * Handles <><> blocks + */ + function handleSamp($word, $pevent) + { + if (!isset($this->p_vars['my_samp'])) + { + $this->setContext('my_samp'); + $this->p_vars['my_samp'] = new parserSamp; + } + if (is_string($word)) + { + if ($this->checkEventPop($word,$pevent)) + { + $this->dropContext(); + $this->addText($this->p_vars['my_samp']); + unset($this->p_vars['my_samp']); + } else + { + $this->p_vars['my_samp']->add($word); + } + } else $this->p_vars['my_samp']->add($word); + } + + /** + * Handles <><> blocks + */ + function handleKbd($word, $pevent) + { + if (!isset($this->p_vars['my_kbd'])) + { + $this->setContext('my_kbd'); + $this->p_vars['my_kbd'] = new parserKbd; + } + if (is_string($word)) + { + if ($this->checkEventPop($word,$pevent)) + { + $this->dropContext(); + $this->addText($this->p_vars['my_kbd']); + unset($this->p_vars['my_kbd']); + } else + { + $this->p_vars['my_kbd']->add($word); + } + } else $this->p_vars['my_kbd']->add($word); + } + + /** + * Handles <

><

> blocks + * + * Note that the only time <

> will be interpreted as delimiting a + * paragraph is if it is the first thing in the description. + */ + function handleP($word, $pevent) + { + if (!isset($this->parse_Ps)) $this->parse_Ps = false; + if (is_string($word)) + { + if (is_string($word) && $this->checkEventPush($word, $pevent)) return; + } + if (!$this->parse_Ps) + { + $this->p_vars['event_stack']->popEvent(); + if (!is_object($word) && strtolower($this->p_vars['last_word']) == '

') $this->addText('

'); + $this->addText($word); + return; + } + if ($word == "\n") $word = " "; + if (is_string($word)) + { + if ($this->checkEventPop($word, $pevent)) + { + $this->p_vars['curpar']++; + return; + } + // if no closing tag, pretend there was one + if (!is_object($word) && strtolower($word) == '

' && $this->parse_Ps) + { + $this->p_vars['curpar']++; + return; + } + } + if ($this->p_vars['start']) + { + $this->addText($word); + } else + {// if the

is not at the beginning of the desc, then it is not + // possible to parse into paragraphs using this tag + if ($word == ' ' && $this->p_vars['last_word'] == ' ') return; + $this->addText($word); + } + } + + /** + * Handles \n\n as a paragraph marker + * @uses doSimpleList() + */ + function handleDoubleCR($word, $pevent) + { + $this->p_vars['event_stack']->popEvent(); + if ($word == "\n") + { + // only use this if

isn't being used + if ((!isset($this->parse_Ps) || !$this->parse_Ps)) + { + if ($this->p_vars['last_word'] == "\n") + { + $this->p_vars['curpar']++; + $this->parse_Ps = false; + } else + { + if (is_string($word) && !$this->checkEventPush($word, $pevent)) + { + if ($word == ' ' && $this->p_vars['last_word'] == ' ') return; + $this->addText($word); + } + } + } else + { + if (is_string($word) && !$this->checkEventPush($word, $pevent)) + { + if ($word == ' ' && $this->p_vars['last_word'] == ' ') return; + $this->addText($word); + } + } + } else + { + if ($this->p_vars['last_word'] == "\n") + { + if ((!isset($this->parse_Ps) || !$this->parse_Ps)) + { + $this->addText(' '); + } + } + if (is_string($word) && !($e = $this->checkEventPush($word, $pevent))) + { + if ($word == ' ' && $this->p_vars['last_word'] == ' ') return; + if ($this->doSimpleList($word)) return; + $this->addText($word); + } + } + } + + /**#@-*/ + /** + * Return a simple list, if found + * + * This helper function extracts a simple list beginning with any of + * 'o','-'.'#','+','0','1','0.','1.' and starts parsing it. + * @param string line that may contain a simple list + * @return boolean true if a list is found, false otherwise + */ + function doSimpleList($word) + { + if ($this->p_flags['in_event']) return true; + if (is_object($word)) return false; + $ltrimword = ltrim($word); + if ((strlen($ltrimword) != strlen($word)) + && strlen($ltrimword) > 1 + && ((in_array($ltrimword{0},array('o','-','1','0','#','+')) && $ltrimword{1} == ' ')) + || ((strlen($ltrimword) >= 2) && (in_array(substr($ltrimword,0,2),array('1.','0.')) && $ltrimword{2} == ' '))) + { + // save the whitespace for comparison + $this->p_vars['whitespace'] = substr($word,0,strlen($word) - strlen($ltrimword)); + $this->p_vars['start_list'] = $ltrimword{0}; + if ($this->p_vars['start_list'] != '1' && $this->p_vars['start_list'] != '1.' && + $this->p_vars['start_list'] != '0' && $this->p_vars['start_list'] != '0.') + { + $this->p_flags['orderedlist'] = false; + } else + { + if (substr($ltrimword,0,2) == '1.') + { + $this->p_vars['start_list'] = '1.'; + } + $this->p_flags['orderedlist'] = true; + } + $this->p_vars['event_stack']->pushEvent(PHPDOCUMENTOR_PDP_EVENT_SIMLIST); + $this->setContext('list'); + $this->p_flags['simplelist'] = true; + $this->p_vars['lists'][0] = new parserList($this->p_flags['orderedlist']); + $this->p_vars['list_count'] = 0; + $this->handleSimpleList($word, PHPDOCUMENTOR_PDP_EVENT_SIMLIST, true); + return true; + } + return false; + } + /** + * setup the parser tokens, and the pushEvent/popEvent arrays + * @see $tokens, $pushEvent, $popEvent + * @param boolean determines whether to allow paragraph parsing + * @global boolean used to determine whether to slow things down or not by + * eliminating whitespace from comments + */ + + function setupStates($sdesc) + { + $this->p_flags['in_item'] = false; + $this->p_flags['in_event'] = false; + $this->p_flags['simplelist'] = false; + $this->_context = array('normal'); + $this->tokens[STATE_NOEVENTS] = array("\n", "", "

", "
    ", "
      ", + "", "", '', '', '', "tokens[STATE_NOEVENTS][] = "

      "; + $this->tokens[STATE_NOEVENTS][] = "

      "; + } + if (PHPDOCUMENTOR_KILL_WHITESPACE) $this->tokens[STATE_NOEVENTS][] = ' '; + $this->tokens[PHPDOCUMENTOR_PDP_STATE_P] = array("

      ","","
      ", '<
      ","\n","
        ","
          ","","","", '<<', + '', '', ''); + if (PHPDOCUMENTOR_KILL_WHITESPACE) $this->tokens[PHPDOCUMENTOR_PDP_STATE_P][] = ' '; + $this->tokens[PHPDOCUMENTOR_PDP_STATE_CODE] = array("", '<>'); + $this->tokens[PHPDOCUMENTOR_PDP_STATE_PRE] = array("
>'); + $this->tokens[PHPDOCUMENTOR_PDP_STATE_LIST] = array("
    ","
      ","
","","
  • ","
  • ","","","","
    ","', '', '');
    +        $this->tokens[PHPDOCUMENTOR_PDP_STATE_DOUBLECR]        = array("\n","
      ","
        ","","
        ","","","","

        ", + '', '', '', '<<'); + $this->tokens[PHPDOCUMENTOR_PDP_STATE_SIMLIST] = array("\n",'', '', '','','', '
        ', '',
        +                                                                    'tokens[PHPDOCUMENTOR_PDP_STATE_B]    = array("","\n","
        ","
          ","
            ","","","', '', ''); + $this->tokens[PHPDOCUMENTOR_PDP_STATE_KBD] = array("","\n","
            ","
              ","
                ","","","', '', ''); + $this->tokens[PHPDOCUMENTOR_PDP_STATE_VAR] = array("","\n","
                ","
                  ","
                    ","","","', '', ''); + $this->tokens[PHPDOCUMENTOR_PDP_STATE_SAMP] = array("","\n","
                    ","
                      ","
                        ","","","', '', ''); + $this->tokens[PHPDOCUMENTOR_PDP_STATE_I] = array("","\n","
                        ","
                          ","
                            ","","","', '', ''); + $this->tokens[PHPDOCUMENTOR_PDP_STATE_BR] = array(">","/>"); + $this->tokens[PHPDOCUMENTOR_PDP_STATE_ESCAPE] = array('code>>', '/code>>', 'pre>>', '/pre>>', 'b>>', '/b>>', + 'i>>', '/i>>', 'ol>>', '/ol>>', 'ul>>', '/ul>>', + 'br>>', 'br />>', 'p>>', '/p>>', 'samp>>', '/samp>>', + 'kbd>>', '/kbd>>', 'var>>', '/var>>'); + if (PHPDOCUMENTOR_KILL_WHITESPACE) $this->tokens[PHPDOCUMENTOR_PDP_STATE_DOUBLECR][] = ' '; + + // For each event word to event mapings + $this->pushEvent[PARSER_EVENT_NOEVENTS] = + array( + "" => PHPDOCUMENTOR_PDP_EVENT_CODE, + ">' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE, + ); + + $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_PRE] = array("
                            "    => PHPDOCUMENTOR_PDP_EVENT_PRE,
                            +                "

                            " => PHPDOCUMENTOR_PDP_EVENT_P, + "" => PHPDOCUMENTOR_PDP_EVENT_VAR, + "" => PHPDOCUMENTOR_PDP_EVENT_SAMP, + "" => PHPDOCUMENTOR_PDP_EVENT_KBD, + "

                              " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "" => PHPDOCUMENTOR_PDP_EVENT_B, + "" => PHPDOCUMENTOR_PDP_EVENT_I, + " PHPDOCUMENTOR_PDP_EVENT_BR, + "\n" => PHPDOCUMENTOR_PDP_EVENT_DOUBLECR, + '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE, + ); +########################## + $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_CODE] = + array( + '<>' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE, + ); + + $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_CODE] = array(""); +########################## + $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_PRE] = + array( + '<
                        "); +########################## + + $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_BR] = array(">","/>"); +########################## + $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_P] = + array( + "" => PHPDOCUMENTOR_PDP_EVENT_CODE, + "
                          " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                            " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "" => PHPDOCUMENTOR_PDP_EVENT_VAR, + "" => PHPDOCUMENTOR_PDP_EVENT_SAMP, + "" => PHPDOCUMENTOR_PDP_EVENT_KBD, + "
                            " => PHPDOCUMENTOR_PDP_EVENT_PRE,
                            +                "" => PHPDOCUMENTOR_PDP_EVENT_B,
                            +                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                            +                " PHPDOCUMENTOR_PDP_EVENT_BR,
                            +                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
                            +            );
                            +         
                            +        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_P] = array("

                            "); +########################## + + $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_LIST] = + array( + "
                              " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "" => PHPDOCUMENTOR_PDP_EVENT_CODE, + "" => PHPDOCUMENTOR_PDP_EVENT_VAR, + "" => PHPDOCUMENTOR_PDP_EVENT_SAMP, + "" => PHPDOCUMENTOR_PDP_EVENT_KBD, + "" => PHPDOCUMENTOR_PDP_EVENT_B, + "" => PHPDOCUMENTOR_PDP_EVENT_I, + "
                                " => PHPDOCUMENTOR_PDP_EVENT_PRE,
                                +                " PHPDOCUMENTOR_PDP_EVENT_BR,
                                +                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
                                +            );
                                +        
                                +        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_LIST] = array("
                            ","
                        "); +########################## + + $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_SIMLIST] = + array( + "" => PHPDOCUMENTOR_PDP_EVENT_CODE, + "
                        "    => PHPDOCUMENTOR_PDP_EVENT_PRE,
                        +                "

                        " => PHPDOCUMENTOR_PDP_EVENT_P, + "" => PHPDOCUMENTOR_PDP_EVENT_VAR, + "" => PHPDOCUMENTOR_PDP_EVENT_SAMP, + "" => PHPDOCUMENTOR_PDP_EVENT_KBD, + "" => PHPDOCUMENTOR_PDP_EVENT_B, + "" => PHPDOCUMENTOR_PDP_EVENT_I, + " PHPDOCUMENTOR_PDP_EVENT_BR, + '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE, + ); +########################## + + $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_DOUBLECR] = + array( + "" => PHPDOCUMENTOR_PDP_EVENT_CODE, + "

                          " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                            " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                            " => PHPDOCUMENTOR_PDP_EVENT_PRE,
                            +                "" => PHPDOCUMENTOR_PDP_EVENT_B,
                            +                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                            +                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                            +                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                            +                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                            +                " PHPDOCUMENTOR_PDP_EVENT_BR,
                            +                "

                            " => PHPDOCUMENTOR_PDP_EVENT_P, + '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE, + ); + +########################## + $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_B] = + array( + "" => PHPDOCUMENTOR_PDP_EVENT_CODE, + "

                              " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                " => PHPDOCUMENTOR_PDP_EVENT_PRE,
                                +                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                                +                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                                +                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                                +                " PHPDOCUMENTOR_PDP_EVENT_BR,
                                +                '' => PHPDOCUMENTOR_PDP_EVENT_I,
                                +                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
                                +            );
                                +         
                                +        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_B] = array("");
                                +
                                +##########################
                                +        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_I] =
                                +            array(
                                +                "" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                                +                "
                                  " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                    " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                    " => PHPDOCUMENTOR_PDP_EVENT_PRE,
                                    +                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                                    +                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                                    +                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                                    +                " PHPDOCUMENTOR_PDP_EVENT_BR,
                                    +                '' => PHPDOCUMENTOR_PDP_EVENT_B,
                                    +                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
                                    +            );
                                    +         
                                    +        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_I] = array("");
                                    +
                                    +##########################
                                    +        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_VAR] =
                                    +            array(
                                    +                "" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                                    +                "
                                      " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                        " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                        " => PHPDOCUMENTOR_PDP_EVENT_PRE,
                                        +                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                                        +                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                                        +                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                                        +                " PHPDOCUMENTOR_PDP_EVENT_BR,
                                        +                '' => PHPDOCUMENTOR_PDP_EVENT_B,
                                        +                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
                                        +            );
                                        +         
                                        +        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_VAR] = array("");
                                        +
                                        +##########################
                                        +        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_SAMP] =
                                        +            array(
                                        +                "" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                                        +                "
                                          " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                            " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                            " => PHPDOCUMENTOR_PDP_EVENT_PRE,
                                            +                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                                            +                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                                            +                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                                            +                " PHPDOCUMENTOR_PDP_EVENT_BR,
                                            +                '' => PHPDOCUMENTOR_PDP_EVENT_B,
                                            +                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
                                            +            );
                                            +         
                                            +        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_SAMP] = array("");
                                            +
                                            +##########################
                                            +        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_KBD] =
                                            +            array(
                                            +                " PHPDOCUMENTOR_PDP_EVENT_CODE,
                                            +                "
                                              " => PHPDOCUMENTOR_PDP_EVENT_LIST, + "
                                                " => PHPDOCUMENTOR_PDP_EVENT_LIST, + " PHPDOCUMENTOR_PDP_EVENT_PRE, + "" => PHPDOCUMENTOR_PDP_EVENT_VAR, + "" => PHPDOCUMENTOR_PDP_EVENT_SAMP, + "" => PHPDOCUMENTOR_PDP_EVENT_I, + " PHPDOCUMENTOR_PDP_EVENT_BR, + '' => PHPDOCUMENTOR_PDP_EVENT_B, + '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE, + ); + + $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_KBD] = array(""); + } + + function getParserEventName ($value) + { + $lookup = array( + PARSER_EVENT_NOEVENTS => "PARSER_EVENT_NOEVENTS", + PHPDOCUMENTOR_PDP_EVENT_CODE => "PHPDOCUMENTOR_PDP_EVENT_CODE", + PHPDOCUMENTOR_PDP_EVENT_P => "PHPDOCUMENTOR_PDP_EVENT_P", + PHPDOCUMENTOR_PDP_EVENT_B => "PHPDOCUMENTOR_PDP_EVENT_B", + PHPDOCUMENTOR_PDP_EVENT_I => "PHPDOCUMENTOR_PDP_EVENT_I", + PHPDOCUMENTOR_PDP_EVENT_BR => "PHPDOCUMENTOR_PDP_EVENT_BR", + PHPDOCUMENTOR_PDP_EVENT_VAR => "PHPDOCUMENTOR_PDP_EVENT_VAR", + PHPDOCUMENTOR_PDP_EVENT_SAMP => "PHPDOCUMENTOR_PDP_EVENT_SAMP", + PHPDOCUMENTOR_PDP_EVENT_KBD => "PHPDOCUMENTOR_PDP_EVENT_KBD", + PHPDOCUMENTOR_PDP_EVENT_ESCAPE => "PHPDOCUMENTOR_PDP_EVENT_ESCAPE", + PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE => "PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE", + PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE => "PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE", + PHPDOCUMENTOR_PDP_EVENT_DOUBLECR => "PHPDOCUMENTOR_PDP_EVENT_DOUBLECR", + PHPDOCUMENTOR_PDP_EVENT_LIST => "PHPDOCUMENTOR_PDP_EVENT_LIST", + PHPDOCUMENTOR_PDP_EVENT_PRE => "PHPDOCUMENTOR_PDP_EVENT_PRE", + PHPDOCUMENTOR_PDP_EVENT_SIMLIST => "PHPDOCUMENTOR_PDP_EVENT_SIMLIST", + ); + if (isset($lookup[$value])) + return $lookup[$value]; + else return $value; + } +} + +?> -- cgit v1.2.3