Skip to content

2234839/siyuan_expr

Repository files navigation

思源表达式插件

中文文档 English doc

使用文档

qq 群:706761641 (心栈空间)

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

试用约定:

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


付费约定:

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

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

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

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

通过爱发电平台付费

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


禁止使用与免责约定:

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

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

使用文档

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

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

自动求值

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

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

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

注意!更新块属性并不会导致块的 update 字段更新,如果想要触发求值,可以手动随意修改一下块内容。

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

expr

插件实例

block

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

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