njs_vm_init(vm);
}
- return njs_vm_value_dump(vm, dst, &vm->retval, 1);
+ return njs_vm_value_dump(vm, dst, &vm->retval, 0, 1);
}
NXT_EXPORT njs_ret_t njs_vm_retval_to_ext_string(njs_vm_t *vm, nxt_str_t *dst);
NXT_EXPORT njs_ret_t njs_vm_value_dump(njs_vm_t *vm, nxt_str_t *dst,
- const njs_value_t *value, nxt_uint_t indent);
+ const njs_value_t *value, nxt_uint_t console, nxt_uint_t indent);
NXT_EXPORT njs_ret_t njs_vm_retval_dump(njs_vm_t *vm, nxt_str_t *dst,
nxt_uint_t indent);
n = njs_primitive_value_to_integer(indent);
n = nxt_min(n, 5);
- if (njs_vm_value_dump(vm, &str, value, n) != NXT_OK) {
+ if (njs_vm_value_dump(vm, &str, value, 1, n) != NXT_OK) {
return NXT_ERROR;
}
dst_end = dst + 64;
- if (quote) {
- *dst++ = quote;
- }
+ *dst++ = quote;
while (p < end) {
njs_json_buf_written(stringify, dst - stringify->last->pos);
- if (quote) {
- njs_json_buf_append(stringify, "e, 1);
- }
+ njs_json_buf_append(stringify, "e, 1);
return NXT_OK;
}
static nxt_int_t
-njs_dump_value(njs_json_stringify_t *stringify, const njs_value_t *value)
+njs_dump_value(njs_json_stringify_t *stringify, const njs_value_t *value,
+ nxt_uint_t console)
{
- char quote;
njs_ret_t ret;
nxt_str_t str;
nxt_uint_t written;
case NJS_STRING:
njs_string_get(value, &str);
- quote = '\0';
- if (stringify->stack.items != 0) {
- quote = '\'';
+ if (!console || stringify->stack.items != 0) {
+ return njs_json_append_string(stringify, value, '\'');
}
- return njs_json_append_string(stringify, value, quote);
+ return njs_json_buf_append(stringify, (char *) str.start, str.length);
+
+ break;
case NJS_OBJECT_NUMBER:
value = &value->data.u.object_value->value;
#define njs_dump_append_value(value) \
state->written = 1; \
- ret = njs_dump_value(stringify, value); \
+ ret = njs_dump_value(stringify, value, console); \
if (nxt_slow_path(ret != NXT_OK)) { \
if (ret == NXT_DECLINED) { \
goto exception; \
njs_ret_t
njs_vm_value_dump(njs_vm_t *vm, nxt_str_t *retval, const njs_value_t *value,
- nxt_uint_t indent)
+ nxt_uint_t console, nxt_uint_t indent)
{
nxt_int_t i;
njs_ret_t ret;
stringify->stack.items = 0;
if (!njs_dump_is_object(value)) {
- ret = njs_dump_value(stringify, value);
+ ret = njs_dump_value(stringify, value, console);
if (nxt_slow_path(ret != NXT_OK)) {
goto memory_error;
}
n = 1;
while (n < nargs) {
- if (njs_vm_value_dump(vm, &msg, njs_argument(args, n), 0)
+ if (njs_vm_value_dump(vm, &msg, njs_argument(args, n), 1, 0)
== NJS_ERROR)
{
return NJS_ERROR;
n = 1;
while (n < nargs) {
- if (njs_vm_value_dump(vm, &msg, njs_argument(args, n), 1)
+ if (njs_vm_value_dump(vm, &msg, njs_argument(args, n), 1, 1)
== NJS_ERROR)
{
return NJS_ERROR;
"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('\\tабв\\nгд')\r\n"
+ "console.log('\\\\tабв\\\\nгд')\r\n\tабв\r\nгд\r\nundefined\r\n>> "}
{"console.dump()\r\n"
"console.dump()\r\nundefined\r\n>> "}
{"console.dump(1)\r\n"
{"var a = 1 + 1; setTimeout(function (x) {a = x}, 0, 'a'); a\r\n"
"2"}
{"a\r\n"
- "a\r\na"}
+ "a\r\n'a'"}
}
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\na"}
+ "a\r\n'a'"}
}
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\na"}
+ "a\r\n'a'"}
}
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\n0,1,2,3,4,5"}
+ "queue.toString()\r\n'0,1,2,3,4,5'"}
}
# require('fs')
{"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 {
{"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 {
{"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 {
{"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 {
{"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
{"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