@@ -1088,7 +1088,7 @@ var jsonata = (function() {
1088
1088
* @returns {Function } Higher order function representing prepared regex
1089
1089
*/
1090
1090
function evaluateRegex ( expr ) {
1091
- var re = new RegExp ( expr . value ) ;
1091
+ var re = new jsonata . RegexEngine ( expr . value ) ;
1092
1092
var closure = function ( str , fromIndex ) {
1093
1093
var result ;
1094
1094
re . lastIndex = fromIndex || 0 ;
@@ -2041,7 +2041,9 @@ var jsonata = (function() {
2041
2041
/**
2042
2042
* JSONata
2043
2043
* @param {Object } expr - JSONata expression
2044
- * @param {boolean } options - recover: attempt to recover on parse error
2044
+ * @param {Object } options
2045
+ * @param {boolean } options.recover: attempt to recover on parse error
2046
+ * @param {Function } options.RegexEngine: RegEx class constructor to use
2045
2047
* @returns {{evaluate: evaluate, assign: assign} } Evaluated expression
2046
2048
*/
2047
2049
function jsonata ( expr , options ) {
@@ -2066,6 +2068,12 @@ var jsonata = (function() {
2066
2068
return timestamp . getTime ( ) ;
2067
2069
} , '<:n>' ) ) ;
2068
2070
2071
+ if ( options && options . RegexEngine ) {
2072
+ jsonata . RegexEngine = options . RegexEngine ;
2073
+ } else {
2074
+ jsonata . RegexEngine = RegExp ;
2075
+ }
2076
+
2069
2077
return {
2070
2078
evaluate : function ( input , bindings , callback ) {
2071
2079
// throw if the expression compiled with syntax errors
0 commit comments