Source for file Renderer.php
Documentation is available at Renderer.php
* A class to render Diffs in different formats.
* This class renders the diff in classic diff format. It is intended that
* this class be customized via inheritance, to obtain fancier outputs.
* $Horde: framework/Text_Diff/Diff/Renderer.php,v 1.9 2005/05/04 20:21:52 chuck Exp $
* Number of leading context "lines" to preserve.
* This should be left at zero for this class, but subclasses may want to
* set this to other values.
var $_leading_context_lines = 0;
* Number of trailing context "lines" to preserve.
* This should be left at zero for this class, but subclasses may want to
* set this to other values.
var $_trailing_context_lines = 0;
foreach ($params as $param => $value) {
* Get any renderer parameters.
* @return array All parameters of this renderer object.
* @param Text_Diff $diff A Text_Diff object.
* @return string The formatted output.
$nlead = $this->_leading_context_lines;
$ntrail = $this->_trailing_context_lines;
$output = $this->_startDiff ();
foreach ($diff->getDiff () as $edit) {
if (is_a($edit, 'Text_Diff_Op_copy')) {
if (count($edit->orig ) <= $nlead + $ntrail) {
$block[] = &new Text_Diff_Op_copy ($context);
$output .= $this->_block ($x0, $ntrail + $xi - $x0,
$y0, $ntrail + $yi - $y0,
$x0 = $xi - count($context);
$y0 = $yi - count($context);
$block[] = &new Text_Diff_Op_copy ($context);
$xi += count($edit->orig );
$yi += count($edit->final );
$output .= $this->_block ($x0, $xi - $x0,
return $output . $this->_endDiff ();
function _block ($xbeg, $xlen, $ybeg, $ylen, &$edits)
$output = $this->_startBlock ($this->_blockHeader ($xbeg, $xlen, $ybeg, $ylen));
foreach ($edits as $edit) {
case 'text_diff_op_copy':
$output .= $this->_context ($edit->orig );
$output .= $this->_added ($edit->final );
case 'text_diff_op_delete':
$output .= $this->_deleted ($edit->orig );
case 'text_diff_op_change':
$output .= $this->_changed ($edit->orig , $edit->final );
return $output . $this->_endBlock ();
function _blockHeader ($xbeg, $xlen, $ybeg, $ylen)
$xbeg .= ',' . ($xbeg + $xlen - 1 );
$ybeg .= ',' . ($ybeg + $ylen - 1 );
return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg;
function _startBlock ($header)
function _lines ($lines, $prefix = ' ')
return $prefix . implode(" \n$prefix" , $lines) . "\n";
function _context ($lines)
return $this->_lines ($lines);
return $this->_lines ($lines, '>');
function _deleted ($lines)
return $this->_lines ($lines, '<');
function _changed ($orig, $final)
return $this->_deleted ($orig) . "---\n" . $this->_added ($final);
Documentation generated on Mon, 11 Mar 2019 14:16:38 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.
|