decodelabs/metamorph

一个灵活的内容转换框架

v0.6.0 2024-08-22 01:22 UTC

README

PHP from Packagist Latest Version Total Downloads GitHub Workflow Status PHPStan License

一个灵活的内容转换框架

Metamorph提供了一个可扩展的框架,通过简单直观的界面将内容从一种格式转换为另一种格式。

DecodeLabs博客上获取新闻和更新。

安装

composer require decodelabs/metamorph

用法

导入

Metamorph使用VeneerDecodeLabs\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);

其他实现

请参阅IdiomChirp以获取Metamorph处理器其他自定义实现的示例。

许可

Metamorph在MIT许可下发布。有关完整的许可文本,请参阅LICENSE