[RFC] Data::Counter



Hello all -
I've written a new module called Pretty::Table that I'm planning to
put on CPAN. Take a look at the documentation and tell me what you
think, thanks.

=head1 NAME

C<Pretty::Table> - to print pretty text table

=head1 Example

use Pretty::Table;

my $pt = Pretty::Table->new(
data_type => 'row', #row mode
data_format => 'ucfirst', #upper char
if_multi_lines => 1, #enable multi-lines mode
max_col_length => 10, #set max_col_length to 10
);

my $dr = [
['id','name','sex','age','email'],
['01','tommy','male',27],
['02','jarry','male',26],
['03','shanleiguang',26,'shanleiguang@xxxxxxxxx'],
];

$pt->set_data_ref($dr);
$pt->set_title('Contacts');
$pt->set_align('left');
$pt->set_data_format('ucfirst');
$pt->insert(['05','jackie','male',27,'jakie@xxxxxxxxxxxxx']);
$pt->insert(['04','marry','female',26], 4);
print $pt->output();

$pt->set_data_type('col');
$pt->set_deco_cross('*');
$pt->set_if_has_title(0);
print $pt->output();

=head1 Example Output

+---------------------------------------------+
| Contacts |
+----+------------+--------+-----+------------+
| id | name | sex | age | email |
+----+------------+--------+-----+------------+
| 01 | tommy | male | 27 | |
+----+------------+--------+-----+------------+
| 02 | jarry | male | 26 | |
+----+------------+--------+-----+------------+
| 03 | shanleigua | male | 26 | shanleigua |
| | ng | | | ng@xxxxxxx |
| | | | | om |
+----+------------+--------+-----+------------+
| 04 | marry | female | 26 | |
+----+------------+--------+-----+------------+

*-------*-------*-------*------------*--------*
| id | 01 | 02 | 03 | 04 |
*-------*-------*-------*------------*--------*
| name | tommy | jarry | shanleigua | marry |
| | | | ng | |
*-------*-------*-------*------------*--------*
| sex | male | male | male | female |
*-------*-------*-------*------------*--------*
| age | 27 | 26 | 26 | 26 |
*-------*-------*-------*------------*--------*
| email | | | shanleigua | |
| | | | ng@xxxxxxx | |
| | | | om | |
*-------*-------*-------*------------*--------*

=head2 Methods

=over

=item C<Pretty::Table-E<gt>set_data_type(<'row'|'col']>)

my $dr = [
['id','name','sex','age'], #be a 'row' or a 'col'
[...],
];

=item C<Pretty::Table-
E<gt>set_data_format(<'normal'|'uc'|'lc'|'ucfirst'>)

normal - default, not format
uc - upper character
lc - lower character
ucfirst - upper first character

=item C<Pretty::Table-E<gt>set_data_ref(<$dr>)

$dr is a 2D ArrayRef
my $dr = [
['id','name','sex','age'], #be a 'row' or a 'col'
[...],
];

=item C<Pretty::Table-E<gt>set_if_has_title(<1|0>)

if has table header title, default is 1

=item C<Pretty::Table-E<gt>set_title(<$title>)

default is __PACKAGE__ (Pretty::Table)

=item C<Pretty::Table-E<gt>set_indent(<$indent>)

default is 2

=item C<Pretty::Table-E<gt>set_align(<'left'|'center'|'right'>)

default is 'left'

=item C<Pretty::Table-E<gt>set_margin_left(<$margin_left>)

default is 1, no need to change

=item C<Pretty::Table-E<gt>set_margin_right(<$margin_right>)

default is 1, no need to change

=item C<Pretty::Table-E<gt>set_deco_horizontal(<$deco_h>)

default is '|', no need to change

=item C<Pretty::Table-E<gt>set_deco_vertical(<$deco_v>)

default is '-', no need to change

=item C<Pretty::Table-E<gt>set_deco_cross(<$deco_c>)

default is '+', '*' is also pretty

=item C<Pretty::Table-E<gt>set_empty_fill(<$empty_fill>)

default is ' '(space), no need to change

=item C<Pretty::Table-E<gt>set_if_multi_lines(<1|0>)

default is 1, enable multi-lines mode

=item C<Pretty::Table-E<gt>set_max_col_length(<$max_col_length>)

default is 40, 'if_multi_lines' must enabled

=back

=head1 AUTHOR

Shan LeiGuang E<lt>shanleiguang@xxxxxxxxxx<gt>

=cut
.



Relevant Pages

  • Re: Help needed [Logical operations in HLA/HYDE]
    ... The correct way to change upper to lower caseor lower to upper is best ... Then you talke the value of the character of say ta lower case symbol ... Here is the part I can show you of the ascii table used in ... Some langauges have accents on som of the the letters too! ...
    (comp.lang.asm.x86)
  • Re: Is there any way to say ignore case with "in"?
    ... the same character, as the character is already in lower case. ... Instead of 15 exceptions to the rule, conversion to upper has only 5 ... The other effect would be conflating physics' Angstron unit and Kelvin unit signs with ring-a and K. Applicaton programmers beware. ...
    (comp.lang.python)
  • Re: Exercise 7-1
    ... Your indentation is inconsistent and doesn't correspond either to the ...     int c; ... to upper case if it's invoked as "upper", ... while loop to read each character from stdin, ...
    (comp.lang.c)
  • Re: Help converting a string
    ... For example, Alb34ErT will be ... String sentence; ... upper case or lower case: if it is upper case, ... digit or punctuation character, don't change the case at all. ...
    (comp.lang.java.help)
  • RE: password length
    ... follwoing four types of character; ... Password1 valid (upper case, lower case, numeric) ... "Salvatore" wrote: ...
    (microsoft.public.windows.server.active_directory)