123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- package Automake::Wrap;
- use 5.006;
- use strict;
- require Exporter;
- use vars '@ISA', '@EXPORT_OK';
- @ISA = qw/Exporter/;
- @EXPORT_OK = qw/wrap makefile_wrap/;
- sub _tab_length($)
- {
- my ($txt) = @_;
- my $len = length ($txt);
- $len += 7 * ($txt =~ tr/\t/\t/);
- return $len;
- }
- sub wrap($$$$@)
- {
- my ($head, $fill, $eol, $max_len, @values) = @_;
- my $result = $head;
- my $column = _tab_length ($head);
- my $fill_len = _tab_length ($fill);
- my $eol_len = _tab_length ($eol);
- my $not_first_word = 0;
- foreach (@values)
- {
- my $len = _tab_length ($_);
-
-
- if ($column + $len + $eol_len + 1 > $max_len
-
-
- && ($not_first_word || $fill_len + $len + $eol_len + 1 <= $max_len))
- {
-
- $result .= "$eol\n" . $fill;
- $column = $fill_len;
- }
- elsif ($not_first_word)
- {
-
-
- $_ = " $_" if $result =~ /\S\z/;
- ++$len;
- }
- $result .= $_;
- $column += $len;
- $not_first_word = 1;
- }
- $result .= "\n";
- return $result;
- }
- sub makefile_wrap ($$@)
- {
- my ($head, $fill, @values) = @_;
- if (@values)
- {
- $head .= ' ' if $head =~ /\S\z/;
- return wrap $head, $fill, " \\", 72, @values;
- }
- return "$head\n";
- }
- 1;
|