/**
  * Lists contents backward (storage lookup first)
  *
  * @param string $directory
  * @param bool $recursive
  * @return \Generator
  */
 private function getMetadataFromIndexBackward($directory, $recursive)
 {
     Expect::that($directory)->equals("/");
     Expect::that($recursive)->equals(true);
     $index = ["targetDirname" => null, "content" => null];
     foreach ($this->getInnerFileSystem()->listContents("/", false) as $directory) {
         if ("/{$directory["path"]}" == self::PATH_TO_INDEXES) {
             continue;
         }
         foreach ($this->getInnerFileSystem()->listContents("/{$directory["path"]}", true) as $content) {
             if (strlen($content["basename"]) == 2) {
                 continue;
             }
             if ($index["targetDirname"] != $content["dirname"]) {
                 $index["targetDirname"] = $content["dirname"];
                 $index["content"] = $this->readIndex(self::PATH_TO_INDEXES . "/{$content["dirname"]}/" . self::INDEX_FILE);
             }
             foreach ($index["content"][self::INDEX_FILE__DATA] as $knownPath => $unused) {
                 if ("/{$content["path"]}" == FileSystem::getInnerPath($knownPath)) {
                     (yield $this->getOuterFileSystem()->getMetadata($knownPath));
                     break;
                 }
             }
         }
     }
 }
Пример #2
0
 /**
  * @dataProvider getInnerPathWorksDataProvider
  * @param string $expectedInnerPath
  * @param string $path
  */
 public function testGetInnerPathWorks($expectedInnerPath, $path)
 {
     $this->assertEquals($expectedInnerPath, FileSystem::getInnerPath($path));
 }