Пример #1
0
 /**
  * Generate the content of the documentation
  *
  * @return boolean
  */
 private function generateTemplate()
 {
     $st_annotations = $this->extractAnnotations();
     $template = array();
     $anchorMenu = array();
     $counter = 0;
     $currentSection = null;
     $contentMainTpl = $this->getTemplate('content/contentMain.html');
     $sectionTitleTpl = $this->getTemplate('content/sectionTitle.html');
     $anchorTpl = $this->getTemplate('menu/anchor.html');
     foreach ($st_annotations as $class => $methods) {
         foreach ($methods as $name => $docs) {
             // No @Api define in current method
             if (0 === count($docs)) {
                 continue;
             }
             // Create a section title and entry menu if @ApiDescription change
             if (isset($docs['ApiDescription'][0]['section']) && $docs['ApiDescription'][0]['section'] !== $currentSection) {
                 $template[] = strtr($sectionTitleTpl, array('{{ elt_id }}' => $counter, '{{ section }}' => $docs['ApiDescription'][0]['section']));
                 $anchorMenu[] = strtr($anchorTpl, array('{{ elt_id }}' => $counter, '{{ section }}' => $docs['ApiDescription'][0]['section']));
                 $currentSection = $docs['ApiDescription'][0]['section'];
             }
             // Translate variables by values
             $tr = array('{{ elt_id }}' => $counter, '{{ method }}' => $this->generateBadgeForMethod($docs), '{{ route }}' => $docs['ApiRoute'][0]['url'], '{{ implementation_notes }}' => $this->generateImplementationNotes($docs, $counter), '{{ response_classes }}' => $this->generateResponseClasses($docs, $counter), '{{ path_parameters }}' => $this->generateParamsTemplate($docs, $counter));
             $template[] = strtr($contentMainTpl, $tr);
             // Create a anchor for each ApiReturnObject['section']
             //$anchorMenu[] = $this->generateAnchorMenu($docs, $counter);
             $counter++;
         }
     }
     $this->saveTemplate(implode(PHP_EOL, $template), implode(PHP_EOL, $anchorMenu), $this->options->getOutputFile());
     return true;
 }
Пример #2
0
 /**
  * @expectedException \Exception
  */
 public function testCantSaveTheContent()
 {
     $builderOptions = new OptionsBuilder();
     $builderOptions->setApiName('testApp');
     $builderOptions->setOutputDir('build/test');
     $builderOptions->setOutputFile('test.html');
     if (!file_exists($builderOptions->getOutputDir())) {
         mkdir($builderOptions->getOutputDir(), 0600, TRUE);
     }
     $this->builder = new Builder(array('Zckrs\\GenDocApi\\Test\\Client'), $builderOptions);
     $this->builder->generate();
 }
 /**
  * Generates the documentation based on sample classes
  */
 protected function generateDoc()
 {
     $builderOptions = new OptionsBuilder();
     $builderOptions->setApiName($this->appName);
     $builderOptions->setApiDescription($this->appDescription);
     $builderOptions->setOutputFile($this->outputFile);
     $builderOptions->setOutputDir(__DIR__ . $this->outputFolder);
     $builderOptions->setTemplateDir(__DIR__ . '/Resources/views');
     $builderOptions->setAssetDir(__DIR__ . '/Resources/assets');
     try {
         $builder = new Builder(array('Zckrs\\GenDocApi\\Test\\Client', 'Zckrs\\GenDocApi\\Test\\Document'), $builderOptions);
         $builder->generate();
     } catch (\Exception $e) {
         $this->fail(sprintf('There was an error generating the documentation: %s', $e->getMessage()));
     }
 }
Пример #4
0
<?php

// Use autoload
// require __DIR__.'/../../autoload.php';
// Or include classes
require_once __DIR__ . '/src/Builder.php';
require_once __DIR__ . '/src/Extractor.php';
require_once __DIR__ . '/src/Entity/OptionsBuilder.php';
require_once __DIR__ . '/tests/sample/Client.php';
require_once __DIR__ . '/tests/sample/Document.php';
use Zckrs\GenDocApi\Builder;
use Zckrs\GenDocApi\Entity\OptionsBuilder;
// Define classes to search annotations
$classes = array('Zckrs\\GenDocApi\\Test\\Client', 'Zckrs\\GenDocApi\\Test\\Document');
// Options for the Builder. Please see Zckrs\GenDocApi\Entity\OptionsBuilder for available attributes.
$optionsBuilder = new OptionsBuilder();
$optionsBuilder->setApiName('My API');
$optionsBuilder->setApiDescription('That is my awesome API. And this is why you will fall in love with.');
$optionsBuilder->setOutputFile('index.html');
$optionsBuilder->setOutputDir(__DIR__ . '/web');
try {
    $builder = new Builder($classes, $optionsBuilder);
    $builder->generate();
} catch (\Exception $e) {
    echo 'There was an error generating the documentation: ', $e->getMessage();
}