/**
  * Adds a new input/file filter.
  *
  * @param \PDepend\Input\Filter $filter New input/file filter instance.
  * @return void
  */
 public function addFileFilter(Filter $filter)
 {
     $this->fileFilter->append($filter);
 }
Example #2
0
 /**
  * This method will create an iterator instance which contains all files
  * that are part of the parsing process.
  *
  * @return \Iterator
  */
 private function createFileIterator()
 {
     if (count($this->directories) === 0 && count($this->files) === 0) {
         throw new \RuntimeException('No source directory and file set.');
     }
     $fileIterator = new \AppendIterator();
     $fileIterator->append(new \ArrayIterator($this->files));
     foreach ($this->directories as $directory) {
         $fileIterator->append(new Iterator(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($directory . '/', \RecursiveDirectoryIterator::FOLLOW_SYMLINKS)), $this->fileFilter, $directory));
     }
     // TODO: It's important to validate this behavior, imho there is something
     //       wrong in the iterator code used above.
     // Strange: why is the iterator not unique and why does this loop fix it?
     $files = array();
     foreach ($fileIterator as $file) {
         if (is_string($file)) {
             $files[$file] = $file;
         } else {
             $pathname = realpath($file->getPathname());
             $files[$pathname] = $pathname;
         }
     }
     foreach ($files as $key => $file) {
         if (!$this->fileFilter->accept($file, $file)) {
             unset($files[$key]);
         }
     }
     ksort($files);
     // END
     return new \ArrayIterator(array_values($files));
 }
 /**
  * testCompositeNotInvokesNextAcceptIfPreviousAcceptReturnsTrue
  *
  * @return void
  */
 public function testCompositeNotInvokesNextAcceptIfPreviousAcceptReturnsTrue()
 {
     $filter0 = new DummyFilter(false);
     $filter1 = new DummyFilter(true);
     $composite = new CompositeFilter();
     $composite->append($filter0);
     $composite->append($filter1);
     $composite->accept(dirname(__FILE__), dirname(__FILE__));
     $this->assertFalse($filter1->invoked);
 }