MediaWiki  REL1_24
ArrayDiffFormatter.php
Go to the documentation of this file.
00001 <?php
00031 class ArrayDiffFormatter extends DiffFormatter {
00032 
00038     public function format( $diff ) {
00039         $oldline = 1;
00040         $newline = 1;
00041         $retval = array();
00042         foreach ( $diff->getEdits() as $edit ) {
00043             switch ( $edit->getType() ) {
00044                 case 'add':
00045                     foreach ( $edit->getClosing() as $line ) {
00046                         $retval[] = array(
00047                             'action' => 'add',
00048                             'new' => $line,
00049                             'newline' => $newline++
00050                         );
00051                     }
00052                     break;
00053                 case 'delete':
00054                     foreach ( $edit->getOrig() as $line ) {
00055                         $retval[] = array(
00056                             'action' => 'delete',
00057                             'old' => $line,
00058                             'oldline' => $oldline++,
00059                         );
00060                     }
00061                     break;
00062                 case 'change':
00063                     foreach ( $edit->getOrig() as $key => $line ) {
00064                         $retval[] = array(
00065                             'action' => 'change',
00066                             'old' => $line,
00067                             'new' => $edit->getClosing( $key ),
00068                             'oldline' => $oldline++,
00069                             'newline' => $newline++,
00070                         );
00071                     }
00072                     break;
00073                 case 'copy':
00074                     $oldline += count( $edit->getOrig() );
00075                     $newline += count( $edit->getOrig() );
00076             }
00077         }
00078 
00079         return $retval;
00080     }
00081 
00082 }