Text_Diff_Engine_xdiff::diff()publicWP 1.0

Method of the class: Text_Diff_Engine_xdiff{}

No Hooks.

Return

null. Nothing (null).

Usage

$Text_Diff_Engine_xdiff = new Text_Diff_Engine_xdiff();
$Text_Diff_Engine_xdiff->diff( $from_lines, $to_lines );
$from_lines (required)
-
$to_lines (required)
-

Text_Diff_Engine_xdiff::diff() code WP 6.6.2

function diff($from_lines, $to_lines)
{
    array_walk($from_lines, array('Text_Diff', 'trimNewlines'));
    array_walk($to_lines, array('Text_Diff', 'trimNewlines'));

    /* Convert the two input arrays into strings for xdiff processing. */
    $from_string = implode("\n", $from_lines);
    $to_string = implode("\n", $to_lines);

    /* Diff the two strings and convert the result to an array. */
    $diff = xdiff_string_diff($from_string, $to_string, count($to_lines));
    $diff = explode("\n", $diff);

    /* Walk through the diff one line at a time.  We build the $edits
     * array of diff operations by reading the first character of the
     * xdiff output (which is in the "unified diff" format).
     *
     * Note that we don't have enough information to detect "changed"
     * lines using this approach, so we can't add Text_Diff_Op_changed
     * instances to the $edits array.  The result is still perfectly
     * valid, albeit a little less descriptive and efficient. */
    $edits = array();
    foreach ($diff as $line) {
        if (!strlen($line)) {
            continue;
        }
        switch ($line[0]) {
        case ' ':
            $edits[] = new Text_Diff_Op_copy(array(substr($line, 1)));
            break;

        case '+':
            $edits[] = new Text_Diff_Op_add(array(substr($line, 1)));
            break;

        case '-':
            $edits[] = new Text_Diff_Op_delete(array(substr($line, 1)));
            break;
        }
    }

    return $edits;
}