diff --git a/projects/re-flex/src/re_flex/R.hx b/projects/re-flex/src/re_flex/R.hx index bf727698..31363d05 100644 --- a/projects/re-flex/src/re_flex/R.hx +++ b/projects/re-flex/src/re_flex/R.hx @@ -13,7 +13,7 @@ typedef RMatch = { right:String, #if hxnodejs groups:Array, - namedGroups:DynamicAccess, + namedGroups:DynamicAccess, #end group:Int->String }; diff --git a/projects/re-flex/src/re_flex/R.kiss b/projects/re-flex/src/re_flex/R.kiss index a3099bcf..ab00afac 100644 --- a/projects/re-flex/src/re_flex/R.kiss +++ b/projects/re-flex/src/re_flex/R.kiss @@ -3,10 +3,17 @@ (var end "\$") (function :String _group [:Array exprs] - (+ "(" (apply + exprs) ")")) + (+ "(" (apply + (assert exprs)) ")")) (var group (Reflect.makeVarArgs _group)) +(#when hxnodejs + (function :String _namedGroup [:Array exprs] + (let [groupName (assert (exprs.shift))] + (_group (concat ["?<${groupName}>"] exprs)))) + + (var namedGroup (Reflect.makeVarArgs _namedGroup))) + (function :String escape [:String str] (group (EReg.escape str))) @@ -31,7 +38,7 @@ // TODO could memoize compiled regexes (function :Null match [:String regex :String textToSearch &opt :String flags] (#if hxnodejs - (ifLet [:RegExpMatch match (.exec (new RegExp regex /* TODO use or for this once it's fixed */ (if flags flags "")) textToSearch)] + (ifLet [match (the RegExpMatch (.exec (new RegExp regex /* TODO use or for this once it's fixed */ (if flags flags "")) textToSearch))] (object left (textToSearch.substr 0 match.index)