X-Git-Url: https://code.th-h.de/?p=usenet%2Fusevote.git;a=blobdiff_plain;f=UVrules.pm;h=76e260ff242a8280d3f686cef3028e495afef084;hp=4325867a16610ed780950d7ad94bd3dddbf0ef90;hb=a908bf98dcea8e943f52a023b11e0ae555b1545f;hpb=a384e31e542e2520ebc1e2402a86fad5507b7da2 diff --git a/UVrules.pm b/UVrules.pm index 4325867..76e260f 100644 --- a/UVrules.pm +++ b/UVrules.pm @@ -149,10 +149,10 @@ sub read_rulefile { die $errortext . ": $_\n\n" if ($errortext); # check for correct characters in conditions - if ($if !~ /^[JjNnEeSsIi\.]+$/) { + if ($if !~ /^[JjNnEeSsHhIi\.]+$/) { die UVmessage::get ("RULES_INVCHARS", (NUM=>$num+1, TYPE=>"if")) . ": $if\n\n"; - } elsif ($then !~ /^[JjNnEeSsIi\.]+$/) { + } elsif ($then !~ /^[JjNnEeSsHhIi\.]+$/) { die UVmessage::get ("RULES_INVCHARS", (NUM=>$num+1, TYPE=>"if")) . ": $then\n\n"; } @@ -194,8 +194,9 @@ sub read_rulefile { sub make_regex_pos { my $pat = $_[0]; - $pat =~ s/[jens]/./g; + $pat =~ s/[hijens]/./g; $pat =~ s/S/[JN]/g; + $pat =~ s/H/[EJ]/g; $pat =~ s/I/[EN]/g; return $pat; @@ -216,22 +217,19 @@ sub make_regex_neg { # upper case characters are replaced with dots # (are covered by make_regex_pos) - $pat =~ s/[JENS]/./g; + $pat =~ s/[HIJENS]/./g; # reverse lower case characters $pat =~ s/j/[NE]/g; $pat =~ s/n/[JE]/g; $pat =~ s/e/[JN]/g; $pat =~ s/s/E/g; + $pat =~ s/h/N/g; $pat =~ s/i/J/g; - # to be translated: - # Falls keine Kleinbuchstaben vorkamen (es sind nur Punkte uebrig): - # Wenn keine optionalen Forderungen vorhanden sind, wuerde der Regex - # immer matchen und somit die Stimme immer als nicht passend erkannt - # werden. Deswegen wird versucht auf den leeren String zu ueberpruefen, - # was durch die Negation dazu fuehrt, dass die Stimme als passend - # gewertet wird. + # If the string contained only upper case characters they are now all + # replaced with dots and the RegEx would match everything, i.e. declare + # every vote as invalid. In this case an empty pattern is returned. $pat =~ s/^\.+$//; return $pat; @@ -305,6 +303,10 @@ sub rule_print { $fill = " $and "; $text1 = UVmessage::get ("RULES_IFCLAUSE", (VOTE=>"$yes $or $no", GROUP=>$groups[$i])); + } elsif ($rule[$i] eq 'H') { + $fill = " $and "; + $text1 = UVmessage::get ("RULES_IFCLAUSE", + (VOTE=>"$abst $or $yes", GROUP=>$groups[$i])); } elsif ($rule[$i] eq 'I') { $fill = " $and "; $text1 = UVmessage::get ("RULES_IFCLAUSE", @@ -322,6 +324,10 @@ sub rule_print { $fill = " $or "; $text1 = UVmessage::get ("RULES_IFCLAUSE", (VOTE=>"$yes $or $no", GROUP=>$groups[$i])); + } elsif ($rule[$i] eq 'h') { + $fill = " $or "; + $text1 = UVmessage::get ("RULES_IFCLAUSE", + (VOTE=>"$abst $or $yes", GROUP=>$groups[$i])); } elsif ($rule[$i] eq 'i') { $fill = " $or "; $text1 = UVmessage::get ("RULES_IFCLAUSE", @@ -357,6 +363,10 @@ sub rule_print { $fill = " $and "; $text1 = UVmessage::get ("RULES_THENCLAUSE", (VOTE=>"$yes $or $no", GROUP=>$groups[$i])); + } elsif ($rule[$i] eq 'H') { + $fill = " $and "; + $text1 = UVmessage::get ("RULES_THENCLAUSE", + (VOTE=>"$abst $or $yes", GROUP=>$groups[$i])); } elsif ($rule[$i] eq 'I') { $fill = " $and "; $text1 = UVmessage::get ("RULES_THENCLAUSE", @@ -374,6 +384,10 @@ sub rule_print { $fill = " $or "; $text1 = UVmessage::get ("RULES_THENCLAUSE", (VOTE=>"$yes $or $no", GROUP=>$groups[$i])); + } elsif ($rule[$i] eq 'h') { + $fill = " $or "; + $text1 = UVmessage::get ("RULES_THENCLAUSE", + (VOTE=>"$abst $or $yes", GROUP=>$groups[$i])); } elsif ($rule[$i] eq 'i') { $fill = " $or "; $text1 = UVmessage::get ("RULES_THENCLAUSE",