50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace dokuwiki\Parsing\Handler;
 | 
						|
 | 
						|
class Preformatted extends AbstractRewriter
 | 
						|
{
 | 
						|
 | 
						|
    protected $pos;
 | 
						|
    protected $text ='';
 | 
						|
 | 
						|
    /** @inheritdoc */
 | 
						|
    public function finalise()
 | 
						|
    {
 | 
						|
        $last_call = end($this->calls);
 | 
						|
        $this->writeCall(array('preformatted_end',array(), $last_call[2]));
 | 
						|
 | 
						|
        $this->process();
 | 
						|
        $this->callWriter->finalise();
 | 
						|
        unset($this->callWriter);
 | 
						|
    }
 | 
						|
 | 
						|
    /** @inheritdoc */
 | 
						|
    public function process()
 | 
						|
    {
 | 
						|
        foreach ($this->calls as $call) {
 | 
						|
            switch ($call[0]) {
 | 
						|
                case 'preformatted_start':
 | 
						|
                    $this->pos = $call[2];
 | 
						|
                    break;
 | 
						|
                case 'preformatted_newline':
 | 
						|
                    $this->text .= "\n";
 | 
						|
                    break;
 | 
						|
                case 'preformatted_content':
 | 
						|
                    $this->text .= $call[1][0];
 | 
						|
                    break;
 | 
						|
                case 'preformatted_end':
 | 
						|
                    if (trim($this->text)) {
 | 
						|
                        $this->callWriter->writeCall(array('preformatted', array($this->text), $this->pos));
 | 
						|
                    }
 | 
						|
                    // see FS#1699 & FS#1652, add 'eol' instructions to ensure proper triggering of following p_open
 | 
						|
                    $this->callWriter->writeCall(array('eol', array(), $this->pos));
 | 
						|
                    $this->callWriter->writeCall(array('eol', array(), $this->pos));
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        return $this->callWriter;
 | 
						|
    }
 | 
						|
}
 |