public function compile(Route $route)
 {
     $tokens = [];
     $source = str_replace(['/', '[', ']', '(', ')'], ['\\/', '\\[', '\\]', '\\(', '\\)'], $route->getSourceRoute());
     preg_match_all('#\\{\\w+\\}#', $source, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
     foreach ($matches as $match) {
         $name = substr($match[0][0], 1, -1);
         $regexpSource = $this->predefinedRules['alnumd'];
         $rule = $route->getRuleByName($name);
         if (isset($this->predefinedRules[$rule])) {
             $regexpSource = $this->predefinedRules[$rule];
         } elseif ($rule) {
             $regexpSource = $rule;
         }
         $regexp = "({$regexpSource})";
         $tokens[] = ['name' => $name, 'pattern' => $regexpSource, 'placeholder' => $match[0][0]];
         $source = str_replace($match[0][0], $regexp, $source);
     }
     $route->setTokens($tokens);
     $route->setRoute("/^{$source}\$/");
     return $route;
 }
Example #2
0
<?php

//could use $app->route but lets use the mock Route::* instead
Route::setTokens(array('format' => '(\\.[^/]+)?'));
//Inbox, an inbox is a collection of messages and/or notifications streams!
//Route::attachResource("/inbox", "Inbox"); //a collection of streams;
//Route::attachResource("/message", "Message"); //controller should extend post;
//Route::attachResource("/notification", "Notification");
//
//Route::attachResource("/note", "Note"); //notes?
//Route::attachResource("/event", "Event"); //multiple event types and status, e.g proposed meting
//Route::attachResource("/stream", "Stream"); //collection of resources,
//Route::attachResource("/person", "Person"); //persons have different roles?
//Route::attachResource("/group", "Group"); //collection of persons?
//Route::attachResource("/file", "File"); //collection of persons?
//Protocols plugin
//Route::add("/protocols{format}", "protocols", "Protocol");
//Route::attachResource("/protocol", "Protocol"); //a collection of tasks
//$app->route->add("/callme", "callme")
//	->setValues(array(
//		"action"=>function($response, $params = null)use($app){
//
//			//var_dump($params);
//
//			$response->setContentType("json");
//
//			return $response->addContent("{j:s,o:n}");
//
//		})
//	);
//