Skip to content

Commit 352bd2b

Browse files
committed
File caching and better doc page color
1 parent 887253e commit 352bd2b

File tree

14 files changed

+219
-89
lines changed

14 files changed

+219
-89
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ echo $controller->display();
5050
```
5151
That is it. You are done!
5252

53+
### Example and Full Documentation
54+
55+
[PHPFUI/InstaDoc](http://www.phpfui.com)
56+
5357
#### To Do List:
5458

5559
* Add more documentation

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "phpfui/instadoc",
3-
"description": "Instant cocumentation for PHP projects",
3+
"description": "Instant and always up to date documentation for PHP projects",
44
"minimum-stability": "stable",
55
"keywords": ["documentation", "phpdoc", "block", "doc", "docblock", "foundation"],
66
"homepage": "https://github.com/phpfui/InstaDoc",

composer.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

css/styles.css

Lines changed: 33 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

css/styles.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

highlighter/styles/PHP.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/* Just a placeholder, formatting done by PHP highlight_string */

install.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,10 @@
2020

2121
$phpfuiInstaller->copyFiles('../..', $vendor);
2222

23+
$css = [];
24+
$css['instadoc/highlighter/styles'] = [
25+
'PHP.css' => 'highlighter/styles',
26+
];
27+
28+
$phpfuiInstaller->copyFiles('..', $css);
29+

scss/style.scss

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,3 +607,40 @@ $button-shadow: $shadow-depth $shadow-depth $shadow-blur 0px rgba(0,0,0,0.6);
607607
flex-wrap: wrap;
608608
}
609609

610+
611+
.constant {
612+
color: darkred;
613+
}
614+
615+
.keyword {
616+
color: purple;
617+
}
618+
619+
.type {
620+
color: DarkSlateBlue;
621+
}
622+
623+
.number {
624+
color: navy;
625+
}
626+
627+
.string {
628+
color: green;
629+
}
630+
631+
.operator {
632+
color: SlateGray;
633+
}
634+
635+
.variable {
636+
color: black;
637+
}
638+
639+
.name {
640+
color: black;
641+
font-weight: bold;
642+
}
643+
644+
645+
646+

src/PHPFUI/InstaDoc/Controller.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,7 @@ public function generate(string $directoryPath, array $pagesToInclude = [Control
128128
$namespaces = [];
129129

130130
// loop through all classes and generate all requested pages and namespaces
131-
$namespaceTree = new NamespaceTree();
132-
foreach ($namespaceTree->getAllClasses() as $path => $class)
131+
foreach (NamespaceTree::getAllClasses() as $path => $class)
133132
{
134133
$parameters = $this->getClassParts($class);
135134
$namespaces[$parameters[Controller::NAMESPACE]] = true;
@@ -218,12 +217,11 @@ public function getMenu() : \PHPFUI\AccordionMenu
218217
}
219218
}
220219

221-
$iterator = new NamespaceTree();
222-
$iterator->setActiveClass($this->requestedClass);
223-
$iterator->setActiveNamespace($this->requestedNamespace);
224-
$iterator->setController($this);
220+
NamespaceTree::setActiveClass($this->requestedClass);
221+
NamespaceTree::setActiveNamespace($this->requestedNamespace);
222+
NamespaceTree::setController($this);
225223
$this->accordionMenu = new \PHPFUI\AccordionMenu();
226-
$iterator->populateMenu($this->accordionMenu);
224+
NamespaceTree::populateMenu($this->accordionMenu);
227225

228226
return $this->accordionMenu;
229227
}

src/PHPFUI/InstaDoc/FileManager.php

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
class FileManager
66
{
7+
private const CLASSES = '.Classes';
78
private const GIT = '.Git';
89
private const NAMESPACE = '.Namespace';
910

@@ -46,6 +47,7 @@ public function addNamespace(string $namespace, string $directory, bool $localGi
4647
$this->includedNamespaces[$namespace][FileManager::REPO_ROOT] = $directory;
4748
$this->includedNamespaces[$namespace][] = $directory;
4849
$this->includedNamespaces[$namespace][FileManager::GIT] = $localGit;
50+
$this->includedNamespaces[$namespace][FileManager::CLASSES] = [];
4951

5052
return $this;
5153
}
@@ -165,6 +167,7 @@ public function getAllVendorDirectories() : array
165167
$directories[$namespace][FileManager::GIT] = false;
166168
$directories[$namespace][FileManager::REPO_ROOT] = $path;
167169
$directories[$namespace][] = $path . $sourceDir;
170+
$directories[$namespace][FileManager::CLASSES] = [];
168171
}
169172
}
170173
}
@@ -177,6 +180,11 @@ public function getAllVendorDirectories() : array
177180
*/
178181
public function getClassesInNamespace(string $namespace) : array
179182
{
183+
if (! empty($this->namespaces[$namespace][FileManager::CLASSES]))
184+
{
185+
return $this->namespaces[$namespace][FileManager::CLASSES];
186+
}
187+
180188
$classes = [];
181189

182190
$extension = '.php';
@@ -186,15 +194,15 @@ public function getClassesInNamespace(string $namespace) : array
186194
foreach ($files as $file)
187195
{
188196
$class = substr($file, strlen($namespaceInfo[0]));
189-
197+
$class = str_replace('/', '\\', $class);
190198
if (0 === strpos($class, $namespace))
191199
{
192200
$class = substr($class, strlen($namespace));
193201
}
194202
$classes[$file] = substr($class, 0, strlen($class) - strlen($extension));
195203
}
196204

197-
return $classes;
205+
return $this->namespaces[$namespace][FileManager::CLASSES] = $classes;
198206
}
199207

200208
/**
@@ -244,15 +252,15 @@ public function getFilesInNamespace(string $namespace, string $extension = '') :
244252
return $files;
245253
}
246254

247-
public function getFilesInRepository($namespace, string $extension = '') : array
255+
public function getFilesInRepository($namespace, string $extension) : array
248256
{
249-
$files = [];
250-
251-
if (! isset($this->namespaces[$namespace]))
257+
if (! empty($this->namespaces[$namespace][$extension]))
252258
{
253-
return $files;
259+
return $this->namespaces[$namespace][$extension];
254260
}
255261

262+
$files = [];
263+
256264
$directory = str_replace('\\', '/', $this->namespaces[$namespace][FileManager::REPO_ROOT]);
257265
$rdi = new \RecursiveDirectoryIterator($directory);
258266
$iterator = new \RecursiveIteratorIterator($rdi, \RecursiveIteratorIterator::CHILD_FIRST);
@@ -267,7 +275,7 @@ public function getFilesInRepository($namespace, string $extension = '') : array
267275

268276
sort($files);
269277

270-
return $files;
278+
return $this->namespaces[$namespace][$extension] = $files;
271279
}
272280

273281
/**
@@ -294,6 +302,12 @@ public function load(string $file = '') : FileManager
294302
if (! file_exists($file))
295303
{
296304
$this->rescan();
305+
// load classes for each namespace
306+
foreach ($this->getAllNamespaces() as $namespace)
307+
{
308+
$this->getClassesInNamespace($namespace);
309+
$this->getFilesInRepository($namespace, '.md');
310+
}
297311
$this->save($file);
298312
}
299313

src/PHPFUI/InstaDoc/NamespaceTree.php

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,27 @@ class NamespaceTree
1414
private $namespace = '';
1515
private $parent = null;
1616

17+
// only we can make us to ensure the tree is good
18+
private function __construct()
19+
{
20+
}
21+
1722
/**
1823
* Returns array of all classes
1924
*/
20-
public function getAllClasses(?NamespaceTree $tree = null) : array
25+
public static function getAllClasses(?NamespaceTree $tree = null) : array
2126
{
2227
if (! $tree)
2328
{
24-
$tree = $this->getRoot();
29+
$tree = self::getRoot();
2530
// sort it to be sure
2631
self::sort($tree);
2732
}
2833

2934
$classes = [];
3035
foreach ($tree->children as $child)
3136
{
32-
$classes = array_merge($classes, $this->getAllClasses($child));
37+
$classes = array_merge($classes, self::getAllClasses($child));
3338
}
3439

3540
$namespace = $tree->getNamespace();
@@ -148,28 +153,28 @@ public static function getRoot() : NamespaceTree
148153
* Populates a menu object with namespaces as sub menus and
149154
* classes as menu items.
150155
*/
151-
public function populateMenu(\PHPFUI\Menu $menu) : void
156+
public static function populateMenu(\PHPFUI\Menu $menu) : void
152157
{
153158
self::sort(self::getRoot());
154159

155160
foreach (self::$root->children as $child)
156161
{
157-
$this->getMenuTree($child, $menu);
162+
$child->getMenuTree($child, $menu);
158163
}
159164
}
160165

161166
/**
162167
* Set the currently active class for menu generation.
163168
*/
164-
public function setActiveClass(string $activeClass) : void
169+
public static function setActiveClass(string $activeClass) : void
165170
{
166171
self::$activeClass = $activeClass;
167172
}
168173

169174
/**
170175
* Set the currently active namespace for menu generation.
171176
*/
172-
public function setActiveNamespace(string $activeNamespace) : void
177+
public static function setActiveNamespace(string $activeNamespace) : void
173178
{
174179
self::$activeNamespace = $activeNamespace;
175180
}
@@ -178,7 +183,7 @@ public function setActiveNamespace(string $activeNamespace) : void
178183
* Set the Controller. Used for creating links so all
179184
* documentation is at the same url.
180185
*/
181-
public function setController(Controller $controller) : void
186+
public static function setController(Controller $controller) : void
182187
{
183188
self::$controller = $controller;
184189
}

src/PHPFUI/InstaDoc/Page.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public function create(\PHPFUI\Menu $menu) : void
7676
$menu = new \PHPFUI\Menu();
7777
$menu->addClass('simple');
7878
$menu->addMenuItem(new \PHPFUI\MenuItem('Powered By'));
79-
$menu->addMenuItem(new \PHPFUI\MenuItem('PHPFUI/InstaDoc', 'https://www.phpfui.com'));
79+
$menu->addMenuItem(new \PHPFUI\MenuItem('PHPFUI/InstaDoc', 'http://www.phpfui.com/?n=PHPFUI\InstaDoc'));
8080
$menu->addMenuItem(new \PHPFUI\MenuItem('github', 'https://github.com/phpfui/InstaDoc'));
8181

8282
$footer->addLeft($menu);

0 commit comments

Comments
 (0)