lib: refactor code with startsWith/endsWith
authorJackson Tian <shyvo1987@gmail.com>
Thu, 17 Mar 2016 04:23:52 +0000 (12:23 +0800)
committerMyles Borins <mborins@us.ibm.com>
Fri, 8 Apr 2016 21:16:43 +0000 (17:16 -0400)
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 <benjamingr@gmail.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
lib/_debug_agent.js
lib/_debugger.js
lib/cluster.js
lib/os.js
lib/readline.js
lib/repl.js
lib/tls.js

index 152a7c6..cb4684f 100644 (file)
@@ -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;
index 3681ce5..2bb9b78 100644 (file)
@@ -1342,7 +1342,7 @@ Interface.prototype.setBreakpoint = function(script, line,
   }
 
   let req;
-  if (/\(\)$/.test(script)) {
+  if (script.endsWith('()')) {
     // setBreakpoint('functionname()');
     req = {
       type: 'function',
index 4f7ca58..e4bbd5f 100644 (file)
@@ -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;
index ddf7cee..42ece99 100644 (file)
--- 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;
 };
 
index 8ee1085..7465689 100644 (file)
@@ -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);
index 0dc8a57..bff3679 100644 (file)
@@ -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');
index aad17c9..c87929f 100644 (file)
@@ -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)