nadar / prosemirror-json-parser
一个易于将 ProseMirror/TipTap JSON 转换为可自定义 HTML 元素的库。
Requires
- php: ^8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- phpstan/phpstan: ^1.7
- phpunit/phpunit: ^10
- rector/rector: ^0.14.2
README
ProseMirror JSON 解析器(prosemirror-json-parser)是一个灵活的 PHP 库,旨在轻松将 ProseMirror/TipTap JSON 模型 内容转换为 HTML。凭借无依赖运行和卓越的解析速度,此库确保了高性能的 HTML 生成。与 TipTap 和 ProseMirror 无缝集成,通过简单添加或修改节点提供自定义功能。通过 Composer 无缝安装,使用 toHtml
函数并探索广泛的定制选项,以实现定制的 JSON 到 HTML 转换。
它与 TipTap 和 ProseMirror 都能无缝协作,因为 TipTap 是基于 ProseMirror 构建的。
关键特性
- 无依赖:此解析器无需任何额外库。
- 极快速度:提供高性能解析能力。
- 高度可扩展:根据您的需求添加自定义节点。
- 100% 代码覆盖率和测试:确保全面的测试覆盖,保证可靠性和稳定性。
- 强大的内置 HTML 生成:无缝生成高质量的 HTML,无需修改,确保易用性和可靠性。
安装 & 使用
使用 Composer 安装库,请执行以下命令
composer require nadar/prosemirror-json-parser
安装库后,将解析器集成到您的项目中。使用 toHtml
函数将您的 JSON 值转换为可渲染的 HTML 代码。请注意,toHtml
函数仅接受数组。因此,如果您的内容是 JSON 格式,请使用 json_decode($json, true)
首先将 JSON 字符串转换为数组,然后传递给 toHtml(json_decode($json, true))
。
$html = (new Nadar\ProseMirror\Parser()) ->toHtml($json);
扩展 & 自定义
每个节点对应解析器中的一个可调用函数,使用节点的名称作为键。这种设置允许轻松添加或修改节点。
例如,要调整图像节点的渲染,您可以使用 replaceNode()
方法在解析器中包含您自己的函数。
$html = (new \Nadar\ProseMirror\Parser()) ->replaceNode(\Nadar\ProseMirror\Types::image, fn(\Nadar\ProseMirror\Node $node) => '<img src="' . $node->getAttr('src') . '" class="this-is-my-class" />') ->toHtml($json);
要查看所有默认节点声明,请参阅
Types
类。
如果您有一个具有特定名称的自定义节点,您可以使用 addNode()
方法将其添加到解析器中。
$html = (new \Nadar\ProseMirror\Parser()) ->addNode('myCustomNode', fn(\Nadar\ProseMirror\Node $node) => '<div class="my-custom-node">...</div>') ->toHtml($json);
addNode
和replaceNode
方法在内部几乎相同,只是replaceNode
应仅用于更改默认节点的输出。您可以在Types
类中查看所有默认声明节点。
这些文本和图像由 AI 增强,因为英语不是我的第一语言,而我相当懒惰。甚至这句话也是由 AI 生成的。