#!/usr/bin/perl # # gwhiz - GWhiz. This will whiz files or output streams. Perl. # # Use this command like the more command. It works on any platform # that has Perl. # # 17-Jan-2005 ver 1.12 # # USAGE: gwhiz [-abchHmsvw] [filename] # eg, # gwhiz /etc/release # df -k | gwhiz # # gwhiz -a # all bells and whistles # gwhiz -b # bells # gwhiz -c # colour (some terms only) # gwhiz -H # output in HTML # gwhiz -m # more colour # gwhiz -s # slow # gwhiz -v # verbose # gwhiz -w # wide # # COPYRIGHT: Copyright (c) 2004 Brendan Gregg. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # 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, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # (http://www.gnu.org/copyleft/gpl.html) # # CONTRIBUTION LIST: # Boyd Adamson # Gunther Feuereisen # # 17-Jan-2005 Brendan Gregg Created this. # 18-Jan-2005 Boyd Adamson Wasted too much time adding more colour & HTML use Getopt::Std; $| = 1; # # Command Line Arguments # &usage() if $ARGV[0] eq "--help"; getopts('abchHmsvw') || &usage(); &usage() if $opt_h; $COLOUR = 1 if $opt_c; $MORECOLOUR = 1 if $opt_m || $opt_a; $HTML = 1 if $opt_H; $BELL = 1 if $opt_b || $opt_a; $SLOW = 1 if $opt_s || $opt_a; $WIDE = 1 if $opt_w || $opt_a; $VERBOSE = 1 if $opt_v || $opt_a; $colour_min = 31; $colour_max = 36; $colour_num = 31; @Superlatives = ("Gee Whiz","Wow","Cor Blimey","Fairdinkum", "Crikey","Wowzer","Gosh","Good Grief"); @Funky_attrib = qw( em strong strike u blink ); # # Whiz Data # print "
" if $HTML;
while ($line = <>) {
	chomp($line);
	whiz($line);
	print "$line\n";
	sleep(1) if $SLOW;
}
print "
\n" if $HTML; ################# # Subroutines # # whiz - Whiz the input variable. # This function will write to the input variable, # similar to chomp. # sub whiz { $line = shift; $line =~ tr/a-z/A-Z/; if ($VERBOSE) { if ( int(rand(3)) == 0) { $index = int(rand(@Superlatives)); $line .= " $Superlatives[$index]"; } } $line .= "!!!"; if ($WIDE) { $line .= "!" x int(rand(16)); } $line = colourise($line); if ($BELL && !$HTML) { $line .= "\a"; } } # colourise - return a colourful version of a string # sub colourise { my ($line) = shift; if ($MORECOLOUR) { if ($HTML) { $line =~ s/./html_funkyise($&)/ge; } else { $line =~ s/./ansi_colourise($&)/ge; } } elsif ($COLOUR) { if ($HTML) { $line = html_funkyise($line); } else { $line = ansi_colourise($line, $colour_num); } $colour_num++; $colour_num = $colour_min if $colour_num > $colour_max; } return $line; } # ansi_colourise - return a string made colourful using ansi sequences # Second argument is the colour number or 0 for a random one. # sub ansi_colourise { my ($string, $colour) = @_; if (! $colour) { $colour = (int(rand($colour_max-$colour_min)) + $colour_min); } my $res = "\e["; $res .= $colour; $res .= ";1m"; $res .= $string; $res .= "\e[0m"; return $res; } # html_funkyise - return a string made more interesting using HTML # sub html_funkyise { my ($string) = shift; return $string if $string eq ' '; $attrib = 0; if ( int(rand(500)) == 0) { $attrib = $Funky_attrib[int(rand(@Funky_attrib))]; } my $res = ''; $res .= "<$attrib>" if $attrib; $res .= $string; $res .= "" if $attrib; $res .= ''; return $res; } # random_html_colour - return a string for a random html color # sub random_html_colour { my ($red, $green, $blue, $brightness); $brightness = 500000; # Choose a dark enough colour while ( $brightness > 150) { $red = int(rand(255)); $green = int(rand(255)); $blue = int(rand(255)); $brightness = (299 * $red + 587 * $green + 114 * $blue) / 1000; } my $res = join( "", unpack("h2h2h2", pack("CCC", $red, $green, $blue ))); $string = "#" . $res; } # usage - print a usage and exit. # sub usage { print "USAGE: gwhiz [-abchHmsvw] [filename]\n"; print " eg,\n"; print " gwhiz /etc/release\n"; print " date | gwhiz\n\n"; print " gwhiz -a # all bells and whistles\n"; print " gwhiz -b # bells\n"; print " gwhiz -c # colour (some terms only)\n"; print " gwhiz -H # output in HTML\n"; print " gwhiz -m # more colour\n"; print " gwhiz -s # slow\n"; print " gwhiz -v # verbose\n"; print " gwhiz -w # wide\n"; exit 1; }