This method exports all newly registered units into their respective files
and updates the collection file accordingly
public export ( ) : TheSeer\fDOM\fDOMDocument | ||
return | TheSeer\fDOM\fDOMDocument |
/** * @return array */ public function save() { $map = array('class' => 'classes', 'trait' => 'traits', 'interface' => 'interfaces'); foreach ($map as $col) { $path = $this->xmlDir . '/' . $col; if (!file_exists($path)) { mkdir($path, 0755, TRUE); } } $indexDom = $this->index->export(); $reportUnits = $this->saveUnits; foreach($this->saveUnits as $unit) { /** @var AbstractUnitObject $unit */ $indexNode = $this->index->findUnitNodeByName($unit->getNamespace(), $unit->getLocalName()); if (!$indexNode) { throw new ProjectException( sprintf( "Internal Error: Unit '%s' not found in index (ns: %s, n: %s).", $unit->getName(), $unit->getNamespace(), $unit->getLocalName() ), ProjectException::UnitNotFoundInIndex ); } $name = str_replace('\\', '_', $unit->getName()); $dom = $unit->export(); $dom->formatOutput = TRUE; $dom->preserveWhiteSpace = FALSE; $fname = $map[$dom->documentElement->localName] . '/' . $name . '.xml'; if ($indexNode->hasAttribute('xml')) { $reportUnits = array_merge($reportUnits, $this->findAffectedUnits($fname)); } else { $indexNode->setAttribute('xml', $fname); } $dom->save($this->xmlDir . '/' . $fname); } $indexDom->formatOutput = TRUE; $indexDom->preserveWhiteSpace = FALSE; $indexDom->save($this->xmlDir . '/index.xml'); $sourceDom = $this->source->export(); $sourceDom->formatOutput = TRUE; $sourceDom->preserveWhiteSpace = FALSE; $sourceDom->save($this->xmlDir . '/source.xml'); $this->saveUnits = array(); return $reportUnits; }
/** * @return array */ public function save() { try { $map = $this->initDirectories(); $indexDom = $this->index->export(); $reportUnits = $this->saveUnits; foreach ($this->saveUnits as $unit) { $reportUnits = $this->saveUnit($map, $reportUnits, $unit); } $indexDom->formatOutput = TRUE; $indexDom->preserveWhiteSpace = FALSE; $indexDom->save($this->xmlDir . '/index.xml'); $this->saveSources(); $this->saveUnits = array(); $this->files = array(); return $reportUnits; } catch (\Exception $e) { throw new ProjectException(sprintf('An error occured while saving the collected data: %s', $e->getMessage()), ProjectException::ErrorWhileSaving, $e); } }