repl: refactor code for readability

PR-URL: https://github.com/nodejs/node/pull/17919
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Weijia Wang <starkwang@126.com>
Reviewed-By: Khaidi Chu <i@2333.moe>
Reviewed-By: Jon Moss <me@jonathanmoss.me>
Reviewed-By: Lance Ball <lball@redhat.com>
This commit is contained in:
Ruben Bridgewater 2017-12-30 03:22:01 +01:00
parent 80988f9322
commit 11dda69a33
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762

View File

@ -412,15 +412,10 @@ function REPLServer(prompt,
// Use stdin and stdout as the default streams if none were given
stream = process;
}
if (stream.stdin && stream.stdout) {
// We're given custom object with 2 streams, or the `process` object
input = stream.stdin;
output = stream.stdout;
} else {
// We're given a duplex readable/writable Stream, like a `net.Socket`
input = stream;
output = stream;
}
// We're given a duplex readable/writable Stream, like a `net.Socket`
// or a custom object with 2 streams, or the `process` object
input = stream.stdin || stream;
output = stream.stdout || stream;
}
self.inputStream = input;
@ -770,7 +765,7 @@ REPLServer.prototype.createContext = function() {
Object.defineProperty(context, 'console', {
configurable: true,
enumerable: true,
get: () => _console
value: _console
});
var names = Object.getOwnPropertyNames(global);
@ -1129,19 +1124,16 @@ function complete(line, callback) {
break;
}
}
} catch (e) {
// console.log("completion error walking prototype chain:" + e);
}
} catch (e) {}
}
if (memberGroups.length) {
for (i = 0; i < memberGroups.length; i++) {
completionGroups.push(memberGroups[i].map(function(member) {
return expr + '.' + member;
}));
completionGroups.push(
memberGroups[i].map((member) => `${expr}.${member}`));
}
if (filter) {
filter = expr + '.' + filter;
filter = `${expr}.${filter}`;
}
}
@ -1162,9 +1154,8 @@ function complete(line, callback) {
if (completionGroups.length && filter) {
var newCompletionGroups = [];
for (i = 0; i < completionGroups.length; i++) {
group = completionGroups[i].filter(function(elem) {
return elem.indexOf(filter) === 0;
});
group = completionGroups[i]
.filter((elem) => elem.indexOf(filter) === 0);
if (group.length) {
newCompletionGroups.push(group);
}
@ -1493,55 +1484,33 @@ function isCodeRecoverable(code) {
if (previous === '\\' && (stringLiteral || isRegExpLiteral)) {
current = null;
continue;
}
if (stringLiteral) {
} else if (stringLiteral) {
if (stringLiteral === current) {
stringLiteral = null;
}
continue;
} else {
if (isRegExpLiteral && current === '/') {
isRegExpLiteral = false;
continue;
}
if (isBlockComment && previous === '*' && current === '/') {
isBlockComment = false;
continue;
}
if (isSingleComment && current === '\n') {
isSingleComment = false;
continue;
}
if (isBlockComment || isRegExpLiteral || isSingleComment) continue;
} else if (isRegExpLiteral && current === '/') {
isRegExpLiteral = false;
} else if (isBlockComment && previous === '*' && current === '/') {
isBlockComment = false;
} else if (isSingleComment && current === '\n') {
isSingleComment = false;
} else if (!isBlockComment && !isRegExpLiteral && !isSingleComment) {
if (current === '/' && previous === '/') {
isSingleComment = true;
continue;
}
if (previous === '/') {
} else if (previous === '/') {
if (current === '*') {
isBlockComment = true;
} else if (
// Distinguish between a division operator and the start of a regex
// by examining the non-whitespace character that precedes the /
[null, '(', '[', '{', '}', ';'].includes(prevTokenChar)
) {
} else if ([null, '(', '[', '{', '}', ';'].includes(prevTokenChar)) {
isRegExpLiteral = true;
}
continue;
} else {
if (current.trim()) prevTokenChar = current;
if (current === '\'' || current === '"') {
stringLiteral = current;
}
}
if (current.trim()) prevTokenChar = current;
}
if (current === '\'' || current === '"') {
stringLiteral = current;
}
}