X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/bb93fccf0690344aa77f9538a508959a6de09847..d7aad8d82bd622627ac04218450bd8d136036903:/IkiWiki/Plugin/color.pm

diff --git a/IkiWiki/Plugin/color.pm b/IkiWiki/Plugin/color.pm
index 53d8389d2..e80130d92 100644
--- a/IkiWiki/Plugin/color.pm
+++ b/IkiWiki/Plugin/color.pm
@@ -5,11 +5,21 @@ package IkiWiki::Plugin::color;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 
 sub import {
 	hook(type => "preprocess", id => "color", call => \&preprocess);
 	hook(type => "format",     id => "color", call => \&format);
+	hook(type => "getsetup",   id => "color", call => \&getsetup);
+}
+
+sub getsetup () {
+	return
+		plugin => {
+			safe => 1,
+			rebuild => undef,
+			section => "widget",
+		},
 }
 
 sub preserve_style ($$$) {
@@ -28,12 +38,11 @@ sub preserve_style ($$$) {
 				($background =~ /^[a-z]+$/ || $background =~ /^#[0-9a-f]{3,6}$/));
 
 	my $preserved = '';
-	$preserved .= '<span class="color">';
+	$preserved .= '<span class="color"><span value="';
 	$preserved .= 'color: '.$foreground if ($foreground);
 	$preserved .= '; ' if ($foreground && $background);
 	$preserved .= 'background-color: '.$background if ($background);
-	$preserved .= '</span>';
-	$preserved .= '<span class="colorend">'.$text.'</span>';
+	$preserved .= '"></span>'.$text.'</span>';
 	
 	return $preserved;
 
@@ -42,8 +51,7 @@ sub preserve_style ($$$) {
 sub replace_preserved_style ($) {
 	my $content = shift;
 
-	$content =~ s!<span class="color">((color: ([a-z]+|\#[0-9a-f]{3,6})?)?((; )?(background-color: ([a-z]+|\#[0-9a-f]{3,6})?)?)?)</span>!<span class="color" style="$1">!g;
-	$content =~ s!<span class="colorend">!!g;
+	$content =~ s!<span class="color">\s*<span value="((color: ([a-z]+|\#[0-9a-f]{3,6})?)?((; )?(background-color: ([a-z]+|\#[0-9a-f]{3,6})?)?)?)">\s*</span>!<span class="color" style="$1">!g;
 
 	return $content;
 }
@@ -51,12 +59,11 @@ sub replace_preserved_style ($) {
 sub preprocess (@) {
 	my %params = @_;
 
-	# Preprocess the text to expand any preprocessor directives
-	# embedded inside it.
-	$params{text} = IkiWiki::preprocess($params{page}, $params{destpage},
-				IkiWiki::filter($params{page}, $params{destpage}, $params{text}));
-
-	return preserve_style($params{foreground}, $params{background}, $params{text});
+	return preserve_style($params{foreground}, $params{background},
+		# Preprocess the text to expand any preprocessor directives
+		# embedded inside it.
+		IkiWiki::preprocess($params{page}, $params{destpage},
+			$params{text}));
 }
 
 sub format (@) {