diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2002-07-14 21:56:52 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2002-07-14 21:56:52 +0000 |
commit | 135dda528f5206b5b382c504503de4de956e4ac0 (patch) | |
tree | b823d65c270e1a78114e206b2eb4a7b2bea60207 /lib | |
parent | 0304a67eaa5a8d233c4044f6d323d20917601236 (diff) | |
download | perl-135dda528f5206b5b382c504503de4de956e4ac0.tar.gz |
Upgrade to Term::ANSIColor 1.05.
p4raw-id: //depot/perl@17540
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Term/ANSIColor.pm | 91 |
1 files changed, 46 insertions, 45 deletions
diff --git a/lib/Term/ANSIColor.pm b/lib/Term/ANSIColor.pm index 52683d4da3..1edcfb03e9 100644 --- a/lib/Term/ANSIColor.pm +++ b/lib/Term/ANSIColor.pm @@ -1,7 +1,7 @@ # Term::ANSIColor -- Color screen output using ANSI escape sequences. -# $Id: ANSIColor.pm,v 1.4 2001/07/10 08:52:05 eagle Exp $ +# $Id: ANSIColor.pm,v 1.5 2002/06/28 22:49:01 eagle Exp $ # -# Copyright 1996, 1997, 1998, 2000, 2001 +# Copyright 1996, 1997, 1998, 2000, 2001, 2002 # by Russ Allbery <rra@stanford.edu> and Zenin <zenin@bawdycaste.com> # # This program is free software; you may redistribute it and/or modify it @@ -10,9 +10,9 @@ # Ah, September, when the sysadmins turn colors and fall off the trees.... # -- Dave Van Domelen -############################################################################ +############################################################################## # Modules and declarations -############################################################################ +############################################################################## package Term::ANSIColor; require 5.001; @@ -32,14 +32,13 @@ use Exporter (); ON_CYAN ON_WHITE)]); Exporter::export_ok_tags ('constants'); -# Don't use the CVS revision as the version, since this module is also in -# Perl core and too many things could munge CVS magic revision strings. -$VERSION = 1.04; +# Don't use the CVS revision as the version, since this module is also in Perl +# core and too many things could munge CVS magic revision strings. +$VERSION = 1.05; - -############################################################################ +############################################################################## # Internal data structures -############################################################################ +############################################################################## %attributes = ('clear' => 0, 'reset' => 0, @@ -65,28 +64,27 @@ for (reverse sort keys %attributes) { $attributes_r{$attributes{$_}} = $_; } - -############################################################################ +############################################################################## # Implementation (constant form) -############################################################################ +############################################################################## -# Time to have fun! We now want to define the constant subs, which are -# named the same as the attributes above but in all caps. Each constant sub -# needs to act differently depending on whether $AUTORESET is set. Without +# Time to have fun! We now want to define the constant subs, which are named +# the same as the attributes above but in all caps. Each constant sub needs +# to act differently depending on whether $AUTORESET is set. Without # autoreset: # -# BLUE "text\n" ==> "\e[34mtext\n" +# BLUE "text\n" ==> "\e[34mtext\n" # # If $AUTORESET is set, we should instead get: # -# BLUE "text\n" ==> "\e[34mtext\n\e[0m" +# BLUE "text\n" ==> "\e[34mtext\n\e[0m" # # The sub also needs to handle the case where it has no arguments correctly. -# Maintaining all of this as separate subs would be a major nightmare, as -# well as duplicate the %attributes hash, so instead we define an AUTOLOAD -# sub to define the constant subs on demand. To do that, we check the name -# of the called sub against the list of attributes, and if it's an all-caps -# version of one of them, we define the sub on the fly and then run it. +# Maintaining all of this as separate subs would be a major nightmare, as well +# as duplicate the %attributes hash, so instead we define an AUTOLOAD sub to +# define the constant subs on demand. To do that, we check the name of the +# called sub against the list of attributes, and if it's an all-caps version +# of one of them, we define the sub on the fly and then run it. # # If the environment variable ANSI_COLORS_DISABLED is set, turn all of the # generated subs into pass-through functions that don't add any escape @@ -115,10 +113,9 @@ sub AUTOLOAD { } } - -############################################################################ +############################################################################## # Implementation (attribute string form) -############################################################################ +############################################################################## # Return the escape code for a given set of color attributes. sub color { @@ -138,8 +135,8 @@ sub color { } # Return a list of named color attributes for a given set of escape codes. -# Escape sequences can be given with or without enclosing "\e[" and "m". -# The empty escape sequence '' or "\e[m" gives an empty list of attrs. +# Escape sequences can be given with or without enclosing "\e[" and "m". The +# empty escape sequence '' or "\e[m" gives an empty list of attrs. sub uncolor { my (@nums, @result); for (@_) { @@ -167,11 +164,11 @@ sub uncolor { # Given a string and a set of attributes, returns the string surrounded by # escape codes to set those attributes and then clear them at the end of the # string. The attributes can be given either as an array ref as the first -# argument or as a list as the second and subsequent arguments. If -# $EACHLINE is set, insert a reset before each occurrence of the string -# $EACHLINE and the starting attribute code after the string $EACHLINE, so -# that no attribute crosses line delimiters (this is often desirable if the -# output is to be piped to a pager or some other program). +# argument or as a list as the second and subsequent arguments. If $EACHLINE +# is set, insert a reset before each occurrence of the string $EACHLINE and +# the starting attribute code after the string $EACHLINE, so that no attribute +# crosses line delimiters (this is often desirable if the output is to be +# piped to a pager or some other program). sub colored { my ($string, @codes); if (ref $_[0]) { @@ -192,10 +189,9 @@ sub colored { } } - -############################################################################ +############################################################################## # Module return value and documentation -############################################################################ +############################################################################## # Ensure we evaluate to true. 1; @@ -408,9 +404,10 @@ control sequences for video terminals and peripherals. Note that not all displays are ISO 6429-compliant, or even X3.64-compliant (or are even attempting to be so). This module will not work as expected on -displays that do not honor these escape sequences, such as (reportedly) the -"console" in at least some versions of Windows. They may just be ignored, -or they may display as an ESC character followed by some apparent garbage. +displays that do not honor these escape sequences, such as cmd.exe, 4nt.exe, +and command.com under either Windows NT or Windows 2000. They may just be +ignored, or they may display as an ESC character followed by some apparent +garbage. Jean Delvare provided the following table of different common terminal emulators and their support for the various attributes: @@ -441,23 +438,27 @@ supported by this module. =head1 SEE ALSO ECMA-048 is available on-line (at least at the time of this writing) at -E<lt>http://www.ecma.ch/ecma1/STAND/ECMA-048.HTME<gt>. +L<http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>. ISO 6429 is available from ISO for a charge; the author of this module does not own a copy of it. Since the source material for ISO 6429 was ECMA-048 and the latter is available for free, there seems little reason to obtain the ISO standard. +The current version of this module is always available from its web site at +L<http://www.eyrie.org/~eagle/software/ansicolor/>. It is also part of the +Perl core distribution as of 5.6.0. + =head1 AUTHORS Original idea (using constants) by Zenin, reimplemented using subs by Russ -Allbery E<lt>rra@stanford.eduE<gt>, and then combined with the original idea -by Russ with input from Zenin. Russ Allbery now maintains this module. +Allbery <rra@stanford.edu>, and then combined with the original idea by Russ +with input from Zenin. Russ Allbery now maintains this module. -=head1 LICENSE +=head1 COPYRIGHT AND LICENSE -Copyright 1996, 1997, 1998, 2000, 2001 Russ Allbery <rra@stanford.edu> and -Zenin <zenin@bawdycaste.org>. This program is free software; you may +Copyright 1996, 1997, 1998, 2000, 2001, 2002 Russ Allbery <rra@stanford.edu> +and Zenin <zenin@bawdycaste.org>. This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. =cut |