Touching up RegexConversion
This commit is contained in:
@@ -4,5 +4,7 @@ import kiss.Prelude;
|
|||||||
import kiss.List;
|
import kiss.List;
|
||||||
import re_flex.R;
|
import re_flex.R;
|
||||||
|
|
||||||
|
using StringTools;
|
||||||
|
|
||||||
@:build(kiss.Kiss.build())
|
@:build(kiss.Kiss.build())
|
||||||
class RegexConversion {}
|
class RegexConversion {}
|
||||||
|
|||||||
@@ -2,8 +2,13 @@
|
|||||||
&prop &mut :String sourceType
|
&prop &mut :String sourceType
|
||||||
&prop &mut :String outputType
|
&prop &mut :String outputType
|
||||||
:String regex
|
:String regex
|
||||||
:String blockTemplate]
|
:String blockTemplate
|
||||||
|
&opt :String flags]
|
||||||
[
|
[
|
||||||
&mut :String->Bool canConvert ->block ?(R.match regex block)
|
&mut :String->Bool canConvert ->block ?(R.match regex block /*TODO use or for this */(if flags flags ""))
|
||||||
&mut :String->String convert ->_ "\$(let [groups .namedGroups (R.match \"${regex}\" source) group ->g (dictGet groups g)] \"${blockTemplate}\")"
|
&mut :String->String convert ->_ "\$(let [groups .namedGroups (R.match #\"$(escapeRegex regex)\"# source \"$(if flags flags "")\") group ->g (dictGet groups g)] \"${blockTemplate}\")"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
// This may turn out to be an unsolvable rabbit hole...
|
||||||
|
(function escapeRegex [:String regex]
|
||||||
|
(regex.replace "\\" "\\\\"))
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package re_flex;
|
package re_flex;
|
||||||
|
|
||||||
|
import haxe.Constraints.Function;
|
||||||
import kiss.Prelude;
|
import kiss.Prelude;
|
||||||
import kiss.List;
|
import kiss.List;
|
||||||
#if hxnodejs
|
#if hxnodejs
|
||||||
|
|||||||
@@ -2,17 +2,22 @@
|
|||||||
(var start "^")
|
(var start "^")
|
||||||
(var end "\$")
|
(var end "\$")
|
||||||
|
|
||||||
|
// TODO these are very anglocentric:
|
||||||
|
(var capitalLetter "[A-Z]")
|
||||||
|
(var smallLetter "[a-z]")
|
||||||
|
(var anyLetter "[A-Za-z]")
|
||||||
|
|
||||||
(function :String _group [:Array<Dynamic> exprs]
|
(function :String _group [:Array<Dynamic> exprs]
|
||||||
(+ "(" (apply + (assert exprs)) ")"))
|
(+ "(" (apply + (assert exprs)) ")"))
|
||||||
|
|
||||||
(var group (Reflect.makeVarArgs _group))
|
(var :Function group (Reflect.makeVarArgs _group))
|
||||||
|
|
||||||
(#when hxnodejs
|
(#when hxnodejs
|
||||||
(function :String _namedGroup [:Array<Dynamic> exprs]
|
(function :String _namedGroup [:Array<Dynamic> exprs]
|
||||||
(let [groupName (assert (exprs.shift))]
|
(let [groupName (assert (exprs.shift))]
|
||||||
(_group (concat ["?<${groupName}>"] exprs))))
|
(_group (concat ["?<${groupName}>"] exprs))))
|
||||||
|
|
||||||
(var namedGroup (Reflect.makeVarArgs _namedGroup)))
|
(var :Function namedGroup (Reflect.makeVarArgs _namedGroup)))
|
||||||
|
|
||||||
(function :String escape [:String str]
|
(function :String escape [:String str]
|
||||||
(group (EReg.escape str)))
|
(group (EReg.escape str)))
|
||||||
@@ -20,7 +25,7 @@
|
|||||||
(function :String _oneOf [:Array<Dynamic> exprs]
|
(function :String _oneOf [:Array<Dynamic> exprs]
|
||||||
(group (exprs.join "|")))
|
(group (exprs.join "|")))
|
||||||
|
|
||||||
(var oneOf (Reflect.makeVarArgs _oneOf))
|
(var :Function oneOf (Reflect.makeVarArgs _oneOf))
|
||||||
|
|
||||||
(function :String repeat [:String expr &opt :Int min :Int max]
|
(function :String repeat [:String expr &opt :Int min :Int max]
|
||||||
(apply group
|
(apply group
|
||||||
|
|||||||
Reference in New Issue
Block a user