named group generation for Reflex hxnodejs

This commit is contained in:
2021-10-29 15:59:31 -04:00
parent 678ae27230
commit 5c3a7cec3e
2 changed files with 10 additions and 3 deletions

View File

@@ -13,7 +13,7 @@ typedef RMatch = {
right:String, right:String,
#if hxnodejs #if hxnodejs
groups:Array<String>, groups:Array<String>,
namedGroups:DynamicAccess<String,String>, namedGroups:DynamicAccess<String>,
#end #end
group:Int->String group:Int->String
}; };

View File

@@ -3,10 +3,17 @@
(var end "\$") (var end "\$")
(function :String _group [:Array<Dynamic> exprs] (function :String _group [:Array<Dynamic> exprs]
(+ "(" (apply + exprs) ")")) (+ "(" (apply + (assert exprs)) ")"))
(var group (Reflect.makeVarArgs _group)) (var group (Reflect.makeVarArgs _group))
(#when hxnodejs
(function :String _namedGroup [:Array<Dynamic> exprs]
(let [groupName (assert (exprs.shift))]
(_group (concat ["?<${groupName}>"] exprs))))
(var namedGroup (Reflect.makeVarArgs _namedGroup)))
(function :String escape [:String str] (function :String escape [:String str]
(group (EReg.escape str))) (group (EReg.escape str)))
@@ -31,7 +38,7 @@
// TODO could memoize compiled regexes // TODO could memoize compiled regexes
(function :Null<RMatch> match [:String regex :String textToSearch &opt :String flags] (function :Null<RMatch> match [:String regex :String textToSearch &opt :String flags]
(#if hxnodejs (#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 (object
left left
(textToSearch.substr 0 match.index) (textToSearch.substr 0 match.index)