The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

App::Adenosine::Plugin::Rainbow

VERSION

version 2.001008

DESCRIPTION

Color codes standard error (diagnostics) from curl. Highly customizable.

METHODS

colorize

 $p->colorize('red1', 'Christmas') . ' ' . $p->colorize('green1', 'tree!');

colorize is the method used to highlight all the pieces that come from the curl output. It takes two arguments, first a color specification, and next the string to be colorized. The complete color specification is defined as:

 {
    fg         => $color,
    bg         => $color,
    bold       => $is_bold,
    italic     => $is_italic,
    underline  => $is_underline,
 }

All of the keys in the hash are optional. The values for $color can be found at "Standard color map" in Term::ExtendedColor. Additionally I've added a form of "legacy support" for named 16 color mode. Those colors are actually arbitrary and most consoles allow you to redefine them, so the names I gave are just the defaults. My named colors are:

 red
 green
 yellow
 blue
 purple
 cyan
 white
 gray
 bright_red
 bright_green
 bright_yellow
 bright_blue
 magenta
 bright_cyan
 bright_white

As a shortcut, if you pass a simple string instead of a hashref it wil be explanded to { fg => $str }.

Note that unfortunately support for all the attributes are spotty. For example on my computer I use tmux 1.6 running within terminator 0.96. In this situation I can't use any of the non-color attributes. Outside of tmux underline works, but the others do not. Similarly, bold only seems to work with some colors. It's pretty frustrating, and experimentation seems necesary.

Overriding colors at runtime

To change a color when you run adenosine instantiate it as follows:

 #!/usr/bin/env perl

 use lib 'path/to/adenosine/lib';
 use App::Adenosine;

 use App::Adenosine::Plugin::Rainbow;
 App::Adenosine->new({
    argv => \@ARGV,
    plugins => [
       App::Adenosine::Plugin::Rainbow->new(
          response_header_name_color => 'orange4',
          response_header_value_color => 'orange2',
          response_ellided_body_color => {
             fg => 'blue12',
             bg => 'blue16',
          },
       ),
    ],
 });

Creating custom themes

To create a custom theme just subclass Rainbow as follows:

 package App::Adennosine::Plugin::Rainbow::Valentine;

 use Moo;
 extends 'App::Adenosine::Plugin::Rainbow';

 has '+response_header_name_color'  => ( default => sub { 'magenta1'  } );
 has '+response_header_value_color' => ( default => sub { 'magenta19' } );
 has '+request_header_name_color'   => ( default => sub { 'magenta7'  } );
 has '+request_header_value_color'  => ( default => sub { 'magenta25' } );

 1;

Then use it the same way you use Rainbow:

 ...
 App::Adenosine->new({ argv => \@ARGV, plugins => ['::Rainbow::Valentine'] })

COLORABLE SECTIONS

Rainbow splits apart the stderr string from curl and hilights the various sections respectively. The values of the sections are what is passed as the first argument to "colorize". The names of the sections are:

  • response_header_colon_color

  • response_header_name_color

  • response_header_value_color

  • request_header_colon_color

  • request_header_name_color

  • request_header_value_color

  • info_star_color

  • response_bracket_color

  • request_bracket_color

  • request_method_color

  • request_uri_color

  • request_protocol_color

  • request_protocol_version_color

  • response_protocol_color

  • response_protocol_version_color

  • response_status_code_color

  • response_status_text_color

  • response_ellided_bracket_color

  • response_ellided_body_color

  • request_ellided_bracket_color

  • request_ellided_body_color

AUTHOR

Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Arthur Axel "fREW" Schmidt.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.