urbanmonastics/sourcetextparser

一个用于PHP的快速Markdown解析器,扩展用于圣礼。

v0.4.3 2022-01-29 15:45 UTC

This package is auto-updated.

Last update: 2024-09-29 18:11:59 UTC


README

Build Status Total Downloads Version License

一个用于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 或 &#10011;]。
  • [*] 这是指示唱诵文本中中点的标记。
  • [t] 这是短剑/方尖碑,指示当前行在下面继续。对多于两行的唱诵文本很有用。在非HTML中渲染为† [U+2020 或 &#8224;&dagger;]。

块级扩展

  • [V] 在 Responsory 中,它表示领导者的 诗歌段落行。在非HTML中渲染为℣ [U+2123 或 &#8483;]。
  • [R] 在 Responsory 中,它表示所有说话者的 回应行。在非HTML中渲染为℟ [U+211F 或 &#8479;]。
  • [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