urbanmonastics / sourcetextparser
一个用于PHP的快速Markdown解析器,扩展用于圣礼。
v0.4.3
2022-01-29 15:45 UTC
README
一个用于PHP的快速Markdown解析器,扩展用于圣礼。这是一个用于Urban Monastics提供的源文本特定样式和格式的格式化库。
源文本使用Markdown功能的一个子集,并包括一些附加功能。为了使这些文本更容易接近并对他人生效,我们希望发布一个库,该库使得格式化它们变得简单直接。这个库基于Parsedown,由Emanuil Rusev创建。
功能
- 快速
- 没有外部依赖。
- 考虑到多字节文本编码构建。
- 扩展以支持圣礼需求 - 启用所需功能
- 包括诗歌段落
- 包括行内十字、停顿和短剑
- 包括代祷文。包括介绍、回应和两部分意图
- 包括3个字符以上的单词的小写字母 [启用单独]
- 包括对Selah术语进行自定义样式 [启用单独]
- 包括对(可定义的语言)术语Alleluia的抑制 [启用单独]
- 包括行内红色字体文本。
- 支持加粗文本,以增强手稿支持。
- GitHub风格
- 测试在7.0到8.0
扩展Markdown
为了确保我们可以支持更多的元素。这些扩展分为行内或块级标记。
行内扩展
这些可以在文本的任何位置放置。由于没有标准的方法在HTML中实现这些,因此我们需要
- _underline_ 使括号内的文本下划线。请注意,我们通过下划线禁用了加粗或斜体,以支持下划线文本。(GitHub不支持)
- ‾over line‾ 使括号内的文本上划线。仅支持HTML格式。(GitHub不支持)
- _‾under and over line‾_ 使括号内的文本同时下划线和上划线。仅支持HTML格式,在其他输出中显示为下划线。(GitHub不支持)
- [red]red text[/red] 使括号内的文本变红。输出为
<span class="color-red">red text</span>
仅当 LiturgicalElements 启用时,否则它将被简单地删除。 - [+] 这将插入符号提示读者触摸十字架。在非HTML中渲染为✛ [U+271B 或
✛
]。 - [*] 这是指示唱诵文本中中点的标记。
- [t] 这是短剑/方尖碑,指示当前行在下面继续。对多于两行的唱诵文本很有用。在非HTML中渲染为† [U+2020 或
†
或†
]。
块级扩展
- [V] 在 Responsory 中,它表示领导者的 诗歌段落行。在非HTML中渲染为℣ [U+2123 或
℣
]。 - [R] 在 Responsory 中,它表示所有说话者的 回应行。在非HTML中渲染为℟ [U+211F 或
℟
]。 - [II] 在 Intercessions 中,这表示意图的 介绍。当以团体形式祈祷时,应由领导者阅读。
- [IR] 在 Intercessions 中,这表示 回应。它应该仅放置在源文本的介绍行之后。在格式化时,它将被放置在其他位置。当以团体形式祈祷时,应由领导者阅读。
- 在代祷期间,这表示一个意图的第一个部分。
- 在代祷期间,这表示一个意图的第二个部分。
- [IXtra] 在代祷期间,这表示可以放置额外意图的位置。通常在最后一个完整意图之前。
其他选项
添加到您的项目
安装composer包
composer require UrbanMonastics/SourceTextParser
或下载最新版本并包含SourceTextParser.php
示例用法
在最简单的方法中,您可以将要解析的文本传递过去。
$SourceTextParser = new /UrbanMonastics/SourceTextParser(); echo $SourceTextParser->text("Hello *Source Parser*!"); # prints: <p>Hello <em>Source Parser</em>!</p>
您还可以利用源文本的结构。
$SourceTextParser = new SourceTextParser(); // Load the source data into the parser $Source = json_decode( file_get_contents('path/to/source.json'), true ); $SourceTextParser->loadSource( $Source ); $SourceTextParser->loadText(); echo $SourceTextParser->text("Hello *Source Parser*!"); # prints: <p>Hello <em>Source Parser</em>!</p> // Clear the loaded Source and Texts - without altering other options $SourceTextParser->clearSource();
格式化选项
这些文本可能需要用于各种格式和上下文中。在某些情况下,您可能希望确保只渲染某些文本元素以供使用。
方法
- setSafeMode( 布尔 ) 默认:false
启用时将确保输出无法执行代码。 - setStrictMode( 布尔 ) 默认:false
启用时,它要求标题不以空格开头... - setBreaksEnabled( 布尔 ) 默认:false
启用时,它将转换换行符标记\n
为<br>
。 - setMarkupEscaped( 布尔 ) 默认:false
启用时,它将在文档中转义任何现有的HTML语法。 - setUrlsLinked( 布尔 )
启用时,它将内联URL字符串转换为可点击的链接。 - setPreserveIndentations( 布尔 ) 默认:false
启用时,这会将任何制表符(4个空格的集合)转换为四个双空格,并用span包裹。启用此功能将禁用代码块的制表符。 - setLiturgicalElements( 布尔 ) 默认:true
启用时,标准的Markdown将被补充以包括礼仪元素。有关添加信息,请参阅上面的扩展Markdown。 - setLiturgicalHTML( 布尔 ) 默认:true
我们在HTML标签内放置礼仪标记,还是直接将它们放置到文档中。 - setSelahHTML( 布尔, 字符串 SelahTerm ) 默认:false,selah
我们将术语Selah用HTML包裹起来,以便更容易地进行样式设计。Selah术语是可选的,允许您指示其他语言中使用的术语。 - setSmallCapsText( 布尔 ) 将查找任何每个字符都是大写的三个或更多字符的单词。然后,这些单词将被包裹在HTML中,以便转换为小写。在某些圣经文本中这样做是为了指示术语“יְהֹוָה”(或yhwh)用于指代上帝。
- setSuppressAlleluia( 布尔, 字符串 AlleluiaTerm ) 默认:false,Alleluia
在复活节期间,禁止使用Alleluia这个词。启用此选项将删除只包含Alleluia这个词的任何一行。您还可以定义在文本中查找的alleluia术语,以支持更广泛的语言。 - setTitlesEnabled( 布尔 ) 默认:false
我们将text.json
文档中的任何标题放入输出中。 - setFootnotesEnabled( 布尔 ) 默认:false
我们将text.json
文档中的脚注放入输出中。
$SourceTextParser->setLiturgicalElements( true ); echo $SourceTextParser->text("God, [+] come to my assistance,[*]"); // prints: <p>God, <span class="symbol-cross">✛</span> come to my assistance,<span class="symbol-star">*</span></p> $SourceTextParser->setLiturgicalHTML( false ); # The default value is True, so you can manually disable wrapping liturgical elements. echo $SourceTextParser->text("God, [+] come to my assistance,[*]"); // prints: <p>God, ✛ come to my assistance,*</p>
开发环境
为了更轻松地开发和构建SourceTextParser,我们为您设置了一个本地Docker容器。项目基本目录中有一些简单的Unix脚本,您可以执行以进行设置。
# To build or update the container
./docker/build.sh
# To start an existing container
./docker/start.sh
# To stop/shutdown the container
./docker/stop.sh
# To run the PHPUnit tests in /test/SourceTextParserTest.php
./docker/phpunit.sh
# To attach to the running container
./docker/attach.sh
# To run the PHP composer update on the running container
./docker/update.sh
此外,我们将NGNIX访问和错误日志链接到Docker目录中的文件。这可能在故障排除时非常有帮助。
docker/nginx/access.log
docker/nginx/error.log