summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/format.pm
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2009-06-06 14:03:40 +0200
committerintrigeri <intrigeri@boum.org>2009-06-06 14:03:40 +0200
commit86edd73d169600875a10a635ef8df4a644545b0d (patch)
tree1216eb826f2da7a1c11d84395f25468d1acfa69c /IkiWiki/Plugin/format.pm
parent17b3d73f6e65d6a754633902b0dd4716d53b03a9 (diff)
parente40d2a6b2b1bdf677f11cc4a71595acf609d1e75 (diff)
Merge commit 'upstream/master' into pub/po
Conflicts: debian/changelog debian/control Signed-off-by: intrigeri <intrigeri@boum.org>
Diffstat (limited to 'IkiWiki/Plugin/format.pm')
-rw-r--r--IkiWiki/Plugin/format.pm28
1 files changed, 20 insertions, 8 deletions
diff --git a/IkiWiki/Plugin/format.pm b/IkiWiki/Plugin/format.pm
index bbe3aa9fe..1513cbed7 100644
--- a/IkiWiki/Plugin/format.pm
+++ b/IkiWiki/Plugin/format.pm
@@ -10,21 +10,33 @@ sub import {
}
sub preprocess (@) {
- my $format=$_[0];
- shift; shift;
- my $text=$_[0];
- shift; shift;
my %params=@_;
+ my $format=shift;
+ shift;
+ my $text=IkiWiki::preprocess($params{page}, $params{destpage}, shift);
+ shift;
if (! defined $format || ! defined $text) {
error(gettext("must specify format and text"));
}
- elsif (! exists $IkiWiki::hooks{htmlize}{$format}) {
- error(sprintf(gettext("unsupported page format %s"), $format));
+ elsif (exists $IkiWiki::hooks{htmlize}{$format}) {
+ return IkiWiki::htmlize($params{page}, $params{destpage},
+ $format, $text);
}
+ else {
+ # Other plugins can register htmlizefallback
+ # hooks to add support for page types
+ # not suitable for htmlize. Try them until
+ # one succeeds.
+ my $ret;
+ IkiWiki::run_hooks(htmlizefallback => sub {
+ $ret=shift->($format, $text)
+ unless defined $ret;
+ });
+ return $ret if defined $ret;
- return IkiWiki::htmlize($params{page}, $params{destpage}, $format,
- IkiWiki::preprocess($params{page}, $params{destpage}, $text));
+ error(sprintf(gettext("unsupported page format %s"), $format));
+ }
}
1