From 602065d2d6210ebe70899a3db8e4ae994289ccc0 Mon Sep 17 00:00:00 2001 From: Hauke D Date: Sat, 1 Sep 2018 10:18:02 +0200 Subject: [PATCH] Added debug and regex error handling code --- web/regex_demo.html | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/web/regex_demo.html b/web/regex_demo.html index 467e8ce..2a8f5f8 100644 --- a/web/regex_demo.html +++ b/web/regex_demo.html @@ -111,9 +111,17 @@ sub newsamp { } $addsamp->click(sub { newsamp() }); +my $debug=0; +my $re_debug = $jq->('#re_debug'); +$re_debug->change(sub { + $debug = $re_debug->is(':checked'); + update() if $debug; +}); + my $thisurl_ta = $jq->("#thisurl"); my $ta_regex = $jq->("#regex"); my $ta_flags = $jq->("#flags"); +my $errmsgs = $jq->("#errmsgs"); $ta_regex->change(\&update); $ta_regex->keyup( \&update); $ta_flags->change(\&update); @@ -124,16 +132,28 @@ sub update { my $regex = $ta_regex->val; my $flags = $ta_flags->val; my $regex_str = 'm{'.$regex.'}'.$flags; - eval "''=~$regex_str;1" or return; + $debug and say STDERR "##### ##### ##### ##### ##### $regex_str ##### ##### ##### ##### #####"; + + my $err = ''; + my $ok = do { + local $SIG{__WARN__} = sub { $err .= shift }; + eval( ($debug?'use re "debug";':'')."''=~$regex_str;1") }; + $ok or $err .= $@||"Unknown error"; + $err =~ s/\bat .+? line \d+(?:\.$|,\h)//mg; + $errmsgs->text($err); + return if !$ok; + my @samps; for my $samptxt ($jq->('.samptxt')->@*) { $samptxt = $jq->($samptxt); my $text = $samptxt->text; + $debug and say STDERR "----- ----- ----- ----- ----- \"$text\" ----- ----- ----- ----- -----"; push @samps, $text; my @m; my $code = $flags=~/g/ ? 'push @m,[[@-],[@+]] while $text=~'.$regex_str.'; scalar @m' : '$text=~'.$regex_str.' and push @m,[[@-],[@+]]; scalar @m'; + $debug and $code = 'use re "debug";'.$code; if (eval $code) { $samptxt->removeClass('nomatch'); my %hi; @@ -211,6 +231,7 @@ js('$(window)')->on('hashchange',\&hashchange); >} +

 
 
 
@@ -231,5 +252,10 @@ js('$(window)')->on('hashchange',\&hashchange);

 
+
+ + +
+