allow matching of empty path with the spec ~
Christian Walde [Wed, 25 Jan 2012 15:45:21 +0000 (16:45 +0100)]
lib/Web/Dispatch/Parser.pm
t/dispatch_parser.t

index d77d418..213edb0 100644 (file)
@@ -84,6 +84,11 @@ sub _parse_spec_section {
   my ($self) = @_;
   for ($_[1]) {
 
+    # ~
+
+    /\G~/gc and
+      return match_path('^$');
+
     # GET POST PUT HEAD ...
 
     /\G([A-Z]+)/gc and
index dfaa026..8b6f4ab 100644 (file)
@@ -308,6 +308,23 @@ my $dp = Web::Dispatch::Parser->new;
 }
 
 {
+  my $match = '~';
+  my $sub = $dp->parse($match);
+
+  is_deeply(
+    [ $sub->({ PATH_INFO => '/foo' }) ],
+    [],
+    "$match does not match /foo"
+  );
+
+  is_deeply(
+    [ $sub->({ PATH_INFO => '' }) ],
+    [ {} ],
+    "$match matches empty path with empty env"
+  );
+}
+
+{
   my $match = '/foo...';
   my $sub = $dp->parse($match);