diff --git a/dbtests/jstests.cpp b/dbtests/jstests.cpp index c77975f0711..1bb2783b023 100644 --- a/dbtests/jstests.cpp +++ b/dbtests/jstests.cpp @@ -260,9 +260,9 @@ namespace JSTests { s->invoke( "z = { a : x.r };" , BSONObj() ); - //BSONObj out = s->getObject("z"); - //ASSERT_EQUALS( (string)"^a" , out["a"].regex() ); - //ASSERT_EQUALS( (string)"i" , out["a"].regexFlags() ); + BSONObj out = s->getObject("z"); + ASSERT_EQUALS( (string)"^a" , out["a"].regex() ); + ASSERT_EQUALS( (string)"i" , out["a"].regexFlags() ); } diff --git a/scripting/engine_spidermonkey.cpp b/scripting/engine_spidermonkey.cpp index 17c94a632eb..fd1d3961744 100644 --- a/scripting/engine_spidermonkey.cpp +++ b/scripting/engine_spidermonkey.cpp @@ -164,7 +164,18 @@ namespace mongo { } break; } - case JSTYPE_FUNCTION: b.appendCode( name.c_str() , getFunctionCode( val ).c_str() ); break; + case JSTYPE_FUNCTION: { + string s = toString(val); + if ( s[0] == '/' ){ + s = s.substr(1); + string::size_type end = s.rfind( '/' ); + b.appendRegex( name.c_str() , s.substr( 0 , end ).c_str() , s.substr( end + 1 ).c_str() ); + } + else { + b.appendCode( name.c_str() , getFunctionCode( val ).c_str() ); + } + break; + } default: uassert( (string)"can't append field. name:" + name + " type: " + typeString( val ) , 0 ); }