-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpool2js.js
96 lines (80 loc) · 2.22 KB
/
pool2js.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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
var _ = require('lodash');
var filename = process.argv[2];
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream(filename)
});
var idAndAns = /^([TGE]....) \(([ABCD])\)/i;
var fig = / [Ff]igure ([0-9A-Z\-]+)/;
var quizLib = [];
var quiz = { next: 'id' };
lineReader.on('line', function (line) {
if (quiz.next == 'id') {
var matches = line.match(idAndAns);
if (matches) {
quiz.id = matches[1];
quiz.answer = matches[2].toLowerCase();
quiz.next = 'q';
}
} else if (quiz.next == 'q') {
quiz.q = line.trim();
var figMatches = quiz.q.match(fig);
if (figMatches) {
quiz.p = figMatches[1];
}
quiz.next = 'a';
} else if (quiz.next == 'a') {
if (line.substring(0, 3).toUpperCase() != 'A. ') {
console.error('ERROR A:', quiz.id);
}
quiz.a = line.substring(3).trim();
quiz.next = 'b';
} else if (quiz.next == 'b') {
if (line.substring(0, 3).toUpperCase() != 'B. ') {
console.error('ERROR B:', quiz.id);
}
quiz.b = line.substring(3).trim();
quiz.next = 'c';
} else if (quiz.next == 'c') {
if (line.substring(0, 3).toUpperCase() != 'C. ') {
console.error('ERROR C:', quiz.id);
}
quiz.c = line.substring(3).trim();
quiz.next = 'd';
} else if (quiz.next == 'd') {
if (line.substring(0, 3).toUpperCase() != 'D. ') {
console.error('ERROR D:', quiz.id);
}
quiz.d = line.substring(3).trim();
quiz.next = '~~';
} else if (quiz.next == '~~') {
if (line.substring(0, 2) != '~~') {
console.error('ERROR ~:', quiz.id);
}
quizLib.push(quiz);
quiz = { next: 'id' };
}
}).on('close', function () {
var idx = _.map(quizLib, function (quiz) { return quiz.id; });
var iLib = _.map(quizLib, function (quiz) {
var o = {};
o.id = quiz.id;
o.q = quiz.q;
o.a = quiz.a;
o.b = quiz.b;
o.c = quiz.c;
o.d = quiz.d;
if (quiz.p) {
o.p = 'FCC-' + quiz.p + '.png';
}
var aStr = o.a;
o.a = o[quiz.answer];
o[quiz.answer] = aStr;
return o;
});
var lib = _.keyBy(iLib, 'id');
var quizPool = {
idx: idx,
lib: lib
};
console.log('export default quizPool = ' + JSON.stringify(quizPool, null, 2) + ';');
});