GuideRenderer.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * @link http://www.yiiframework.com/
  4. * @copyright Copyright (c) 2008 Yii Software LLC
  5. * @license http://www.yiiframework.com/license/
  6. */
  7. namespace yii\apidoc\renderers;
  8. use Yii;
  9. use yii\apidoc\helpers\IndexFileAnalyzer;
  10. /**
  11. * Base class for all Guide documentation renderers
  12. *
  13. * @author Carsten Brandt <mail@cebe.cc>
  14. * @since 2.0
  15. */
  16. abstract class GuideRenderer extends BaseRenderer
  17. {
  18. /**
  19. * Render markdown files
  20. *
  21. * @param array $files list of markdown files to render
  22. * @param $targetDir
  23. */
  24. abstract public function render($files, $targetDir);
  25. /**
  26. * Loads guide structure from a set of files
  27. * @param array $files
  28. * @return array
  29. */
  30. protected function loadGuideStructure($files)
  31. {
  32. $chapters = [];
  33. foreach ($files as $file) {
  34. $contents = file_get_contents($file);
  35. if (basename($file) == 'README.md') {
  36. $indexAnalyzer = new IndexFileAnalyzer();
  37. $chapters = $indexAnalyzer->analyze($contents);
  38. break;
  39. }
  40. if (preg_match("/^(.*)\n=+/", $contents, $matches)) {
  41. $headlines[$file] = $matches[1];
  42. } else {
  43. $headlines[$file] = basename($file);
  44. }
  45. }
  46. return $chapters;
  47. }
  48. }