File Coverage

blib/lib/Astro/VEX/Param/String.pm
Criterion Covered Total %
statement 25 26 96.1
branch 3 6 50.0
condition 1 6 16.6
subroutine 6 6 100.0
pod 0 2 0.0
total 35 46 76.0


line stmt bran cond sub pod time code
1             package Astro::VEX::Param::String;
2              
3             =head1 NAME
4              
5             Astro::VEX::Param::String - VEX (VLBI Experiment Definition) string parameter class
6              
7             =cut
8              
9 2     2   12 use strict;
  2         4  
  2         48  
10 2     2   8 use warnings;
  2         41  
  2         73  
11              
12             our $VERSION = '0.001';
13              
14 2     2   18 use parent qw/Astro::VEX::Param::Value/;
  2         5  
  2         9  
15              
16 2     2   113 use overload '""' => 'stringify';
  2         4  
  2         8  
17              
18             sub new {
19 2   33 2 0 12084 my $proto = shift; my $class = ref($proto) || $proto;
  2         11  
20 2         4 my $value = shift;
21 2         3 my $quoted = shift;
22              
23 2         52 return bless {
24             VALUE => $value,
25             QUOTED => $quoted,
26             }, $class;
27             }
28              
29             sub stringify {
30 2     2 0 4 my $self = shift;
31              
32 2         4 my $value = $self->{'VALUE'};
33 2         3 my $quote = $self->{'QUOTED'};
34              
35 2 50       6 unless (defined $quote) {
36 0 0 0     0 $quote = 1 if $value =~ /[ \t\n]/
37             || $value =~ /^"/;
38             }
39              
40 2 100       8 return $value unless $quote;
41              
42 1         4 $value =~ s/\\/\\\\/;
43              
44 1         7 $value =~ s/(["])/\\$1/g;
45              
46 1         7 return sprintf '"%s"', $value;
47             }
48              
49             1;
50              
51             __END__