File Coverage

lib/Kwiki/CGI.pm
Criterion Covered Total %
statement 1 3 33.3
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 2 4 50.0


line stmt bran cond sub pod time code
1             package Kwiki::CGI;
2 1     1   5078 use Spoon::CGI -Base;
  0            
  0            
3             use Kwiki ':char_classes';
4              
5             sub init {
6             $self->add_params('page_name');
7             }
8              
9             cgi 'action';
10             cgi 'button';
11              
12             sub page_name {
13             return $self->{page_name} = shift if @_;
14             return $self->{page_name}
15             if defined $self->{page_name};
16             my $page_name = CGI::param('page_name');
17             if (not defined $page_name) {
18             my $query_string = CGI::query_string();
19             $query_string =~ s/%([0-9a-fA-F]{2})/pack("H*", $1)/ge;
20             if ($query_string =~ /^keywords=/) {
21             $page_name = join ' ',
22             grep length($_),
23             split /;?keywords=/, $query_string;
24             }
25             elsif ($ENV{QUERY_STRING} and $ENV{QUERY_STRING} =~ /[^=&;]+[&;]/) {
26             ($page_name = $ENV{QUERY_STRING}) =~ s/(.*?)[&;].*/$1/;
27             }
28             }
29             $page_name = '' if defined $page_name && $page_name =~ /=/;
30             $page_name = $self->uri_unescape($page_name);
31             $self->{page_name} = $self->set_default_page_name($page_name);
32             }
33              
34             sub set_default_page_name {
35             my $page_name = shift;
36             $page_name = '' if $page_name and $page_name =~ /[^$ALPHANUM]/;
37             $page_name ||= $self->hub->config->main_page;
38             }
39              
40             __DATA__