Changeset 3087

Show
Ignore:
Timestamp:
08/09/08 17:12:42 (3 months ago)
Author:
juliens
Message:

Changement de qq noms et ajout du choix pour le cache des tokenizer

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/project/modules/devel/webtools/tracwikicomponents/classes/traccomponentheader.class.php

    r2671 r3087  
    2929    } 
    3030     
    31     public function getStartTagsPos ($pString) { 
     31    public function getStartTagsPosition ($pString) { 
    3232        preg_match_all ('%(=+)\ %', $pString, $matches,  PREG_OFFSET_CAPTURE); 
    3333        $arPos = array (); 
     
    4040    } 
    4141     
    42     public function startWithEndTag ($pString, $pToken) { 
     42    public function getEndingTag ($pString, $pToken) { 
    4343        if ($pToken == null) { 
    4444            return false; 
  • trunk/project/modules/devel/webtools/tracwikicomponents/classes/traccomponentlink.class.php

    r2622 r3087  
    1515    protected $_endTag = ']'; 
    1616    protected $_mustBeParse = false; 
     17     
    1718    public function render ($pText, $pToken) { 
    1819        $data = explode (' ', $pText,2); 
  • trunk/project/modules/devel/webtools/tracwikicomponents/classes/traccomponentparagraphe.class.php

    r2670 r3087  
    2121    protected $_isContainerComponent = false; 
    2222     
     23    public function getStartTagsPosition ($pString) { 
     24        return false; 
     25    } 
    2326     
    24     public function startWithStartTag ($pString) { 
     27    public function getStartingTag ($pString) { 
    2528        $nl = chr(13).chr(10).chr(13).chr(10); 
    26          
    2729        if (!strcmp (substr ($pString, 0, 4),$nl)) { 
    2830            return $nl; 
     
    3335     
    3436    public function render ($pText, $pToken) { 
    35         return '</p><p>'; 
     37        return '</p>-------------<p>'; 
    3638    } 
    3739} 
  • trunk/project/modules/devel/webtools/tracwikicomponents/classes/traccomponentulli.class.php

    r2679 r3087  
    2929    } 
    3030     
    31     public function getStartTagsPos ($pString) { 
     31    public function getStartTagsPosition ($pString) { 
    3232        preg_match_all ('%\ +\*%', $pString, $matches,  PREG_OFFSET_CAPTURE); 
    3333        $arPos = array (); 
     
    4040    } 
    4141     
    42     public function startWithEndTag ($pString, $pToken) { 
     42    public function getEndingTag ($pString, $pToken) { 
    4343        if (!strcmp(substr ($pString, 0, 2), chr(13).chr(10)) || substr ($pString, 0, 1) == "\n") { 
    4444                $start = $pToken->getStartTag(); 
  • trunk/project/modules/devel/webtools/wikirenderer/actiongroups/default.actiongroup.php

    r2650 r3087  
    2929        $timer->start(); 
    3030        $tokenizer = _class ('wikirenderer|tokenizer'); 
    31         $tokens = $tokenizer->tokenize ($text, $components); 
     31        $tokens = $tokenizer->getTokens ($text, $components); 
    3232         
    3333        $tokenTime = $timer->stop(); 
     
    5353        $timer->start(); 
    5454        $tokenizer = _class ('wikirenderer|tokenizer'); 
    55         $tokens = $tokenizer->tokenize ($text, $components); 
     55        $tokens = $tokenizer->getTokens ($text, $components, false); 
    5656         
    5757        $tokenTime = $timer->stop(); 
  • trunk/project/modules/devel/webtools/wikirenderer/classes/abstracttokenizercomponent.class.php

    r2668 r3087  
    3131    } 
    3232     
    33     public function getStartTagsPos ($pString) { 
     33    public function getStartTagsPosition ($pString) { 
    3434        if ($this->_startTag != null) { 
    3535            $arPos = array (); 
     
    6565     
    6666    public function getLength () { 
    67         if ($this->_startTag != null) { 
    68             return $this->_startLen; 
    69         } 
    70         return null; 
     67        return $this->getStartTagLength(); 
    7168    } 
    7269     
    73     public function startWithStartTag ($pString) { 
     70    public function getStartingTag ($pString) { 
    7471        if (isset ($this->_lineTag) && $this->_lineTag) { 
    7572            if (strcmp ($pString, $this->_startTag) > 1) { 
     
    8582    } 
    8683    
    87     public function startWithEndTag ($pString, $pToken) { 
     84    public function getEndingTag ($pString, $pToken) { 
    8885        return $this->startWithTag($pString, $this->_endTag); 
    8986    } 
  • trunk/project/modules/devel/webtools/wikirenderer/classes/itokenizercomponent.class.php

    r2625 r3087  
    4444     * @return mixed false ou le tag ouvrant 
    4545     */ 
    46     public function startWithStartTag ($pString); 
     46    public function getStartingTag ($pString); 
    4747     
    4848     
     
    5353     * @return mixed false ou le tag fermant 
    5454     */ 
    55     public function startWithEndTag ($pString, $pToken); 
     55    public function getEndingTag ($pString, $pToken); 
    5656     
    5757    /** 
  • trunk/project/modules/devel/webtools/wikirenderer/classes/renderer.class.php

    r2651 r3087  
    3737        $timer = new CopixTimer (); 
    3838        $components = ComponentParseHandler::getInstallComponents(); 
    39         $tokens = $tokenizer->tokenize ($pText, $components); 
     39        $tokens = $tokenizer->getTokens ($pText, $components); 
    4040        $this->_errors = $tokenizer->getErrors(); 
    4141        return _ioClass('wikirenderer|tokenrenderer')->render($tokens, $pType);      
  • trunk/project/modules/devel/webtools/wikirenderer/classes/tokenizer.class.php

    r2668 r3087  
    6363     * @return Token l'arbre de token 
    6464     */ 
    65     public function tokenize ($pString, $arComponents) { 
    66         if (CopixCache::exists(array ($pString, $arComponents))) { 
     65    public function getTokens ($pString, $arComponents, $pUseCache = true) { 
     66        if (CopixCache::exists(array ($pString, $arComponents)) && $pUseCache) { 
    6767            if (CopixCache::exists(array ($pString, $arComponents, 'errors'))) { 
    6868                $this->_errors = CopixCache::read(array ($pString, $arComponents, 'errors')); 
     
    7979        $this->_arPos = array (); 
    8080         
     81        //On crée un tableau qui contiendra les démarrages de composants si ils possédait un getStartTagsPosition 
    8182        foreach ($this->_components as $component) { 
    82             if (($arPos = $component->getStartTagsPos ($this->_string)) !== false) { 
     83            if (($arPos = $component->getStartTagsPosition ($this->_string)) !== false) { 
    8384                foreach ($arPos as $pos=>$tag) { 
    8485                    if (!isset ($this->_arPos[$pos]) || strlen ($tag) > strlen ($this->_arPos[$pos]->tag)) { 
     
    108109            //Fermeture de token ? 
    109110            if ($this->_findEndTag()) { 
    110                 //La recherche a mise a jour _string pour continuer le parsing 
     111                //La recherche a mise a jour _position pour continuer le parsing 
    111112                continue; 
    112113            } 
     
    114115            //Ouverture de token ? 
    115116            if ($this->_findStartTag()) { 
    116                 //La recherche a mise a jour _string pour continuer le parsing 
     117                //La recherche a mise a jour _position pour continuer le parsing 
    117118                continue; 
    118119            } 
     
    124125        //On mets la fin du buffer a la fin du noeud courant 
    125126        $this->_bufferFlush(); 
     127        //Ecriture des caches 
    126128        CopixCache::write (array ($pString, $arComponents), $document); 
    127129        CopixCache::write (array ($pString, $arComponents, 'errors'), $this->_errors); 
     
    146148        //*/ 
    147149        while ($this->_position < $this->_length) { 
    148             if (($data = $this->_currentToken->getComponent()->startWithEndTag (substr ($this->_string,$this->_position), $this->_currentToken)) !== false) { 
     150            if (($data = $this->_currentToken->getComponent()->getEndingTag (substr ($this->_string,$this->_position), $this->_currentToken)) !== false) { 
    149151                $this->_bufferFlush(); 
    150152                $this->_currentToken->setEndTag ($data); 
     
    173175                //Si c'est le bon tag on voit pour le fermer 
    174176                if (($openTagParsing->getComponent() != null  
    175                 && ($data = $openTagParsing->getComponent()->startWithEndTag ($string, $openTagParsing)) !== false)) { 
     177                && ($data = $openTagParsing->getComponent()->getEndingTag ($string, $openTagParsing)) !== false)) { 
    176178                    $this->_bufferFlush(); 
    177179                     
     
    181183                    $name = get_class($openTagParsing->getComponent()); 
    182184                    $this->_currentToken = $openTagParsing->getParent (); 
     185                    //On parcours les tags non fermé (en erreur) 
    183186                    foreach (array_reverse ($arTemp) as $tag) { 
    184187                        $childName = get_class($tag->getComponent()); 
     
    192195                //Ce n'est pas le bon on test le précédent 
    193196                } else { 
     197                    //On stock les tags qui auraient du etre fermé 
    194198                    $arTemp [] = $openTagParsing; 
    195199                    $openTagParsing = $openTagParsing->getParent(); 
     
    201205     
    202206     
     207    private function _putStartTag ($pData, $pComponent) { 
     208        $this->_bufferFlush(); 
     209        $this->_position += $pComponent->getStartTagLength ($pData); 
     210        $this->_bPosition = $this->_position; 
     211        $start = TokenFactory::create ($this->_currentToken, $pComponent); 
     212        $start->setStartTag ($pData); 
     213         
     214        $this->_currentToken->addChild ($start); 
     215         
     216        if ($pComponent->isEscapeComponent ()) { 
     217            return $this->_tryToEscape ($start); 
     218        } 
     219         
     220        if (!$pComponent->isContainerComponent()) { 
     221            return true; 
     222        } 
     223         
     224        $this->_currentToken = $start; 
     225        if (!$pComponent->contentMustBeParse()) { 
     226            $this->_waitForCloseTag (); 
     227            return true; 
     228        } 
     229        return true; 
     230    } 
     231     
    203232    /** 
    204233     * Méthode qui cherche si la chaine courante commence par un tag d'ouverture 
     
    208237    private function _findStartTag () { 
    209238        //Boucle pour tester les ouvertures 
     239            //Si cette position est marqué comme une position de départ deja trouvé 
    210240            if (isset ($this->_arPos[$this->_position])) { 
    211241                $component = $this->_arPos[$this->_position]->component; 
    212242                $data = $this->_arPos[$this->_position]->tag; 
    213                 $this->_bufferFlush(); 
    214                 $this->_position += $component->getStartTagLength ($data); 
    215                 $this->_bPosition = $this->_position; 
    216                 $start = TokenFactory::create ($this->_currentToken, $component); 
    217                 $start->setStartTag ($data); 
    218                  
    219                 $this->_currentToken->addChild ($start); 
    220                  
    221                 if ($component->isEscapeComponent ()) { 
    222                     return $this->_tryToEscape ($start); 
    223                 } 
    224                  
    225                 if (!$component->isContainerComponent()) { 
    226                     return true; 
    227                 } 
    228                  
    229                 $this->_currentToken = $start; 
    230                 if (!$component->contentMustBeParse()) { 
    231                     $this->_waitForCloseTag (); 
    232                     return true; 
    233                 } 
    234                 return true; 
     243                return $this->_putStartTag ($data, $component); 
    235244            } 
    236245         
    237246            $string = substr ($this->_string, $this->_position); 
    238247            foreach ($this->_componentsToParse as $component) { 
    239                 if (($data = $component->startWithStartTag ($string)) != false) { 
    240                     $this->_bufferFlush(); 
    241                     $this->_position += $component->getStartTagLength ($data); 
    242                     $this->_bPosition = $this->_position; 
    243                     $start = TokenFactory::create ($this->_currentToken, $component); 
    244                     $start->setStartTag ($data); 
    245                      
    246                     $this->_currentToken->addChild ($start); 
    247                      
    248                     if ($component->isEscapeComponent ()) { 
    249                         return $this->_tryToEscape ($start); 
    250                     } 
    251                      
    252                     if (!$component->isContainerComponent()) { 
    253                         return true; 
    254                     } 
    255                      
    256                     $this->_currentToken = $start; 
    257                     if (!$component->contentMustBeParse()) { 
    258                         $this->_waitForCloseTag (); 
    259                         return true; 
    260                     } 
    261                     return true; 
     248                if (($data = $component->getStartingTag ($string)) != false) { 
     249                    $this->_putStartTag ($data, $component); 
     250                    return $this->_putStartTag ($data, $component); 
    262251                } 
    263252            } 
     
    279268        $string = substr ($this->_string, $this->_position); 
    280269        foreach ($this->_components as $componentToEscape) { 
    281             if (($data = $componentToEscape->startWithStartTag ($string)) !== false) { 
     270            if (($data = $componentToEscape->getStartingTag ($string)) !== false) { 
    282271                $this->_currentToken->addChild (TokenFactory::create ($this->_currentToken, 'text', $data)); 
    283272                $this->_position += $componentToEscape->getEndTagLength ($data); 
    284273                return true; 
    285             } else if ($componentToEscape->isContainerComponent() && ($data = $componentToEscape->startWithEndTag ($string, null)) !== false) { 
     274            } else if ($componentToEscape->isContainerComponent() && ($data = $componentToEscape->getEndingTag ($string, null)) !== false) { 
    286275                $this->_currentToken->addChild (TokenFactory::create ($this->_currentToken, 'text', $data)); 
    287276                $this->_position += $componentToEscape->getEndTagLength ($data);