diff options
| author | Kenneth B. Jensen | 2017-03-28 23:10:37 -0500 | 
|---|---|---|
| committer | Kenneth B. Jensen | 2017-03-28 23:10:37 -0500 | 
| commit | 4c515894303828d257a5cda46eda9df2e84cdf75 (patch) | |
| tree | cf477242c74d209c31944c9d46c10edd2d5a6bd7 | |
| parent | 3da2e7b1d8ac80e5015e641ec9a7b0f5897497b6 (diff) | |
| download | scripts.irssi.org-4c515894303828d257a5cda46eda9df2e84cdf75.tar.bz2 | |
fullrain.pl v1.0
| -rw-r--r-- | scripts/fullrain.pl | 98 | 
1 files changed, 98 insertions, 0 deletions
| diff --git a/scripts/fullrain.pl b/scripts/fullrain.pl new file mode 100644 index 0000000..bac0a62 --- /dev/null +++ b/scripts/fullrain.pl @@ -0,0 +1,98 @@ +# fullrain.pl - Irssi script for colorized fullwidth text +# Copyright (C) 2017 Kenneth B. Jensen <kenneth@jensen.cf> + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3 as  +# published by the Free Software Foundation. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program.  If not, see <http://www.gnu.org/licenses/>. + + +use strict; +use warnings; +use Encode qw(decode); +use Irssi qw(command_bind active_win); + +our $VERSION = '1.0.0'; +our %IRSSI = ( +	authors     => 'kjensenxz', +	contact     => 'kenneth@jensen.cf', +	name        => 'fullrain', +	url         => 'http://github.com/kjensenxz', +	description => 'Prints colorized fullwidth text', +	license     => 'GNU GPLv3', + +	# code borrowed from scripts: +	# 'fullwidth' by prussian <genunrest@gmail.com>  +	# http://github.com/GeneralUnRest/ || Apache 2.0 License +	# 'rainbow' by Jakub Jankowski <shasta@atn.pl> +	# http://irssi.atn.pl/ || GNU GPLv2 (or later) License +); +# colors +#  0 white +#  4 light red +#  8 yellow +#  9 light green +# 11 light cyan +# 12 light blue +# 13 light magenta +my @COLORS = (0, 4, 8, 9, 11, 12, 13); + +sub make_fullcolor { +	my $str = decode('UTF-8', $_[0]); +	my $newstr = q(); + +	my $color = 0; +	my $prev = $color; +	foreach my $char (split //xms, $str) { +		if ($char =~ /\s/xms) { +			$newstr .= q( ); +		} +		else { +			my $nchar = ord $char; +			while (($color = int rand scalar @COLORS) == $prev) {}; +			$prev = $color; +			$newstr .= "\003" . $COLORS[$prev]; +			# check if char is printing nonwhite ascii +			if ($nchar > ord ' ' && $nchar <= ord '~') { +				$newstr .= chr $nchar + 65_248; +			} +			else { +				$newstr .= $char . ' '; +			} +		} +	} +	return $newstr; +} + +command_bind(rfsay => sub { +	my $say = make_fullcolor($_[0]); +	active_win->command("say $say"); #say what you want +	# but don't play games with my affection +}); + +command_bind(rfme => sub { +	my $say = make_fullcolor($_[0]); +	active_win->command("/me $say"); +}); + +command_bind(rftopic => sub { +	my $say = make_fullcolor($_[0]); +	active_win->command("/topic $say"); +}); + +command_bind(rfaway => sub { +	my $say = make_fullcolor($_[0]); +	active_win->command("/away $say"); +}); + +1; + +# changelog: +# 2017/03/28 (1.0.0): initial release | 
