Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # True Rainbow?
- # True Rainow
- use strict;
- use warnings;
- use feature 'switch';
- use Xchat ':all';
- Xchat::hook_command('rainbow', 'rainbow_test');
- my %colors = (
- Red => '04',
- Orange => '07',
- Yellow => '08',
- Green => '03',
- Blue => '02',
- Indigo => '06',
- Violet => '06');
- sub str2rainbow ($){
- my $data = shift;
- my @str = split(//, $data);
- if (@str > 7) {
- splitbow(@str);
- }
- else {
- rainbow(@str);
- }
- }
- sub rainbow_test {
- my $msg = $_[1][1];
- Xchat::command('SAY '.str2rainbow($msg));
- }
- sub rainbow {
- my @str = @_;
- my $return_str = '';
- my $state = 0;
- foreach my $letter (@str) {
- if ($letter eq ' ') {
- $return_str .= ' ';
- }
- else {
- given ($state) {
- when(0) {
- $return_str .= "\003$colors{Red}$letter";
- }
- when(1) {
- $return_str .= "\003$colors{Orange}$letter";
- }
- when(2) {
- $return_str .= "\003$colors{Yellow}$letter";
- }
- when(3) {
- $return_str .= "\003$colors{Green}$letter";
- }
- when(4) {
- $return_str .= "\003$colors{Blue}$letter";
- }
- when(5) {
- $return_str .= "\003$colors{Indigo}$letter";
- }
- when(6) {
- $return_str .= "\002\003$colors{Violet}$letter\002";
- }
- }
- ++$state;
- }
- }
- return $return_str;
- }
- sub splitbow {
- my @str = @_;
- my $str_copy = join('', @str);
- $str_copy =~ s/\s+//g;
- my $return_str = '';
- my @colors = values %colors;
- my $color_state = 0;
- my $count_state = 0;
- my $array_size = length(join '', $str_copy);
- my $per_color = $array_size/7;
- my $data = '';
- foreach my $letter (@str) {
- if ($count_state > $per_color && $color_state != 06) {
- ++$color_state;
- $count_state = 0;
- }
- if ($letter =~ m/\s/) {
- $data .= ' ';
- }
- else {
- given ($color_state) {
- when(0) {
- $data .= "\003$colors{Red}$letter";
- }
- when(1) {
- $data .= "\003$colors{Orange}$letter";
- }
- when(2) {
- $data .= "\003$colors{Yellow}$letter";
- }
- when(3) {
- $data .= "\003$colors{Green}$letter";
- }
- when(4) {
- $data .= "\003$colors{Blue}$letter";
- }
- when(5) {
- $data .= "\003$colors{Indigo}$letter";
- }
- when(6) {
- $data .= "\002\003$colors{Violet}$letter\002";
- }
- }
- ++$count_state;
- }
- }
- return $data;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement