1
0
cms11/app/Classes/Traits/ManagesMarkdown.php

69 lines
1.5 KiB
PHP

<?php
namespace App\Classes\Traits;
use App\Classes\MarkdownManager;
trait ManagesMarkdown
{
private array $markdownManagers = [];
/**
* Return an instance of markdown manager for specified filename
*/
public function markdown(?string $filename = 'index'): MarkdownManager
{
return $this->registerMarkdownManager($filename);
}
/**
* 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);
}
return $this->markdownManagers[$filename];
}
/**
* Load all markdown files at once
*/
private function loadMarkdown()
{
foreach ($this->markdownManagers as $manager) {
$manager->load();
}
}
/**
* Save all markdown files that needs to be
*/
private function saveMarkdown()
{
$oneSaved = false;
foreach ($this->markdownManagers as $manager) {
if ($manager->save()) {
$oneSaved = true;
}
}
return $oneSaved;
}
/**
* Lint all markdowns in the bundle
*/
private function lintMarkdown()
{
foreach ($this->markdownManagers as $manager) {
$manager->lint();
}
}
}