-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.js
executable file
·82 lines (73 loc) · 2.03 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
'use strict';
var readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
var parser = require('./parser');
var rules = require('./rules');
//A single delimited line can be broken down by the
//parser using the properties.
//Ex. Bet:P:5,6:5
// would be broken down as follows:
// rule = bet, product = W, selections = 5,6, stake = 5
parser.setDelimeter(':');
parser.setProperties({
Bet:
[
{ product: '[WPE]{1}' },
{ selections:
{ product:
{ W: '\\d+',
P: '\\d+',
E: '\\d+,\\d+'
}
}
},
{ stake: '\\d+' }
],
Result:
[
{ first: '\\d+'},
{ second: '\\d+'},
{ third: '\\d+'},
]
});
//by default, the dividends are derived from total stakes, otherwise, define the rule for dividends in relation to total stakes.
rules.setProperties({
W: { name: 'Win', commission: 0.15 },
P: { name: 'Place', commission: 0.12,
dividends: function(totalStakes) {
return totalStakes / 3;
}
},
E: { name: 'Exacta', commission: 0.18 },
});
rules.on('Win', function(key, result) {
var dividends = this.calculateDividends(key, result.first);
display('Win', result.first, dividends);
});
rules.on('Place', function(key, result) {
for (var resultKey in result) {
var place = result[resultKey];
var dividends = this.calculateDividends(key, place);
display('Place', place, dividends);
}
});
rules.on('Exacta', function(key, result) {
var selections = result.first + ',' + result.second;
var dividends = this.calculateDividends(key, selections);
display('Exacta', selections, dividends);
});
var display = function(product, selection, dividends) {
console.log("==============");
var dividendOutput = dividends ? "$" + dividends.toFixed(2) : "NONE";
console.log(product + ":" + selection + ":" + dividendOutput);
};
readline.on("line", function(input) {
if (input === 'x') {
readline.close();
return;
}
var values = parser.parse(input);
rules.process(values);
});