@sv-print/plugin-formatter
v0.1.6
Published
## 安装
Readme
@sv-print/plugin-formatter
安装
npm install @sv-print/plugin-formatter使用
sv-print 插件引入的两种方式见:sv-print 插件引入的两种方式:https://www.ibujian.cn/svp/plugin/a02.html
import pluginFormatter from "@sv-print/plugin-formatter";
const plugins = [
pluginFormatter({
name: "格式化器", // 元素参数的名称
// 同组件 config 配置/hiprint.setConfig(config)。 配置哪些元素 需要这个 格式化器
config: {
text: {
tabs: [
{
name: "基础",
options: [
{
name: "sFormatter",
hidden: false,
after: "testData",
},
],
},
],
},
},
funList: [
{
name: "转大写", // 展示名称
key: "toUpperCase", // 格式化器key
fun: (value) => {
return `${value}`.toUpperCase();
},
},
{
name: "自定义",
key: "test",
fun: (value) => {
return `${value}+自定义`;
},
},
{ name: "金额", key: "money", fun: (v) => `¥ ${Number(v).toFixed(2)}` },
{ name: "布尔", key: "bool", fun: (v) => (v ? "是" : "否") },
{ name: "打印时间", key: "datetime", fun: (v) => new Date().toLocaleString(); },
],
// ===== 可选 =====
// 每条形如 { regex, key }:regex 命中占位符时,执行 funList 中 key 相同的项的 fun。
regexList: [
// 1. RegExp:对 key / fullKey 依次 test(),命中即匹配
{
regex: /(^|\.)(amount|price|total)$/i,
key: "money", // 引用 funList 中 key === "money" 的项
},
// 2. 字符串:与 key 或 fullKey 严格相等
{
regex: "isActive",
key: "bool",
},
// 3. 函数:回调 (key, value, fullKey) => boolean
{
regex: (key, value, fullKey) => {
return key == "datetime" || key == "打印时间";
},
key: "datetime",
},
],
}),
];regexList 匹配规则
getPlaceholderValue hook 在每次解析占位符时,按顺序遍历 regexList:
regex为 RegExp:对key与fullKey依次执行.test(),任一命中即匹配。regex为 字符串:与key或fullKey严格相等即匹配。regex为 函数:回调(key, value, fullKey) => boolean,返回true即匹配;异常视为未命中。- 命中后查找
funList中key === rule.key的项并执行其fun(value); - 找不到对应
key的 funList 项 → 跳过该规则,继续匹配下一条; fun抛错 → 打印日志并原样返回value,不影响其他字段;- 全部未命中 → 原样返回
value。
License
LGPL
开源使用须知
1.请自觉遵守 LGPL 协议,其他用途可联系作者;
2.允许用于个人学习、毕业设计、教学案例、公益事业、商业使用;
3.如果商用必须保留版权信息,请自觉遵守;
4.禁止将本开源的代码和资源进行任何形式任何名义的出售,否则产生的一切任何后果责任由侵权者自负;
5.商用请仔细审查代码和漏洞,不得用于任一国家许可范围之外的商业应用,产生的一切任何后果责任自负;
