npm.io
1.0.17 • Published 8 months ago

@aiot-toolkit/card-expression

Licence
ISC
Version
1.0.17
Deps
3
Size
60 kB
Vulns
0
Weekly
0

快应用卡片表达式解析

用于

  1. JS表达式 转换为 快应用卡片表达式
  2. 模板表达式 转换为 快应用卡片表达式

快应用卡片表达式是一种类似 lisp的语法树表达式

示例

js 表达式 转换后
a+123 ["+", ["$", "a"], 123]
!a ["!", ["$", "a"]]
a[1].x.y [".",[".", ["[]", ["$", "a"], 1], "x", "y"
fun(a, b, 124) ["()", ["$", "fun"], ["$", "a"], ["$", "b"], 124]
模板表达式 转换后
a+b{{a+b}} ["+","a+b",["+",["$","a"],["$","b"]]]

快速上手

模板代码转换为 Card 代码

import { templateValueToCardCode } from '@aiot-toolkit/card-expression';

const result = templateValueToCardCode('a+b{{a+b}}');
console.log(result); // ["+","a+b",["+",["$","a"],["$","b"]]]
js 代码转为 Card 代码
import jsToCardCode from '@aiot-toolkit/card-expression';

const result = jsToCardCode('a+b');
console.log(result); // '["+", ["$", "a"], ["$", "b"]]'

表达式

模板表达式

模板表达式是快应用使用的字符串和 js 混合的表达式,双大括号中的内容为 js,其 它为字符串

示例:aaaa{{x+y}}bbbb 等于 js 代码 "aaaa" + (x + y) + "bbbb"

支持的 js 表达式

快应用卡片支持的js 表达式如下。需要注意的是,各表达式之间可递归使用,例 如 data[a+b] data.x + (a?1:2)

表达式 源码 产物 示例
字面量
literal
value value 123 --> 123
标识符
Identifier
value ["$", "value"] a-->["$", "a"]
数组表达式
ArrayExpression
[value1, value2, value3] ["~", "value1", "value2", "value3"] [a, 1, 2]-->["~", ["$", "a"], 1, 2]
一元表达式
UnaryExpression
operator value ["operator", value] !a-->["!", ["$", "a"]]
二元表达式
BinaryExpression
value1 operator value1 ["operator", value1, value2] a+1 --> ["+", ["$", "a"], 1]
属性表达式
MemberExpression
1. value1[value2]
2. value1.value2
[".", value1, value2] a[1] --> [".", ["$", "a"], 1]
逻辑表达式
LogicalExpression
value1 operator value1 ["operator", value1, value2] a || 1 --> ["||", ["$", "a"], 1]
条件表达式
ConditionalExpression
condition? value1 : value2 ["?:", "$condition" value1, value2] a?x:1 --> ["?:", ["$", "a"], ["$", "x"], 1]
调用表达式
CallExpression
fun(arg1, args2, ...) ["()", ["$", "fun"], arg1, arg2, ...] fun(a, 123) --> ["()", ["$", "fun"], ["$", "a"], 123]
无前缀调用表达式
(可自定义,默认["$t", "$tc"])
noPrefixFun(arg1) ["()", "noPrefixFun", arg1, arg2, ...] $t("abc") --> ["()", "$t", "abc"]
模板字符串 str-${js} 相当于加法二元表达式 "str" + js
对象表达式
ObjectExpression
{key1: value1, key2: value2} ["{}", {key1: value1, key2: value2} {x:1, y:"2", z:a+b}-->['{}',{x: 1, y: '2', z: ['+', ['

特殊情况

函数调用去掉前缀

如果希望“函数调用的生成结果中,函数名去掉' 前缀”, 可使用 noPrefixFunctionList 参数.

import { templateValueToCardCode } from '@aiot-toolkit/card-expression';

// 默认有 '

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 functionsForMemberNameToParam参数

const code = `myfun("hello", a)[1]`;
// 普通函数 + 属性表达式
const result = jsToCardCode(code);
console.log(result); // "["[]",["()","myfun","hello",["$","a"]],1]"

// 属性名合并到函数的第 1 个参数
const result = jsToCardCode(item.source, {
  functionsForMemberNameToParam: ['myfun'],
});
console.log(result); // "["()","myfun","hello.1",["$","a"]]"

默认值:['$t', '$tc']

转换参数

jsToCardCode(code, { noPrefixFunctionList: [] });
templateValueToCardCode(code, { noPrefixFunctionList: [] });
参数名 类型 默认值 说明
noPrefixFunctionList string[] ['$t', '$tc'] 不需要添加 $ 前缀的函数名列表
functionsForMemberNameToParam string[] ['$t', '$tc'] 属性表达式合并到函数的第 1 个参数的函数名列表
前缀
const result = templateValueToCardCode(`{{myfun("hello", a)}}`); console.log(result); // '['()', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'myfun'], 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'
// 去掉 'myfun' 的前缀 const result = templateValueToCardCode(`{{myfun("hello", a)}}`, { noPrefixFunctionList: ['myfun'], }); console.log(result); // '['()', 'myfun', 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a'], ['

特殊情况

函数调用去掉前缀

如果希望“函数调用的生成结果中,函数名去掉__INLINE_CODE_66__ 前缀”, 可使用 __INLINE_CODE_67__ 参数.

import { templateValueToCardCode } from '@aiot-toolkit/card-expression';

// 默认有 '

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

const code = `myfun("hello", a)[1]`;
// 普通函数 + 属性表达式
const result = jsToCardCode(code);
console.log(result); // "["[]",["()","myfun","hello",["$","a"]],1]"

// 属性名合并到函数的第 1 个参数
const result = jsToCardCode(item.source, {
  functionsForMemberNameToParam: ['myfun'],
});
console.log(result); // "["()","myfun","hello.1",["$","a"]]"

默认值:['$t', '$tc']

转换参数

jsToCardCode(code, { noPrefixFunctionList: [] });
templateValueToCardCode(code, { noPrefixFunctionList: [] });
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
前缀
const result = templateValueToCardCode(`{{myfun("hello", a)}}`); console.log(result); // '['()', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'myfun'], 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'
// 去掉 'myfun' 的前缀 const result = templateValueToCardCode(`{{myfun("hello", a)}}`, { noPrefixFunctionList: ['myfun'], }); console.log(result); // '['()', 'myfun', 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'b']]}]

特殊情况

函数调用去掉前缀

如果希望“函数调用的生成结果中,函数名去掉__INLINE_CODE_66__ 前缀”, 可使用 __INLINE_CODE_67__ 参数.

import { templateValueToCardCode } from '@aiot-toolkit/card-expression';

// 默认有 '

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

const code = `myfun("hello", a)[1]`;
// 普通函数 + 属性表达式
const result = jsToCardCode(code);
console.log(result); // "["[]",["()","myfun","hello",["$","a"]],1]"

// 属性名合并到函数的第 1 个参数
const result = jsToCardCode(item.source, {
  functionsForMemberNameToParam: ['myfun'],
});
console.log(result); // "["()","myfun","hello.1",["$","a"]]"

默认值:['$t', '$tc']

转换参数

jsToCardCode(code, { noPrefixFunctionList: [] });
templateValueToCardCode(code, { noPrefixFunctionList: [] });
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
前缀
const result = templateValueToCardCode(`{{myfun("hello", a)}}`); console.log(result); // '['()', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'myfun'], 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'
// 去掉 'myfun' 的前缀 const result = templateValueToCardCode(`{{myfun("hello", a)}}`, { noPrefixFunctionList: ['myfun'], }); console.log(result); // '['()', 'myfun', 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
前缀”, 可使用 __INLINE_CODE_67__ 参数.

import { templateValueToCardCode } from '@aiot-toolkit/card-expression';

// 默认有 '

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

const code = `myfun("hello", a)[1]`;
// 普通函数 + 属性表达式
const result = jsToCardCode(code);
console.log(result); // "["[]",["()","myfun","hello",["$","a"]],1]"

// 属性名合并到函数的第 1 个参数
const result = jsToCardCode(item.source, {
  functionsForMemberNameToParam: ['myfun'],
});
console.log(result); // "["()","myfun","hello.1",["$","a"]]"

默认值:['$t', '$tc']

转换参数

jsToCardCode(code, { noPrefixFunctionList: [] });
templateValueToCardCode(code, { noPrefixFunctionList: [] });
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
前缀
const result = templateValueToCardCode(`{{myfun("hello", a)}}`); console.log(result); // '['()', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'myfun'], 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'
// 去掉 'myfun' 的前缀 const result = templateValueToCardCode(`{{myfun("hello", a)}}`, { noPrefixFunctionList: ['myfun'], }); console.log(result); // '['()', 'myfun', 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a'], ['

特殊情况

函数调用去掉前缀

如果希望“函数调用的生成结果中,函数名去掉__INLINE_CODE_66__ 前缀”, 可使用 __INLINE_CODE_67__ 参数.

import { templateValueToCardCode } from '@aiot-toolkit/card-expression';

// 默认有 '

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

const code = `myfun("hello", a)[1]`;
// 普通函数 + 属性表达式
const result = jsToCardCode(code);
console.log(result); // "["[]",["()","myfun","hello",["$","a"]],1]"

// 属性名合并到函数的第 1 个参数
const result = jsToCardCode(item.source, {
  functionsForMemberNameToParam: ['myfun'],
});
console.log(result); // "["()","myfun","hello.1",["$","a"]]"

默认值:['$t', '$tc']

转换参数

jsToCardCode(code, { noPrefixFunctionList: [] });
templateValueToCardCode(code, { noPrefixFunctionList: [] });
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
前缀
const result = templateValueToCardCode(`{{myfun("hello", a)}}`); console.log(result); // '['()', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'myfun'], 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'
// 去掉 'myfun' 的前缀 const result = templateValueToCardCode(`{{myfun("hello", a)}}`, { noPrefixFunctionList: ['myfun'], }); console.log(result); // '['()', 'myfun', 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'b']]}]

特殊情况

函数调用去掉前缀

如果希望“函数调用的生成结果中,函数名去掉__INLINE_CODE_66__ 前缀”, 可使用 __INLINE_CODE_67__ 参数.

import { templateValueToCardCode } from '@aiot-toolkit/card-expression';

// 默认有 '

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

const code = `myfun("hello", a)[1]`;
// 普通函数 + 属性表达式
const result = jsToCardCode(code);
console.log(result); // "["[]",["()","myfun","hello",["$","a"]],1]"

// 属性名合并到函数的第 1 个参数
const result = jsToCardCode(item.source, {
  functionsForMemberNameToParam: ['myfun'],
});
console.log(result); // "["()","myfun","hello.1",["$","a"]]"

默认值:['$t', '$tc']

转换参数

jsToCardCode(code, { noPrefixFunctionList: [] });
templateValueToCardCode(code, { noPrefixFunctionList: [] });
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
前缀
const result = templateValueToCardCode(`{{myfun("hello", a)}}`); console.log(result); // '['()', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'myfun'], 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'
// 去掉 'myfun' 的前缀 const result = templateValueToCardCode(`{{myfun("hello", a)}}`, { noPrefixFunctionList: ['myfun'], }); console.log(result); // '['()', 'myfun', 'hello', ['

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表
, 'a']]'

默认值:['$t', '$tc']

属性表达式合并到函数的第 1 个参数

如果期望“属性表达式的属性名合并到函数的第 1 个参数”,可使用 __INLINE_CODE_68__参数

__CODE_BLOCK_3__

默认值:['$t', '$tc']

转换参数

__CODE_BLOCK_4__
参数名 类型 默认值 说明
noPrefixFunctionList __INLINE_CODE_69__ __INLINE_CODE_70__ 不需要添加 __INLINE_CODE_71__ 前缀的函数名列表
functionsForMemberNameToParam __INLINE_CODE_72__ __INLINE_CODE_73__ 属性表达式合并到函数的第 1 个参数的函数名列表