File Coverage

blib/lib/App/RemoteCommand/LineBuffer.pm
Criterion Covered Total %
statement 8 42 19.0
branch 0 8 0.0
condition 0 3 0.0
subroutine 3 7 42.8
pod 0 4 0.0
total 11 64 17.1


line stmt bran cond sub pod time code
1             package App::RemoteCommand::LineBuffer;
2 1     1   10 use v5.24;
  1         3  
3 1     1   3 use warnings;
  1         2  
  1         51  
4 1     1   4 use experimental qw(lexical_subs signatures);
  1         1  
  1         6  
5              
6 0     0 0   sub new ($class) {
  0            
  0            
7 0           bless { buffer => "" }, $class;
8             }
9              
10 0     0 0   sub raw ($self) {
  0            
  0            
11 0           $self->{buffer};
12             }
13              
14 0     0 0   sub add ($self, $buffer) {
  0            
  0            
  0            
15 0           $self->{buffer} .= $buffer;
16 0           $self;
17             }
18              
19 0     0 0   sub get ($self, $drain = undef) {
  0            
  0            
  0            
20 0 0         if ($drain) {
21 0 0         if (length $self->{buffer}) {
22 0           my @line = $self->get;
23 0 0 0       if (length $self->{buffer} and $self->{buffer} ne "\x0d") {
24 0           $self->{buffer} =~ s/[\x0d\x0a]+\z//;
25 0           push @line, $self->{buffer};
26             }
27 0           $self->{buffer} = "";
28 0           return @line;
29             } else {
30 0           return;
31             }
32             }
33 0           my @line;
34 0           while ($self->{buffer} =~ s/\A(.*?(?:\x0d\x0a|\x0d|\x0a))//sm) {
35 0           my $line = $1;
36 0 0         next if $line eq "\x0d";
37 0           $line =~ s/[\x0d\x0a]+\z//;
38 0           push @line, $line;
39             }
40 0           return @line;
41             }
42              
43             1;