Browse Source

readline: remove deprecated methods

This commit removes the deprecated exports getStringWidth(),
stripVTControlCharacters(), and isFullWidthCodePoint(). It also
removes codePointAt() in its entirety, as it was deprecated and
not being used by core.

Refs: https://github.com/nodejs/node/pull/3862
PR-URL: https://github.com/nodejs/node/pull/6423
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
process-exit-stdio-flushing
cjihrig 9 years ago
parent
commit
8a87b29034
  1. 36
      lib/readline.js
  2. 54
      test/parallel/test-readline-interface.js

36
lib/readline.js

@ -10,7 +10,6 @@ const kHistorySize = 30;
const util = require('util'); const util = require('util');
const debug = util.debuglog('readline'); const debug = util.debuglog('readline');
const internalUtil = require('internal/util');
const inherits = util.inherits; const inherits = util.inherits;
const Buffer = require('buffer').Buffer; const Buffer = require('buffer').Buffer;
const EventEmitter = require('events'); const EventEmitter = require('events');
@ -1042,38 +1041,3 @@ function clearScreenDown(stream) {
stream.write('\x1b[0J'); stream.write('\x1b[0J');
} }
exports.clearScreenDown = clearScreenDown; exports.clearScreenDown = clearScreenDown;
/**
* Returns the Unicode code point for the character at the
* given index in the given string. Similar to String.charCodeAt(),
* but this function handles surrogates (code point >= 0x10000).
*/
function codePointAt(str, index) {
var code = str.charCodeAt(index);
var low;
if (0xd800 <= code && code <= 0xdbff) { // High surrogate
low = str.charCodeAt(index + 1);
if (!isNaN(low)) {
code = 0x10000 + (code - 0xd800) * 0x400 + (low - 0xdc00);
}
}
return code;
}
exports.codePointAt = internalUtil.deprecate(codePointAt,
'readline.codePointAt is deprecated. ' +
'Use String.prototype.codePointAt instead.');
exports.getStringWidth = internalUtil.deprecate(getStringWidth,
'getStringWidth is deprecated and will be removed.');
exports.isFullWidthCodePoint = internalUtil.deprecate(isFullWidthCodePoint,
'isFullWidthCodePoint is deprecated and will be removed.');
exports.stripVTControlCharacters = internalUtil.deprecate(
stripVTControlCharacters,
'stripVTControlCharacters is deprecated and will be removed.');

54
test/parallel/test-readline-interface.js

@ -1,9 +1,11 @@
// Flags: --expose_internals
'use strict'; 'use strict';
require('../common'); require('../common');
var assert = require('assert'); const assert = require('assert');
var readline = require('readline'); const readline = require('readline');
var EventEmitter = require('events').EventEmitter; const internalReadline = require('internal/readline');
var inherits = require('util').inherits; const EventEmitter = require('events').EventEmitter;
const inherits = require('util').inherits;
function FakeInput() { function FakeInput() {
EventEmitter.call(this); EventEmitter.call(this);
@ -322,37 +324,31 @@ function isWarned(emitter) {
} }
// wide characters should be treated as two columns. // wide characters should be treated as two columns.
assert.equal(readline.isFullWidthCodePoint('a'.charCodeAt(0)), false); assert.equal(internalReadline.isFullWidthCodePoint('a'.charCodeAt(0)), false);
assert.equal(readline.isFullWidthCodePoint('あ'.charCodeAt(0)), true); assert.equal(internalReadline.isFullWidthCodePoint('あ'.charCodeAt(0)), true);
assert.equal(readline.isFullWidthCodePoint('谢'.charCodeAt(0)), true); assert.equal(internalReadline.isFullWidthCodePoint('谢'.charCodeAt(0)), true);
assert.equal(readline.isFullWidthCodePoint('고'.charCodeAt(0)), true); assert.equal(internalReadline.isFullWidthCodePoint('고'.charCodeAt(0)), true);
assert.equal(readline.isFullWidthCodePoint(0x1f251), true); // surrogate assert.equal(internalReadline.isFullWidthCodePoint(0x1f251), true);
assert.equal(readline.codePointAt('ABC', 0), 0x41); assert.equal(internalReadline.getStringWidth('abcde'), 5);
assert.equal(readline.codePointAt('あいう', 1), 0x3044); assert.equal(internalReadline.getStringWidth('古池や'), 6);
assert.equal(readline.codePointAt('\ud800\udc00', 0), // surrogate assert.equal(internalReadline.getStringWidth('ノード.js'), 9);
0x10000); assert.equal(internalReadline.getStringWidth('你好'), 4);
assert.equal(readline.codePointAt('\ud800\udc00A', 2), // surrogate assert.equal(internalReadline.getStringWidth('안녕하세요'), 10);
0x41); assert.equal(internalReadline.getStringWidth('A\ud83c\ude00BC'), 5);
assert.equal(readline.getStringWidth('abcde'), 5);
assert.equal(readline.getStringWidth('古池や'), 6);
assert.equal(readline.getStringWidth('ノード.js'), 9);
assert.equal(readline.getStringWidth('你好'), 4);
assert.equal(readline.getStringWidth('안녕하세요'), 10);
assert.equal(readline.getStringWidth('A\ud83c\ude00BC'), 5); // surrogate
// check if vt control chars are stripped // check if vt control chars are stripped
assert.equal(readline assert.equal(internalReadline
.stripVTControlCharacters('\u001b[31m> \u001b[39m'), '> '); .stripVTControlCharacters('\u001b[31m> \u001b[39m'), '> ');
assert.equal(readline assert.equal(internalReadline
.stripVTControlCharacters('\u001b[31m> \u001b[39m> '), '> > '); .stripVTControlCharacters('\u001b[31m> \u001b[39m> '), '> > ');
assert.equal(readline assert.equal(internalReadline
.stripVTControlCharacters('\u001b[31m\u001b[39m'), ''); .stripVTControlCharacters('\u001b[31m\u001b[39m'), '');
assert.equal(readline assert.equal(internalReadline
.stripVTControlCharacters('> '), '> '); .stripVTControlCharacters('> '), '> ');
assert.equal(readline.getStringWidth('\u001b[31m> \u001b[39m'), 2); assert.equal(internalReadline.getStringWidth('\u001b[31m> \u001b[39m'), 2);
assert.equal(readline.getStringWidth('\u001b[31m> \u001b[39m> '), 4); assert.equal(internalReadline.getStringWidth('\u001b[31m> \u001b[39m> '), 4);
assert.equal(readline.getStringWidth('\u001b[31m\u001b[39m'), 0); assert.equal(internalReadline.getStringWidth('\u001b[31m\u001b[39m'), 0);
assert.equal(readline.getStringWidth('> '), 2); assert.equal(internalReadline.getStringWidth('> '), 2);
assert.deepStrictEqual(fi.listeners(terminal ? 'keypress' : 'data'), []); assert.deepStrictEqual(fi.listeners(terminal ? 'keypress' : 'data'), []);

Loading…
Cancel
Save