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 } |