/**
  * Returns routes to connect to the given application.
  *
  * @param Application $app An Application instance
  *
  * @return ControllerCollection A ControllerCollection instance
  */
 public function connect(Application $app)
 {
     $routesFactory = $app['controllers_factory'];
     if (0 == count($this->controllers)) {
         return $routesFactory;
     }
     foreach ($this->controllers as $controller) {
         if ($this->controllersAsApplicationAwareService) {
             $controller['Access'] = 'controller.' . $controller['Namespace'] . '.' . $controller['Name'];
             $controllerClass = $controller['Namespace'] . '\\' . $controller['Name'];
             $app[$controller['Access']] = $app->share(function () use($app, $controllerClass) {
                 return new $controllerClass($app);
             });
         } else {
             $controller['Access'] = $controller['Namespace'] . '\\' . $controller['Name'] . ':';
         }
         Rules::connectController($routesFactory, $controller);
     }
     return $routesFactory;
 }
 private static function stalkAnnot($needle, $haystack)
 {
     $sc = Rules::getVendorAnnotationShortCut();
     $output = null;
     $regex = "/^.*{$sc}{$needle}\\s*(.*)\$/";
     $line = preg_grep($regex, explode(PHP_EOL, $haystack));
     preg_match($regex, reset($line), $output);
     return ($output and count($output) > 1) ? $output[1] : null;
 }