diff -r 9f25be3da657 -r fa7a3cc6effd sbsv1/abld/genutil/output.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sbsv1/abld/genutil/output.pm Fri Jun 25 17:29:25 2010 +0800 @@ -0,0 +1,110 @@ +# Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "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: +# Text formatting module +# +# + +package Output; +require Exporter; +@ISA=qw(Exporter); +@EXPORT=qw( + OutSetLength OutSetPostWrap OutFormat Output + OutText +); + + + +my $Len=80; +my $PreWrap="\\"; +my $PreWrapLen=length($PreWrap); +my $PostWrap=' '; +my $PostWrapLen=length($PostWrap); +my $Buf=''; +my $Text=''; + +sub OutSetLength ($) { + if ($_[0]) { + $Len=$_[0]; + return $Len; + } + $Len=80; +} + +sub OutSetPreWrap ($) { + $PreWrap=$_[0]; + $PreWrapLen=length($PreWrap); +} + +sub OutSetPostWrap ($) { + $PostWrap=$_[0]; + $PostWrapLen=length($PostWrap); +} + +sub OutFormat (@) { + my $Item; + foreach $Item (@_) { + $Buf.=$Item; + } +} + +sub OutWrite () { + my @Buf=(); + my $CurLen=0; + if ($Buf=~/^(\s)/o) { + # output any starting spaces or tabs + $Text.=$1; + $CurLen=length($1); + } + while ($Buf=~/([^ "\t\n\r\f]*"[^"\t\n\r\f]+"[^ "\t\n\r\f]*|[^ "\t\n\r\f]+)/go) { + # get the elements of $Buf into @Buf + push @Buf, $1; + } + $Buf=''; + my $Elem; + foreach $Elem (@Buf) { + my $ElemLen=length($Elem); + if (($CurLen+$ElemLen+$PreWrapLen) > $Len) { + # $Len doesn't account for the newline character + # wrap the line if adding another element will take it over the prescribed length + $Text.="$PreWrap\n$PostWrap"; + $CurLen=$PostWrapLen; + } + elsif ($CurLen>$PostWrapLen) { + # add a space to the line if they're are already elements in the line + $Text.=' '; + $CurLen++; + } + # add element to the line + $Text.=$Elem; + $CurLen+=$ElemLen; + } + # finish with a newline + $Text.="\n"; +} + +sub Output (@) { + OutWrite if $Buf; # output the formatted text before doing any more output + my $Item; + foreach $Item (@_) { + $Text.=$Item; + } +} + +sub OutText () { + my $temp=$Text; + $Text=''; + $temp; +} + +1;