File Coverage

blib/lib/Net/DNS/RR/TXT.pm
Criterion Covered Total %
statement 48 48 100.0
branch 8 8 100.0
condition 2 2 100.0
subroutine 12 12 100.0
pod 1 2 100.0
total 71 72 100.0


line stmt bran cond sub pod time code
1             package Net::DNS::RR::TXT;
2              
3 8     8   71 use strict;
  8         18  
  8         287  
4 8     8   45 use warnings;
  8         15  
  8         533  
5             our $VERSION = (qw$Id: TXT.pm 1911 2023-04-17 12:30:59Z willem $)[2];
6              
7 8     8   72 use base qw(Net::DNS::RR);
  8         16  
  8         785  
8              
9             =encoding utf8
10              
11              
12             =head1 NAME
13              
14             Net::DNS::RR::TXT - DNS TXT resource record
15              
16             =cut
17              
18 8     8   116 use integer;
  8         20  
  8         87  
19              
20 8     8   347 use Carp;
  8         15  
  8         587  
21 8     8   3305 use Net::DNS::Text;
  8         43  
  8         3701  
22              
23              
24             sub _decode_rdata { ## decode rdata from wire-format octet string
25 7608     7608   12764 my ( $self, $data, $offset ) = @_;
26              
27 7608         11211 my $limit = $offset + $self->{rdlength};
28 7608         9179 my $text;
29 7608         13375 my $txtdata = $self->{txtdata} = [];
30 7608         14171 while ( $offset < $limit ) {
31 14949         31707 ( $text, $offset ) = Net::DNS::Text->decode( $data, $offset );
32 14949         35025 push @$txtdata, $text;
33             }
34              
35 7608 100       12945 croak('corrupt TXT data') unless $offset == $limit; # more or less FUBAR
36 7607         13269 return;
37             }
38              
39              
40             sub _encode_rdata { ## encode rdata as wire-format octet string
41 278     278   448 my $self = shift;
42              
43 278         459 my $txtdata = $self->{txtdata};
44 278         501 return join '', map { $_->encode } @$txtdata;
  278         579  
45             }
46              
47              
48             sub _format_rdata { ## format rdata portion of RR string.
49 900     900   1383 my $self = shift;
50              
51 900         1644 my $txtdata = $self->{txtdata};
52 900         2116 return ( map { $_->unicode } @$txtdata );
  913         2475  
53             }
54              
55              
56             sub _parse_rdata { ## populate RR from rdata in argument list
57 391     391   819 my ( $self, @argument ) = @_;
58              
59 391         625 $self->{txtdata} = [map { Net::DNS::Text->new($_) } @argument];
  404         1026  
60 391         857 return;
61             }
62              
63              
64             sub txtdata {
65 11     11 1 50 my ( $self, @value ) = @_;
66              
67 11 100       30 $self->{txtdata} = [map { Net::DNS::Text->new($_) } @value] if scalar @value;
  2         7  
68              
69 11   100     32 my $txtdata = $self->{txtdata} || [];
70              
71 11 100       30 return ( map { $_->value } @$txtdata ) if wantarray;
  6         14  
72              
73 5 100       28 return defined(wantarray) ? join( ' ', map { $_->value } @$txtdata ) : '';
  3         12  
74             }
75              
76              
77 5     5 0 701 sub char_str_list { return my @txt = &txtdata } # uncoverable pod
78              
79              
80             1;
81             __END__