rendered paste bodysub Justify {
my $string = shift || return(undef);
my $width = shift || 80;
my $return = '';
$string =~ s/\r//g;
my $last = '';
my $temp = '';
my($quote, $text) = ('', '');
foreach my $line (split(/\n/, $string)) {
if($line =~ /^((?:>\ ?)+)(.*)$/) {
($quote, $text) = ($1, $2);
} else {
($quote, $text) = ('', $line);
}
# $return .= "($quote) ($text)\n";
if($quote eq $last) {
if($text =~ /^\s*$/) {
if($temp ne '') { $return .= (&Just_Sub($temp, $width - length($last), $last) . "\n"); }
$return .= "$quote\n";
$temp = '';
} else {
$temp .= "$text ";
}
} else {
if($text =~ /^\s*$/) {
if($temp ne '') { $return .= (&Just_Sub($temp, $width - length($last), $last) . "\n"); }
$return .= "$quote\n";
$temp = '';
} else {
if($temp ne '') { $return .= (&Just_Sub($temp, $width - length($last), $last) . "\n"); }
$temp = "$text ";
}
$last = $quote;
}
}
if($temp ne '') { $return .= (&Just_Sub($temp, $width, $last) . "\n"); }
$return =~ s/\n$//;
return($return);
}
sub Just_Sub {
my $string = shift || return(undef);
my $width = shift || 80;
my $prefix = shift || '';
my $return = '';
my @words = split(/\ /, $string);
my $retline = '';
foreach my $word (@words) {
if(((length($retline) + length($word) + 1) < $width) || ($retline eq '')) {
$retline .= "$word ";
} else {
$retline =~ s/\ +$//;
$return .= "$prefix$retline\n";
$retline = "$word ";
}
}
if($retline ne '') { $retline =~ s/\ +$//; $return .= "$prefix$retline\n"; }
$return =~ s/\n+$//;
return($return);
}