public function match(Nette\Http\IRequest $request)
{
if (empty($_SERVER['argv']) || !is_array($_SERVER['argv'])) {
return NULL;
}
$names = ['action'];
$params = $this->defaults;
$args = $_SERVER['argv'];
array_shift($args);
$args[] = '--';
foreach ($args as $arg) {
$opt = preg_replace('#/|-+#A', '', $arg);
if ($opt === $arg) {
if (isset($flag) || ($flag = array_shift($names))) {
$params[$flag] = $arg;
} else {
$params[] = $arg;
}
$flag = NULL;
continue;
}
if (isset($flag)) {
$params[$flag] = TRUE;
$flag = NULL;
}
if ($opt !== '') {
$pair = explode('=', $opt, 2);
if (isset($pair[1])) {
$params[$pair[0]] = $pair[1];
} else {
$flag = $pair[0];
}
}
}
return $params;
}