This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Term-ANSIColor to CPAN version 3.01
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Thu, 21 Jul 2011 10:52:47 +0000 (11:52 +0100)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Thu, 21 Jul 2011 11:44:53 +0000 (12:44 +0100)
  [DELTA]

  2011-07-20  Russ Allbery  <rra@stanford.edu>

  * ANSIColor.pm: Version 3.01 released.

  * Makefile.PL: Change the DISTNAME to Term-ANSIColor.

  * ANSIColor.pm (colored): Only interpret an initial array
  reference as a list of colors, not any initial reference, allowing
  the colored function to work properly on objects with
  stringification defined.  Thanks, Revilo Reegiles.
  * t/stringify.t: New test for proper behavior with non-array
  references in colored.

  2011-03-13  Russ Allbery  <rra@stanford.edu>

  * ANSIColor.pm: Fix two syntax errors in the SYNOPSIS.  Thanks,
  Jan Hartung.

  2010-10-08  Russ Allbery  <rra@stanford.edu>

  * ANSIColor.pm: Warn in the documentation that attributes are not
  supported in and will not work with Perl formats.

  2010-04-11  Russ Allbery  <rra@stanford.edu>

  * ANSIColor.pm: Update the URL for ECMA-048 in the documentation.

MANIFEST
Porting/Maintainers.pl
cpan/Term-ANSIColor/ANSIColor.pm
cpan/Term-ANSIColor/ChangeLog
cpan/Term-ANSIColor/README
cpan/Term-ANSIColor/t/stringify.t [new file with mode: 0644]
pod/perldelta.pod

index 8635bf6..d3e5632 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -2101,6 +2101,7 @@ cpan/Term-ANSIColor/ANSIColor.pm  Perl module supporting termcap usage
 cpan/Term-ANSIColor/ChangeLog          Term::ANSIColor
 cpan/Term-ANSIColor/README             Term::ANSIColor
 cpan/Term-ANSIColor/t/basic.t          Tests for Term::ANSIColor
+cpan/Term-ANSIColor/t/stringify.t              Tests for Term::ANSIColor
 cpan/Term-Cap/Cap.pm                   Perl module supporting termcap usage
 cpan/Term-Cap/test.pl                  See if Term::Cap works
 cpan/Term-UI/lib/Term/UI/History.pm    Term::UI
index 9561d3b..835a7e1 100755 (executable)
@@ -1708,7 +1708,7 @@ use File::Glob qw(:case);
     'Term::ANSIColor' =>
        {
        'MAINTAINER'    => 'rra',
-       'DISTRIBUTION'  => 'RRA/ANSIColor-3.00.tar.gz',
+       'DISTRIBUTION'  => 'RRA/ANSIColor-3.01.tar.gz',
        'FILES'         => q[cpan/Term-ANSIColor],
        'EXCLUDED'      => [ qr{^tests/}, qw(t/pod-spelling.t t/pod.t) ],
        'UPSTREAM'      => 'cpan',
index 72b941f..bc2fc7e 100644 (file)
@@ -1,7 +1,7 @@
 # Term::ANSIColor -- Color screen output using ANSI escape sequences.
 #
-# Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2008, 2009, 2010
-#     Russ Allbery <rra@stanford.edu> and Zenin
+# Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2008, 2009, 2010,
+#     2011 Russ Allbery <rra@stanford.edu> and Zenin
 # PUSH/POP support submitted 2007 by openmethods.com voice solutions
 #
 # This program is free software; you may redistribute it and/or modify it
@@ -17,7 +17,7 @@
 package Term::ANSIColor;
 require 5.001;
 
-$VERSION = '3.00';
+$VERSION = '3.01';
 
 use strict;
 use vars qw($AUTOLOAD $AUTOLOCAL $AUTORESET @COLORLIST @COLORSTACK $EACHLINE
@@ -226,7 +226,7 @@ sub uncolor {
 # piped to a pager or some other program).
 sub colored {
     my ($string, @codes);
-    if (ref $_[0]) {
+    if (ref ($_[0]) && ref ($_[0]) eq 'ARRAY') {
         @codes = @{+shift};
         $string = join ('', @_);
     } else {
@@ -296,8 +296,8 @@ grey ATTR
     print colored ("Yellow on magenta.", 'yellow on_magenta'), "\n";
     print "This text is normal.\n";
     print colored ['yellow on_magenta'], 'Yellow on magenta.', "\n";
-    print colored ['red on_bright_yellow'] 'Red on bright yellow.', "\n";
-    print colored ['bright_red on_black], 'Bright red on black.', "\n";
+    print colored ['red on_bright_yellow'], 'Red on bright yellow.', "\n";
+    print colored ['bright_red on_black'], 'Bright red on black.', "\n";
     print "\n";
 
     use Term::ANSIColor qw(uncolor);
@@ -644,6 +644,16 @@ For easier debugging, you may prefer to always use the commas when not
 setting $Term::ANSIColor::AUTORESET or PUSHCOLOR/POPCOLOR so that you'll
 get a fatal compile error rather than a warning.
 
+It's not possible to use this module to embed formatting and color
+attributes using Perl formats.  They replace the escape character with a
+space (as documented in L<perlform(1)>), resulting in garbled output from
+the unrecognized attribute.  Even if there were a way around that problem,
+the format doesn't know that the non-printing escape sequence is
+zero-length and would incorrectly format the output.  For formatted output
+using color or other attributes, either use sprintf() instead or use
+formline() and then add the color or other attributes after formatting and
+before output.
+
 =head1 NOTES
 
 The codes generated by this module are standard terminal control codes,
@@ -695,7 +705,7 @@ currently supported by this module.
 =head1 SEE ALSO
 
 ECMA-048 is available on-line (at least at the time of this writing) at
-L<http://www.ecma-international.org/publications/standards/ECMA-048.HTM>.
+L<http://www.ecma-international.org/publications/standards/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
@@ -714,10 +724,10 @@ Russ with input from Zenin.  Russ Allbery now maintains this module.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2008, 2009, 2010
-Russ Allbery <rra@stanford.edu> and Zenin.  This program is free software;
-you may redistribute it and/or modify it under the same terms as Perl
-itself.
+Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2008, 2009, 2010,
+2011 Russ Allbery <rra@stanford.edu> and Zenin.  This program is free
+software; you may redistribute it and/or modify it under the same terms as
+Perl itself.
 
 PUSHCOLOR, POPCOLOR, and LOCALCOLOR were contributed by openmethods.com
 voice solutions.
index 589496b..77de255 100644 (file)
@@ -1,3 +1,30 @@
+2011-07-20  Russ Allbery  <rra@stanford.edu>
+
+       * ANSIColor.pm: Version 3.01 released.
+
+       * Makefile.PL: Change the DISTNAME to Term-ANSIColor.
+
+       * ANSIColor.pm (colored): Only interpret an initial array
+       reference as a list of colors, not any initial reference, allowing
+       the colored function to work properly on objects with
+       stringification defined.  Thanks, Revilo Reegiles.
+       * t/stringify.t: New test for proper behavior with non-array
+       references in colored.
+
+2011-03-13  Russ Allbery  <rra@stanford.edu>
+
+       * ANSIColor.pm: Fix two syntax errors in the SYNOPSIS.  Thanks,
+       Jan Hartung.
+
+2010-10-08  Russ Allbery  <rra@stanford.edu>
+
+       * ANSIColor.pm: Warn in the documentation that attributes are not
+       supported in and will not work with Perl formats.
+
+2010-04-11  Russ Allbery  <rra@stanford.edu>
+
+       * ANSIColor.pm: Update the URL for ECMA-048 in the documentation.
+
 2010-01-24  Russ Allbery  <rra@stanford.edu>
 
        * ANSIColor.pm: Version 3.00 released.
index ff575a1..051c7c3 100644 (file)
@@ -1,10 +1,10 @@
-                       Term::ANSIColor version 3.00
+                       Term::ANSIColor version 3.01
               (A simple ANSI text attribute control module)
 
-  Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2007, 2009
-  Russ Allbery <rra@stanford.edu> and Zenin.  This program is free
-  software; you may redistribute it and/or modify it under the same terms
-  as Perl itself.
+  Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2005, 2006, 2007, 2009,
+  2010, 2011 Russ Allbery <rra@stanford.edu> and Zenin.  This program is
+  free software; you may redistribute it and/or modify it under the same
+  terms as Perl itself.
 
   I welcome bug reports and patches for this package at rra@stanford.edu.
   However, please be aware that I tend to be extremely busy and to get a
@@ -155,4 +155,8 @@ THANKS
   To Jakob Ilves for sixteen-color support and the initial documentation
   of bright color issues.
 
+  To Revilo Reegiles for reporting problems with the colored function and
+  non-array references with stringification defined, and providing a test
+  case.
+
   To Larry Wall, as always, for Perl.
diff --git a/cpan/Term-ANSIColor/t/stringify.t b/cpan/Term-ANSIColor/t/stringify.t
new file mode 100644 (file)
index 0000000..a8eb448
--- /dev/null
@@ -0,0 +1,38 @@
+#!/usr/bin/perl -Tw
+#
+# t/stringify.t -- Test suite for stringify interaction.
+#
+# Copyright 2011 Revilo Reegiles
+# Copyright 2011 Russ Allbery <rra@stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+# Create a dummy class that implements stringification.
+package Test::Stringify;
+use overload '""' => 'stringify';
+sub new { return bless {} }
+sub stringify { return "Foo Bar\n" }
+package main;
+
+use strict;
+use Test::More tests => 6;
+
+BEGIN {
+    delete $ENV{ANSI_COLORS_DISABLED};
+    use_ok ('Term::ANSIColor',
+            qw/:pushpop color colored uncolor colorstrip colorvalid/);
+}
+
+is (colored ([ 'blue', 'bold' ], 'testing'), "\e[34;1mtesting\e[0m",
+    'colored with an array reference');
+is (colored ("ok\n", 'bold blue'), "\e[1;34mok\n\e[0m",
+    'colored with a following string');
+my $test = Test::Stringify->new;
+is (colored ($test . "", 'bold blue'), "\e[1;34mFoo Bar\n\e[0m",
+    'colored with forced stringification');
+is (colored ($test, 'bold blue'), "\e[1;34mFoo Bar\n\e[0m",
+    'colored with a non-array reference');
+my %foo = (foo => 'bar');
+like (colored (\%foo, 'bold blue'), qr/\e\[1;34mHASH\(.*\)\e\[0m/,
+      'colored with a hash reference');
index 40b00c8..a2f125a 100644 (file)
@@ -104,10 +104,18 @@ to version 1.999002 and a new C<skip_cwd> attribute has been added.
 
 =item *
 
-L<PerlIO::via> has been upgraded from version 0.11 to 0.12.
+L<PerlIO::via> has been upgraded from version 0.11 to version 0.12.
 
 The only change is a correction in the documentation.
 
+=item *
+
+L<Term::ANSIColor> has been upgraded from version 3.00 to version 3.01
+
+Only interpret an initial array reference as a list of colors, not any initial
+reference, allowing the colored function to work properly on objects with
+stringification defined.
+
 =back
 
 =head2 Removed Modules and Pragmata