Mercurial Hosting > luan
comparison src/goodjava/util/LineDiff.java @ 1809:90187946d1a4
minor
| author | Franklin Schmidt <fschmidt@gmail.com> | 
|---|---|
| date | Sun, 12 May 2024 17:15:33 -0600 | 
| parents | 69623c62aa34 | 
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| 1808:69623c62aa34 | 1809:90187946d1a4 | 
|---|---|
| 11 public static final char DELETE = '<'; | 11 public static final char DELETE = '<'; | 
| 12 public static final char INSERT = '>'; | 12 public static final char INSERT = '>'; | 
| 13 | 13 | 
| 14 public static class Diff { | 14 public static class Diff { | 
| 15 public final char operation; | 15 public final char operation; | 
| 16 public final int line; | |
| 17 public final String text; | 16 public final String text; | 
| 17 public final int lineOld; | |
| 18 public final int lineNew; | |
| 18 | 19 | 
| 19 private Diff(char operation,String[] lines,int i) { | 20 private Diff(char operation,String line,int iOld,int iNew) { | 
| 20 this.operation = operation; | 21 this.operation = operation; | 
| 21 this.line = i+1; | 22 this.text = line; | 
| 22 this.text = lines[i]; | 23 this.lineOld = iOld + 1; | 
| 24 this.lineNew = iNew + 1; | |
| 23 } | 25 } | 
| 24 } | 26 } | 
| 25 | 27 | 
| 26 public static String[] stringToLines(String s) { | 28 public static String[] stringToLines(String s) { | 
| 27 List<String> list = new ArrayList<String>(); | 29 List<String> list = new ArrayList<String>(); | 
| 65 while (iOld < nOld && iNew < nNew) { | 67 while (iOld < nOld && iNew < nNew) { | 
| 66 if (oldLines[iOld].equals(newLines[iNew])) { | 68 if (oldLines[iOld].equals(newLines[iNew])) { | 
| 67 iOld++; | 69 iOld++; | 
| 68 iNew++; | 70 iNew++; | 
| 69 } else if (opt[iOld+1][iNew] >= opt[iOld][iNew+1]) { | 71 } else if (opt[iOld+1][iNew] >= opt[iOld][iNew+1]) { | 
| 70 diffs.add( new Diff( DELETE, oldLines, iOld++ ) ); | 72 diffs.add( new Diff( DELETE, oldLines[iOld], iOld, iNew ) ); | 
| 73 iOld++; | |
| 71 } else { | 74 } else { | 
| 72 diffs.add( new Diff( INSERT, newLines, iNew++ ) ); | 75 diffs.add( new Diff( INSERT, newLines[iNew], iOld, iNew ) ); | 
| 76 iNew++; | |
| 73 } | 77 } | 
| 74 } | 78 } | 
| 75 | 79 | 
| 76 // dump out one remainder of one string if the other is exhausted | 80 // dump out one remainder of one string if the other is exhausted | 
| 77 while( iOld < nOld ) { | 81 while( iOld < nOld ) { | 
| 78 diffs.add( new Diff( DELETE, oldLines, iOld++ ) ); | 82 diffs.add( new Diff( DELETE, oldLines[iOld], iOld, iNew ) ); | 
| 83 iOld++; | |
| 79 } | 84 } | 
| 80 while( iNew < nNew ) { | 85 while( iNew < nNew ) { | 
| 81 diffs.add( new Diff( INSERT, newLines, iNew++ ) ); | 86 diffs.add( new Diff( INSERT, newLines[iNew], iOld, iNew ) ); | 
| 87 iNew++; | |
| 82 } | 88 } | 
| 83 | 89 | 
| 84 return diffs; | 90 return diffs; | 
| 85 } | 91 } | 
| 86 } | 92 } | 
