forked from phaserjs/phaser
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProcessor.php
More file actions
111 lines (92 loc) · 2.83 KB
/
Copy pathProcessor.php
File metadata and controls
111 lines (92 loc) · 2.83 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
class Processor
{
public $file;
public $blocks;
public $consts;
public $methods;
public $properties;
/**
* Processes the given JS source file.
*
* @param mixed $file
* @return Processor
*/
public function __construct($file)
{
$this->consts = [];
$this->methhods = [];
$this->properties = [];
$this->file = $file;
$this->scanFile();
}
/**
* Scans the given JS source file and extracts blocks from it
*/
private function scanFile() {
$js = file($this->file);
$scanningForOpen = true;
$scanningForClose = false;
$openLine = 0;
$closeLine = 0;
$chunk = [];
// Literally scan the JS file, line by line
for ($i = 0; $i < count($js); $i++)
{
$line = trim($js[$i]);
if ($scanningForOpen && $line === "/**")
{
$scanningForOpen = false;
$scanningForClose = true;
$chunk = [];
$openLine = $i;
}
if ($scanningForClose && $line === "*/")
{
$scanningForOpen = true;
$scanningForClose = false;
$closeLine = $i;
// The first element is always the opening /** so remove it
array_shift($chunk);
$this->blocks[] = new Block($openLine, $closeLine, $js[$i + 1], $chunk);
}
else
{
$chunk[] = $line;
}
}
// Process the data into our documentation types
for ($i = 0; $i < $this->total(); $i++)
{
if ($this->blocks[$i]->isConst)
{
$this->consts[] = new Constant($this->blocks[$i]);
}
else if ($this->blocks[$i]->isMethod)
{
$this->methods[] = new Method($this->blocks[$i]);
}
else if ($this->blocks[$i]->isProperty)
{
$this->properties[] = new Property($this->blocks[$i]);
}
}
}
public function getConstsArray()
{
$out = [];
for ($i = 0; $i < count($this->consts); $i++)
{
$out[] = $this->consts[$i]->getArray();
}
return $out;
}
/**
* The total number of blocks scanned.
*/
public function total()
{
return count($this->blocks);
}
}
?>