    =head1 NAME

    Term::Chart - Create attractive horizontal bar charts for the terminal interface.

    =head1 SYNOPSIS

      use Term::Chart;

      my $tc = Term::Chart->new();

      for my $number ( 1 .. 10 ) {

          $tc->add_value( { value => $number } );
      }

      $tc->print(), "\n";

    =head3 HTML approximation of the output

    =begin html
▸
═▸
═══▸
═════▸
════════▸
══════════▸
════════════▸
═══════════════▸
═════════════════▸
═══════════════════▸
══════════════════════▸
    =end html

    =head1 SOMETHING ELABORATE

      use Term::Chart;

      my $tc = Term::Chart->new(
          {   default_style => 11,
              color_range   => [ 160 .. 195 ],
          }
      );

      for ( 1 .. 10 ) {

          for my $n (qw( 1 2 3 4 5 6 5 4 3 2 )) {

              my %datum = (
                  value => $n,
                  label => ( 'label ' . $n x $n ),
              );
              $tc->add_value( \%datum );
          }
      }

      $tc->print(), "\n";

    =head3 HTML approximation of the output

    =begin html
label : ●
label 1: ════════●
label 22: ═════════════════●
label 333: ══════════════════════════●
label 4444: ═══════════════════════════════════●
label 55555: ═════════════════════════════════════════════●
label 666666: ══════════════════════════════════════════════════════●
label 7777777: ═══════════════════════════════════════════════════════════════●
label 88888888: ════════════════════════════════════════════════════════════════════════●
label 999999999: ══════════════════════════════════════════════════════════════════════════════════●
=end html =head1 DESCRIPTION This module offers you a convenient way to create horizontal bar charts for your command line programs. The charts can include ANSI color markup and Unicode drawing characters. The characters used and the presence of ANSI color codes is configurable. =head1 METHODS =head2 new The constructor accepts a hash ref with two optional parameters. =over =item color_range Use this to offer a range of color values which will be used accross each horiontal bar. =item default_style This controls which characters are used to create the bars in your bar chart. Accepts an integer which is among: =over =item * '0' =begin html ═▸ =end html =item * '1' =begin html ═▹ =end html =item * '2' =begin html ═► =end html =item * '3' =begin html ═▻ =end html =item * '4' =begin html ◻▷ =end html =item * '5' =begin html ◻◻ =end html =item * '6' =begin html ◼▶ =end html =item * '7' =begin html ◼◗ =end html =item * '8' =begin html ◼◼ =end html =item * '9' =begin html ═◆ =end html =item * '10' =begin html ═◇ =end html =item * '11' =begin html ═● =end html =item * '12' =begin html ═○ =end html =back =back =head2 add_value Add a value to be graphed. Accepts a hash ref with: =over =item label Optional label will be rendered to the left of each bar. =item value The numeric value being graphed. =item color Optional ANSI foreground color. This will override any colors given in the color_range constructor parameter. =item bg_color Optional ANSI background color. =item char The character to use for the bar. This will override the character related to the style indicated in the default_style constructor parameter. =item last_char The last (right most) character of each bar can be different from the rest of the bar. This will override the last character related to the style indicated in the default_style constructor parameter. =back =head2 render This constructs the bar chart as a blob of text and returns it. =head2 print This will print the rendered chart to STDOUT. =head1 TODO Consider a vertical bar chart, and perhaps a crude pie chart? =head1 AUTHOR Dylan Doxey, Edylan@cpan.orgE =head1 COPYRIGHT AND LICENSE Copyright (C) 2012 by Dylan Doxey This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available. =cut