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