php-school / cli-md-renderer
A CLI Markdown Render for league/commonmark compatible AST
2.0.0
2026-10-22 12:41 UTC
Requires
- php: ^8.1
- kevinlebrun/colors.php: ^1.0
- league/commonmark: ^2.8
- nette/schema: ^1.2
- php-school/keylighter: ^0.8.5
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.5 || ^11.5 || ^12.0
- squizlabs/php_codesniffer: ^3.10
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-22 12:42:19 UTC
README
<img src="https://github.com/AydinHassan/cli-md-renderer/workflows/CliMdRenderer/badge.svg">
Usage
<?php require_once 'vendor/autoload.php'; use League\CommonMark\Environment\Environment; use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension; use League\CommonMark\Parser\MarkdownParser; use PhpSchool\CliMdRenderer\CliRendererFactory; $environment = new Environment(); $environment->addExtension(new CommonMarkCoreExtension()); $parser = new MarkdownParser($environment); $cliRenderer = (new CliRendererFactory)->__invoke(); $ast = $parser->parse(file_get_contents('path/to/file.md')); echo $cliRenderer->renderBlock($ast);
Syntax Highlighting
FencedCode can be syntax highlighted. By default only PHP source code is Syntax Highlighted using: kadet/keylighter
If you want to add syntax highlighting for other languages you should create a class which implements \PhpSchool\CliMdRenderer\SyntaxHighlighterInterface
It accepts code as a string and should return highlighted code as a string. You register your highlighter like so
<?php use PhpSchool\CliMdRenderer\Renderer\FencedCodeRenderer; $codeRenderer = new FencedCodeRenderer; $codeRenderer->addSyntaxHighlighter('js', new JsSyntaxHighlighter);
If you need to do this you cannot use the factory so construction will look something like:
<?php require_once 'vendor/autoload.php'; use Colors\Color; use League\CommonMark\Environment\Environment; use PhpSchool\CliMdRenderer\CliExtension; use PhpSchool\CliMdRenderer\CliRenderer; $environment = new Environment(); $environment->addExtension(new CliExtension()); $colors = new Color(); $colors->setForceStyle(true); return new CliRenderer($environment, $colors);
To Do
- Make configurable (Line Endings, colors, styles)
- Image Renderer
- List Renderer
- Code Syntax Highlighting
- Documentation