Line.class.php (4503B)
1 <?php 2 3 /** 4 * Darstellung einer Zeile in einem Freitext.<br> 5 * <br> 6 * Im Konstruktor wird die Zeile analysiert und es wird festgestellt, was 7 * die Zeile f�r einen Inhalt hat (z.B. ein Listenelement, eine �berschrift, usw.)<br> 8 * 9 * @author Jan Dankert 10 * @version $Revision$ 11 * @package openrat.services 12 */ 13 class Line 14 { 15 var $source; // Der urspr�ngliche Inhalt 16 var $value; // Der textuelle Inhalt (sofern vorhanden) 17 18 var $isDefinition = false; // Definitionseintrag 19 var $isList = false; // nicht-numerierte Liste 20 var $isNumberedList = false; // numerierte Liste 21 var $indent = 0; // Einschubtiefe der Liste 22 23 var $isHeadline = false; // �berschrift 24 var $isHeadlineUnderline = false; // unterstrichene �berschrift 25 var $headlineLevel = 0; // Grad der �berschrift (1,2,3...) 26 27 28 var $isTableOfContent = false; // Inhaltsverzeichnis 29 var $isTable = false; // Tabelle 30 var $isCode = false; // Code 31 var $isQuote = false; // Zitat 32 var $isQuotePraefix = false; // Zitatbeginn/-ende 33 34 var $isUnparsed = false; 35 36 var $isEmpty = false; // Zeile ist leer 37 var $isNormal = false; // Zeile ist ohne besonderen Inhalt, d.h. keine Tabelle, kein Zitat, usw. 38 39 40 41 /** 42 * Erzeugt einen Zeilenobjekt, der Text im Parameter wird dabei geparst. 43 */ 44 function __construct( $s ) 45 { 46 global $conf; 47 $text_markup = $conf['editor']['text-markup']; 48 // Html::debug($text_markup); 49 50 $list_numbered = $text_markup['list-numbered' ]; 51 $list_unnumbered = $text_markup['list-unnumbered']; 52 $headline = $text_markup['headline' ]; 53 54 $this->source = $s; 55 $this->value = $s; 56 57 $this->isList = $this->isAnErsterStelle(ltrim($s),$list_unnumbered); 58 $this->isNumberedList = $this->isAnErsterStelle(ltrim($s),$list_numbered ); 59 $this->indent = strlen($s) - strlen(ltrim($s)) + 1; 60 61 if ( $this->isList || $this->isNumberedList ) 62 $this->value = ltrim(substr($s,$this->indent)); 63 64 $this->level = strspn( $s,$headline ); 65 $this->isHeadline = $this->level >= 1; 66 67 if ( $this->isHeadline ) 68 $this->value = ltrim(substr($s,$this->level)); 69 70 71 $hl = array( 1 => $text_markup['headline_level1_underline'], 72 2 => $text_markup['headline_level2_underline'], 73 3 => $text_markup['headline_level3_underline'] ); 74 75 foreach($hl as $lev=>$char ) 76 { 77 if ( substr($s,0,3*strlen($char))==str_repeat($char,3*strlen($char)) ) 78 { 79 $this->isHeadlineUnderline = true; 80 $this->isNormal = true; 81 $this->level = intval($lev); 82 } 83 } 84 85 if ( $this->isAnErsterStelle($s,$text_markup['table-of-content']) ) 86 { 87 $this->isTableOfContent = true; 88 $this->isNumberedList = false; 89 $this->isList = false; 90 $this->value = ''; 91 } 92 elseif 93 ( $this->isHeadline || 94 $this->isHeadlineUnderline || 95 $this->isList || 96 $this->isNumberedList ) 97 { 98 ; 99 } 100 elseif ( $this->isAnErsterStelle($s,$text_markup['table-cell-sep']) ) 101 { 102 $this->isTable = true; 103 $this->value = ''; 104 } 105 elseif ( $this->isAnErsterStelle($s,$text_markup['pre-begin']) && !$this->isHeadlineUnderline ) 106 { 107 $this->isCode = true; 108 $this->value = substr($s,strlen($text_markup['pre-begin'])); 109 } 110 elseif ( strpos($s, $text_markup['definition-sep'])!== false ) 111 { 112 $this->isDefinition = true; 113 } 114 elseif ( trim($s)==$text_markup['quote-line-begin'] ) 115 { 116 $this->isQuote = true; 117 } 118 elseif ( $this->isAnErsterStelle($s,$text_markup['quote']) && strlen(trim($s))>1 ) 119 { 120 $this->isQuotePraefix = true; 121 $this->value = ltrim(substr($s,strlen($text_markup['quote']))); 122 $this->level = strspn( str_replace(' ','',$s),$text_markup['quote'] ); 123 } 124 elseif ( $this->isAnErsterStelle($s,'`') ) 125 { 126 $this->isUnparsed = true; 127 $this->value = substr($this->value,1); 128 } 129 elseif ( $s == '' ) 130 { 131 $this->isEmpty = true; 132 } 133 else 134 { 135 $this->isNormal = true; 136 } 137 } 138 139 140 /** 141 * Stellt fest, ob $wort am Anfang von $text steht. 142 */ 143 function isAnErsterStelle( $text,$wort ) 144 { 145 // Html::debug($text,"Text"); 146 // Html::debug($wort,"Wort"); 147 // Html::debug(substr($text,0,strlen($wort))==$wort,'Ergebnis'); 148 return substr($text,0,strlen($wort))==$wort; 149 } 150 } 151 152 ?>