sub _parse_spec {
my ($self, $spec, $nested) = @_;
+ return sub { {} } unless length($spec);
for ($_[1]) {
my @match;
PARSE: { do {
# %<param spec>
/\G\%/gc and
return $self->_parse_param_handler($_, 'body');
+
+ # *<param spec>
+ /\G\*/gc and
+ return $self->_parse_param_handler($_, 'uploads');
}
return; # () will trigger the blam in our caller
}
/\G(?:(?=[+|\)])|$)/gc and
return '';
# word chars only -> exact path part match
- /\G([\w\-]+)/gc and
+ /
+ \G(
+ (?: # start matching at a space followed by:
+ [\w\-] # word chars or dashes
+ | # OR
+ \. # a period
+ (?!\.) # not followed by another period
+ )
+ + # then grab as far as possible
+ )
+ /gcx and
return "\Q$1";
# ** -> capture unlimited path parts
/\G\*\*/gc and