-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReflectors.php
72 lines (54 loc) · 2.28 KB
/
Reflectors.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
namespace Tamdaz\Doc2Html;
use Exception;
use DOMException;
use Tamdaz\Doc2Html\Exceptions\EmptyClassesException;
class Reflectors
{
/**
* Analyze all classes in specific namespace(s).
*
* @throws EmptyClassesException
* @throws DOMException
* @throws Exception
*/
public function run(): void
{
$classmap = Classmap::getInstance();
$classmap
->excludeNamespace(...Config::excludeNamespaces())
->excludeClasses(...Config::excludeClasses())
->includeNamespaces(...Config::includeNamespaces())
->includeClasses(...Config::includeClasses())
;
if (Config::isVerbose()) {
LoggerOutput::info("Number of excluded namespace(s) : " . count(Config::excludeNamespaces()) . "\n");
LoggerOutput::info("Number of excluded class(es) : " . count(Config::excludeClasses()) . "\n");
LoggerOutput::info("Number of included namespace(s) : " . count(Config::includeNamespaces()) . "\n");
LoggerOutput::info("Number of included class(es) : " . count(Config::includeClasses()) . "\n");
}
$classmap->generate();
if (empty($classmap->getClasses()))
throw new EmptyClassesException();
$path = Config::getOutputDir();
$step = 0;
$maxStep = count($classmap->getClasses());
$startTime = microtime(true);
foreach ($classmap->getClasses() as $class) {
if (Config::isVerbose())
LoggerOutput::progress("Generating documentation for {$class->getShortName()} class in HTML file...\r");
else
LoggerOutput::progress("In progress: $step of $maxStep (" . round($step / $maxStep * 100) . "%)\r");
(new DocumentationRenderer($class, $path))->render();
$step++;
if (Config::isVerbose())
LoggerOutput::success("Generating documentation for {$class->getShortName()} class in HTML file...\n");
}
$endTime = microtime(true);
$time = $endTime - $startTime;
LoggerOutput::success("Documentation successfully generated !\n");
// 1 is a second.
if ($time >= 1.0)
LoggerOutput::info("Took " . date("i:s", (int) $time) . " sec.\n");
}
}