NAME
   Term::Report - Easy way to create dynamic 'reports' from within scripts.

SYNOPSIS
       use Term::Report;

       my $items = 10000;
       my $report = Term::Report->new(
               startRow => 4,
               numFormat => 1,
               statusBar => [label => 'Report Status: ', subText => 'Locating widgets', subTextAlign => 'center'],
       );

       my $status = $report->{statusBar};  ## Alias this cause I'm lazy
       $status->setItems($items);
       $status->start;

       $report->printLine("Total widgets I found so far... ");
       my $discard = 0;

       for (1..$items){
           $report->finePrint($report->currentRow(), $report->lineLength('curText')+1, $_);

           if (!($_%(rand(1000)+1000))){
               $discard++;
               $status->subText("Discarding bad widget");
               for my $t (1..1000000){ ## Fake like we are doing something
                   $status->subText($status->subText() . "..") if !($t%900000);
               }
           }
           else{
               $status->subText("Locating widgets");
           }

           $status->update;
       }

       $report->printLine("\n  $discard widgets were discarded\n");

       $status->reset;
       $status->setItems($items-$discard);
       $status->subText('Processing widgets');
       $status->start;

       $report->printLine("\nInventorying widgets... ");

       for (1..($items-$discard)){
           $report->finePrint($report->currentRow(), $report->lineLength('curText')+1, $_);
           $status->update;
       }

       $report->printBarReport(
           "\n\n\n\n    Summary for widgets: \n\n",
           {
               "       Total:        " => $items,
               "       Good Widgets: " => $items-$discard,
               "       Bad Widgets:  " => $discard,
           }
       );

DESCRIPTION
   Term::Report can be used to generate nicely formatted dynamic output. It
   can also use Term::StatusBar to show progress and Number::Format so
   numbers show up more readable. All output is sent to STDOUT.

METHODS
 new(parameters)

           startRow  - This indicates which row to start at. Default is 1.
           startCol  - This indicates which column to start at. Default is 1.
           numFormat - This indicates if you want to use Number::Format. Default is undef.
           statusBar - This indicats if you want to use Term::StatusBar. Default is undef.

   numFormat and statusBar can be passed in 2 different ways.

   The first way is as a simple flag: numFormat => 1

   Or as an array reference with parameters for a Number::Format object:
   numFormat => [-MON_DECIMAL_POINT => ',', -INT_CURR_SYMBOL => '']

   statusBar behaves the same way except takes parameters appropriate for
   Term::StatusBar.

 finePrint($row, $col, @text)

   This gives more control over where to place text.

 printLine(@text)

   This places text after the last known text has been placed. It tries
   very hard to "Do The Right Thing", but I am certain there are more
   'bugs' in it.

 lineLength('m')

   Returns length($obj->{m})

AUTHOR
   Shay Harding <[email protected]>

COPYRIGHT
   This library is free software; you may redistribute and/or modify it
   under the same terms as Perl itself.

SEE ALSO
   the Term::StatusBar manpage, the Number::Format manpage, the
   Term::ANSIScreen manpage