Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/2234839/siyuan_expr

思源 expr
https://github.com/2234839/siyuan_expr

siyuan siyuan-note siyuan-plugin

Last synced: about 1 month ago
JSON representation

思源 expr

Awesome Lists containing this project

README

        

# 思源表达式插件

[中文文档](./README.md) [English doc](./README_en.md)

[使用文档](#使用文档)

qq 群:706761641 (心栈空间)

### 同意以下约定后方可使用本产品

试用约定:

你可以试用任意时长,当你觉得本产品对你有用时一个月后失去试用资格。

---

付费约定:

在订阅时间内你可以使用本产品。

视同订阅的情况:你对崮生本人有过任意形式的帮助、你对社会有过公认的贡献、无法支付。

订阅金额:等价 10 人民币,可采取任意支付方式,不限制时间(你可以决定任意时间后采取任意付费措施,但现在就开始使用)。

订阅时间:从付费之时到一百次产品更新的使用权或 365 天,取时间跨度更长的作为订阅时间,可叠加。(即如果我在极短时间内更新了超过一百次则按一年计算)

[通过爱发电平台付费](https://afdian.com/@llej0)

在你不记得上述约定的情况下不视为违反付费约定。

---

禁止使用与免责约定:

禁止使用本产品用于任意违法乱纪相关行为。

作者不为你使用本产品所产生的任何后果负责。

## 使用文档

给块添加自定义属性 expr ,值设置为合法 js 表达式,插件会使用 eval 对表达式进行求值,返回值将作为块内容以及自定义属性 expr-value 的值。

值如果为 Promise 会将 Promise 的结果作为块内容。

### 自动求值

插件会不断对发生变化的块进行求值,但为了避免产生大量运算和读写,依据块的 update 字段进行了一些优化,在插件初次启动时会对所有表达式进行一次求值。

之后每当触发一次页签切换事件时(switch-protyle),会对所有加载的表达式块以及更新了的块进行一次求值

如果你不想插件不断求值暂时可已打开开发者工具输入 `expr.intervalUpdateSql.set(false)` 来关闭自动求值(页签切换事件还是会触发)

注意![更新块属性并不会导致块的 update 字段更新](https://github.com/2234839/siyuan_expr/issues/1#issuecomment-2147809646),如果想要触发求值,可以手动随意修改一下块内容。

### 表达式内可以直接引用的一些特殊变量

#### expr

插件实例

#### block

表达式可以直接输入 block 来获取表达式所在块的数据,其中以 `a_` 开头的为 custom-expr 的属性,其余均为块属性。

```js
const block = {
a_block_id: "块id",
a_box: "笔记本id",
a_id: "属性id",
a_name: "custom-expr",
a_path: "/文档id/文档id/文档id.sy",
a_root_id: "文档id",
a_type: "b",
a_value: "表达式脚本",
alias: "",
box: "笔记本id",
content: "块内容",
created: "20240605121837",
fcontent: "",
hash: "f570917",
hpath: "可读路径",
ial: "块属性"
id: "块id",
length: 16,
markdown: "块内容 markdown",
memo: "",
name: "",
parent_id: "父块id",
path: "/文档id/文档id/文档id.sy",
root_id: "文档id",
sort: 10,
subtype: "",
tag: "",
type: "p",
updated: "20240605134312"
}
```

## 鸣谢

十分感谢以下非常有爱的人

[Jeffrey Chen ](https://github.com/TCOTC)