예제 #1
0
 /**
  * Returns a function to use for listing
  *
  * @return function(string): string[]
  */
 protected function entries()
 {
     return function ($package) {
         if ('' === $package) {
             $folder = $this->base;
             $prefix = '';
         } else {
             $folder = new Folder($this->base, strtr($package, '/', DIRECTORY_SEPARATOR));
             $prefix = $package . '/';
         }
         $r = [];
         foreach ($folder->entries() as $entry) {
             $name = $entry->name();
             if (is_dir($entry)) {
                 $r[] = $prefix . $name . '/';
             } else {
                 foreach ($this->extensions as $extension) {
                     $offset = -strlen($extension);
                     if (0 === substr_compare($name, $extension, $offset)) {
                         $r[] = $prefix . substr($name, 0, $offset);
                     }
                 }
             }
         }
         return $r;
     };
 }