跳转到主要内容

概览与文档

在 A-Parser 中,使用 Template Toolkit 模板引擎来格式化查询和结果。该模板引擎允许根据模板中定义的规则生成最终字符串(例如查询或结果)。Template Toolkit 具有多种功能:

  • 支持条件判断和循环
  • 支持普通变量(标量)、数组和哈希(关联数组)
  • 支持变量方法(字符串长度、查找与替换、数组大小...)
  • 支持插件和过滤器(日期时间的输出与格式化、生成 HTML 元素...)

模板引擎使用示例

Template Toolkit 官方文档

该模板引擎的一大优势是拥有完善的俄语和英语文档,以下是文档中最重要的章节链接:

  • 简介 - 总体信息
  • 语法 - 编写模板的规则和风格
  • 指令 - 条件、循环、过滤器、插件和宏
  • 变量 - 访问和更新变量、数组及哈希的值
  • 虚拟方法 - 用于处理变量、数组和哈希的预设函数
  • 插件过滤器 - 模板引擎的扩展功能,A-Parser 支持以下插件:
    • Date - 用于生成格式化的日期字符串
    • Dumper - 输出数据结构的转储信息
    • Format - 用于基于 printf 语法创建格式化函数
    • HTML - 用于创建 HTML 元素和转义 HTML 代码
    • Filter - 用于创建和使用通过加载插件定义并可用的过滤器
    • Math - 用于使用任何数学函数
    • String - 实现处理字符串的额外方法
    • Table - 用于将数据以表格形式展示
    • URL - 用于构建链接
    • Wrap - 用于格式化段落
    • Iterator - 用于遍历数据集。迭代器由 FOREACH 指令隐式自动创建。该插件允许显式创建具有指定名称的迭代器

使用示例

常用模板示例

Math 插件使用示例

随机选择指定数量的链接:

[% limit = 5;
USE Math;
FOREACH i IN [1..5];
n = Math.rand(intlinks.size);
intlinks.$n.link _ "\n";
END %]

FOREACH 循环示例

$serp 数组中输出所有链接及其位置:

[% FOREACH item IN p1.serp;
loop.count _ ' - ' _ item.link _ "\n";
END %]

WHILE 循环示例

$serp 数组中输出 5 个锚点,从第 3 个开始:

[% n = 2;
WHILE n < 7;
p1.serp.${n}.anchor _ "\n";
n = n + 1;
END %]

条件判断示例

根据变量值输出特定数据:

[% IF p1.totalcount < 1000;
query _ " - 少\n";
ELSIF p1.totalcount < 1000;
query _ " - 正常\n";
ELSE;
query _ " - 多\n";
END %]