public static function parse($request)
{
foreach (static::$_configurations as $name => $value) {
$original = $request->params;
$name = is_int($name) ? false : $name;
if (!($url = static::_parseScope($name, $request))) {
continue;
}
foreach (static::$_configurations[$name] as $route) {
if (!($match = $route->parse($request, compact('url')))) {
continue;
}
$request = $match;
if ($route->canContinue() && isset($request->params['args'])) {
$url = '/' . join('/', $request->params['args']);
unset($request->params['args']);
continue;
}
static::attach($name, null, isset($request->params) ? $request->params : array());
static::scope($name);
return $request;
}
$request->params = $original;
}
}