diff -r 22486c9c7b15 -r 378360dbbdba releasing/cbrtools/perl/TableFormatter/Auto.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/releasing/cbrtools/perl/TableFormatter/Auto.pm Wed Jun 30 11:35:58 2010 +0800 @@ -0,0 +1,130 @@ +# Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of the License "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# +# +# Description: +# TableFormatter/Text.pm +# + +package TableFormatter::Auto; + +use constant MAX_WIDTH => 75; +use constant MAX_ROWS => 10; + +use strict; +use TableFormatter; +use TableFormatter::Text; +use vars qw/@ISA/; + +@ISA = qw(TableFormatter); + +sub New { + my $class = shift; + my $inidata = shift; + my $args = shift; + + my ($complex, $complexargs) = $args =~ m/^(\w+)\s*(.*)/; + my $self = bless {}, (ref $class || $class); + + $self->CreateFormatters($complex, $inidata, $complexargs); + + return $self; +} + +sub PrintTable { + my $self = shift; + my $data = shift; + my $doHeading = shift; + + my $usecomplex = $self->UseComplexFormatter($data); + + my $formatter = ($usecomplex?$self->{complex}:$self->{simple}); + return $formatter->PrintTable($data, $doHeading); +} + +## Private + +sub CreateFormatters { + my $self = shift; + my $complex = shift; + my $inidata = shift; + my $complexargs = shift; + + $self->{complex} ||= TableFormatter::CreateFormatter($complex, $inidata, $complexargs); + $self->{simple} ||= TableFormatter::Text->New($inidata); +} + +sub UseComplexFormatter { + my $self = shift; + my $data = shift; + + # Currently {maxrows} and {maxwidth} are unused + my $maxrows = $self->{maxrows} || MAX_ROWS; + my $maxwidth = $self->{maxwidth} || MAX_WIDTH; + + return 1 if (@$data > $maxrows); + return 1 if ($self->TotalWidth($data) > $maxwidth); + return 0; +} + +sub TotalWidth { + my $self = shift; + my $data = shift; + + my $widths = $self->FindColWidths($data); + my $total = 0; + $total += $_ foreach (@$widths); + return $total; +} + +1; + +__END__ + +=head1 NAME + +TableFormatter/Text.pm - Formats tables in text + +=head1 INTERFACE + +=head2 New + +Creates a formatter. + +=head2 PrintTable + +Prints the table. Two arguments: firstly, a 2D array of the data. Secondly, a Boolean specifying whether the first row is a header row. + +=head1 KNOWN BUGS + +None. + +=head1 COPYRIGHT + + Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). + All rights reserved. + This component and the accompanying materials are made available + under the terms of the License "Eclipse Public License v1.0" + which accompanies this distribution, and is available + at the URL "http://www.eclipse.org/legal/epl-v10.html". + + Initial Contributors: + Nokia Corporation - initial contribution. + + Contributors: + + Description: + + +=cut