minicli/stencil

模拟模板生成器

0.2.1 2023-07-13 13:44 UTC

This package is auto-updated.

Last update: 2024-09-13 16:41:04 UTC


README

/ˈstɛns(ə)l/ (名词): 一种带有图案或字母剪切的薄纸片、塑料或金属片,通过在孔中涂上墨水或油漆,在下面的表面上产生切割图案。

Minicli/Stencil 是一个用于生成模板的占位符内容替换工具。

Stencil 类似于轻量级模板,没有高级功能(因此它不是一个引擎)。它只需将字符串索引数组或字典中设置的内容替换占位符。

如果你在寻找用于前端视图的模板系统,这不是它!去查看 Twig。Stencil 对于生成骨架内容(例如自动生成类、Markdown 文档和其他遵循一定结构的文件)很有用。

依赖项

Stencil 是一个微型的独立库,只有测试依赖项。

用法

在 Minicli 中

如果你想在一个 Minicli 应用中使用 Stencil,你应该查看包含使用 Stencil 生成基于模板的文档的基本实现的 Minicli Stencil 命令。查看该存储库以获取使用说明。

独立使用

为了在代码库中更自由地包含 Stencil,请通过 Composer 安装独立的 Stencil

composer require minicli/stencil

在你的项目中设置一个目录以存储你的模板

mkdir stencils
cd stencils

创建一个新的包含一些变量的 .tpl 文件

#stencils/mytemplate.tpl

## This is my Template

My name is {{ name }} and I am a {{ description }}.

从你的项目中,实例化一个新的 Stencil,传递你设置的模板目录。然后,调用包含你的值的数组的 applyTemplate 方法

<?php

$stencil = new Stencil(__DIR__ . '/stencils');

$values = [
    'name' => 'Stencil',
    'description' => 'minimalist, dummy template generator.'
];

$parsedContent = $stencil->applyTemplate('mytemplate', $values);
var_dump($parsedContent);
string(92) "## This is my Template

My name is Stencil and I am a minimalist, dummy template generator.."

查询模板变量

你也可以获取模板中设置的变量,以便逐步构建你的值数组,例如通过命令行提示进行交互式操作。

这是一个示例代码,它从 Stencil 模板中收集变量,然后提示用户每个找到的变量,返回一个可以随后用于 $stencil->applyTemplate() 的数组。

$stencil = new Stencil(__DIR__ . '/stencils');
$template = 'mytemplate';
$values = [];
$variables = $stencil->scanTemplateVars($template);

echo "Building template $template\n";
foreach ($variables as $variable) {
    echo ucfirst($variable);
    $values[$variable] = readline(': ');
}

echo $stencil->applyTemplate($template, $values);