From 7764e02283b706857fc3318af2b6d15c695de426 Mon Sep 17 00:00:00 2001 From: Julien Moutinho Date: Sat, 15 Mar 2014 04:36:30 +0100 Subject: [PATCH] Ajout : supporte id= comme expression rationnelle. --- poll.pm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/poll.pm b/poll.pm index 3d50081..411f3bd 100644 --- a/poll.pm +++ b/poll.pm @@ -319,9 +319,13 @@ package IkiWiki::PageSpec; my ($page, $match, %params) = @_; my $polls = $IkiWiki::pagestate{$page}{poll}; if (defined $polls and %$polls) { - my ($match_poll, $match_user, $match_choice) = $match =~ m/^id=(.*?) user=(.*?) choice=(.*?)$/; - if (exists $polls->{$match_poll}) { - my %poll = %{$polls->{$match_poll}}; + my ($match_id, $match_user, $match_choice) = $match =~ m/^id=(.*?) user=(.*?) choice=(.*?)$/; + my $match_id_re = IkiWiki::glob2re($match_id?$match_id:'*'); + my @polls = grep {$_ =~ $match_id_re} (keys %$polls); + return IkiWiki::FailReason->new("no poll match id=`$match_id'", $page => $IkiWiki::DEPEND_CONTENT) + unless @polls > 0; + foreach my $poll (@polls) { + my %poll = %{$polls->{$poll}}; my $match_user_re = IkiWiki::glob2re($match_user?$match_user:'*'); my $match_choice_re = IkiWiki::glob2re($match_choice?$match_choice:'*'); while (my ($choice, $data) = each %poll) { @@ -341,11 +345,8 @@ package IkiWiki::PageSpec; } } } - return IkiWiki::FailReason->new("no user=`$match_user' has voted for choice=`$match_choice'", $page => $IkiWiki::DEPEND_CONTENT); - } - else { - return IkiWiki::FailReason->new("no poll id=`$match_poll'", $page => $IkiWiki::DEPEND_CONTENT); } + return IkiWiki::FailReason->new("no user=`$match_user' has voted for choice=`$match_choice'", $page => $IkiWiki::DEPEND_CONTENT); } else { return IkiWiki::FailReason->new("no poll", $page => $IkiWiki::DEPEND_CONTENT); -- 2.20.1