Data-TableAutoSum
view release on metacpan or search on metacpan
TableAutoSum.pm view on Meta::CPAN
sub is_uniq(@) {
my %items;
foreach (@_) {
return 0 if $items{$_}++;
}
return 1;
}
use constant ROW_COL_TYPE => {
type => SCALAR | ARRAYREF,
callbacks => {
# scalar value
'integer' => sub { implies !ref($_[0]) => $_[0] =~ $RE{num}{int} },
'greater than 0' => sub { implies !ref($_[0]) => ($_[0] =~ $RE{num}{int}) && (int($_[0]) > 0) },
# array ref
'uniq identifiers' => sub { no strict 'refs';
implies ref($_[0]) => is_uniq @{$_[0]} },
'some identifiers' => sub { no strict 'refs';
implies ref($_[0]) => @{$_[0]} }
}
TableAutoSum.pm view on Meta::CPAN
sub cols {
my $self = shift;
return @{$self->{cols}};
}
sub data : lvalue {
my $self = shift;
my ($row, $col, $value) = validate_pos( @_,
{type => SCALAR,
callbacks => {'is a row' => sub {$self->{rowset}->contains(shift())}}
},
{type => SCALAR,
callbacks => {'is a col' => sub {$self->{colset}->contains(shift())}}
},
0
);
$self->{data}->{$row}->{$col} = $value if defined $value;
$self->{data}->{$row}->{$col};
}
sub as_string {
my $self = shift;
my $output = join "\t", "", $self->cols, "Sum\n";
( run in 1.121 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )