From: Dmitry Volyntsev Date: Thu, 11 Apr 2019 15:53:19 +0000 (+0300) Subject: Improved console.log() for string values. X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=5e8988360de43c52ae1a188c00b83a25e85f93fe;p=njs.git Improved console.log() for string values. Outputting string values without quotes. --- diff --git a/njs/njs_json.c b/njs/njs_json.c index cfbb2099..bea2f244 100644 --- a/njs/njs_json.c +++ b/njs/njs_json.c @@ -1798,7 +1798,9 @@ njs_json_append_string(njs_json_stringify_t *stringify, dst_end = dst + 64; - *dst++ = quote; + if (quote) { + *dst++ = quote; + } while (p < end) { @@ -1874,7 +1876,10 @@ njs_json_append_string(njs_json_stringify_t *stringify, } njs_json_buf_written(stringify, dst - stringify->last->pos); - njs_json_buf_append(stringify, "e, 1); + + if (quote) { + njs_json_buf_append(stringify, "e, 1); + } return NXT_OK; } @@ -2116,6 +2121,7 @@ const njs_object_init_t njs_json_object_init = { static nxt_int_t njs_dump_value(njs_json_stringify_t *stringify, const njs_value_t *value) { + char quote; njs_ret_t ret; nxt_str_t str; nxt_uint_t written; @@ -2139,7 +2145,13 @@ njs_dump_value(njs_json_stringify_t *stringify, const njs_value_t *value) case NJS_STRING: njs_string_get(value, &str); - return njs_json_append_string(stringify, value, '\''); + + quote = '\0'; + if (stringify->stack.items != 0) { + quote = '\''; + } + + return njs_json_append_string(stringify, value, quote); case NJS_OBJECT_NUMBER: value = &value->data.u.object_value->value; @@ -2351,6 +2363,7 @@ njs_vm_value_dump(njs_vm_t *vm, nxt_str_t *retval, const njs_value_t *value, stringify->pool = vm->mem_pool; stringify->nodes = NULL; stringify->last = NULL; + stringify->stack.items = 0; if (!njs_dump_is_object(value)) { ret = njs_dump_value(stringify, value); diff --git a/njs/test/njs_expect_test.exp b/njs/test/njs_expect_test.exp index 01a2fe16..6b3f0d86 100644 --- a/njs/test/njs_expect_test.exp +++ b/njs/test/njs_expect_test.exp @@ -191,13 +191,13 @@ njs_test { {"console.log(1)\r\n" "console.log(1)\r\n1\r\nundefined\r\n>> "} {"console.log(1, 'a')\r\n" - "console.log(1, 'a')\r\n1 'a'\r\nundefined\r\n>> "} + "console.log(1, 'a')\r\n1 a\r\nundefined\r\n>> "} {"console.dump()\r\n" "console.dump()\r\nundefined\r\n>> "} {"console.dump(1)\r\n" "console.dump(1)\r\n1\r\nundefined\r\n>> "} {"console.dump(1, 'a')\r\n" - "console.dump(1, 'a')\r\n1 'a'\r\nundefined\r\n>> "} + "console.dump(1, 'a')\r\n1 a\r\nundefined\r\n>> "} {"console.help()\r\n" "console.help()\r\nVM built-in objects:"} } @@ -230,9 +230,9 @@ njs_test { njs_test { {"var print = console.log.bind(console); print(1, 'a', [1, 2])\r\n" - "1 'a' \\\[1,2]\r\nundefined\r\n>> "} + "1 a \\\[1,2]\r\nundefined\r\n>> "} {"var print = console.dump.bind(console); print(1, 'a', [1, 2])\r\n" - "1 'a' \\\[\r\n 1,\r\n 2\r\n]\r\nundefined\r\n>> "} + "1 a \\\[\r\n 1,\r\n 2\r\n]\r\nundefined\r\n>> "} } # Backtraces for external objects @@ -268,7 +268,7 @@ njs_test { # except '\"' njs_test { {"\"\\r\\0\\\"\"\r\n" - "'\\\\r\\\\u0000\"'"} + "\\\\r\\\\u0000\""} } njs_test { @@ -299,23 +299,23 @@ njs_test { # Non-ASCII characters njs_test { {"'絵文字'\r\n" - "'絵文字'"} + "絵文字"} {"var v = 'абвгдеёжзийкл';v[10]\r\n" - "'й'"} + "й"} } # Immediate events njs_test { {"var t = setImmediate(console.log, 'a', 'aa')\r\n" - "undefined\r\n'a' 'aa'"} + "undefined\r\na aa"} } njs_test { {"var a = 1 + 1; setTimeout(function (x) {a = x}, 0, 'a'); a\r\n" "2"} {"a\r\n" - "a\r\n'a'"} + "a\r\na"} } njs_test { @@ -327,14 +327,14 @@ njs_test { {"var a = 1 + 1; setTimeout(function (x) { setTimeout(function (y) {a = y}, 0, x)}, 0, 'a'); a\r\n" "2"} {"a\r\n" - "a\r\n'a'"} + "a\r\na"} } njs_test { {"var a = 1 + 1; setImmediate(function (x) { setImmediate(function (y) {a = y}, x)}, 'a'); a\r\n" "2"} {"a\r\n" - "a\r\n'a'"} + "a\r\na"} } njs_test { @@ -362,7 +362,7 @@ njs_test { {"var i = 0, queue = []; (function x() { if (i < 5) setImmediate(x); queue.push(i++); })()\r\n" "undefined"} {"queue.toString()\r\n" - "queue.toString()\r\n'0,1,2,3,4,5'"} + "queue.toString()\r\n0,1,2,3,4,5"} } # require('fs') @@ -380,37 +380,37 @@ njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.readFile('njs/test/fs/utf8', 'utf8', function (e, data) {console.log(data[2]+data.length)})\r\n" - "'Z4'\r\nundefined\r\n>> "} + "Z4\r\nundefined\r\n>> "} } njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.readFile('njs/test/fs/utf8', function (e, data) {console.log(data[4]+data.length)})\r\n" - "'Z7'\r\nundefined\r\n>> "} + "Z7\r\nundefined\r\n>> "} } njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.readFile('njs/test/fs/utf8', {encoding:'utf8',flag:'r+'}, function (e, data) {console.log(data)})\r\n" - "'αβZγ'\r\nundefined\r\n>> "} + "αβZγ\r\nundefined\r\n>> "} } njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.readFile('njs/test/fs/ascii', function (e, data) {console.log(data[599])})\r\n" - "'x'\r\nundefined\r\n>> "} + "x\r\nundefined\r\n>> "} {"fs.readFile('njs/test/fs/ascii', {encoding:'utf8',flag:'r+'}, function (e, data) {console.log(data[599])})\r\n" - "'x'\r\nundefined\r\n>> "} + "x\r\nundefined\r\n>> "} } njs_test { {"var fs = require('fs'); \r\n" "undefined\r\n>> "} {"fs.readFile('njs/test/fs/nonexistent', 'utf8', function (e) {console.log(JSON.stringify(e))})\r\n" - "'{\"errno\":2,\"path\":\"njs/test/fs/nonexistent\",\"syscall\":\"open\"}'\r\nundefined\r\n>> "} + "{\"errno\":2,\"path\":\"njs/test/fs/nonexistent\",\"syscall\":\"open\"}\r\nundefined\r\n>> "} } njs_test { @@ -426,42 +426,42 @@ njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.readFileSync('njs/test/fs/utf8').toString('base64')\r\n" - "'zrHOslrOsw=='\r\n>> "} + "zrHOslrOsw==\r\n>> "} } njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.readFileSync('njs/test/fs/utf8', 'utf8')[2]\r\n" - "'Z'\r\n>> "} + "Z\r\n>> "} } njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.readFileSync('njs/test/fs/utf8')[4]\r\n" - "'Z'\r\n>> "} + "Z\r\n>> "} } njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.readFileSync('njs/test/fs/utf8', {encoding:'utf8',flag:'r+'})\r\n" - "'αβZγ'\r\n>> "} + "αβZγ\r\n>> "} } njs_test { {"var fs = require('fs'), fn = 'njs/test/fs/ascii'\r\n" "undefined\r\n>> "} {"fs.readFileSync(fn)[599] + fs.readFileSync(fn, 'utf8')[599]\r\n" - "'xx'\r\n>> "} + "xx\r\n>> "} } njs_test { {"var fs = require('fs'); \r\n" "undefined\r\n>> "} {"try { fs.readFileSync('njs/test/fs/nonexistent')} catch (e) {console.log(JSON.stringify(e))}\r\n" - "'{\"errno\":2,\"path\":\"njs/test/fs/nonexistent\",\"syscall\":\"open\"}'\r\nundefined\r\n>> "} + "{\"errno\":2,\"path\":\"njs/test/fs/nonexistent\",\"syscall\":\"open\"}\r\nundefined\r\n>> "} } njs_test { @@ -489,21 +489,21 @@ njs_test { {"function h1(e) {if (e) {throw e}; console.log(fs.readFileSync('njs_test_file2'))}\r\n" "undefined\r\n>> "} {"fs.writeFile('njs_test_file2', 'ABC', h1)\r\n" - "'ABC'\r\nundefined\r\n>> "} + "ABC\r\nundefined\r\n>> "} } njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.writeFile('njs_test_file2', 'ABC', 'utf8', function (e) { if (e) {throw e}; console.log(fs.readFileSync('njs_test_file2'))})\r\n" - "'ABC'\r\nundefined\r\n>> "} + "ABC\r\nundefined\r\n>> "} } njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.writeFile('njs_test_file2', 'ABC', {encoding:'utf8', mode:0o666}, function (e) { if (e) {throw e}; console.log(fs.readFileSync('njs_test_file2'))})\r\n" - "'ABC'\r\nundefined\r\n>> "} + "ABC\r\nundefined\r\n>> "} } exec rm -fr njs_wo_file @@ -519,7 +519,7 @@ njs_test { {"var fs = require('fs')\r\n" "undefined\r\n>> "} {"fs.writeFile('/invalid_path', 'ABC', function (e) { console.log(JSON.stringify(e))})\r\n" - "'{\"errno\":13,\"path\":\"/invalid_path\",\"syscall\":\"open\"}'\r\nundefined\r\n>> "} + "{\"errno\":13,\"path\":\"/invalid_path\",\"syscall\":\"open\"}\r\nundefined\r\n>> "} } # require('fs').writeFileSync() @@ -532,7 +532,7 @@ njs_test { {"fs.writeFileSync('njs_test_file2', 'ABC')\r\n" "undefined\r\n>> "} {"fs.readFileSync('njs_test_file2')\r\n" - "'ABC'\r\n>> "} + "ABC\r\n>> "} } njs_test { @@ -541,7 +541,7 @@ njs_test { {"fs.writeFileSync('njs_test_file2', 'ABC', 'utf8')\r\n" "undefined\r\n>> "} {"fs.readFileSync('njs_test_file2')\r\n" - "'ABC'\r\n>> "} + "ABC\r\n>> "} } njs_test { @@ -552,7 +552,7 @@ njs_test { {"fs.writeFileSync('njs_test_file2', 'ABC')\r\n" "undefined\r\n>> "} {"fs.readFileSync('njs_test_file2')\r\n" - "'ABC'\r\n>> "} + "ABC\r\n>> "} } njs_test { @@ -561,7 +561,7 @@ njs_test { {"fs.writeFileSync('njs_test_file2', 'ABC', {encoding:'utf8', mode:0o666})\r\n" "undefined\r\n>> "} {"fs.readFileSync('njs_test_file2')\r\n" - "'ABC'\r\n>> "} + "ABC\r\n>> "} } exec rm -fr njs_wo_file @@ -585,7 +585,7 @@ njs_test { {"function h2(e) {fs.appendFile('njs_test_file2', 'ABC', h1)}\r\n" "undefined\r\n>> "} {"fs.appendFile('njs_test_file2', 'ABC', h2)\r\n" - "'ABCABC'\r\nundefined\r\n>> "} + "ABCABC\r\nundefined\r\n>> "} } # require('fs').appendFileSync() @@ -600,7 +600,7 @@ njs_test { {"fs.appendFileSync('njs_test_file2', 'ABC')\r\n" "undefined\r\n>> "} {"fs.readFileSync('njs_test_file2')\r\n" - "'ABCABC'\r\n>> "} + "ABCABC\r\n>> "} } # Modules