new approach for forcing utf8 -- use a HTML::Template filter
[ikiwiki] / IkiWiki / Plugin / pagecount.pm
1 #!/usr/bin/perl
2 # Provides [[pagecount ]] to count the number of pages.
3 package IkiWiki::Plugin::pagecount;
4
5 use warnings;
6 use strict;
7 use IkiWiki;
8
9 sub import { #{{{
10         IkiWiki::hook(type => "preprocess", id => "pagecount", 
11                 call => \&preprocess);
12 } # }}}
13
14 sub preprocess (@) { #{{{
15         my %params=@_;
16         $params{pages}="*" unless defined $params{pages};
17         
18         # Needs to update count whenever a page is added or removed, so
19         # register a dependency.
20         IkiWiki::add_depends($params{page}, $params{pages});
21         
22         my @pages=keys %IkiWiki::pagesources;
23         return $#pages+1 if $params{pages} eq "*"; # optimisation
24         my $count=0;
25         foreach my $page (@pages) {
26                 $count++ if IkiWiki::globlist_match($page, $params{pages});
27         }
28         return $count;
29 } # }}}
30
31 1