X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/11d377af816b30eba336fae2993a79362443c293..6223b697b4a75e0162878e8181b5df3184c7a0a3:/IkiWiki/Plugin/txt.pm?ds=inline

diff --git a/IkiWiki/Plugin/txt.pm b/IkiWiki/Plugin/txt.pm
index e157bf07e..fcfb68be9 100644
--- a/IkiWiki/Plugin/txt.pm
+++ b/IkiWiki/Plugin/txt.pm
@@ -8,7 +8,7 @@ package IkiWiki::Plugin::txt;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 use HTML::Entities;
 
 my $findurl=0;
@@ -17,6 +17,7 @@ sub import {
 	hook(type => "getsetup", id => "txt", call => \&getsetup);
 	hook(type => "filter", id => "txt", call => \&filter);
 	hook(type => "htmlize", id => "txt", call => \&htmlize);
+	hook(type => "htmlizeformat", id => "txt", call => \&htmlizeformat);
 
 	eval q{use URI::Find};
 	if (! $@) {
@@ -24,13 +25,14 @@ sub import {
 	}
 }
 
-sub getsetup () { #{{{
+sub getsetup () {
 	return
 		plugin => {
 			safe => 1,
 			rebuild => 1, # format plugin
+			section => "format",
 		},
-} #}}}
+}
 
 # We use filter to convert raw text to HTML
 # (htmlize is called after other plugins insert HTML)
@@ -38,25 +40,49 @@ sub filter (@) {
 	my %params = @_;
 	my $content = $params{content};
 
-	if (defined $pagesources{$params{page}} && $pagesources{$params{page}} =~ /\.txt$/) {
-		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);
+	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);
 		}
-		$content = "<pre>" . $content . "</pre>";
+		return txt2html($content);
 	}
 
 	return $content;
 }
 
+sub txt2html ($) {
+	my $content=shift;
+	
+	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);
+	}
+	return "<pre>" . $content . "</pre>";
+}
+
 # We need this to register the .txt file extension
 sub htmlize (@) {
 	my %params=@_;
 	return $params{content};
 }
 
+sub htmlizeformat ($$) {
+	my $format=shift;
+	my $content=shift;
+
+	if ($format eq 'txt') {
+		return txt2html($content);
+	}
+	else {
+		return;
+	}
+}
+
 1