Mercurial > hg4j
annotate src/org/tmatesoft/hg/internal/AnnotateFacility.java @ 543:1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Fri, 15 Feb 2013 15:52:03 +0100 | 
| parents | a71a05ec11bc | 
| children | 7f5998a9619d | 
| rev | line source | 
|---|---|
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
2 * Copyright (c) 2013 TMate Software Ltd | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
3 * | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
4 * This program is free software; you can redistribute it and/or modify | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
5 * it under the terms of the GNU General Public License as published by | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
6 * the Free Software Foundation; version 2 of the License. | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
7 * | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
8 * This program is distributed in the hope that it will be useful, | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
11 * GNU General Public License for more details. | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
12 * | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
13 * For information on how to redistribute this software under | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
14 * the terms of a license other than GNU General Public License | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
15 * contact TMate Software at support@hg4j.com | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
16 */ | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
17 package org.tmatesoft.hg.internal; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
18 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
19 import static org.tmatesoft.hg.repo.HgRepository.NO_REVISION; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
20 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
21 import org.tmatesoft.hg.core.Nodeid; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
22 import org.tmatesoft.hg.internal.PatchGenerator.ChunkSequence; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
23 import org.tmatesoft.hg.repo.HgDataFile; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
24 import org.tmatesoft.hg.repo.HgInvalidStateException; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
25 import org.tmatesoft.hg.repo.HgRepository; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
26 import org.tmatesoft.hg.util.CancelledException; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
27 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
28 /** | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
29 * | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
30 * @author Artem Tikhomirov | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
31 * @author TMate Software Ltd. | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
32 */ | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
33 @Experimental(reason="work in progress") | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
34 public class AnnotateFacility { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
35 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
36 public void annotate(HgDataFile df, int changestRevisionIndex, Inspector insp) { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
37 Nodeid fileRev = df.getRepo().getManifest().getFileRevision(changestRevisionIndex, df.getPath()); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
38 int fileRevIndex = df.getRevisionIndex(fileRev); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
39 int[] fileRevParents = new int[2]; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
40 df.parents(fileRevIndex, fileRevParents, null, null); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
41 if (fileRevParents[0] != NO_REVISION && fileRevParents[1] != NO_REVISION) { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
42 // merge | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
43 } else if (fileRevParents[0] == fileRevParents[1]) { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
44 // may be equal iff both are unset | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
45 assert fileRevParents[0] == NO_REVISION; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
46 // everything added | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
47 insp.added(null); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
48 } else { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
49 int soleParent = fileRevParents[0] == NO_REVISION ? fileRevParents[1] : fileRevParents[0]; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
50 assert soleParent != NO_REVISION; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
51 try { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
52 ByteArrayChannel c1, c2; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
53 df.content(soleParent, c1 = new ByteArrayChannel()); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
54 df.content(fileRevIndex, c2 = new ByteArrayChannel()); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
55 int parentChangesetRevIndex = df.getChangesetRevisionIndex(soleParent); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
56 PatchGenerator pg = new PatchGenerator(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
57 pg.init(c1.toArray(), c2.toArray()); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
58 pg.findMatchingBlocks(new BlameBlockInspector(insp)); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
59 } catch (CancelledException ex) { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
60 // TODO likely it was bad idea to throw cancelled exception from content() | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
61 // deprecate and provide alternative? | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
62 HgInvalidStateException ise = new HgInvalidStateException("ByteArrayChannel never throws CancelledException"); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
63 ise.initCause(ex); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
64 throw ise; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
65 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
66 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
67 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
68 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
69 @Callback | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
70 public interface Inspector { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
71 void same(Block block); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
72 void added(AddBlock block); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
73 void changed(ChangeBlock block); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
74 void deleted(DeleteBlock block); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
75 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
76 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
77 public interface Block { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
78 // boolean isMergeRevision(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
79 // int fileRevisionIndex(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
80 // int originFileRevisionIndex(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
81 // String[] lines(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
82 // byte[] data(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
83 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
84 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
85 public interface AddBlock extends Block { | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
86 int insertedAt(); // line index in the old file | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
87 int firstAddedLine(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
88 int totalAddedLines(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
89 String[] addedLines(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
90 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
91 public interface DeleteBlock extends Block { | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
92 int removedAt(); // line index in the new file | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
93 int firstRemovedLine(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
94 int totalRemovedLines(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
95 String[] removedLines(); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
96 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
97 public interface ChangeBlock extends AddBlock, DeleteBlock { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
98 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
99 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
100 static class BlameBlockInspector extends PatchGenerator.DeltaInspector { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
101 private final Inspector insp; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
102 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
103 public BlameBlockInspector(Inspector inspector) { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
104 assert inspector != null; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
105 insp = inspector; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
106 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
107 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
108 @Override | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
109 protected void changed(int s1From, int s1To, int s2From, int s2To) { | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
110 insp.changed(new BlockImpl2(seq1, seq2, s1From, s1To-s1From, s2From, s2To - s2From, s1From, s2From)); | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
111 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
112 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
113 @Override | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
114 protected void added(int s1InsertPoint, int s2From, int s2To) { | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
115 insp.added(new BlockImpl2(null, seq2, -1, -1, s2From, s2To - s2From, s1InsertPoint, -1)); | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
116 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
117 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
118 @Override | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
119 protected void deleted(int s2DeletePoint, int s1From, int s1To) { | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
120 insp.deleted(new BlockImpl2(seq1, null, s1From, s1To - s1From, -1, -1, -1, s2DeletePoint)); | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
121 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
122 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
123 @Override | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
124 protected void unchanged(int s1From, int s2From, int length) { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
125 insp.same(new BlockImpl(seq2, s2From, length)); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
126 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
127 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
128 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
129 static class BlockImpl implements Block { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
130 private final ChunkSequence seq; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
131 private final int start; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
132 private final int length; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
133 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
134 BlockImpl() { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
135 // FIXME delete this cons | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
136 seq = null; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
137 start = length = -1; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
138 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
139 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
140 BlockImpl(ChunkSequence s, int blockStart, int blockLength) { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
141 seq = s; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
142 start = blockStart; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
143 length = blockLength; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
144 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
145 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
146 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
147 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
148 static class BlockImpl2 implements ChangeBlock { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
149 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
150 private final ChunkSequence oldSeq; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
151 private final ChunkSequence newSeq; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
152 private final int s1Start; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
153 private final int s1Len; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
154 private final int s2Start; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
155 private final int s2Len; | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
156 private final int s1InsertPoint; | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
157 private final int s2DeletePoint; | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
158 | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
159 public BlockImpl2(ChunkSequence s1, ChunkSequence s2, int s1Start, int s1Len, int s2Start, int s2Len, int s1InsertPoint, int s2DeletePoint) { | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
160 oldSeq = s1; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
161 newSeq = s2; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
162 this.s1Start = s1Start; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
163 this.s1Len = s1Len; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
164 this.s2Start = s2Start; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
165 this.s2Len = s2Len; | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
166 this.s1InsertPoint = s1InsertPoint; | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
167 this.s2DeletePoint = s2DeletePoint; | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
168 } | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
169 | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
170 public int insertedAt() { | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
171 return s1InsertPoint; | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
172 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
173 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
174 public int firstAddedLine() { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
175 return s2Start; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
176 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
177 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
178 public int totalAddedLines() { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
179 return s2Len; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
180 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
181 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
182 public String[] addedLines() { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
183 return generateLines(totalAddedLines(), firstAddedLine()); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
184 } | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
185 | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
186 public int removedAt() { | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
187 return s2DeletePoint; | 
| 
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
188 } | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
189 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
190 public int firstRemovedLine() { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
191 return s1Start; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
192 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
193 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
194 public int totalRemovedLines() { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
195 return s1Len; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
196 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
197 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
198 public String[] removedLines() { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
199 return generateLines(totalRemovedLines(), firstRemovedLine()); | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
200 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
201 | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
202 private String[] generateLines(int count, int startFrom) { | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
203 String[] rv = new String[count]; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
204 for (int i = 0; i < count; i++) { | 
| 
543
 
1e95f48d9886
Report line index for insertion and deletion, test against 'hg diff' output
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
542 
diff
changeset
 | 
205 rv[i] = String.format("LINE %d", startFrom + i+1); | 
| 
542
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
206 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
207 return rv; | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
208 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
209 } | 
| 
 
a71a05ec11bc
Towards annotate/blame support: general outline of the functionality
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
210 } | 
