diff options
-rw-r--r-- | IkiWiki/Plugin/plaintext.pm | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/plaintext.pm b/IkiWiki/Plugin/plaintext.pm new file mode 100644 index 000000000..eaa2725b9 --- /dev/null +++ b/IkiWiki/Plugin/plaintext.pm @@ -0,0 +1,45 @@ +#!/usr/bin/perl +# Plaintext as a wiki page type - links WikiLinks and URIs. +# +# Copyright (C) 2008 Gabriel McManus <gmcmanus@gmail.com> +# Licensed under the GNU General Public License, version 2 or later + +package IkiWiki::Plugin::plaintext; + +use warnings; +use strict; +use IkiWiki 2.00; +use HTML::Entities; +require URI::Find; + +sub import { + hook(type => "filter", id => "txt", call => \&filter); + hook(type => "htmlize", id => "txt", call => \&htmlize); +} + +# We use filter to convert raw text to HTML +# (htmlize is called after other plugins insert HTML) +sub filter (@) { + my %params = @_; + my $content = $params{content}; + + if ($pagesources{$params{page}} =~ /.txt$/) { + encode_entities($content); + my $finder = URI::Find->new( + sub { + my($uri, $orig_uri) = @_; + return qq|<a href="$uri">$orig_uri</a>|; + }); + $finder->find(\$content); + $content = "<pre>" . $content . "</pre>"; + } + return $content; +} + +# We need this to register the .txt file extension +sub htmlize (@) { + my %params=@_; + return $params{content}; +} + +1 |