-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathapp.js
56 lines (48 loc) · 1.43 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
#!/usr/bin/env node
const keypress = require('keypress');
const fs = require('fs');
const clc = require('cli-color');
// make `process.stdin` begin emitting "keypress" events
keypress(process.stdin);
// import code outputs
let codeBlock;
let codeBlockPlaceBefore = 0;
let codeBlockPlaceAfter = 2;
// if code choice is made, use that
if (process.argv.slice(2).length !== 0) {
let fileName = process.argv.slice(2)[0];
fileName = fileName.replace(/-/g, '');
fs.readFile(`${__dirname}/code/${fileName}.txt`, (err, data) => {
if (err) {
throw err;
}
codeBlock = data.toString();
});
} else {
fs.readFile(`${__dirname}/code/code.txt`, (err, data) => {
if (err) {
throw err;
}
codeBlock = data.toString();
});
}
// set out colors
let msg = clc.xterm(47).bgXterm(0);
process.stdout.write(msg('\u001B[2J\u001B[0;0f'));
// listen for inputs
process.stdin.on('keypress', (ch, key) => {
if (key && key.ctrl && key.name === 'c') {
msg = clc.xterm(0).bgXterm(231);
process.stdout.write(msg('\u001B[2J\u001B[0;0f'));
process.stdin.pause();
}
process.stdout.write(msg(codeBlock.substring(codeBlockPlaceBefore, codeBlockPlaceAfter)));
codeBlockPlaceBefore += 2;
codeBlockPlaceAfter += 2;
if (codeBlock.substring(codeBlockPlaceBefore, codeBlockPlaceAfter).indexOf('};') !== -1) {
codeBlockPlaceBefore = 0;
codeBlockPlaceAfter = 2;
}
});
process.stdin.setRawMode(true);
process.stdin.resume();