export() public method

public export ( $collapse = false )
Example #1
0
        /**
         * @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;
        }
Example #2
0
 private function saveSources()
 {
     foreach ($this->files as $file) {
         $tokenDom = $file->getTokens();
         $tokenDom->formatOutput = TRUE;
         $tokenDom->preserveWhiteSpace = FALSE;
         $relName = 'tokens/' . $file->getRelative($this->srcDir, FALSE) . '.xml';
         $fname = $this->xmlDir . '/' . $relName;
         $dir = dirname($fname);
         if (!file_exists($dir)) {
             mkdir($dir, 0777, true);
         }
         try {
             $tokenDom->save($fname);
         } catch (fDOMException $e) {
             throw new ProjectException(sprintf("Internal Error: Token xml file '%s' could not be saved.", $fname), ProjectException::UnitCouldNotBeSaved, $e);
         }
         $this->source->setTokenFileReference($file, $relName);
     }
     $sourceDom = $this->source->export();
     $sourceDom->formatOutput = TRUE;
     $sourceDom->preserveWhiteSpace = FALSE;
     $sourceDom->save($this->xmlDir . '/source.xml');
 }