63 lines
1.3 KiB
JavaScript
63 lines
1.3 KiB
JavaScript
var c = require('../')();
|
|
c.pipe(process.stdout);
|
|
c.on('^C', process.exit);
|
|
|
|
var queue = (function () {
|
|
var tasks = [];
|
|
var pending = false;
|
|
|
|
return {
|
|
abort : function () {
|
|
tasks = [];
|
|
next();
|
|
},
|
|
push : function (t) {
|
|
tasks.push(t);
|
|
if (!pending) next();
|
|
}
|
|
};
|
|
|
|
function next () {
|
|
pending = true;
|
|
process.nextTick(function () {
|
|
if (tasks.length === 0) return;
|
|
var t = tasks.shift();
|
|
t();
|
|
pending = false;
|
|
next();
|
|
});
|
|
}
|
|
})();
|
|
|
|
process.stdout.on('resize', draw);
|
|
draw();
|
|
setInterval(function () {}, 1e8);
|
|
|
|
function draw () {
|
|
var cols = process.stdout.columns;
|
|
var rows = process.stdout.rows;
|
|
queue.abort();
|
|
|
|
queue.push(function () {
|
|
c.reset();
|
|
c.background('blue');
|
|
c.position(1, 1);
|
|
c.write(Array(cols + 1).join(' '));
|
|
});
|
|
|
|
for (var y = 1; y < rows; y++) {
|
|
queue.push(function () {
|
|
c.position(1, y);
|
|
c.write(' ');
|
|
c.position(cols, y);
|
|
c.write(' ');
|
|
});
|
|
}
|
|
|
|
queue.push(function () {
|
|
c.position(1, rows);
|
|
c.write(Array(cols + 1).join(' '));
|
|
c.display('reset');
|
|
});
|
|
}
|