details: http://hg.nginx.org/njs/rev/a191987786fd branches: changeset: 482:a191987786fd user: Dmitry Volyntsev <xei...@nginx.com> date: Tue Apr 03 13:56:54 2018 +0300 description: Added global njs object.
diffstat: njs/njs_builtin.c | 19 +++++++++++++++++++ njs/njs_generator.c | 1 + njs/njs_lexer_keyword.c | 1 + njs/njs_parser.c | 1 + njs/njs_parser.h | 1 + njs/njs_vm.h | 1 + njs/test/njs_expect_test.exp | 5 +++++ njs/test/njs_unit_test.c | 3 +++ 8 files changed, 32 insertions(+), 0 deletions(-) diffs (119 lines): diff -r 92b532d27d8d -r a191987786fd njs/njs_builtin.c --- a/njs/njs_builtin.c Mon Apr 02 18:01:34 2018 +0300 +++ b/njs/njs_builtin.c Tue Apr 03 13:56:54 2018 +0300 @@ -50,9 +50,11 @@ static nxt_array_t *njs_vm_expression_co nxt_str_t *expression); static nxt_array_t *njs_object_completions(njs_vm_t *vm, njs_object_t *object); +const njs_object_init_t njs_njs_object_init; const njs_object_init_t *njs_object_init[] = { NULL, /* global this */ + &njs_njs_object_init, /* global njs object */ &njs_math_object_init, /* Math */ &njs_json_object_init, /* JSON */ }; @@ -1086,3 +1088,20 @@ njs_builtin_match_native_function(njs_vm return NXT_DECLINED; } + + +static const njs_object_prop_t njs_njs_object_properties[] = +{ + { + .type = NJS_PROPERTY, + .name = njs_string("version"), + .value = njs_string(NJS_VERSION), + }, +}; + + +const njs_object_init_t njs_njs_object_init = { + nxt_string("njs"), + njs_njs_object_properties, + nxt_nitems(njs_njs_object_properties), +}; diff -r 92b532d27d8d -r a191987786fd njs/njs_generator.c --- a/njs/njs_generator.c Mon Apr 02 18:01:34 2018 +0300 +++ b/njs/njs_generator.c Tue Apr 03 13:56:54 2018 +0300 @@ -307,6 +307,7 @@ njs_generator(njs_vm_t *vm, njs_parser_t return njs_generate_name(vm, parser, node); case NJS_TOKEN_GLOBAL_THIS: + case NJS_TOKEN_NJS: case NJS_TOKEN_MATH: case NJS_TOKEN_JSON: case NJS_TOKEN_EVAL: diff -r 92b532d27d8d -r a191987786fd njs/njs_lexer_keyword.c --- a/njs/njs_lexer_keyword.c Mon Apr 02 18:01:34 2018 +0300 +++ b/njs/njs_lexer_keyword.c Tue Apr 03 13:56:54 2018 +0300 @@ -68,6 +68,7 @@ static const njs_keyword_t njs_keywords /* Builtin objects. */ { nxt_string("this"), NJS_TOKEN_THIS, 0 }, + { nxt_string("njs"), NJS_TOKEN_NJS, 0 }, { nxt_string("Math"), NJS_TOKEN_MATH, 0 }, { nxt_string("JSON"), NJS_TOKEN_JSON, 0 }, diff -r 92b532d27d8d -r a191987786fd njs/njs_parser.c --- a/njs/njs_parser.c Mon Apr 02 18:01:34 2018 +0300 +++ b/njs/njs_parser.c Tue Apr 03 13:56:54 2018 +0300 @@ -1989,6 +1989,7 @@ njs_parser_terminal(njs_vm_t *vm, njs_pa /* Fall through. */ + case NJS_TOKEN_NJS: case NJS_TOKEN_MATH: case NJS_TOKEN_JSON: return njs_parser_builtin_object(vm, parser, node); diff -r 92b532d27d8d -r a191987786fd njs/njs_parser.h --- a/njs/njs_parser.h Mon Apr 02 18:01:34 2018 +0300 +++ b/njs/njs_parser.h Tue Apr 03 13:56:54 2018 +0300 @@ -165,6 +165,7 @@ typedef enum { #define NJS_TOKEN_FIRST_OBJECT NJS_TOKEN_GLOBAL_THIS NJS_TOKEN_GLOBAL_THIS, + NJS_TOKEN_NJS, NJS_TOKEN_MATH, NJS_TOKEN_JSON, diff -r 92b532d27d8d -r a191987786fd njs/njs_vm.h --- a/njs/njs_vm.h Mon Apr 02 18:01:34 2018 +0300 +++ b/njs/njs_vm.h Tue Apr 03 13:56:54 2018 +0300 @@ -870,6 +870,7 @@ enum njs_constructor_e { enum njs_object_e { NJS_OBJECT_THIS = 0, + NJS_OBJECT_NJS, NJS_OBJECT_MATH, NJS_OBJECT_JSON, #define NJS_OBJECT_MAX (NJS_OBJECT_JSON + 1) diff -r 92b532d27d8d -r a191987786fd njs/test/njs_expect_test.exp --- a/njs/test/njs_expect_test.exp Mon Apr 02 18:01:34 2018 +0300 +++ b/njs/test/njs_expect_test.exp Tue Apr 03 13:56:54 2018 +0300 @@ -23,6 +23,11 @@ type console.help() for more information expect eof } +njs_test { + {"njs.version\r\n" + "njs.version\r\n\*\.\*\.\*"} +} + # simple multi line interation njs_test { {"var a = 1\r\n" diff -r 92b532d27d8d -r a191987786fd njs/test/njs_unit_test.c --- a/njs/test/njs_unit_test.c Mon Apr 02 18:01:34 2018 +0300 +++ b/njs/test/njs_unit_test.c Tue Apr 03 13:56:54 2018 +0300 @@ -5741,6 +5741,9 @@ static njs_unit_test_t njs_test[] = { nxt_string("this"), nxt_string("[object Object]") }, + { nxt_string("njs"), + nxt_string("[object Object]") }, + { nxt_string("var o = Object(); o"), nxt_string("[object Object]") }, _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel