Line.class.php
gehe zur Dokumentation dieser Datei00001 <?php
00002
00013 class Line
00014 {
00015 var $source;
00016 var $value;
00017
00018 var $isDefinition = false;
00019 var $isList = false;
00020 var $isNumberedList = false;
00021 var $indent = 0;
00022
00023 var $isHeadline = false;
00024 var $isHeadlineUnderline = false;
00025 var $headlineLevel = 0;
00026
00027
00028 var $isTableOfContent = false;
00029 var $isTable = false;
00030 var $isCode = false;
00031 var $isQuote = false;
00032 var $isQuotePraefix = false;
00033
00034 var $isUnparsed = false;
00035
00036 var $isEmpty = false;
00037 var $isNormal = false;
00038
00039
00040
00044 function Line( $s )
00045 {
00046 global $conf;
00047 $text_markup = $conf['editor']['text-markup'];
00048
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
00146
00147
00148 return substr($text,0,strlen($wort))==$wort;
00149 }
00150 }
00151
00152 ?>