File modules/wikiparser/util/Line.class.php

Last commit: Sun Nov 1 03:08:55 2020 +0100	Jan Dankert	Replaced the calls to "Configuration::rawConfig()" with the OO style calls; Cleanup LoginAction.
1 <?php 2 3 namespace wikiparser\util; 4 use cms\base\Configuration; 5 6 /** 7 * Darstellung einer Zeile in einem Freitext.<br> 8 * <br> 9 * Im Konstruktor wird die Zeile analysiert und es wird festgestellt, was 10 * die Zeile f�r einen Inhalt hat (z.B. ein Listenelement, eine �berschrift, usw.)<br> 11 * 12 * @author Jan Dankert 13 * @version $Revision$ 14 * @package openrat.services 15 */ 16 class Line 17 { 18 var $source; // Der urspr�ngliche Inhalt 19 var $value; // Der textuelle Inhalt (sofern vorhanden) 20 21 var $isDefinition = false; // Definitionseintrag 22 var $isList = false; // nicht-numerierte Liste 23 var $isNumberedList = false; // numerierte Liste 24 var $indent = 0; // Einschubtiefe der Liste 25 26 var $isHeadline = false; // �berschrift 27 var $isHeadlineUnderline = false; // unterstrichene �berschrift 28 var $headlineLevel = 0; // Grad der �berschrift (1,2,3...) 29 30 31 var $isTableOfContent = false; // Inhaltsverzeichnis 32 var $isTable = false; // Tabelle 33 var $isCode = false; // Code 34 var $isQuote = false; // Zitat 35 var $isQuotePraefix = false; // Zitatbeginn/-ende 36 37 var $isUnparsed = false; 38 39 var $isEmpty = false; // Zeile ist leer 40 var $isNormal = false; // Zeile ist ohne besonderen Inhalt, d.h. keine Tabelle, kein Zitat, usw. 41 42 43 /** 44 * Erzeugt einen Zeilenobjekt, der Text im Parameter wird dabei geparst. 45 */ 46 function __construct($s) 47 { 48 $text_markup = Configuration::subset(['editor','text-markup'])->getConfig(); 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 if (substr($s, 0, 3 * strlen($char)) == str_repeat($char, 3 * strlen($char))) { 77 $this->isHeadlineUnderline = true; 78 $this->isNormal = true; 79 $this->level = intval($lev); 80 } 81 } 82 83 if ($this->isAnErsterStelle($s, $text_markup['table-of-content'])) { 84 $this->isTableOfContent = true; 85 $this->isNumberedList = false; 86 $this->isList = false; 87 $this->value = ''; 88 } elseif 89 ($this->isHeadline || 90 $this->isHeadlineUnderline || 91 $this->isList || 92 $this->isNumberedList) { 93 ; 94 } elseif ($this->isAnErsterStelle($s, $text_markup['table-cell-sep'])) { 95 $this->isTable = true; 96 $this->value = ''; 97 } elseif ($this->isAnErsterStelle($s, $text_markup['pre-begin']) && !$this->isHeadlineUnderline) { 98 $this->isCode = true; 99 $this->value = substr($s, strlen($text_markup['pre-begin'])); 100 } elseif (strpos($s, $text_markup['definition-sep']) !== false) { 101 $this->isDefinition = true; 102 } elseif (trim($s) == $text_markup['quote-line-begin']) { 103 $this->isQuote = true; 104 } elseif ($this->isAnErsterStelle($s, $text_markup['quote']) && strlen(trim($s)) > 1) { 105 $this->isQuotePraefix = true; 106 $this->value = ltrim(substr($s, strlen($text_markup['quote']))); 107 $this->level = strspn(str_replace(' ', '', $s), $text_markup['quote']); 108 } elseif ($this->isAnErsterStelle($s, '`')) { 109 $this->isUnparsed = true; 110 $this->value = substr($this->value, 1); 111 } elseif ($s == '') { 112 $this->isEmpty = true; 113 } else { 114 $this->isNormal = true; 115 } 116 } 117 118 119 /** 120 * Stellt fest, ob $wort am Anfang von $text steht. 121 */ 122 function isAnErsterStelle($text, $wort) 123 { 124 // Html::debug($text,"Text"); 125 // Html::debug($wort,"Wort"); 126 // Html::debug(substr($text,0,strlen($wort))==$wort,'Ergebnis'); 127 return substr($text, 0, strlen($wort)) == $wort; 128 } 129 } 130 131 ?>
Download modules/wikiparser/util/Line.class.php
History Sun, 1 Nov 2020 03:08:55 +0100 Jan Dankert Replaced the calls to "Configuration::rawConfig()" with the OO style calls; Cleanup LoginAction. Sat, 26 Sep 2020 10:32:02 +0200 Jan Dankert Refactoring: No global $conf array any more. Sat, 22 Feb 2020 23:58:02 +0100 Jan Dankert Refactoring: Namespacing for module 'util'.