/**
  * @param array $options
  *
  * @return \ServerGrove\LocaleBundle\Extension\FlagExtension
  */
 protected function createExtension(array $options = array())
 {
     $options = array_merge(array('domains' => array(), 'defaults' => array()), $options);
     $extension = new FlagExtension($this->createContainer(), $this->createLoader($options['defaults']), 'flags.html.twig', $options['domains']);
     $twig = new \Twig_Environment(new \Twig_Loader_Filesystem(dirname(__DIR__) . '/Resources/views'));
     $extension->initRuntime($twig);
     $twig->addExtension($extension);
     $generator = $this->getMock('Symfony\\Component\\Routing\\Generator\\UrlGeneratorInterface');
     $generator->expects($this->any())->method('generate')->will($this->returnValue('/'));
     $routingExtension = new \Symfony\Bridge\Twig\Extension\RoutingExtension($generator);
     $twig->addExtension($routingExtension);
     $routingExtension->initRuntime($twig);
     return $extension;
 }
 /**
  * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
         return;
     }
     $request = $event->getRequest();
     $this->extension->hideLocale($request->getLocale());
     $languages = array_map(function ($language) {
         return strtolower(preg_replace('/[^a-zA-Z]+/', '-', $language));
     }, $request->getLanguages());
     $defaults = array();
     do {
         $language = current($languages);
         $lang = current(explode('-', $language));
         if (!isset($defaults[$lang]) && $this->extension->forceDefault($language)) {
             $defaults[$lang] = $language;
         }
     } while (next($languages));
 }