set of utility functions
This commit is contained in:
parent
2bca74aae1
commit
f60d437409
65
lib/utils.js
Normal file
65
lib/utils.js
Normal file
@ -0,0 +1,65 @@
|
||||
'use strict';
|
||||
|
||||
exports.and = () => {
|
||||
let state = 0; // idle
|
||||
let total = 0;
|
||||
let start = 0;
|
||||
|
||||
return {
|
||||
onA: (time, cmd) => {
|
||||
switch(state) {
|
||||
case 0: if (cmd === 15) { state = 1; } break;
|
||||
case 1: if (cmd === 14) { state = 0; } break;
|
||||
case 2: if (cmd === 15) { state = 3; start = time; } break;
|
||||
case 3: if (cmd === 14) { state = 2; total += (time - start); start = 0; } break;
|
||||
default: throw new Error();
|
||||
}
|
||||
},
|
||||
onNotA: (time, cmd) => {
|
||||
switch(state) {
|
||||
case 0: if (cmd === 14) { state = 1; } break;
|
||||
case 1: if (cmd === 15) { state = 0; } break;
|
||||
case 2: if (cmd === 14) { state = 3; start = time; } break;
|
||||
case 3: if (cmd === 15) { state = 2; total += (time - start); start = 0; } break;
|
||||
default: throw new Error();
|
||||
}
|
||||
},
|
||||
onB: (time, cmd) => {
|
||||
switch(state) {
|
||||
case 0: if (cmd === 15) { state = 2; } break;
|
||||
case 1: if (cmd === 15) { state = 3; start = time; } break;
|
||||
case 2: if (cmd === 14) { state = 0; } break;
|
||||
case 3: if (cmd === 14) { state = 1; total += (time - start); start = 0; } break;
|
||||
default: throw new Error();
|
||||
}
|
||||
},
|
||||
onNotB: (time, cmd) => {
|
||||
switch(state) {
|
||||
case 0: if (cmd === 14) { state = 2; } break;
|
||||
case 1: if (cmd === 14) { state = 3; start = time; } break;
|
||||
case 2: if (cmd === 15) { state = 0; } break;
|
||||
case 3: if (cmd === 15) { state = 1; total += (time - start); start = 0; } break;
|
||||
default: throw new Error();
|
||||
}
|
||||
},
|
||||
time: () => total + start
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
exports.activity = skip => {
|
||||
let start = 0;
|
||||
let stop = 0;
|
||||
return {
|
||||
on: time => {
|
||||
if (time > skip) {
|
||||
if (start == 0) {
|
||||
start = time;
|
||||
} else {
|
||||
stop = time;
|
||||
}
|
||||
}
|
||||
},
|
||||
time: () => stop - start
|
||||
};
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user