resources/markdown).Storage facade) or third-party packages like spatie/laravel-markdown.symfony/yaml.File or Illuminate\Support\Str utilities.Cache::remember).composer.json (e.g., symfony/yaml:^6.0, league/commonmark:^2.0).config() to centralize parser configurations.Illuminate\Support\Facades\Validator).memory_get_usage() and consider streaming alternatives.Post model or be stored in a metadata table?spatie/laravel-markdown) that could conflict or be consolidated?Artisan commands for batch parsing during deploy:post.AppServiceProvider:
public function register(): void {
$this->app->singleton(Mni\FrontYAML\Parser::class, function ($app) {
return new Mni\FrontYAML\Parser(
$app->make(Symfony\Component\Yaml\Yaml::class),
new Mni\FrontYAML\Bridge\CommonMark\CommonMarkParser()
);
});
}
FrontYAML facade for cleaner syntax:
use Illuminate\Support\Facades\Facade;
class FrontYAML extends Facade { protected static function getFacadeAccessor() { return Mni\FrontYAML\Parser::class; } }
Usage: FrontYAML::parse(file_get_contents($path)).Storage facade to read files:
$content = Storage::disk('markdown')->get('posts/post-1.md');
$document = FrontYAML::parse($content);
Str::of() or Path helpers.FrontYAML in a PostService.FrontYAML in an adapter:
class LegacyFrontYAMLAdapter {
public function parseLegacy($content) {
$document = FrontYAML::parse($content);
return ['yaml' => $document->getYAML(), 'content' => $document->getContent()];
}
}
tests/Feature/FrontYAMLTest.php):
public function test_parses_blog_post() {
$content = file_get_contents(database_path('markdown/posts/test.md'));
$document = FrontYAML::parse($content);
$this->assertEquals(['title' => 'Test Post'], $document->getYAML());
}
laravel/framework:^9.0 for Symfony YAML v6+ compatibility.league/commonmark or symfony/yaml by using Laravel’s existing versions.composer.json:
"require": {
"symfony/yaml": "^6.0",
"league/commonmark": "^2.0"
},
"conflict": {
"parsedown/parsedown": "*"
}
ParsedownParser bridge:
use Mni\FrontYAML\Bridge\Parsedown\ParsedownParser;
$parsedown = new ParsedownExtra();
$parser = new Mni\FrontYAML\Parser(null, new ParsedownParser($parsedown));
yaml constraint in Laravel Validation).symfony/yaml and league/commonmark for breaking changes (e.g., Symfony 7+ support).composer.json constraints proactively (e.g., ^6.0 → ^7.0).config/front-yaml.php):
return [
'yaml_parser' => Symfony\Component\Yaml\Yaml::class,
'markdown_parser' => Mni\FrontYAML\Bridge\CommonMark\CommonMarkParser::class,
];
try {
$document = FrontYAML::parse($content);
} catch (\Exception $e) {
\Log::error("FrontYAML parse failed", [
'input' => $content,
'error' => $e->getMessage()
]);
}
dd($document->getYAML()) for quick inspection in Tinker.How can I help you explore Laravel packages today?