e5228c3299c5f98b3b8ac8b3cda0b2d11d4e6ce5
[ikiwiki.git] / IkiWiki / Plugin / mdwn.pm
1 #!/usr/bin/perl
2 # Markdown markup language
3 package IkiWiki::Plugin::mdwn;
4
5 use warnings;
6 use strict;
7 use IkiWiki;
8
9 sub import { #{{{
10         hook(type => "htmlize", id => "mdwn", call => \&htmlize);
11 } # }}}
12
13 my $markdown_loaded=0;
14 sub htmlize (@) { #{{{
15         my %params=@_;
16         my $content = $params{content};
17
18         if (! $markdown_loaded) {
19                 # Note: This hack to make markdown run as a proper perl
20                 # module. A proper perl module is available in Debian
21                 # for markdown, but not upstream yet.
22                 no warnings 'once';
23                 $blosxom::version="is a proper perl module too much to ask?";
24                 use warnings 'all';
25
26                 eval q{use Markdown};
27                 if ($@) {
28                         do "/usr/bin/markdown" ||
29                                 error("failed to load Markdown.pm perl module ($@) or /usr/bin/markdown ($!)");
30                 }
31                 $markdown_loaded=1;
32                 require Encode;
33         }
34         
35         # Workaround for perl bug (#376329)
36         $content=Encode::encode_utf8($content);
37         $content=Encode::encode_utf8($content);
38         $content=Markdown::Markdown($content);
39         $content=Encode::decode_utf8($content);
40         $content=Encode::decode_utf8($content);
41
42         return $content;
43 } # }}}
44
45 1