File Coverage

lib/CGI/Minimal/Misc.pm
Criterion Covered Total %
statement 70 70 100.0
branch 13 14 92.8
condition n/a
subroutine 6 6 100.0
pod n/a
total 89 90 98.8


line stmt bran cond sub pod time code
1             package CGI::Minimal;
2              
3 5     5   32 use strict;
  5         10  
  5         17410  
4              
5             ####
6              
7             sub _internal_calling_parms_table {
8 3     3   37 my $self = shift;
9 3         6 my $pkg = __PACKAGE__;
10 3         9 my $vars = $self->{$pkg};
11              
12 3         4 my $outs = <<"EOF";
13             \n \n \n\n";
14            
Form Fields
15            
Field Value mime Type File Name
16             EOF
17 3         5 foreach my $fname (sort @{$vars->{'field_names'}}) {
  3         15  
18 6         13 my $f_data = $vars->{'field'}->{$fname};
19 6         9 my $sub_field_counter = $#{$f_data->{'value'}};
  6         11  
20 6         18 for (my $fn=0;$fn <= $sub_field_counter;$fn++) {
21 7         12 my $fmime = $f_data->{'mime_type'}->[$fn];
22 7         10 my $ffile = $f_data->{'filename'}->[$fn];
23 7         10 my $fvalue = '[non-text value]';
24 7 100       26 if ($fmime =~ m#^text/#oi) {
25 6         21 $fvalue = $self->htmlize($f_data->{'value'}->[$fn]);
26             }
27 7         43 $outs .= <<"EOF";
28            
29             $fname (#$fn)
30             $fvalue
31             $fmime
32             $ffile
33            
34             EOF
35             }
36             }
37 3         9 $outs .= <<"EOF";
38            
39             Environment Variables
40            
41              
42            
43             Variable
44             Value
45            
46             EOF
47              
48 3         41 foreach my $fname (sort keys (%ENV)) {
49 63         195 $outs .= "
$fname" .
50             $self->htmlize($ENV{$fname}) . "
51             }
52              
53 3         9 $outs .= "
\n";
54              
55 3         20 return $outs;
56             }
57              
58             ####
59              
60             sub _internal_date_rfc1123 {
61 1     1   2 my $self = shift;
62 1         3 my ($tick) = @_;
63 1         19 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=gmtime($tick);
64 1         5 my $wkday = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat')[$wday];
65 1         3 my $month = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$mon];
66 1         3 $year += 1900;
67 1         14 my $date = sprintf('%s, %02d %s %s %02d:%02d:%02d GMT',$wkday,$mday,$month,$year,$hour,$min,$sec);
68 1         4 return $date;
69             }
70              
71             ####
72              
73             sub _internal_url_decode {
74 258     258   273 my $self = shift;
75 258         294 my ($s) = @_;
76 258 100       444 return '' if (! defined($s));
77 257         298 $s =~ s/\+/ /gs;
78 257         791 $s =~ s/%(?:([0-9a-fA-F]{2})|u([0-9a-fA-F]{4}))/
79 256 50       766 defined($1)? chr hex($1) : _utf8_chr(hex($2))/ge;
80 257         753 return $s;
81             }
82              
83             ####
84              
85             sub _internal_dehtmlize {
86 2     2   3 my $self = shift;
87              
88 2         3 my($s)=@_;;
89              
90 2 100       7 return ('') if (! defined($s));
91              
92 1         4 $s=~s/\>/>/gs;
93 1         3 $s=~s/\</
94 1         2 $s=~s/\"/\"/gs;
95 1         3 $s=~s/\&/\&/gs;
96              
97 1         5 return $s;
98             }
99              
100             sub _internal_set {
101 129     129   176 my $pkg = __PACKAGE__;
102 129         197 my $vars = shift->{$pkg};
103              
104 129         169 my ($parms) = @_;
105 129         413 foreach my $name (keys %$parms) {
106 129         191 my $value = $parms->{$name};
107 129         185 my $data = [];
108 129         186 my $data_type = ref $value;
109 129 100       268 if (! $data_type) {
    100          
110 127         256 $data = [ $value ];
111              
112             } elsif ($data_type eq 'ARRAY') {
113 1         2 @$data = @$value; # Shallow copy
114              
115             } else {
116 1         4 require Carp;
117 1         145 Carp::croak ("${pkg}::_internal_set() - Parameter '$name' has illegal data type of '$data_type'");
118             }
119              
120 128 100       411 if (! defined ($vars->{'field'}->{$name}->{'count'})) {
121 1         2 push (@{$vars->{'field_names'}},$name);
  1         3  
122             }
123 128         174 my $record = {};
124 128         200 $vars->{'field'}->{$name} = $record;
125 128         475 $record->{'count'} = @$data;
126 128         201 $record->{'value'} = $data;
127 128         147 my $data_entries = @$data;
128 128         8755 for (my $f_count=0;$f_count < $data_entries;$f_count++) {
129 129         287 $record->{'filename'}->[$f_count] = '';
130 129         801 $record->{'mime_type'}->[$f_count] = 'text/plain';
131             }
132             }
133             }
134              
135             1;