commit 95663e64f14bbac090a5c3e82dfeaf899b7874ee
parent ca0e22149753321d6b6589e45215bc45b0e30e01
Author: dankert <devnull@localhost>
Date: Sun, 26 Nov 2006 22:57:21 +0100
Lesen der Markup-Zeichen aus Konfiguration.
Diffstat:
1 file changed, 55 insertions(+), 28 deletions(-)
diff --git a/serviceClasses/Line.class.php b/serviceClasses/Line.class.php
@@ -1,90 +1,108 @@
<?php
/**
- * @author $Author$
+ * Darstellung einer Zeile in einem Freitext.<br>
+ * <br>
+ * Im Konstruktor wird die Zeile analysiert und es wird festgestellt, was
+ * die Zeile für einen Inhalt hat (z.B. ein Listenelement, eine Überschrift, usw.)<br>
+ *
+ * @author Jan Dankert
* @version $Revision$
* @package openrat.services
*/
class Line
{
- var $source;
- var $value;
+ var $source; // Der ursprüngliche Inhalt
+ var $value; // Der textuelle Inhalt (sofern vorhanden)
- var $isList = false;
- var $isNumberedList = false;
- var $indent = 0;
+ var $isList = false; // nicht-numerierte Liste
+ var $isNumberedList = false; // numerierte Liste
+ var $indent = 0; // Einschubtiefe der Liste
- var $isHeadline = false;
- var $isHeadlineUnderline = false;
- var $headlineLevel = 0;
+ var $isHeadline = false; // Überschrift
+ var $isHeadlineUnderline = false; // unterstrichene Überschrift
+ var $headlineLevel = 0; // Grad der Überschrift (1,2,3...)
- var $isTableOfContent = false;
- var $isTable = false;
- var $isCode = false;
- var $isQuote = false;
- var $isQuotePraefix = false;
+ var $isTableOfContent = false; // Inhaltsverzeichnis
+ var $isTable = false; // Tabelle
+ var $isCode = false; // Code
+ var $isQuote = false; // Zitat
+ var $isQuotePraefix = false; // Zitatbeginn/-ende
var $isUnparsed = false;
- var $isEmpty = false;
+ var $isEmpty = false; // Zeile ist leer
+ /**
+ * Erzeugt einen Zeilenobjekt, der Text im Parameter wird dabei geparst.
+ */
function Line( $s )
{
+ global $conf;
+ $text_markup = $conf['editor']['text-markup'];
+
+ $list_numbered = $text_markup['list-numbered' ];
+ $list_unnumbered = $text_markup['list-unnumbered'];
+ $headline = $text_markup['headline' ];
+
$this->source = $s;
$this->value = $s;
- $this->isList = substr(ltrim($s),0,1) == '-';
- $this->isNumberedList = substr(ltrim($s),0,1) == '#';
- $this->indent = strlen($s)-strlen(ltrim($s))+1;
+ $this->isList = $this->isAnErsterStelle(ltrim($s),$list_unnumbered);
+ $this->isNumberedList = $this->isAnErsterStelle(ltrim($s),$list_numbered );
+ $this->indent = strlen($s) - strlen(ltrim($s)) + 1;
if ( $this->isList || $this->isNumberedList )
$this->value = ltrim(substr($s,$this->indent));
- $this->level = strspn( $s,'+' );
+ $this->level = strspn( $s,$headline );
$this->isHeadline = $this->level >= 1;
if ( $this->isHeadline )
$this->value = ltrim(substr($s,$this->level));
- $hl = array(1=>'=',2=>'-',3=>'.');
+ $hl = array( 1 => $text_markup['headline_level1_underline'],
+ 2 => $text_markup['headline_level2_underline'],
+ 3 => $text_markup['headline_level3_underline'] );
+
foreach($hl as $lev=>$char )
{
- if ( substr($s,0,3)==str_repeat($char,3) )
+ if ( substr($s,0,3*strlen($char))==str_repeat($char,3*strlen($char)) )
{
$this->isHeadlineUnderline = true;
$this->level = intval($lev);
}
}
- if ( substr($s,0,7)=='##TOC##' )
+ if ( $this->isAnErsterStelle($s,$text_markup['table-of-content']) )
{
$this->isTableOfContent = true;
$this->value = '';
}
- elseif ( substr($s,0,1)=='|' )
+ elseif ( $this->isAnErsterStelle($s,$text_markup['table-cell-sep']) )
{
$this->isTable = true;
$this->value = '';
}
- elseif ( substr($s,0,1)=='=' && !$this->isHeadlineUnderline )
+ elseif ( $this->isAnErsterStelle($s,$text_markup['pre-begin']) && !$this->isHeadlineUnderline )
{
$this->isCode = true;
$this->value = '';
}
- elseif ( trim($s)=='>' )
+ elseif ( trim($s)==$text_markup['quote-line-begin'] )
{
$this->isQuote = true;
}
- elseif ( substr($s,0,1)=='>' && strlen(trim($s)>1) )
+ elseif ( $this->isAnErsterStelle($s,$text_markup['quote']) && strlen(trim($s)>1) )
{
$this->isQuotePraefix = true;
- $this->level = strspn( str_replace(' ','',$s),'>' );
+ $this->level = strspn( str_replace(' ','',$s),$text_markup['quote'] );
}
- elseif ( substr($s,0,1)== '`' )
+ elseif ( $this->isAnErsterStelle($s,'`') )
{
$this->isUnparsed = true;
$this->value = substr($this->value,1);
@@ -94,6 +112,15 @@ class Line
$this->isEmpty = true;
}
}
+
+
+ /**
+ * Stellt fest, ob $wort am Anfang von $text steht.
+ */
+ function isAnErsterStelle( $text,$wort )
+ {
+ return substr($text,0,strlen($wort))==$wort;
+ }
}
?>
\ No newline at end of file