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 (@) {