]> git.99rst.org Git - irssi-scripts.irssi.org.git/commitdiff
fullrain.pl v1.0
authorKenneth B. Jensen <redacted>
Wed, 29 Mar 2017 04:10:37 +0000 (23:10 -0500)
committerKenneth B. Jensen <redacted>
Wed, 29 Mar 2017 04:10:37 +0000 (23:10 -0500)
scripts/fullrain.pl [new file with mode: 0644]

diff --git a/scripts/fullrain.pl b/scripts/fullrain.pl
new file mode 100644 (file)
index 0000000..bac0a62
--- /dev/null
@@ -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
git clone https://git.99rst.org/PROJECT