1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.unparseMarble = void 0;
|
4 | function unparseMarble(result, assignSymbolFn) {
|
5 | var FRAME_TIME_FACTOR = 10;
|
6 | var frames = 0;
|
7 | var marble = '';
|
8 | var isInGroup = false;
|
9 | var groupMembersAmount = 0;
|
10 | var index = 0;
|
11 | var isNextMessageInTheSameFrame = function () {
|
12 | var nextMessage = result[index + 1];
|
13 | return nextMessage && nextMessage.frame === result[index].frame;
|
14 | };
|
15 | result.forEach(function (testMessage, i) {
|
16 | index = i;
|
17 | var framesDiff = testMessage.frame - frames;
|
18 | var emptyFramesAmount = framesDiff > 0 ? framesDiff / FRAME_TIME_FACTOR : 0;
|
19 | marble += '-'.repeat(emptyFramesAmount);
|
20 | if (isNextMessageInTheSameFrame()) {
|
21 | if (!isInGroup) {
|
22 | marble += '(';
|
23 | }
|
24 | isInGroup = true;
|
25 | }
|
26 | switch (testMessage.notification.kind) {
|
27 | case 'N':
|
28 | marble += assignSymbolFn(testMessage.notification);
|
29 | break;
|
30 | case 'E':
|
31 | marble += '#';
|
32 | break;
|
33 | case 'C':
|
34 | marble += '|';
|
35 | break;
|
36 | }
|
37 | if (isInGroup) {
|
38 | groupMembersAmount += 1;
|
39 | }
|
40 | if (!isNextMessageInTheSameFrame() && isInGroup) {
|
41 | marble += ')';
|
42 | isInGroup = false;
|
43 | frames += (groupMembersAmount + 1) * FRAME_TIME_FACTOR;
|
44 | groupMembersAmount = 0;
|
45 | }
|
46 | else {
|
47 | frames = testMessage.frame + FRAME_TIME_FACTOR;
|
48 | }
|
49 | });
|
50 | return marble;
|
51 | }
|
52 | exports.unparseMarble = unparseMarble;
|
53 |
|
\ | No newline at end of file |