diff options
author | Adam Chelminski <adam.chelminski@mongodb.com> | 2016-08-05 11:49:17 -0400 |
---|---|---|
committer | Adam Chelminski <adam.chelminski@mongodb.com> | 2016-08-15 10:52:24 -0400 |
commit | df4248d69bd6643925d0e9cc62c6be3adf7750d7 (patch) | |
tree | 1f6b84bc55c83a7c981f74ed7483dc087b7b23f6 /src/mongo/scripting/mozjs/regexp.cpp | |
parent | 9175ab505d970a6e97733a28e16496426d10f3ee (diff) | |
download | mongo-df4248d69bd6643925d0e9cc62c6be3adf7750d7.tar.gz |
SERVER-24146 Fix JSON.stringify regression, and add new "tostrictjson" shell util function for printing strict JSON
Diffstat (limited to 'src/mongo/scripting/mozjs/regexp.cpp')
-rw-r--r-- | src/mongo/scripting/mozjs/regexp.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mongo/scripting/mozjs/regexp.cpp b/src/mongo/scripting/mozjs/regexp.cpp index b935a9fb354..55761dc606d 100644 --- a/src/mongo/scripting/mozjs/regexp.cpp +++ b/src/mongo/scripting/mozjs/regexp.cpp @@ -29,11 +29,27 @@ #include "mongo/platform/basic.h" #include "mongo/scripting/mozjs/regexp.h" +#include "mongo/scripting/mozjs/valuereader.h" +#include "mongo/scripting/mozjs/wrapconstrainedmethod.h" namespace mongo { namespace mozjs { +const JSFunctionSpec RegExpInfo::methods[2] = { + MONGO_ATTACH_JS_FUNCTION(toJSON), JS_FS_END, +}; + const char* const RegExpInfo::className = "RegExp"; +void RegExpInfo::Functions::toJSON::call(JSContext* cx, JS::CallArgs args) { + ObjectWrapper o(cx, args.thisv()); + + auto regex_string = o.getString(InternedString::source); + auto flags_string = o.getString(InternedString::flags); + + ValueReader(cx, args.rval()) + .fromBSON(BSON("$regex" << regex_string << "$options" << flags_string), nullptr, false); +} + } // namespace mozjs } // namespace mongo |