home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / xampp-win32-1.6.7-installer.exe / php / PEAR / Text / Diff / Mapped.php next >
Encoding:
PHP Script  |  2008-07-02  |  2.1 KB  |  56 lines

  1. <?php
  2. /**
  3.  * $Horde: framework/Text_Diff/Diff/Mapped.php,v 1.5 2008/01/04 10:07:50 jan Exp $
  4.  *
  5.  * Copyright 2007-2008 The Horde Project (http://www.horde.org/)
  6.  *
  7.  * See the enclosed file COPYING for license information (LGPL). If you did
  8.  * not receive this file, see http://opensource.org/licenses/lgpl-license.php.
  9.  *
  10.  * @package Text_Diff
  11.  * @author  Geoffrey T. Dairiki <dairiki@dairiki.org>
  12.  */
  13. class Text_Diff_Mapped extends Text_Diff {
  14.  
  15.     /**
  16.      * Computes a diff between sequences of strings.
  17.      *
  18.      * This can be used to compute things like case-insensitve diffs, or diffs
  19.      * which ignore changes in white-space.
  20.      *
  21.      * @param array $from_lines         An array of strings.
  22.      * @param array $to_lines           An array of strings.
  23.      * @param array $mapped_from_lines  This array should have the same size
  24.      *                                  number of elements as $from_lines.  The
  25.      *                                  elements in $mapped_from_lines and
  26.      *                                  $mapped_to_lines are what is actually
  27.      *                                  compared when computing the diff.
  28.      * @param array $mapped_to_lines    This array should have the same number
  29.      *                                  of elements as $to_lines.
  30.      */
  31.     function Text_Diff_Mapped($from_lines, $to_lines,
  32.                               $mapped_from_lines, $mapped_to_lines)
  33.     {
  34.         assert(count($from_lines) == count($mapped_from_lines));
  35.         assert(count($to_lines) == count($mapped_to_lines));
  36.  
  37.         parent::Text_Diff($mapped_from_lines, $mapped_to_lines);
  38.  
  39.         $xi = $yi = 0;
  40.         for ($i = 0; $i < count($this->_edits); $i++) {
  41.             $orig = &$this->_edits[$i]->orig;
  42.             if (is_array($orig)) {
  43.                 $orig = array_slice($from_lines, $xi, count($orig));
  44.                 $xi += count($orig);
  45.             }
  46.  
  47.             $final = &$this->_edits[$i]->final;
  48.             if (is_array($final)) {
  49.                 $final = array_slice($to_lines, $yi, count($final));
  50.                 $yi += count($final);
  51.             }
  52.         }
  53.     }
  54.  
  55. }
  56.