blob: c8041209fc97b7324a9938a656da012b753c6456 (
plain)
- #!/usr/bin/perl
- package IkiWiki::Plugin::format;
- use warnings;
- use strict;
- use IkiWiki 3.00;
- sub import {
- hook(type => "preprocess", id => "format", call => \&preprocess);
- hook(type => "getsetup", id => "format", call => \&getsetup);
- }
- sub getsetup () {
- return
- plugin => {
- safe => 1,
- rebuild => undef,
- },
- }
- sub preprocess (@) {
- 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}) {
- 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;
- error(sprintf(gettext("unsupported page format %s"), $format));
- }
- }
- 1
|