From 9d7375c3b263e77da29a5db22af480db8b99d990 Mon Sep 17 00:00:00 2001
From: joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Date: Wed, 23 Aug 2006 05:41:07 +0000
Subject: * Allow preprocessor directives to contain python-like triple-quoted 
  text blocks, for easy nesting of quotes inside. * Add a template plugin. *
 Use the template plugin to add infoboxes to each plugin page listing basic  
 info about the plugin.

---
 IkiWiki/Plugin/template.pm | 52 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 IkiWiki/Plugin/template.pm

(limited to 'IkiWiki/Plugin')

diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm
new file mode 100644
index 000000000..5b4eeb3a8
--- /dev/null
+++ b/IkiWiki/Plugin/template.pm
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+# Structured template plugin.
+package IkiWiki::Plugin::template;
+
+use warnings;
+use strict;
+use IkiWiki;
+use HTML::Template;
+use Encode;
+
+sub import { #{{{
+	IkiWiki::hook(type => "preprocess", id => "template", 
+		call => \&preprocess);
+} # }}}
+
+sub preprocess (@) { #{{{
+	my %params=@_;
+
+	if (! exists $params{id}) {
+		return "[[template missing id parameter]]"
+	}
+
+	my $template_page="templates/$params{id}";
+	IkiWiki::add_depends($params{page}, $template_page);
+
+	my $template_file=$IkiWiki::pagesources{$template_page};
+	return "[[template ".
+	       IkiWiki::htmllink($params{page}, $params{destpage}, $template_page).
+	       " not found]]"
+		unless defined $template_file;
+
+	my $template=HTML::Template->new(
+        	filter => sub {
+                        my $text_ref = shift;
+                        $$text_ref=&Encode::decode_utf8($$text_ref);
+                },
+                filename => IkiWiki::srcfile($template_file),
+                die_on_bad_params => 0,
+		no_includes => 1,
+		blind_cache => 1,
+	);
+
+	foreach my $param (keys %params) {
+		$template->param($param => $params{$param});
+	}
+
+
+	return IkiWiki::preprocess($params{page}, $params{destpage},
+		$template->output);
+} # }}}
+
+1
-- 
cgit v1.2.3