File Coverage

blib/lib/String/Trim/More.pm
Criterion Covered Total %
statement 43 43 100.0
branch 4 4 100.0
condition 3 4 75.0
subroutine 12 12 100.0
pod 8 8 100.0
total 70 71 98.5


line stmt bran cond sub pod time code
1             package String::Trim::More;
2              
3             our $DATE = '2014-12-10'; # DATE
4             our $VERSION = '0.02'; # VERSION
5              
6 1     1   40589 use 5.010001;
  1         4  
  1         52  
7 1     1   7 use strict;
  1         2  
  1         47  
8 1     1   6 use warnings;
  1         8  
  1         48  
9              
10 1     1   5 use Exporter;
  1         2  
  1         996  
11             our @ISA = qw(Exporter);
12             our @EXPORT_OK = qw(
13             ltrim
14             rtrim
15             trim
16             ltrim_lines
17             rtrim_lines
18             trim_lines
19             trim_blank_lines
20              
21             ellipsis
22             );
23              
24             sub ltrim {
25 6     6 1 910 my $str = shift;
26 6         20 $str =~ s/\A\s+//s;
27 6         18 $str;
28             }
29              
30             sub rtrim {
31 6     6 1 1651 my $str = shift;
32 6         31 $str =~ s/\s+\z//s;
33 6         23 $str;
34             }
35              
36             sub trim {
37 6     6 1 1491 my $str = shift;
38 6         19 $str =~ s/\A\s+//s;
39 6         20 $str =~ s/\s+\z//s;
40 6         17 $str;
41             }
42              
43             sub ltrim_lines {
44 6     6 1 1649 my $str = shift;
45 6         29 $str =~ s/^[ \t]+//mg; # XXX other unicode non-newline spaces
46 6         19 $str;
47             }
48              
49             sub rtrim_lines {
50 6     6 1 7411 my $str = shift;
51 6         80 $str =~ s/[ \t]+$//mg;
52 6         61 $str;
53             }
54              
55             sub trim_lines {
56 6     6 1 2536 my $str = shift;
57 6         40 $str =~ s/^[ \t]+//mg;
58 6         24 $str =~ s/[ \t]+$//mg;
59 6         27 $str;
60             }
61              
62             sub trim_blank_lines {
63 2     2 1 1567 local $_ = shift;
64 2 100       16 return $_ unless defined;
65 1         635 s/\A(?:\n\s*)+//;
66 1         9 s/(?:\n\s*){2,}\z/\n/;
67 1         7 $_;
68             }
69              
70             sub ellipsis {
71 6     6 1 16 my ($str, $maxlen, $ellipsis) = @_;
72 6   50     17 $maxlen //= 80;
73 6   100     30 $ellipsis //= "...";
74              
75 6 100       17 if (length($str) <= $maxlen) {
76 3         13 return $str;
77             } else {
78 3         22 return substr($str, 0, $maxlen-length($ellipsis)) . $ellipsis;
79             }
80             }
81              
82             1;
83             # ABSTRACT: Various string trimming utilities
84              
85             __END__