original_string: protected function getThemePaths($themes)
      {
          $dirsFromConfig = array_filter(
              [
                  $this->getConfig()->get('digipolis.root.project', false),
                  $this->getConfig()->get('digipolis.root.web', false),
              ]
          );
          $dirs = empty($this->dirs)
              ? $dirsFromConfig
              : $this->dirs;
          if (empty($dirs)) {
              $dirs = [getcwd()];
          }
  
          $finder = clone $this->finder;
          $finder->in($dirs)->files();
          foreach ($themes as $themeName) {
              // Matches 'themes/(custom/){randomfoldername}/{themename}.info.yml'.
              $finder->path('/themes\/(custom\/)?[^\/]*\/' . preg_quote($themeName, '/') . '\.info\.yml/');
          }
          $processed = [];
          $paths = [];
          foreach ($finder as $infoFile) {
              $path = dirname($infoFile->getRealPath());
              // The web dir can be a subdir of the project root (in most cases
              // really). Make sure we don't compile the same theme twice.
              if (isset($processed[$path])) {
                  continue;
              }
              $processed[$path] = true;
              $theme = $infoFile->getBasename('.info.yml');
              $paths[$theme] = $path;
          }
          return $paths;
      }
code: protected function getThemePaths($themes)
      {
          $dirsFromConfig = array_filter(
              [
                  $this->getConfig()->get('digipolis.root.project', false),
                  $this->getConfig()->get('digipolis.root.web', false),
              ]
          );
          $dirs = empty($this->dirs)
              ? $dirsFromConfig
              : $this->dirs;
          if (empty($dirs)) {
              $dirs = [getcwd()];
          }
  
          $finder = clone $this->finder;
          $finder->in($dirs)->files();
          foreach ($themes as $themeName) {
              // Matches 'themes/(custom/){randomfoldername}/{themename}.info.yml'.
              $finder->path('/themes\/(custom\/)?[^\/]*\/' . preg_quote($themeName, '/') . '\.info\.yml/');
          }
          $processed = [];
          $paths = [];
          foreach ($finder as $infoFile) {
              $path = dirname($infoFile->getRealPath());
              // The web dir can be a subdir of the project root (in most cases
              // really). Make sure we don't compile the same theme twice.
              if (isset($processed[$path])) {
                  continue;
              }
              $processed[$path] = true;
              $theme = $infoFile->getBasename('.info.yml');
              $paths[$theme] = $path;
          }
          return $paths;
      }
code_tokens: protected function getThemePaths ( $ themes ) { $ dirsFromConfig = array_filter ( [ $ this -> getConfig ( ) -> get ( 'digipolis.root.project' , false ) , $ this -> getConfig ( ) -> get ( 'digipolis.root.web' , false ) , ] ) ; $ dirs = empty ( $ this -> dirs ) ? $ dirsFromConfig : $ this -> dirs ; if ( empty ( $ dirs ) ) { $ dirs = [ getcwd ( ) ] ; } $ finder = clone $ this -> finder ; $ finder -> in ( $ dirs ) -> files ( ) ; foreach ( $ themes as $ themeName ) { // Matches 'themes/(custom/){randomfoldername}/{themename}.info.yml'. $ finder -> path ( '/themes\/(custom\/)?[^\/]*\/' . preg_quote ( $ themeName , '/' ) . '\.info\.yml/' ) ; } $ processed = [ ] ; $ paths = [ ] ; foreach ( $ finder as $ infoFile ) { $ path = dirname ( $ infoFile -> getRealPath ( ) ) ; // The web dir can be a subdir of the project root (in most cases // really). Make sure we don't compile the same theme twice. if ( isset ( $ processed [ $ path ] ) ) { continue ; } $ processed [ $ path ] = true ; $ theme = $ infoFile -> getBasename ( '.info.yml' ) ; $ paths [ $ theme ] = $ path ; } return $ paths ; }
docstring: Get the theme paths.
  
  @param array $themes
  An array of theme names.
  
  @return array
  The theme paths keyed by theme name.
docstring_tokens: Get the theme paths .