File tree 1 file changed +20
-3
lines changed
1 file changed +20
-3
lines changed Original file line number Diff line number Diff line change @@ -2,9 +2,21 @@ open Migrate_parsetree;
2
2
3
3
open Lib ;
4
4
5
- let messages = ref ( [] );
5
+ module StringMap = Map . Make ( String );
6
6
7
- let iterator = ExtractionIterator . getIterator(message => (messages := [message, ...messages^ ]) |> ignore );
7
+ let messages = ref (StringMap . empty);
8
+
9
+ let iterator =
10
+ ExtractionIterator . getIterator(message => {
11
+ let {Message . id} = message;
12
+ if (messages^ |> StringMap . mem(id)) {
13
+ Printf . eprintf("Error: duplicate message id: % s \n " , id);
14
+ exit(3 );
15
+ } else {
16
+ messages := messages^ |> StringMap . add(id, message);
17
+ () ;
18
+ };
19
+ });
8
20
9
21
let extractMessages = ast => iterator. structure(iterator, Obj . magic(ast));
10
22
@@ -37,7 +49,12 @@ let rec processDirectory = dir =>
37
49
});
38
50
39
51
let outputJson = () => {
40
- let sortedJsonObjects = messages^ |> List . sort(Message . compare) |> List . map(Message . toJson);
52
+ let sortedJsonObjects =
53
+ messages^
54
+ |> StringMap . bindings
55
+ |> List . map(((_id, message)) => message)
56
+ |> List . sort(Message . compare)
57
+ |> List . map(Message . toJson);
41
58
Yojson . Basic . pretty_to_channel(stdout, ` List (sortedJsonObjects));
42
59
print_newline() ;
43
60
};
You can’t perform that action at this time.
0 commit comments