From c4103b154f77951b4f1a0af392e7a0fc7a808b96 Mon Sep 17 00:00:00 2001 From: Jackson Tian Date: Thu, 17 Mar 2016 12:23:52 +0800 Subject: [PATCH] lib: refactor code with startsWith/endsWith reduce using RegExp for string test. This pull reuqest replaces various usages of regular expressions in favor of the ES2015 startsWith and endsWith methods. PR-URL: https://github.com/nodejs/node/pull/5753 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Brian White --- lib/_debug_agent.js | 4 ++-- lib/_debugger.js | 2 +- lib/cluster.js | 5 ++--- lib/os.js | 10 +++++----- lib/readline.js | 2 +- lib/repl.js | 2 +- lib/tls.js | 4 ++-- 7 files changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/_debug_agent.js b/lib/_debug_agent.js index 152a7c6..cb4684f 100644 --- a/lib/_debug_agent.js +++ b/lib/_debug_agent.js @@ -119,10 +119,10 @@ Client.prototype._transform = function _transform(data, enc, cb) { while (true) { if (this.state === 'headers') { // Not enough data - if (!/\r\n/.test(this.buffer)) + if (!this.buffer.includes('\r\n')) break; - if (/^\r\n/.test(this.buffer)) { + if (this.buffer.startsWith('\r\n')) { this.buffer = this.buffer.slice(2); this.state = 'body'; continue; diff --git a/lib/_debugger.js b/lib/_debugger.js index 3681ce5..2bb9b78 100644 --- a/lib/_debugger.js +++ b/lib/_debugger.js @@ -1342,7 +1342,7 @@ Interface.prototype.setBreakpoint = function(script, line, } let req; - if (/\(\)$/.test(script)) { + if (script.endsWith('()')) { // setBreakpoint('functionname()'); req = { type: 'function', diff --git a/lib/cluster.js b/lib/cluster.js index 4f7ca58..e4bbd5f 100644 --- a/lib/cluster.js +++ b/lib/cluster.js @@ -237,9 +237,8 @@ function masterInit() { // Without --logfile=v8-%p.log, everything ends up in a single, unusable // file. (Unusable because what V8 logs are memory addresses and each // process has its own memory mappings.) - if (settings.execArgv.some(function(s) { return /^--prof/.test(s); }) && - !settings.execArgv.some(function(s) { return /^--logfile=/.test(s); })) - { + if (settings.execArgv.some((s) => s.startsWith('--prof')) && + !settings.execArgv.some((s) => s.startsWith('--logfile='))) { settings.execArgv = settings.execArgv.concat(['--logfile=v8-%p.log']); } cluster.settings = settings; diff --git a/lib/os.js b/lib/os.js index ddf7cee..42ece99 100644 --- a/lib/os.js +++ b/lib/os.js @@ -24,23 +24,23 @@ exports.platform = function() { return process.platform; }; -const trailingSlashRe = isWindows ? /[^:]\\$/ - : /.\/$/; - exports.tmpdir = function() { var path; if (isWindows) { path = process.env.TEMP || process.env.TMP || (process.env.SystemRoot || process.env.windir) + '\\temp'; + if (path.length > 1 && path.endsWith('\\') && !path.endsWith(':\\')) + path = path.slice(0, -1); } else { path = process.env.TMPDIR || process.env.TMP || process.env.TEMP || '/tmp'; + if (path.length > 1 && path.endsWith('/')) + path = path.slice(0, -1); } - if (trailingSlashRe.test(path)) - path = path.slice(0, -1); + return path; }; diff --git a/lib/readline.js b/lib/readline.js index 8ee1085..7465689 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -330,7 +330,7 @@ Interface.prototype._normalWrite = function(b) { this._line_buffer = null; } if (newPartContainsEnding) { - this._sawReturn = /\r$/.test(string); + this._sawReturn = string.endsWith('\r'); // got one or more newlines; process into "line" events var lines = string.split(lineEnding); diff --git a/lib/repl.js b/lib/repl.js index 0dc8a57..bff3679 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -437,7 +437,7 @@ function REPLServer(prompt, debug('finish', e, ret); self.memory(cmd); - if (e && !self.bufferedCommand && cmd.trim().match(/^npm /)) { + if (e && !self.bufferedCommand && cmd.trim().startsWith('npm ')) { self.outputStream.write('npm should be run outside of the ' + 'node repl, in your normal shell.\n' + '(Press Control-D to exit.)\n'); diff --git a/lib/tls.js b/lib/tls.js index aad17c9..c87929f 100644 --- a/lib/tls.js +++ b/lib/tls.js @@ -60,7 +60,7 @@ exports.checkServerIdentity = function checkServerIdentity(host, cert) { // Create regexp to much hostnames function regexpify(host, wildcards) { // Add trailing dot (make hostnames uniform) - if (!/\.$/.test(host)) host += '.'; + if (!host || !host.endsWith('.')) host += '.'; // The same applies to hostname with more than one wildcard, // if hostname has wildcard when wildcards are not allowed, @@ -129,7 +129,7 @@ exports.checkServerIdentity = function checkServerIdentity(host, cert) { } } else if (cert.subject) { // Transform hostname to canonical form - if (!/\.$/.test(host)) host += '.'; + if (!host || !host.endsWith('.')) host += '.'; // Otherwise check all DNS/URI records from certificate // (with allowed wildcards) -- 2.7.4