/**
  * Returns a new route object for inspecting and generating the host.
  *
  * @param string $pattern      The host pattern
  * @param array  $defaults     All defaults for the current route
  * @param array  $requirements All requirements for the current route
  * @param array  $options      All options for the current route
  *
  * @return sfRoute
  */
 protected function createHostRoute($pattern, $defaults, $requirements, $options)
 {
     $filteredDefaults = array();
     $filteredRequirements = array();
     // this temporary route is just for extracting variables from the pattern
     $tmp = new sfRoute($pattern);
     foreach (array_keys($tmp->getVariables()) as $name) {
         if (isset($defaults[$name])) {
             $filteredDefaults[$name] = $defaults[$name];
         }
         if (isset($requirements[$name])) {
             $filteredRequirements[$name] = $requirements[$name];
         }
     }
     return new sfRoute($pattern, $filteredDefaults, $filteredRequirements, $options);
 }