* Added plugin system, currently only supporting for PreProcessorDirectives.
[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
8 sub import { #{{{
9         IkiWiki::register_plugin("preprocess", "pagecount", \&preprocess);
10 } # }}}
11
12 sub preprocess (@) { #{{{
13         my %params=@_;
14         $params{pages}="*" unless defined $params{pages};
15         
16         # Needs to update count whenever a page is added or removed, so
17         # register a dependency.
18         IkiWiki::add_depends($params{page}, $params{pages});
19         
20         my @pages=keys %IkiWiki::pagesources;
21         return $#pages+1 if $params{pages} eq "*"; # optimisation
22         my $count=0;
23         foreach my $page (@pages) {
24                 $count++ if IkiWiki::globlist_match($page, $params{pages});
25         }
26         return $count;
27 } # }}}
28
29 1