예제 #1
0
파일: Html.php 프로젝트: jkimdon/cohomeals
 function lexer_performAction(&$yy, $yy_, $avoiding_name_collisions, $YY_START = null)
 {
     $YYSTATE = $YY_START;
     switch ($avoiding_name_collisions) {
         case 0:
             //A tag that doesn't need to track state
             if (JisonParser_Html_Handler::isHtmlTag($yy_->yytext) == true) {
                 $yy_->yytext = $this->inlineTag($yy_->yytext);
                 return "HTML_TAG_INLINE";
             }
             //A non-valid html tag, return "<" put the rest back into the parser
             if (isset($yy_->yytext[0])) {
                 $tag = $yy_->yytext;
                 $yy_->yytext = $yy_->yytext[0];
                 $this->unput(substr($tag, 1));
             }
             return 7;
             break;
         case 1:
             //A tag that was left open, and needs to close
             $name = end($this->htmlElementsStack);
             $keyStack = key($this->htmlElementStack);
             end($this->htmlElementStack[$keyStack]);
             $keyElement = key($this->htmlElementStack[$keyStack]);
             $tag =& $this->htmlElementStack[$keyStack][$keyElement];
             $tag['state'] = 'repaired';
             if (!empty($tag['name'])) {
                 $this->unput('</' . $tag['name'] . '>');
             }
             return 7;
             break;
         case 2:
             //A tag that is open and we just found the close for it
             $element = $this->unStackHtmlElement($yy_->yytext);
             if ($this->compareElementClosingToYytext($element, $yy_->yytext) && $this->htmlElementsStackCount == 0) {
                 $yy_->yytext = $element;
                 $this->popState();
                 return "HTML_TAG_CLOSE";
             }
             return 7;
             break;
         case 3:
             //An tag open
             if (JisonParser_Html_Handler::isHtmlTag($yy_->yytext) == true) {
                 if ($this->stackHtmlElement($yy_->yytext)) {
                     if ($this->htmlElementsStackCount == 1) {
                         $this->begin('htmlElement');
                         return "HTML_TAG_OPEN";
                     }
                 }
                 return 7;
             }
             //A non-valid html tag, return the first character in the stack and put the rest back into the parser
             if (isset($yy_->yytext[0])) {
                 $tag = $yy_->yytext;
                 $yy_->yytext = $yy_->yytext[0];
                 $this->unput(substr($tag, 1));
             }
             return 'CONTENT';
             break;
         case 4:
             //A tag that was not opened, needs to be ignored
             return 7;
             break;
         case 5:
             return 7;
             break;
         case 6:
             return 7;
             break;
         case 7:
             if ($this->htmlElementsStackCount == 0 || $this->isStaticTag == true) {
                 return 8;
             }
             return 'CONTENT';
             break;
         case 8:
             return 7;
             break;
         case 9:
             return 5;
             break;
     }
 }
예제 #2
0
파일: Wiki.php 프로젝트: jkimdon/cohomeals
 function lexer_performAction(&$yy, $yy_, $avoiding_name_collisions, $YY_START = null)
 {
     $YYSTATE = $YY_START;
     switch ($avoiding_name_collisions) {
         case 0:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 1:
             if ($this->npStack != true) {
                 return 'CONTENT';
             }
             $this->popState();
             $this->npStack = false;
             $yy_->yytext = $this->noParse($yy_->yytext);
             return 'NO_PARSE_END';
             break;
         case 2:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('np');
             $this->npStack = true;
             return 'NO_PARSE_START';
             break;
         case 3:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 4:
             if ($this->ppStack != true) {
                 return 'CONTENT';
             }
             $this->popState();
             $this->ppStack = false;
             $yy_->yytext = $this->preFormattedText($yy_->yytext);
             return 'PRE_FORMATTED_TEXT_END';
             break;
         case 5:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('pp');
             $this->ppStack = true;
             return 'PRE_FORMATTED_TEXT_START';
             break;
         case 6:
             return 12;
             break;
         case 7:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             return 'DOUBLE_DYNAMIC_VAR';
             break;
         case 8:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             return 'SINGLE_DYNAMIC_VAR';
             break;
         case 9:
             if ($this->isContent(array('linkStack'))) {
                 return 'CONTENT';
             }
             return 'ARGUMENT_VAR';
             break;
         case 10:
             return 55;
             break;
         case 11:
             return 11;
             //For now let individual plugins handle else
             break;
         case 12:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('block');
             return 'BLOCK_START';
             break;
         case 13:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $yy_->yytext = $this->inlinePlugin($yy_->yytext);
             return 'INLINE_PLUGIN';
             break;
         case 14:
             if ($this->npStack == true || $this->ppStack) {
                 return 'CONTENT';
             }
             $this->begin('plugin');
             $this->stackPlugin($yy_->yytext);
             if (count($this->pluginStack) == 1) {
                 return 'PLUGIN_START';
             } else {
                 return 'CONTENT';
             }
             break;
         case 15:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 16:
             $plugin = end($this->pluginStack);
             if ('{' . $plugin['name'] . '}' == $yy_->yytext) {
                 $this->popState();
                 if (!empty($this->pluginStack)) {
                     if (count($this->pluginStack) > 0 && substr($yy_->yytext, 1, -1) == $this->pluginStack[count($this->pluginStack) - 1]['name']) {
                         if (count($this->pluginStack) == 1) {
                             $yy_->yytext = $this->pluginStack[count($this->pluginStack) - 1];
                             $this->pluginStackCount--;
                             array_pop($this->pluginStack);
                             return 'PLUGIN_END';
                         } else {
                             $this->pluginStackCount--;
                             array_pop($this->pluginStack);
                             return 'CONTENT';
                         }
                     }
                 }
             }
             return 'CONTENT';
             break;
         case 17:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 18:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'BLOCK_END';
             break;
         case 19:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('block');
             return 'BLOCK_START';
             break;
         case 20:
             if ($this->isContent() || !empty($this->tableStack)) {
                 return 'CONTENT';
             }
             return 'LINE_END';
             break;
         case 21:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             return 'HORIZONTAL_BAR';
             break;
         case 22:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             return 'FORCED_LINE_END';
             break;
         case 23:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 24:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'BOLD_END';
             break;
         case 25:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('bold');
             return 'BOLD_START';
             break;
         case 26:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 27:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'BOX_END';
             break;
         case 28:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('box');
             return 'BOX_START';
             break;
         case 29:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 30:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'CENTER_END';
             break;
         case 31:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('center');
             return 'CENTER_START';
             break;
         case 32:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 33:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'CODE_END';
             break;
         case 34:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('code');
             return 'CODE_START';
             break;
         case 35:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 36:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'COLOR_END';
             break;
         case 37:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('color');
             return 'COLOR_START';
             break;
         case 38:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 39:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'ITALIC_END';
             break;
         case 40:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('italic');
             return 'ITALIC_START';
             break;
         case 41:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 42:
             if ($this->isContent(array('linkStack'))) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'UNLINK_END';
             break;
         case 43:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('unlink');
             return 'UNLINK_START';
             break;
         case 44:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 45:
             if ($this->isContent(array('linkStack'))) {
                 return 'CONTENT';
             }
             $this->linkStack = false;
             $this->popState();
             return 'LINK_END';
             break;
         case 46:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->linkStack = true;
             $this->begin('link');
             $yy_->yytext = 'external';
             return 'LINK_START';
             break;
         case 47:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 48:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'STRIKE_END';
             break;
         case 49:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('strike');
             return 'STRIKE_START';
             break;
         case 50:
             return 40;
             break;
         case 51:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 52:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             array_pop($this->tableStack);
             return 'TABLE_END';
             break;
         case 53:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('table');
             $this->tableStack[] = true;
             return 'TABLE_START';
             break;
         case 54:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 55:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'TITLE_BAR_END';
             break;
         case 56:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('titleBar');
             return 'TITLE_BAR_START';
             break;
         case 57:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 58:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->popState();
             return 'UNDERSCORE_END';
             break;
         case 59:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->begin('underscore');
             return 'UNDERSCORE_START';
             break;
         case 60:
             $this->conditionStackCount = 0;
             $this->conditionStack = array();
             return 5;
             break;
         case 61:
             if ($this->isContent(array('linkStack'))) {
                 return 'CONTENT';
             }
             $this->linkStack = false;
             $this->popState();
             return 'WIKI_LINK_END';
             break;
         case 62:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->linkStack = true;
             $this->begin('wikiLink');
             $yy_->yytext = array('type' => 'wiki', 'syntax' => $yy_->yytext);
             return 'WIKI_LINK_START';
             break;
         case 63:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->linkStack = true;
             $this->begin('wikiLink');
             $yy_->yytext = array('type' => 'np', 'syntax' => $yy_->yytext);
             return 'WIKI_LINK_START';
             break;
         case 64:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             $this->linkStack = true;
             $this->begin('wikiLink');
             $yy_->yytext = array('syntax' => $yy_->yytext, 'type' => substr($yy_->yytext, 1, -1));
             return 'WIKI_LINK_START';
             break;
         case 65:
             if ($this->isContent()) {
                 return 'CONTENT';
             }
             return 'WIKI_LINK';
             break;
         case 66:
             return 55;
             break;
         case 67:
             if (JisonParser_Html_Handler::isHtmlTag($yy_->yytext)) {
                 return 'HTML_TAG';
             }
             $tag = $yy_->yytext;
             $yy_->yytext = $yy_->yytext[0];
             $this->unput(substr($tag, 1));
             return 'CONTENT';
             break;
         case 68:
             return 20;
             break;
         case 69:
             return 11;
             break;
         case 70:
             return 11;
             break;
         case 71:
             return 11;
             break;
         case 72:
             return 11;
             break;
         case 73:
             return 11;
             break;
         case 74:
             return 55;
             break;
         case 75:
             return 55;
             break;
         case 76:
             return 55;
             break;
         case 77:
             return 55;
             break;
         case 78:
             return 55;
             break;
         case 79:
             return 55;
             break;
         case 80:
             return 55;
             break;
         case 81:
             return 55;
             break;
         case 82:
             return 55;
             break;
         case 83:
             return 55;
             break;
         case 84:
             return 55;
             break;
         case 85:
             return 55;
             break;
         case 86:
             return 55;
             break;
         case 87:
             return 11;
             break;
         case 88:
             return 5;
             break;
     }
 }