gregwar/rst

PHP 库,用于解析 reStructuredText 文档

v1.0.6 2020-04-09 08:09 UTC

This package is auto-updated.

Last update: 2024-09-12 22:36:21 UTC


README

Build status paypal

PHP 库,用于解析 reStructuredText 文档

使用方法

解析器可以这样使用

<?php

$parser = new Gregwar\RST\Parser;

// RST document
$rst = ' 
Hello world
===========

What is it?
----------
This is a **RST** document!

Where can I get it?
-------------------
You can get it on the `GitHub page <https://github.com/Gregwar/RST>`_
';

// Parse it
$document = $parser->parse($rst);

// Render it
echo $document;
/* Will output, in HTML mode:
<a id="title.1"></a><h1>Hello world</h1>
<a id="title.1.1"></a><h2>What is it?</h2>
<p>This is a <b>RST</b> document!</p>
<a id="title.1.2"></a><h2>Where can I get it?</h2>
<p>You can get it on the <a href="https://github.com/Gregwar/RST">GitHub page</a></p>
*/

更多信息,您可以查看 test/document/document.rst 及其结果 test/document/document.html

使用构建器

构建器是另一个工具,它将解析整个文档树,并生成包含文件的输出目录。

您可以直接使用它

<?php

$builder = new Gregwar\RST\Builder;
$builder->build('input', 'output');

它将解析 input 目录中的所有文件,从 index.rst 开始,扫描依赖关系引用,并在 output 目录中生成目标文件。默认格式是 HTML。

您可以使用以下方法来自定义构建

  • copy($source, $destination): 将 $source 文件或目录复制到构建目录中的 $destination 文件或目录
  • mkdir($directory): 在构建目录中创建 $directory
  • addHook($function): 添加一个钩子,在解析每个文档之后调用,该钩子将以 $document 作为参数,然后您可以对其进行修改
  • addBeforeHook($function): 添加一个钩子,在解析文档之前调用,解析器将以参数传递

错误时中断

在某些情况下,即使有错误(如缺少引用),您也想让构建继续进行

<?php

// Using parser
$parser->getEnvironment()->getErrorManager()->abortOnError(false);

// Using builder
$builder->getErrorManager()->abortOnError(false);

编写指令

步骤 1:扩展指令类

编写自己的类,继承自 Gregwar\RST\Directive 类,并定义返回指令名称的 getName() 方法。

然后您可以重新定义以下方法之一

  • processAction() 如果您的指令只是调整文档而不修改节点
  • processNode() 如果您的指令是添加节点
  • process() 如果您的指令是调整紧随其后的节点

更多信息请参阅 Directive.php

步骤 2:注册您的指令

您可以通过直接在您的 Parser 对象上调用 registerDirective() 来注册您的指令。

否则,您还需要创建自己的内核,通过扩展 Kernel 类并添加自己的逻辑来定义额外的指令,请参阅 Kernel.php 获取更多信息。然后,在构造 ParserBuilder 时传递内核

许可协议

此库采用 MIT 许可协议