@aiot-toolkit/card-expression
Advanced tools
Comparing version 1.0.1 to 1.0.2
{ | ||
"name": "@aiot-toolkit/card-expression", | ||
"description": "快应用卡片表达式解析库", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"main": "lib/index.js", | ||
@@ -6,0 +6,0 @@ "module": "es/index.js", |
# 快应用卡片表达式解析 | ||
## 快速上手 | ||
用于将 `JS表达式` 转换为 `快应用卡片表达式` | ||
```js | ||
import translateJsToCardCode from '@aiot-toolkit/card-expression'; | ||
快应用卡片表达式是一种类似 `lisp的语法树表达式` | ||
const code = 'a+b'; | ||
const result = translateJsToCardCode(code); | ||
console.log(result); | ||
``` | ||
> 示例 | ||
## 转换流程 | ||
| 表达式 | 转换后 | | ||
| ---------------- | --------------------------------------------------------- | | ||
| `a+123` | `['+', ['$', 'a'], 123]` | | ||
| `!a` | `['!', ['$', 'a']]` | | ||
| `a[1].x.y` | `['.',['.', ['.', ['$', 'a'], 1], ['$''x']], ['$', 'y']]` | | ||
| `fun(a, b, 124)` | `[['()', ['$', 'fun'], ['$', 'a'], ['$', 'b'], 124]` | | ||
转换流程由以下 3 步组成,每步可单独使用 | ||
## 快速上手 | ||
1. JS 代码 转换为 JS ast 树 | ||
### js 代码转为 Card 代码 | ||
```js | ||
const jsNode = new JsExpressionParser().parser(code); | ||
``` | ||
import translateJsToCardCode from '@aiot-toolkit/card-expression'; | ||
2. js ast 树转换为 Card 对象 | ||
```js | ||
const cardNode = new JsNodeToCardNode().translate(jsNode); | ||
const code = 'a+b'; | ||
const result = translateJsToCardCode(code); | ||
console.log(result); // '["+", ["$", "a"], ["$", "b"]]' | ||
``` | ||
3. Card 转换为 Card 代码 | ||
```js | ||
const cardCode = new CardNodeGenerator().generator(cardNode); | ||
``` |
13100
27