php-school/cli-md-renderer

用于league/commonmark兼容AST的CLI Markdown渲染器

1.0.0 2022-11-21 21:02 UTC

This package is auto-updated.

Last update: 2024-09-10 14:50:50 UTC


README

<img src="https://github.com/AydinHassan/cli-md-renderer/workflows/CliMdRenderer/badge.svg">

Build Status Windows Build Status Coverage Status

使用方法

<?php
require_once 'vendor/autoload.php';

use League\CommonMark\DocParser;
use League\CommonMark\Environment;
use PhpSchool\CliMdRenderer\CliRendererFactory;

$parser = new DocParser(Environment::createCommonMarkEnvironment());
$cliRenderer = (new CliRendererFactory)->__invoke();
$ast = $parser->parse(file_get_contents('path/to/file.md'));

echo $cliRenderer->renderBlock($ast);

语法高亮

FencedCode 可以进行语法高亮。默认情况下,仅使用 kadet/keylighter 对PHP源代码进行语法高亮。如果您想为其他语言添加语法高亮,您应该创建一个实现 \AydinHassan\CliMdRenderer\SyntaxHighlighterInterface 的类

它接受代码作为字符串,并应该返回高亮后的代码作为字符串。您可以通过以下方式注册您的语法高亮器

<?php

use PhpSchool\CliMdRenderer\Renderer\FencedCodeRenderer;

$codeRenderer = new FencedCodeRenderer;
$codeRenderer->addSyntaxHighlighter('js', new JsSyntaxHighlighter);

如果您需要进行此操作,则不能使用工厂,构建过程将类似于

<?php 
require_once 'vendor/autoload.php';

use Colors\Color;
use League\CommonMark\Environment;

$environment = new Environment();
$environment->addExtension(new CliExtension());

$colors = new Color();
$colors->setForceStyle(true);

return new CliRenderer($environment, $colors);

待办事项

  • 可配置(行结束符、颜色、样式)
  • 图片渲染器
  • 列表渲染器
  • 代码语法高亮
  • 文档