color: New plugin from ptecza.
parent
6364949dfc
commit
042a057778
|
@ -0,0 +1,69 @@
|
|||
#!/usr/bin/perl
|
||||
# Ikiwiki text colouring plugin
|
||||
# Paweł‚ Tęcza <ptecza@net.icm.edu.pl>
|
||||
package IkiWiki::Plugin::color;
|
||||
|
||||
use warnings;
|
||||
use strict;
|
||||
use IkiWiki 2.00;
|
||||
|
||||
sub import { #{{{
|
||||
hook(type => "preprocess", id => "color", call => \&preprocess);
|
||||
hook(type => "format", id => "color", call => \&format);
|
||||
} #}}}
|
||||
|
||||
sub preserve_style ($$$) { #{{{
|
||||
my $foreground = shift;
|
||||
my $background = shift;
|
||||
my $text = shift;
|
||||
|
||||
$foreground = defined $foreground ? lc($foreground) : '';
|
||||
$background = defined $background ? lc($background) : '';
|
||||
$text = '' unless (defined $text);
|
||||
|
||||
# Validate colors. Only color name or color code are valid.
|
||||
$foreground = '' unless ($foreground &&
|
||||
($foreground =~ /^[a-z]+$/ || $foreground =~ /^#[0-9a-f]{3,6}$/));
|
||||
$background = '' unless ($background &&
|
||||
($background =~ /^[a-z]+$/ || $background =~ /^#[0-9a-f]{3,6}$/));
|
||||
|
||||
my $preserved = '';
|
||||
$preserved .= '<span class="color">';
|
||||
$preserved .= 'color: '.$foreground if ($foreground);
|
||||
$preserved .= '; ' if ($foreground && $background);
|
||||
$preserved .= 'background-color: '.$background if ($background);
|
||||
$preserved .= '</span>';
|
||||
$preserved .= '<span class="colorend">'.$text.'</span>';
|
||||
|
||||
return $preserved;
|
||||
|
||||
} #}}}
|
||||
|
||||
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;
|
||||
|
||||
return $content;
|
||||
} #}}}
|
||||
|
||||
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});
|
||||
} #}}}
|
||||
|
||||
sub format (@) { #{{{
|
||||
my %params = @_;
|
||||
|
||||
$params{content} = replace_preserved_style($params{content});
|
||||
return $params{content};
|
||||
} #}}}
|
||||
|
||||
1
|
|
@ -17,6 +17,7 @@ ikiwiki (2.62) UNRELEASED; urgency=low
|
|||
* filecheck: New plugin factoring out the PageSpec additions that were
|
||||
originally part of the attachment plugin.
|
||||
* edittemplate: Don't wipe out edits on preview.
|
||||
* color: New plugin from ptecza.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Thu, 21 Aug 2008 16:20:58 -0400
|
||||
|
||||
|
|
|
@ -100,6 +100,10 @@ Files: txt.pm
|
|||
Copyright: Copyright (C) 2008 Gabriel McManus <gmcmanus@gmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
Files: color.pm
|
||||
Copyright: Copyright (C) 2008 Paweł Tęcza <ptecza@net.icm.edu.pl>
|
||||
License: GPL-2+
|
||||
|
||||
Files: doc/logo/*
|
||||
Copyright: © 2006 Recai Oktaş <roktas@debian.org>
|
||||
License: GPL-2+
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
\[[!template id=plugin name=color core=0 author="[[ptecza]]"]]
|
||||
|
||||
This plugin can be used to color a piece of text on a page.
|
||||
It can be used to set the foreground and/or background color of the text.
|
||||
|
||||
You can use a color name (e.g. `white`) or HTML code (e.g. `#ffffff`)
|
||||
to define colors.
|
||||
|
||||
## examples
|
||||
|
||||
Here the foreground color is defined as a word, while the background color
|
||||
is defined as a HTML color code:
|
||||
|
||||
\[[!color foreground=white background=#ff0000 text="White text on red background"]]
|
||||
|
||||
The background color is missing, so the text is displayed on default
|
||||
background:
|
||||
|
||||
\[[!color foreground=white text="White text on default color background"]]
|
||||
|
||||
The foreground is missing, so the text has the default foreground color:
|
||||
|
||||
\[[!color background=#ff0000 text="Default color text on red background"]]
|
|
@ -348,3 +348,7 @@ legend {
|
|||
background: #eee;
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
span.color {
|
||||
padding: 2px;
|
||||
}
|
||||
|
|
|
@ -227,3 +227,5 @@ Of course, I'm open for discussion or exchange of ideas :) --[[Paweł|ptecza]]
|
|||
+span.color {
|
||||
+ padding: 2px;
|
||||
+}
|
||||
|
||||
[[done]]
|
||||
|
|
Loading…
Reference in New Issue