]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/CGI/Maypole.pm
killed rewrite_path()
[maypole.git] / lib / CGI / Maypole.pm
index 0426f5ab092bc4c74772932973398627e7ce8da3..67cbf92f1c08e34325e1c767b5ffb845393632ff 100644 (file)
@@ -6,40 +6,51 @@ use warnings;
 our $VERSION = "0.3";
 
 sub run {
-       my $self = shift;
-       return $self->handler();
+    my $self = shift;
+    return $self->handler();
 }
 
 sub get_request {
-       require CGI::Simple;
-       shift->{cgi} = CGI::Simple->new();
+    require CGI::Simple;
+    shift->{cgi} = CGI::Simple->new();
 }
 
 sub parse_location {
-     my $self = shift;
-     $self->{path} = $self->{cgi}->url(-absolute=>1, -path_info=>1);
-     my $loc = $self->{cgi}->url(-absolute=>1);
-     no warnings 'uninitialized';
-     $self->{path} =~ s/^($loc)?\///;
-     $self->parse_path;
-     $self->{params} = { $self->{cgi}->Vars };
-     $self->{query}  = { $self->{cgi}->Vars };
+    my $self = shift;
+    $self->{path} = $self->{cgi}->url( -absolute => 1, -path_info => 1 );
+    my $loc = $self->{cgi}->url( -absolute => 1 );
+    no warnings 'uninitialized';
+    $self->{path} =~ s/^($loc)?\///;
+    $self->parse_path;
+    $self->parse_args;
+}
+
+sub parse_args {
+    my $self = shift;
+    my (%vars) = $self->{cgi}->Vars;
+    while ( my ( $key, $value ) = each %vars ) {
+        my @values = split "\0", $value;
+        $vars{$key} = @values == 1 ? $values[0] : \@values;
+    }
+    $self->{params} = {%vars};
+    $self->{query}  = {%vars};
 }
 
 sub send_output {
-     my $r = shift;    
-       print $r->{cgi}->header(-type => $r->{content_type},
-                                         -content_length => length $r->{output},
-                                         );
-     print $r->{output};
+    my $r = shift;
+    print $r->{cgi}->header(
+        -type           => $r->{content_type},
+        -charset        => $r->{document_encoding},
+        -content_length => length $r->{output},
+    );
+    print $r->{output};
 }
 
 sub get_template_root {
-     my $r = shift;
-     $r->{cgi}->document_root . "/". $r->{cgi}->url(-relative=>1);
+    my $r = shift;
+    $r->{cgi}->document_root . "/" . $r->{cgi}->url( -relative => 1 );
 }
 
-
 1;
 
 =head1 NAME
@@ -51,8 +62,8 @@ CGI::Maypole - CGI-based front-end to Maypole
      package BeerDB;
      use base 'CGI::Maypole;
      BeerDB->setup("dbi:mysql:beerdb");
-     BeerDB->config->{uri_base} = "http://your.site/cgi-bin/beer.cgi/";
-     BeerDB->config->{display_tables} = [qw[beer brewery pub style]];
+     BeerDB->config->uri_base("http://your.site/cgi-bin/beer.cgi/");
+     BeerDB->config->display_tables([qw[beer brewery pub style]]);
      # Now set up your database:
      # has-a relationships
      # untaint columns