wiclear-2007-07-19/inc/classes/PEAR/Text_Diff/Diff/Renderer/unified2.php

<?php

//require_once 'Text/Diff/Renderer.php';

/**
 * "Unified" diff renderer.
 *
 * This class renders the diff in classic "unified diff" format.
 *
 * $Horde: framework/Text_Diff/Diff/Renderer/unified.php,v 1.5 2006/01/08 00:06:57 jan Exp $
 *
 * @package Text_Diff
 */
class Text_Diff_Renderer_unified2 extends Text_Diff_Renderer {

    /**
     * Number of leading context "lines" to preserve.
     */
    var $_leading_context_lines = 4;

    /**
     * Number of trailing context "lines" to preserve.
     */
    var $_trailing_context_lines = 4;

    function _blockHeader($xbeg, $xlen, $ybeg, $ylen)
    {
        if ($xlen != 1) {
            $xbeg .= ',' . $xlen;
        }
        if ($ylen != 1) {
            $ybeg .= ',' . $ylen;
        }
        return "<div>@@ -$xbeg +$ybeg @@</div>". "\n";
    }
    
    function _lines($lines, $prefix = ' ', $sufix = ' ')
    {
        return $prefix . implode("\n$prefix", $lines) .$sufix. "\n";
    }

    function _added($lines)
    {
        return '<div class="difftext">'.$this->_lines($lines, '<div class="final"><tt class="prefix">+</tt>','</div>').'</div>'. "\n";
    }

    function _deleted($lines)
    {
        return '<div class="difftext">'.$this->_lines($lines, '<div class="original"><tt class="prefix">-</tt>','</div>').'</div>'. "\n";
    }
    
    function _addedinline($lines)
    {
        return $this->_lines($lines, '<div class="final"><tt class="prefix">+</tt>','</div>'). "\n";
    }

    function _deletedinline($lines)
    {
        return $this->_lines($lines, '<div class="original"><tt class="prefix">-</tt>','</div>'). "\n";
    }

    function _changed($orig, $final)
    {
        return '<div class="difftext">'.$this->_deletedinline($orig) . $this->_addedinline($final).'</div>'. "\n";
    }
    
    function _context($lines)
    {
        return '<div class="difftext">'.$this->_lines($lines, '<tt class="prefix"> </tt>').'</div>'. "\n";
    }
    
    /*function _lines($lines, $prefix = ' ')
    {   
        $html = '';
        foreach($lines as $line){
            if(is_array($line)){
                $html .= '<div>'.$prefix . implode("\n$prefix", $line)  .'</div>'. "\n";
            }else{
                $html .= '<div>'.$prefix . $line  .'</div>'. "\n";
            }
        }
        return $html;
    }*/
    
    function _startDiff()
    {
        return "\n".'<div id="diff">'."\n";
    }

    function _endDiff()
    {
        return '</div>'."\n";
    }
    
    function _startBlock($header)
    {
        return "\n".'<div class="block">'."\n";
    }

    function _endBlock()
    {
        return '</div>'."\n";
    }

}