File modules/wikiparser/renderer/TextRenderer.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\renderer; 4 use cms\base\Configuration; 5 use wikiparser\model\LineBreakElement; 6 use wikiparser\model\RawElement; 7 8 /** 9 * Dokument-Objekt.<br> 10 * Diese Objekt verk�rpert das Root-Objekt in einem DOM-Baum.<br> 11 * <br> 12 * Dieses Objekt kann Text parsen und seine Unterobjekte selbst erzeugen.<br> 13 * 14 * @author Jan Dankert, $Author$ 15 * @version $Revision$ 16 * @package openrat.text 17 */ 18 class TextRenderer 19 { 20 var $linkedObjectIds = array(); 21 22 /** 23 * Fu�noten. 24 * 25 * @var Array 26 */ 27 var $footnotes = array(); 28 29 30 /** 31 * Rendert ein Dokument-Element. 32 * 33 * @param Object $child Element 34 * @return String 35 */ 36 function renderElement($child) 37 { 38 $className = strtolower(get_class($child)); 39 $val = ''; 40 41 $length = Configuration::subset(['editor','text'])->get('linelength',70); 42 43 switch ($className) { 44 case 'footnoteelement': 45 46 $nr = 1; 47 foreach ($this->footnotes as $fn) 48 if (strtolower(get_class($fn)) == 'linebreakelement') 49 $nr++; 50 51 $val = $nr; 52 if (Configuration::subset(['editor','footnote'])->is('bracket')) 53 $val = '(' . $nr . ')'; 54 55 if ($nr == 1) { 56 $this->footnotes[] = new RawElement("\n\n---\n"); 57 } 58 $this->footnotes[] = new LineBreakElement(); 59 $this->footnotes[] = new RawElement($val); 60 $this->footnotes[] = new RawElement(' '); 61 foreach ($child->children as $c) 62 $this->footnotes[] = $c; 63 64 $child->children = array(); 65 66 break; 67 68 case 'headlineelement': 69 $val = "\n" . wordwrap($child->text, $length); 70 $val .= str_repeat('-', min($length, strlen($val))); 71 break; 72 73 case 'paragraphelement': 74 $val = "\n\n"; 75 break; 76 77 case 'strongelement': 78 79 foreach ($child->children as $c) 80 $val .= $this->renderElement($c); 81 $val = strtoupper($val); 82 83 $child->children = array(); 84 85 break; 86 87 case 'textelement': 88 $length = Configuration::subset(['editor','text'])->get('linelength',70); 89 $val .= wordwrap($child->text, $length); 90 break; 91 92 case 'linebreakelement': 93 $val .= "\n"; 94 break; 95 default: 96 } 97 98 foreach ($child->children as $c) { 99 $val .= $this->renderElement($c); 100 } 101 102 return $val; 103 104 // die( 'unknown document type: '.$this->type ); 105 106 } 107 108 109 /** 110 * Rendering des Dokumentes.<br> 111 * 112 * @return String 113 */ 114 function render() 115 { 116 $this->renderedText = ''; 117 $this->footnotes = array(); 118 119 foreach ($this->children as $child) 120 $this->renderedText .= $this->renderElement($child); 121 122 foreach ($this->footnotes as $child) 123 $this->renderedText .= $this->renderElement($child); 124 125 return $this->renderedText; 126 } 127 } 128 129 ?>
Download modules/wikiparser/renderer/TextRenderer.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 22:45:05 +0100 Jan Dankert Refactoring: Enable Autoloading, Fix namespace structure. Sat, 16 Dec 2017 23:41:50 +0100 Jan Dankert Der Wikiparser als eigenes Modul (ehem. 'textclasses').