# !something
/\G!/gc and
- return do {
- my $match = $self->_parse_spec_section($_);
- return sub {
- return {} unless $match->(@_);
- return;
- };
- };
+ return match_not($self->_parse_spec_section($_));
# ?<param spec>
/\G\?/gc and
sub _url_extension_match {
my ($self, $str, $extension) = @_;
- if ($extension eq '*') {
- sub {
- if ((my $tmp = shift->{PATH_INFO}) =~ s/\.(\w+)$//) {
- ({ PATH_INFO => $tmp }, $1);
- } else {
- ();
- }
- };
- } else {
- sub {
- if ((my $tmp = shift->{PATH_INFO}) =~ s/\.\Q${extension}\E$//) {
- ({ PATH_INFO => $tmp });
- } else {
- ();
- }
- };
- }
+ match_extension($extension);
}
sub _parse_param_handler {