diff -r de56132c008d -r bdac73ed481e includes/diffengine/Renderer.php --- a/includes/diffengine/Renderer.php Sun Mar 28 21:49:26 2010 -0400 +++ b/includes/diffengine/Renderer.php Sun Mar 28 23:10:46 2010 -0400 @@ -11,201 +11,201 @@ */ class Text_Diff_Renderer { - /** - * 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 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; + /** + * 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; - /** - * Constructor. - */ - function Text_Diff_Renderer($params = array()) - { - foreach ($params as $param => $value) { - $v = '_' . $param; - if (isset($this->$v)) { - $this->$v = $value; - } - } - } + /** + * Constructor. + */ + function Text_Diff_Renderer($params = array()) + { + foreach ($params as $param => $value) { + $v = '_' . $param; + if (isset($this->$v)) { + $this->$v = $value; + } + } + } - /** - * Get any renderer parameters. - * - * @return array All parameters of this renderer object. - */ - function getParams() - { - $params = array(); - foreach (get_object_vars($this) as $k => $v) { - if ($k[0] == '_') { - $params[substr($k, 1)] = $v; - } - } + /** + * Get any renderer parameters. + * + * @return array All parameters of this renderer object. + */ + function getParams() + { + $params = array(); + foreach (get_object_vars($this) as $k => $v) { + if ($k[0] == '_') { + $params[substr($k, 1)] = $v; + } + } - return $params; - } + return $params; + } - /** - * Renders a diff. - * - * @param Text_Diff $diff A Text_Diff object. - * - * @return string The formatted output. - */ - function render($diff) - { - $xi = $yi = 1; - $block = false; - $context = array(); + /** + * Renders a diff. + * + * @param Text_Diff $diff A Text_Diff object. + * + * @return string The formatted output. + */ + function render($diff) + { + $xi = $yi = 1; + $block = false; + $context = array(); - $nlead = $this->_leading_context_lines; - $ntrail = $this->_trailing_context_lines; + $nlead = $this->_leading_context_lines; + $ntrail = $this->_trailing_context_lines; - $output = $this->_startDiff(); + $output = $this->_startDiff(); - $diffs = $diff->getDiff(); - foreach ($diffs as $i => $edit) { - if (is_a($edit, 'Text_Diff_Op_copy')) { - if (is_array($block)) { - $keep = $i == count($diffs) - 1 ? $ntrail : $nlead + $ntrail; - if (count($edit->orig) <= $keep) { - $block[] = $edit; - } else { - if ($ntrail) { - $context = array_slice($edit->orig, 0, $ntrail); - $block[] = &new Text_Diff_Op_copy($context); - } - $output .= $this->_block($x0, $ntrail + $xi - $x0, - $y0, $ntrail + $yi - $y0, - $block); - $block = false; - } - } - $context = $edit->orig; - } else { - if (!is_array($block)) { - $context = array_slice($context, count($context) - $nlead); - $x0 = $xi - count($context); - $y0 = $yi - count($context); - $block = array(); - if ($context) { - $block[] = &new Text_Diff_Op_copy($context); - } - } - $block[] = $edit; - } + $diffs = $diff->getDiff(); + foreach ($diffs as $i => $edit) { + if (is_a($edit, 'Text_Diff_Op_copy')) { + if (is_array($block)) { + $keep = $i == count($diffs) - 1 ? $ntrail : $nlead + $ntrail; + if (count($edit->orig) <= $keep) { + $block[] = $edit; + } else { + if ($ntrail) { + $context = array_slice($edit->orig, 0, $ntrail); + $block[] = &new Text_Diff_Op_copy($context); + } + $output .= $this->_block($x0, $ntrail + $xi - $x0, + $y0, $ntrail + $yi - $y0, + $block); + $block = false; + } + } + $context = $edit->orig; + } else { + if (!is_array($block)) { + $context = array_slice($context, count($context) - $nlead); + $x0 = $xi - count($context); + $y0 = $yi - count($context); + $block = array(); + if ($context) { + $block[] = &new Text_Diff_Op_copy($context); + } + } + $block[] = $edit; + } - if ($edit->orig) { - $xi += count($edit->orig); - } - if ($edit->final) { - $yi += count($edit->final); - } - } + if ($edit->orig) { + $xi += count($edit->orig); + } + if ($edit->final) { + $yi += count($edit->final); + } + } - if (is_array($block)) { - $output .= $this->_block($x0, $xi - $x0, - $y0, $yi - $y0, - $block); - } + if (is_array($block)) { + $output .= $this->_block($x0, $xi - $x0, + $y0, $yi - $y0, + $block); + } - return $output . $this->_endDiff(); - } + return $output . $this->_endDiff(); + } - function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) - { - $output = $this->_startBlock($this->_blockHeader($xbeg, $xlen, $ybeg, $ylen)); + function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) + { + $output = $this->_startBlock($this->_blockHeader($xbeg, $xlen, $ybeg, $ylen)); - foreach ($edits as $edit) { - switch (strtolower(get_class($edit))) { - case 'text_diff_op_copy': - $output .= $this->_context($edit->orig); - break; + foreach ($edits as $edit) { + switch (strtolower(get_class($edit))) { + case 'text_diff_op_copy': + $output .= $this->_context($edit->orig); + break; - case 'text_diff_op_add': - $output .= $this->_added($edit->final); - break; + case 'text_diff_op_add': + $output .= $this->_added($edit->final); + break; - case 'text_diff_op_delete': - $output .= $this->_deleted($edit->orig); - break; + case 'text_diff_op_delete': + $output .= $this->_deleted($edit->orig); + break; - case 'text_diff_op_change': - $output .= $this->_changed($edit->orig, $edit->final); - break; - } - } + case 'text_diff_op_change': + $output .= $this->_changed($edit->orig, $edit->final); + break; + } + } - return $output . $this->_endBlock(); - } + return $output . $this->_endBlock(); + } - function _startDiff() - { - return ''; - } + function _startDiff() + { + return ''; + } - function _endDiff() - { - return ''; - } + function _endDiff() + { + return ''; + } - function _blockHeader($xbeg, $xlen, $ybeg, $ylen) - { - if ($xlen > 1) { - $xbeg .= ',' . ($xbeg + $xlen - 1); - } - if ($ylen > 1) { - $ybeg .= ',' . ($ybeg + $ylen - 1); - } + function _blockHeader($xbeg, $xlen, $ybeg, $ylen) + { + if ($xlen > 1) { + $xbeg .= ',' . ($xbeg + $xlen - 1); + } + if ($ylen > 1) { + $ybeg .= ',' . ($ybeg + $ylen - 1); + } - return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg; - } + return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg; + } - function _startBlock($header) - { - return $header . "\n"; - } + function _startBlock($header) + { + return $header . "\n"; + } - function _endBlock() - { - return ''; - } + function _endBlock() + { + return ''; + } - function _lines($lines, $prefix = ' ') - { - return $prefix . implode("\n$prefix", $lines) . "\n"; - } + function _lines($lines, $prefix = ' ') + { + return $prefix . implode("\n$prefix", $lines) . "\n"; + } - function _context($lines) - { - return $this->_lines($lines); - } + function _context($lines) + { + return $this->_lines($lines); + } - function _added($lines) - { - return $this->_lines($lines, '>'); - } + function _added($lines) + { + return $this->_lines($lines, '>'); + } - function _deleted($lines) - { - return $this->_lines($lines, '<'); - } + function _deleted($lines) + { + return $this->_lines($lines, '<'); + } - function _changed($orig, $final) - { - return $this->_deleted($orig) . "---\n" . $this->_added($final); - } + function _changed($orig, $final) + { + return $this->_deleted($orig) . "---\n" . $this->_added($final); + } }