File Coverage

lib/Mail/AuthenticationResults/Token/QuotedString.pm
Criterion Covered Total %
statement 32 32 100.0
branch 6 6 100.0
condition n/a
subroutine 6 6 100.0
pod 2 2 100.0
total 46 46 100.0


line stmt bran cond sub pod time code
1             package Mail::AuthenticationResults::Token::QuotedString;
2             # ABSTRACT: Class for modelling AuthenticationResults Header parts detected as quoted strings
3              
4             require 5.008;
5 25     25   573 use strict;
  25         53  
  25         1183  
6 25     25   120 use warnings;
  25         68  
  25         1661  
7             our $VERSION = '2.20260216'; # VERSION
8 25     25   148 use Carp;
  25         64  
  25         1660  
9              
10 25     25   260 use base 'Mail::AuthenticationResults::Token';
  25         43  
  25         9184  
11              
12              
13             sub is {
14 192     192 1 201 my ( $self ) = @_;
15 192         290 return 'string';
16             }
17              
18             sub parse {
19 42     42 1 56 my ($self) = @_;
20              
21 42         74 my $header = $self->{ 'header' };
22 42         65 my $value = q{};
23              
24 42         53 my $first = substr( $header,0,1 );
25 42         78 $header = substr( $header,1 );
26 42 100       123 croak 'not a quoted string' if $first ne '"';
27              
28 41         42 my $closed = 0;
29 41         64 while ( length $header > 0 ) {
30 368         351 my $first = substr( $header,0,1 );
31 368         346 $header = substr( $header,1 );
32 368 100       1600 if ( $first eq '"' ) {
33 40         34 $closed = 1;
34 40         42 last;
35             }
36 328         423 $value .= $first;
37             }
38              
39 41 100       92 croak 'Quoted string not closed' if ! $closed;
40              
41 40         57 $self->{ 'value' } = $value;
42 40         45 $self->{ 'header' } = $header;
43              
44 40         54 return;
45             }
46              
47             1;
48              
49             __END__