pattern-lab / patternengine-mustache
Pattern Lab 的 Mustache-based PatternEngine。
Requires
- mustache/mustache: ~2.6
- pattern-lab/core: ^2.0.0
This package is auto-updated.
Last update: 2023-03-06 09:06:51 UTC
README
Pattern Lab PHP 的 Mustache PatternEngine
Mustache PatternEngine 允许您将 Mustache 用作 Pattern Lab PHP 的模板语言。一旦安装了 PatternEngine,您就可以使用基于 Mustache 的 StarterKits 和 StyleguideKits。
安装
Mustache PatternEngine 将随 Pattern Lab 标准版预安装。
Composer
Pattern Lab PHP 使用 Composer 来管理项目依赖和 Pattern Lab 版本。要将 Mustache PatternEngine 添加到您版本的依赖列表中,您可以在项目根目录下命令行中输入以下内容
composer require pattern-lab/patternengine-mustache
有关最新版本的详细信息,请参阅 Packagist 信息。
概述
本文档分为两部分
扩展 Mustache
Mustache 提供两种扩展底层模板解析器的方式
- 过滤器
- Lambdas
Mustache PatternEngine 通过 Helper 实现这些功能。
Helper
使用 Helper 与 Pattern Lab 的要求
- 文件必须放在
./source/_mustache-components/helpers
- 文件必须有
.helper.php
扩展名(这可以在配置中修改) - Helper 必须 设置变量
$helper
- 每个文件只能有一个 Helper(例如,每个文件只能设置一次
$helper
)
一个示例函数 verbatim.helper.mustache
,位于 ./source/_mustache-components/helpers
<?php $helper = function ($text) { return "{{=%%pl pl%%=}}".$text."%%pl={{ }}=pl%%"; }; ?>
这个 Helper 可以在模式中这样使用。注意标签使用的是文件名,这是一个 lambda 的示例
{{# verbatim }} {{ this won't be parsed }} {{/ verbatim }}
Mustache 还允许使用点符号与 Helper。一个示例函数 case.helper.mustache
,位于 ./source/_mustache-components/helpers
<?php $helper = array( 'lower' => function($value) { return strtolower((string) $value); }, 'upper' => function($value) { return strtoupper((string) $value); }, )); ?>
这个 Helper 可以在模式中这样使用。注意标签使用的是文件名,这是一个 filter 的示例
{{ greeting | case.upper }}
可用的加载器
如果您正在构建一个将解析 Mustache 文件的插件,您可以使用三个加载器。建议您使用这些加载器而不是直接访问 Mustache,因为这些加载器将与其他 PatternEngines 一起工作。
字符串加载器
字符串加载器接受一个简单的字符串并将其编译。要使用
$data = array("hello" => "world"); $string = "If I say hello you say {{ hello }}."; $stringLoader = \PatternLab\Template::getStringLoader(); $output = $stringLoader->render(array("string" => $string, "data" => $data)); print $output; // outputs "If I say hello you say world."
文件系统加载器
文件系统加载器将在配置的StyleguideKit目录中查找模板并将它们编译。文件系统加载器的模板位置不可修改。要使用
$data = array(...); $filesystemLoader = \PatternLab\Template::getFilesystemLoader(); $output = $filesystemLoader->render(array("template" => "viewall", "data" => $data)); print $output; // outputs the viewall view from the configured styleguidekit
模式加载器
模式加载器查找模式并允许使用Pattern Lab特定的部分语法。要使用
$data = array(...); $patternContent = file_get_contents("path/to/pattern"); $patternEngineBasePath = \PatternLab\PatternEngine::getInstance()->getBasePath(); $patternLoaderClass = $patternEngineBasePath."\Loaders\PatternLoader"; $patternLoader = new $patternLoaderClass($options); $code = $patternLoader->render(array("pattern" => $patternContent, "data" => $data)); print $output; // outputs the given pattern