Line.class.php

gehe zur Dokumentation dieser Datei
00001 <?php
00002 
00013 class Line
00014 {
00015      var $source;                       // Der ursprüngliche Inhalt
00016      var $value;                        // Der textuelle Inhalt (sofern vorhanden)
00017      
00018      var $isDefinition   = false;       // Definitionseintrag
00019      var $isList         = false;       // nicht-numerierte Liste
00020      var $isNumberedList = false;       // numerierte Liste
00021      var $indent         = 0;           // Einschubtiefe der Liste
00022      
00023      var $isHeadline          = false;  // Überschrift
00024      var $isHeadlineUnderline = false;  // unterstrichene Überschrift
00025      var $headlineLevel       = 0;      // Grad der Überschrift (1,2,3...)
00026      
00027      
00028      var $isTableOfContent = false;     // Inhaltsverzeichnis
00029      var $isTable          = false;       // Tabelle
00030      var $isCode           = false;       // Code
00031      var $isQuote          = false;       // Zitat
00032      var $isQuotePraefix   = false;       // Zitatbeginn/-ende
00033      
00034      var $isUnparsed     = false;
00035      
00036      var $isEmpty        = false;       // Zeile ist leer
00037      var $isNormal       = false;       // Zeile ist ohne besonderen Inhalt, d.h. keine Tabelle, kein Zitat, usw.
00038 
00039      
00040      
00044      function Line( $s )
00045      {
00046           global $conf;
00047           $text_markup = $conf['editor']['text-markup'];
00048 //        Html::debug($text_markup); 
00049           
00050           $list_numbered   = $text_markup['list-numbered'  ];
00051           $list_unnumbered = $text_markup['list-unnumbered'];
00052           $headline        = $text_markup['headline'       ];
00053           
00054           $this->source = $s;
00055           $this->value  = $s;
00056           
00057           $this->isList         = $this->isAnErsterStelle(ltrim($s),$list_unnumbered);
00058           $this->isNumberedList = $this->isAnErsterStelle(ltrim($s),$list_numbered  );
00059           $this->indent         = strlen($s) - strlen(ltrim($s)) + 1;
00060 
00061           if   ( $this->isList || $this->isNumberedList )
00062                $this->value = ltrim(substr($s,$this->indent));
00063 
00064           $this->level      = strspn( $s,$headline );
00065           $this->isHeadline = $this->level >= 1;
00066 
00067           if   ( $this->isHeadline )
00068                $this->value = ltrim(substr($s,$this->level));
00069 
00070 
00071           $hl = array( 1 => $text_markup['headline_level1_underline'],
00072                        2 => $text_markup['headline_level2_underline'],
00073                        3 => $text_markup['headline_level3_underline'] );
00074                        
00075           foreach($hl as $lev=>$char )
00076           {
00077                if   ( substr($s,0,3*strlen($char))==str_repeat($char,3*strlen($char)) )
00078                {
00079                     $this->isHeadlineUnderline = true;
00080                     $this->isNormal            = true;
00081                     $this->level               = intval($lev);
00082                }
00083           }
00084           
00085           if   ( $this->isAnErsterStelle($s,$text_markup['table-of-content']) )
00086           {
00087                $this->isTableOfContent  = true;
00088                $this->isNumberedList    = false;
00089                $this->isList    = false;
00090                $this->value             = '';
00091           }
00092           elseif
00093                ( $this->isHeadline          ||
00094                 $this->isHeadlineUnderline ||
00095                 $this->isList              ||
00096                 $this->isNumberedList         )
00097           {
00098                ;
00099           }
00100           elseif    ( $this->isAnErsterStelle($s,$text_markup['table-cell-sep']) )
00101           {
00102                $this->isTable           = true;
00103                $this->value             = '';
00104           }
00105           elseif    ( $this->isAnErsterStelle($s,$text_markup['pre-begin']) && !$this->isHeadlineUnderline )
00106           {
00107                $this->isCode            = true;
00108                $this->value             = substr($s,strlen($text_markup['pre-begin']));
00109           }
00110           elseif    ( strpos($s, $text_markup['definition-sep'])!== false )
00111           {
00112                $this->isDefinition = true;
00113           }
00114           elseif    ( trim($s)==$text_markup['quote-line-begin'] )
00115           {
00116                $this->isQuote           = true;
00117           }
00118           elseif    ( $this->isAnErsterStelle($s,$text_markup['quote']) && strlen(trim($s))>1 )
00119           {
00120                $this->isQuotePraefix = true;
00121                $this->value = ltrim(substr($s,strlen($text_markup['quote'])));
00122                $this->level = strspn( str_replace(' ','',$s),$text_markup['quote'] );
00123           }
00124           elseif    ( $this->isAnErsterStelle($s,'`') )
00125           {
00126                $this->isUnparsed = true;
00127                $this->value      = substr($this->value,1);
00128           }
00129           elseif    (  $s == '' )
00130           {
00131                $this->isEmpty  = true;
00132           }
00133           else
00134           {
00135                $this->isNormal = true;
00136           }
00137      }
00138 
00139 
00143      function isAnErsterStelle( $text,$wort )
00144      {
00145 //        Html::debug($text,"Text");
00146 //        Html::debug($wort,"Wort");
00147 //        Html::debug(substr($text,0,strlen($wort))==$wort,'Ergebnis');
00148           return substr($text,0,strlen($wort))==$wort;
00149      }
00150 }
00151 
00152 ?>

Erzeugt am Thu May 14 00:55:49 2009 für OpenRat von  doxygen 1.5.8