code: private function preparePattern()
      {
          $this->pattern = $this->trimSlashes($this->pattern);
          $this->route = trim($this->route, '/');
  
          if ($this->host !== null) {
              $this->host = rtrim($this->host, '/');
              $this->pattern = rtrim($this->host . '/' . $this->pattern, '/');
          } elseif ($this->pattern === '') {
              $this->_template = '';
              $this->pattern = '#^$#u';
  
              return;
          } elseif (($pos = strpos($this->pattern, '://')) !== false) {
              if (($pos2 = strpos($this->pattern, '/', $pos + 3)) !== false) {
                  $this->host = substr($this->pattern, 0, $pos2);
              } else {
                  $this->host = $this->pattern;
              }
          } elseif (strncmp($this->pattern, '//', 2) === 0) {
              if (($pos2 = strpos($this->pattern, '/', 2)) !== false) {
                  $this->host = substr($this->pattern, 0, $pos2);
              } else {
                  $this->host = $this->pattern;
              }
          } else {
              $this->pattern = '/' . $this->pattern . '/';
          }
  
          if (strpos($this->route, '<') !== false && preg_match_all('/<([\w._-]+)>/', $this->route, $matches)) {
              foreach ($matches[1] as $name) {
                  $this->_routeParams[$name] = "<$name>";
              }
          }
  
          $this->translatePattern(true);
      }
docs: Process [[$pattern]] on rule initialization.