decodelabs / metamorph
一个灵活的内容转换框架
v0.6.0
2024-08-22 01:22 UTC
Requires
- php: ^8.1
- decodelabs/archetype: ^0.3
- decodelabs/coercion: ^0.2
- decodelabs/exceptional: ^0.4
- decodelabs/tagged: ^0.15
- symfony/polyfill-mbstring: ^1.7
Requires (Dev)
- decodelabs/phpstan-decodelabs: ^0.6
- erusev/parsedown: ^1.7
- michelf/php-markdown: ^1.9|^2
- soundasleep/html2text: ^1.1|^2
Suggests
- erusev/parsedown: Add support for Markdown parsing
- michelf/php-markdown: Alternative Markdown parsing provider
- soundasleep/html2text: Better HTML to text conversion
README
一个灵活的内容转换框架
Metamorph提供了一个可扩展的框架,通过简单直观的界面将内容从一种格式转换为另一种格式。
在DecodeLabs博客上获取新闻和更新。
安装
composer require decodelabs/metamorph
用法
导入
Metamorph使用Veneer在DecodeLabs\Metamorph
下提供一个统一的界面。您可以通过这个静态界面访问所有主要功能,而不会影响测试和依赖注入。
转换
使用Metamorph界面来操作和输出不同格式的内表。
选项可以作为第二个参数传递,并且命名宏允许将选项包作为调用的一部分传递。
Metamorph使用Archetype来加载Handler
类 - 基础包自带一小套处理器
Markdown
内置的Markdown处理器将使用通过composer安装的任何适当的Markdown库。
use DecodeLabs\Metamorph; // Default Markdown renders echo Metamorph::markdown($markdownContent); // Ensure output is secure from exploits with "safe" macro echo Metamorph::{'markdown.safe'}($markdownContent); // Output inline markup echo Metamorph::{'markdown.inline'}($markdownContent);
文本
Text处理器将输入视为纯文本,并允许进行各种操作。默认情况下启用HTML包装,将文本转换为标记标记。
echo Metamorph::text('Hello world', [ 'maxLength' => 5 // shorten output with ellipsis 'ellipsis' => '...' // Character(s) used while shortening string (optional) 'wrap' => true // Wrap output as HTML markup ]); // wrap=false echo Metamorph::{'text.raw'}($longText); // maxLength=50, wrap=true echo Metamorph::{'text.preview'}($longText); // maxLength=50, wrap=false echo Metamorph::{'text.preview.raw'}($longText);
HtmlToText
HtmlToText处理器的工作方向相反,接收HTML输入并将其转换为可读的纯文本。
echo Metamorph::htmlToText('<p>This is an HTML paragraph</p>', [ 'maxLength' => 5 // shorten stripped output with ellipsis 'ellipsis' => '...' // Character(s) used while shortening string (optional) 'wrap' => true // Wrap the stripped text in Markup element ]); // Strip and re-wrap HTML echo Metamorph::{'htmlToText.wrap'}($html); // maxLength=50, wrap=true echo Metamorph::{'htmlToText.preview'}($html);
其他实现
请参阅Idiom和Chirp以获取Metamorph处理器其他自定义实现的示例。
许可
Metamorph在MIT许可下发布。有关完整的许可文本,请参阅LICENSE。