ILIAS
Release_4_4_x_branch Revision 61816
|
Public Member Functions | |
diff ($from_lines, $to_lines) | |
_diag ($xoff, $xlim, $yoff, $ylim, $nchunks) | |
Divides the Largest Common Subsequence (LCS) of the sequences (XOFF, XLIM) and (YOFF, YLIM) into NCHUNKS approximately equally sized segments. | |
_lcsPos ($ypos) | |
_compareseq ($xoff, $xlim, $yoff, $ylim) | |
Finds LCS of two sequences. | |
_shiftBoundaries ($lines, &$changed, $other_changed) | |
Adjusts inserts/deletes of identical lines to join changes as much as possible. |
Text_Diff_Engine_native::_compareseq | ( | $xoff, | |
$xlim, | |||
$yoff, | |||
$ylim | |||
) |
Finds LCS of two sequences.
The results are recorded in the vectors $this->{x,y}changed[], by storing a 1 in the element for each line that is an insertion or deletion (ie. is not in the LCS).
The subsequence of file 0 is (XOFF, XLIM) and likewise for file 1.
Note that XLIM, YLIM are exclusive bounds. All line numbers are origin-0 and discarded lines are not counted.
Definition at line 558 of file Diff.php.
References _diag().
Referenced by diff().
Text_Diff_Engine_native::_diag | ( | $xoff, | |
$xlim, | |||
$yoff, | |||
$ylim, | |||
$nchunks | |||
) |
Divides the Largest Common Subsequence (LCS) of the sequences (XOFF, XLIM) and (YOFF, YLIM) into NCHUNKS approximately equally sized segments.
Returns (LCS, PTS). LCS is the length of the LCS. PTS is an array of NCHUNKS+1 (X, Y) indexes giving the diving points between sub sequences. The first sub-sequence is contained in (X0, X1), (Y0, Y1), the second in (X1, X2), (Y1, Y2) and so on. Note that (X0, Y0) == (XOFF, YOFF) and (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM).
This function assumes that the first lines of the specified portions of the two files do not match, and likewise that the last lines do not match. The caller must trim matching lines from the beginning and end of the portions it is going to specify.
Definition at line 438 of file Diff.php.
Referenced by _compareseq().
Text_Diff_Engine_native::_lcsPos | ( | $ypos | ) |
Definition at line 519 of file Diff.php.
Referenced by _diag().
Text_Diff_Engine_native::_shiftBoundaries | ( | $lines, | |
& | $changed, | ||
$other_changed | |||
) |
Adjusts inserts/deletes of identical lines to join changes as much as possible.
We do something when a run of changed lines include a line at one end and has an excluded, identical line at the other. We are free to choose which identical line is included. `compareseq' usually chooses the one at the beginning, but usually it is cleaner to consider the following identical line to be the "change".
This is extracted verbatim from analyze.c (GNU diffutils-2.7).
Definition at line 617 of file Diff.php.
References $changed.
Referenced by diff().
Text_Diff_Engine_native::diff | ( | $from_lines, | |
$to_lines | |||
) |
Definition at line 323 of file Diff.php.
References _compareseq(), and _shiftBoundaries().