diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-07-29 15:54:45 -0400 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-07-29 15:54:45 -0400 |
commit | 12c5786df4e74c143f24398b8d0028000b61daba (patch) | |
tree | a0f3136499610571b47289f6aa55659094024620 /IkiWiki/Plugin | |
parent | 73af360e994306c1d0b14a69a4aa04750e61f0ef (diff) | |
parent | 106578f524a7ef8184029ac393dbe9d68b017756 (diff) | |
download | ikiwiki-12c5786df4e74c143f24398b8d0028000b61daba.tar ikiwiki-12c5786df4e74c143f24398b8d0028000b61daba.tar.gz |
Merge branch 'tova' into autoconfig
Conflicts:
debian/changelog
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r-- | IkiWiki/Plugin/autoindex.pm | 72 | ||||
-rw-r--r-- | IkiWiki/Plugin/skeleton.pm.example | 5 |
2 files changed, 77 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/autoindex.pm b/IkiWiki/Plugin/autoindex.pm new file mode 100644 index 000000000..8179ee1e7 --- /dev/null +++ b/IkiWiki/Plugin/autoindex.pm @@ -0,0 +1,72 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::autoindex; + +use warnings; +use strict; +use IkiWiki 2.00; +use Encode; + +sub import { #{{{ + hook(type => "refresh", id => "autoindex", call => \&refresh); +} # }}} + +sub genindex ($) { #{{{ + my $page=shift; + my $file=$page.".".$config{default_pageext}; + my $template=template("autoindex.tmpl"); + $template->param(page => $page); + writefile($file, $config{srcdir}, $template->output); + if ($config{rcs}) { + IkiWiki::rcs_add($file); + } +} #}}} + +sub refresh () { #{{{ + eval q{use File::Find}; + error($@) if $@; + + my (%pages, %dirs); + find({ + no_chdir => 1, + wanted => sub { + $_=decode_utf8($_); + if (IkiWiki::file_pruned($_, $config{srcdir})) { + $File::Find::prune=1; + } + elsif (! -l $_) { + my ($f)=/$config{wiki_file_regexp}/; # untaint + return unless defined $f; + $f=~s/^\Q$config{srcdir}\E\/?//; + return unless length $f; + if (! -d _) { + $pages{pagename($f)}=1; + } + else { + $dirs{$f}=1; + } + } + } + }, $config{srcdir}); + + my @needed; + foreach my $dir (keys %dirs) { + if (! exists $pages{$dir}) { + push @needed, $dir; + } + } + + if (@needed) { + if ($config{rcs}) { + IkiWiki::disable_commit_hook(); + } + genindex($_) foreach @needed; + if ($config{rcs}) { + IkiWiki::rcs_commit_staged( + gettext("automatic index generation"), + undef, undef); + IkiWiki::enable_commit_hook(); + } + } +} #}}} + +1 diff --git a/IkiWiki/Plugin/skeleton.pm.example b/IkiWiki/Plugin/skeleton.pm.example index 49c4d88f2..bbf11e603 100644 --- a/IkiWiki/Plugin/skeleton.pm.example +++ b/IkiWiki/Plugin/skeleton.pm.example @@ -12,6 +12,7 @@ sub import { #{{{ hook(type => "getopt", id => "skeleton", call => \&getopt); hook(type => "getsetup", id => "skeleton", call => \&getsetup); hook(type => "checkconfig", id => "skeleton", call => \&checkconfig); + hook(type => "refresh", id => "skeleton", call => \&refresh); hook(type => "needsbuild", id => "skeleton", call => \&needsbuild); hook(type => "preprocess", id => "skeleton", call => \&preprocess); hook(type => "filter", id => "skeleton", call => \&filter); @@ -54,6 +55,10 @@ sub checkconfig () { #{{{ debug("skeleton plugin checkconfig"); } #}}} +sub refresh () { #{{{ + debug("skeleton plugin refresh"); +} #}}} + sub needsbuild () { #{{{ debug("skeleton plugin needsbuild"); } #}}} |