]> git.kaiwu.me - njs.git/commitdiff
Adding support for multiple arguments in console.log().
authorUnknown <xeioex@nginx.com>
Tue, 26 Jun 2018 11:27:33 +0000 (18:27 +0700)
committerUnknown <xeioex@nginx.com>
Tue, 26 Jun 2018 11:27:33 +0000 (18:27 +0700)
njs/njs_shell.c
njs/test/njs_expect_test.exp

index 36bc1334aa0ab26f3745d6e470d03e36f37df815..e014f85e9b482a9afab0e6ba66dc48f000552e49 100644 (file)
@@ -622,20 +622,26 @@ static njs_ret_t
 njs_ext_console_log(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs,
     njs_index_t unused)
 {
-    nxt_str_t  msg;
+    nxt_str_t   msg;
+    nxt_uint_t  n;
 
-    msg.length = 0;
-    msg.start = NULL;
+    n = 1;
 
-    if (nargs >= 2
-        && njs_vm_value_to_ext_string(vm, &msg, njs_argument(args, 1), 0)
-           == NJS_ERROR)
-    {
+    while (n < nargs) {
+        if (njs_vm_value_to_ext_string(vm, &msg, njs_argument(args, n), 0)
+            == NJS_ERROR)
+        {
+            return NJS_ERROR;
+        }
+
+        printf("%s%.*s", (n != 1) ? " " : "", (int) msg.length, msg.start);
 
-        return NJS_ERROR;
+        n++;
     }
 
-    printf("%.*s\n", (int) msg.length, msg.start);
+    if (nargs > 1) {
+        printf("\n");
+    }
 
     vm->retval = njs_value_void;
 
index 9f91f147be1bc229ba04ff2e5d93f960c13f6a8e..ef9b5e52fb58e198ac9d01f787696c137b479468 100644 (file)
@@ -162,11 +162,11 @@ njs_test {
 # console object
 njs_test {
     {"console.log()\r\n"
-     "console.log()\r\n\r\nundefined\r\n>> "}
+     "console.log()\r\nundefined\r\n>> "}
     {"console.log(1)\r\n"
      "console.log(1)\r\n1\r\nundefined\r\n>> "}
-    {"console.log('abc')\r\n"
-     "console.log('abc')\r\nabc\r\nundefined\r\n>> "}
+    {"console.log(1, 'a')\r\n"
+     "console.log(1, 'a')\r\n1 a\r\nundefined\r\n>> "}
     {"console.help()\r\n"
      "console.help()\r\nVM built-in objects:"}
 }