Esempio n. 1
0
 /**
  * Constructor
  *
  * @param Analyzer            $analyzer   Analyzer
  * @param DataSourceInterface $dataSource Data Source
  * @param SplFileInfo         $file       File
  * @param bool                $isRaw      Should be treated as raw
  * @param bool                $hasChanged Has the file changed?
  */
 public function __construct(Analyzer $analyzer, DataSourceInterface $dataSource, SplFileInfo $file, $isRaw, $hasChanged = false)
 {
     $this->analyzer = $analyzer;
     $this->sourceId = 'FileSource:' . $dataSource->dataSourceId() . ':' . $file->getRelativePathname();
     $this->relativePathname = $file->getRelativePathname();
     $this->filename = $file->getFilename();
     $this->file = $file;
     $this->isRaw = $isRaw;
     $this->hasChanged = $hasChanged;
     $internetMediaTypeFactory = $this->analyzer->getInternetMediaTypeFactory();
     $this->applicationXmlType = $internetMediaTypeFactory->createApplicationXml();
     $this->init();
 }
Esempio n. 2
0
 /**
  * Run.
  *
  * @param DataSourceInterface $dataSource Data source
  * @param SourceSet           $sourceSet  Source set
  * @param IoInterface         $io         IO Interface
  */
 public function run(DataSourceInterface $dataSource, SourceSet $sourceSet, IoInterface $io = null)
 {
     if (null === $io) {
         $io = new NullIo();
     }
     $found = false;
     $startTime = microtime(true);
     $dataSource->refresh($sourceSet);
     $this->eventDispatcher->dispatch(self::EVENT_BEFORE_RUN, new SourceSetEvent($sourceSet));
     if ($updatedSources = array_filter($sourceSet->updatedSources(), function ($source) {
         return !$source->isGenerated();
     })) {
         if (!$found) {
             $io->write('Detected new or updated files');
             $found = true;
         }
         $total = count($updatedSources);
         $io->write('Generating: ', false);
         $io->write('', false);
         $counter = 0;
         $timer = microtime(true);
         foreach ($updatedSources as $source) {
             $this->generatorManager->generate($source, $sourceSet);
             $io->overwrite(sprintf("%3d%%", 100 * (++$counter / $total)), false);
         }
         $io->write(sprintf(" (%d sources / %4.2f seconds)", $total, microtime(true) - $timer));
     }
     foreach ($sourceSet->updatedSources() as $source) {
         $permalink = $this->permalinkFactory->create($source);
         $source->setPermalink($permalink);
         $source->data()->set('url', $permalink->relativeUrlPath());
     }
     if ($updatedSources = $sourceSet->updatedSources()) {
         if (!$found) {
             $io->write('Detected new or updated files');
             $found = true;
         }
         $total = count($updatedSources);
         $io->write('Converting: ', false);
         $io->write('', false);
         $counter = 0;
         $timer = microtime(true);
         foreach ($updatedSources as $source) {
             $this->converterManager->convertSource($source);
             if ($source->canBeFormatted()) {
                 $source->data()->set('blocks', $this->formatterManager->formatSourceBlocks($source));
             }
             $io->overwrite(sprintf("%3d%%", 100 * (++$counter / $total)), false);
         }
         $io->write(sprintf(" (%d sources / %4.2f seconds)", $total, microtime(true) - $timer));
     }
     if ($updatedSources = $sourceSet->updatedSources()) {
         if (!$found) {
             $io->write('Detected new or updated files');
             $found = true;
         }
         $total = count($updatedSources);
         $io->write('Formatting: ', false);
         $io->write('', false);
         $counter = 0;
         $timer = microtime(true);
         foreach ($updatedSources as $source) {
             if ($source->canBeFormatted()) {
                 $source->setFormattedContent($this->formatterManager->formatSourcePage($source));
             } else {
                 $source->setFormattedContent($source->content());
             }
             $io->overwrite(sprintf("%3d%%", 100 * (++$counter / $total)), false);
         }
         $this->eventDispatcher->dispatch(self::EVENT_AFTER_FORMAT, new SourceSetEvent($sourceSet));
         $io->write(sprintf(" (%d sources / %4.2f seconds)", $total, microtime(true) - $timer));
     }
     foreach ($sourceSet->updatedSources() as $source) {
         if ($source->isGenerator() || $source->shouldBeSkipped()) {
             continue;
         }
         $this->writer->write(new SourceOutput($source));
         $io->write(' + ' . $source->sourceId());
     }
     $this->eventDispatcher->dispatch(self::EVENT_AFTER_RUN, new SourceSetEvent($sourceSet));
     if ($found) {
         $io->write(sprintf("Processing completed in %4.2f seconds", microtime(true) - $startTime));
     }
 }