43 lines
1.0 KiB
PHP
43 lines
1.0 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\Classes\Traits;
|
||
|
|
||
|
use App\Classes\MarkdownManager;
|
||
|
|
||
|
trait ManagesMarkdown
|
||
|
{
|
||
|
private array $markdownManagers = [];
|
||
|
|
||
|
/**
|
||
|
* Register a markdown manager for specified filename
|
||
|
*/
|
||
|
private function registerMarkdownManager(string $filename): MarkdownManager
|
||
|
{
|
||
|
$filename = $this->getFilenameInBundle($filename, '.md');
|
||
|
|
||
|
if (!array_key_exists($filename, $this->markdownManagers)) {
|
||
|
$this->markdownManagers[$filename] = new MarkdownManager($filename, $this->disk);
|
||
|
}
|
||
|
|
||
|
return $this->markdownManagers[$filename];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Save all markdown files that needs to be
|
||
|
*/
|
||
|
private function saveMarkdown()
|
||
|
{
|
||
|
foreach ($this->markdownManagers as $manager) {
|
||
|
$manager->save();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return an instance of markdown manager for specified filename
|
||
|
*/
|
||
|
public function markdown(?string $filename = 'index'): MarkdownManager
|
||
|
{
|
||
|
return $this->registerMarkdownManager($filename);
|
||
|
}
|
||
|
}
|