Author: Beau Simensen (beau@dflydev.com)
Beispiel #1
0
 /**
  * Convert Source
  *
  * @param SourceInterface $source Source
  */
 public function convertSource(SourceInterface $source)
 {
     $converters = $source->data()->get('converters');
     if (!$converters || !is_array($converters)) {
         $converters = array('null');
     }
     foreach ($converters as $converter) {
         $this->eventDispatcher->dispatch(Sculpin::EVENT_BEFORE_CONVERT, new ConvertEvent($source, $converter, $this->formatterManager->defaultFormatter()));
         $this->converter($converter)->convert(new SourceConverterContext($source));
         $this->eventDispatcher->dispatch(Sculpin::EVENT_AFTER_CONVERT, new ConvertEvent($source, $converter, $this->formatterManager->defaultFormatter()));
     }
 }
Beispiel #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));
     }
 }