summaryrefslogtreecommitdiff
path: root/src/mongo/scripting/mozjs/regexp.cpp
diff options
context:
space:
mode:
authorAdam Chelminski <adam.chelminski@mongodb.com>2016-08-05 11:49:17 -0400
committerAdam Chelminski <adam.chelminski@mongodb.com>2016-08-15 10:52:24 -0400
commitdf4248d69bd6643925d0e9cc62c6be3adf7750d7 (patch)
tree1f6b84bc55c83a7c981f74ed7483dc087b7b23f6 /src/mongo/scripting/mozjs/regexp.cpp
parent9175ab505d970a6e97733a28e16496426d10f3ee (diff)
downloadmongo-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.cpp16
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