X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a4d693f659b901557e596c41d3ab48bce804d7f6..bb7877707ef730c7fdab01509ac6a9cc9eb252d1:/IkiWiki/Plugin/txt.pm

diff --git a/IkiWiki/Plugin/txt.pm b/IkiWiki/Plugin/txt.pm
index 2670e9b63..0d9a0b35b 100644
--- a/IkiWiki/Plugin/txt.pm
+++ b/IkiWiki/Plugin/txt.pm
@@ -8,13 +8,29 @@ package IkiWiki::Plugin::txt;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 use HTML::Entities;
-require URI::Find;
+
+my $findurl=0;
 
 sub import {
-	hook(type => "filter",  id => "txt", call => \&filter);
+	hook(type => "getsetup", id => "txt", call => \&getsetup);
+	hook(type => "filter", id => "txt", call => \&filter);
 	hook(type => "htmlize", id => "txt", call => \&htmlize);
+
+	eval q{use URI::Find};
+	if (! $@) {
+		$findurl=1;
+	}
+}
+
+sub getsetup () {
+	return
+		plugin => {
+			safe => 1,
+			rebuild => 1, # format plugin
+			section => "format",
+		},
 }
 
 # We use filter to convert raw text to HTML
@@ -23,14 +39,22 @@ 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);
+	if (defined $pagesources{$params{page}} &&
+	    $pagesources{$params{page}} =~ /\.txt$/) {
+		if ($pagesources{$params{page}} eq 'robots.txt' &&
+		    $params{page} eq $params{destpage}) {
+			will_render($params{page}, 'robots.txt');
+			writefile('robots.txt', $config{destdir}, $content);
+		}
+
+		encode_entities($content, "<>&");
+		if ($findurl) {
+			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>";
 	}