1: <?php
2: /**
3: * "Unified" diff renderer.
4: *
5: * This class renders the diff in classic "unified diff" format.
6: *
7: * Copyright 2004-2012 Horde LLC (http://www.horde.org/)
8: *
9: * See the enclosed file COPYING for license information (LGPL). If you did
10: * not receive this file, see http://www.horde.org/licenses/lgpl21.
11: *
12: * @author Ciprian Popovici
13: * @package Text_Diff
14: */
15: class Horde_Text_Diff_Renderer_Unified extends Horde_Text_Diff_Renderer
16: {
17: /**
18: * Number of leading context "lines" to preserve.
19: */
20: protected $_leading_context_lines = 4;
21:
22: /**
23: * Number of trailing context "lines" to preserve.
24: */
25: protected $_trailing_context_lines = 4;
26:
27: protected function _blockHeader($xbeg, $xlen, $ybeg, $ylen)
28: {
29: if ($xlen != 1) {
30: $xbeg .= ',' . $xlen;
31: }
32: if ($ylen != 1) {
33: $ybeg .= ',' . $ylen;
34: }
35: return "@@ -$xbeg +$ybeg @@";
36: }
37:
38: protected function _context($lines)
39: {
40: return $this->_lines($lines, ' ');
41: }
42:
43: protected function _added($lines)
44: {
45: return $this->_lines($lines, '+');
46: }
47:
48: protected function _deleted($lines)
49: {
50: return $this->_lines($lines, '-');
51: }
52:
53: protected function _changed($orig, $final)
54: {
55: return $this->_deleted($orig) . $this->_added($final);
56: }
57: }
58: