mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
6ac8bdc0ab
Many of the util.is*() methods used to check data types simply compare against a single value or the result of typeof. This commit replaces calls to these methods with equivalent checks. This commit does not touch calls to the more complex methods (isRegExp(), isDate(), etc.). Fixes: https://github.com/iojs/io.js/issues/607 PR-URL: https://github.com/iojs/io.js/pull/647 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
110 lines
2.5 KiB
JavaScript
110 lines
2.5 KiB
JavaScript
'use strict';
|
|
|
|
const util = require('util');
|
|
const net = require('net');
|
|
const TTY = process.binding('tty_wrap').TTY;
|
|
const isTTY = process.binding('tty_wrap').isTTY;
|
|
const inherits = util.inherits;
|
|
const errnoException = util._errnoException;
|
|
|
|
|
|
exports.isatty = function(fd) {
|
|
return isTTY(fd);
|
|
};
|
|
|
|
|
|
// backwards-compat
|
|
exports.setRawMode = util.deprecate(function(flag) {
|
|
if (!process.stdin.isTTY) {
|
|
throw new Error('can\'t set raw mode on non-tty');
|
|
}
|
|
process.stdin.setRawMode(flag);
|
|
}, 'tty.setRawMode: Use `process.stdin.setRawMode()` instead.');
|
|
|
|
|
|
function ReadStream(fd, options) {
|
|
if (!(this instanceof ReadStream))
|
|
return new ReadStream(fd, options);
|
|
|
|
options = util._extend({
|
|
highWaterMark: 0,
|
|
readable: true,
|
|
writable: false,
|
|
handle: new TTY(fd, true)
|
|
}, options);
|
|
|
|
net.Socket.call(this, options);
|
|
|
|
this.isRaw = false;
|
|
this.isTTY = true;
|
|
}
|
|
inherits(ReadStream, net.Socket);
|
|
|
|
exports.ReadStream = ReadStream;
|
|
|
|
ReadStream.prototype.setRawMode = function(flag) {
|
|
flag = !!flag;
|
|
this._handle.setRawMode(flag);
|
|
this.isRaw = flag;
|
|
};
|
|
|
|
|
|
|
|
function WriteStream(fd) {
|
|
if (!(this instanceof WriteStream)) return new WriteStream(fd);
|
|
net.Socket.call(this, {
|
|
handle: new TTY(fd, false),
|
|
readable: false,
|
|
writable: true
|
|
});
|
|
|
|
var winSize = [];
|
|
var err = this._handle.getWindowSize(winSize);
|
|
if (!err) {
|
|
this.columns = winSize[0];
|
|
this.rows = winSize[1];
|
|
}
|
|
}
|
|
inherits(WriteStream, net.Socket);
|
|
exports.WriteStream = WriteStream;
|
|
|
|
|
|
WriteStream.prototype.isTTY = true;
|
|
|
|
|
|
WriteStream.prototype._refreshSize = function() {
|
|
var oldCols = this.columns;
|
|
var oldRows = this.rows;
|
|
var winSize = [];
|
|
var err = this._handle.getWindowSize(winSize);
|
|
if (err) {
|
|
this.emit('error', errnoException(err, 'getWindowSize'));
|
|
return;
|
|
}
|
|
var newCols = winSize[0];
|
|
var newRows = winSize[1];
|
|
if (oldCols !== newCols || oldRows !== newRows) {
|
|
this.columns = newCols;
|
|
this.rows = newRows;
|
|
this.emit('resize');
|
|
}
|
|
};
|
|
|
|
|
|
// backwards-compat
|
|
WriteStream.prototype.cursorTo = function(x, y) {
|
|
require('readline').cursorTo(this, x, y);
|
|
};
|
|
WriteStream.prototype.moveCursor = function(dx, dy) {
|
|
require('readline').moveCursor(this, dx, dy);
|
|
};
|
|
WriteStream.prototype.clearLine = function(dir) {
|
|
require('readline').clearLine(this, dir);
|
|
};
|
|
WriteStream.prototype.clearScreenDown = function() {
|
|
require('readline').clearScreenDown(this);
|
|
};
|
|
WriteStream.prototype.getWindowSize = function() {
|
|
return [this.columns, this.rows];
|
|
};
|