7 releases

Uses new Rust 2024

0.3.6 Apr 9, 2025
0.3.5 Apr 9, 2025
0.2.4 Apr 7, 2025

#763 in Database interfaces

Download history 58/week @ 2025-04-01 546/week @ 2025-04-08 12/week @ 2025-04-15 1/week @ 2025-04-22

617 downloads per month
Used in 4 crates

MIT license

60KB
1.5K SLoC

Moduforge

Moduforge是一个不含任何业务绑定的 计价编辑器默认实现,它可以通过扩展进行定制和扩展。 它的无业务绑定本质意味着它没有固定的业务约束,提供了完全的设计自由。可以根据业务需求进行定制。 设计思想是,通过扩展的方式与业务解耦,让编辑器可以支持任何业务,并且可以支持任何业务需求。

Moduforge是如何工作的?

  • 工作方式: 定义基础节点和标记和约束,然后定义扩展添加行为。

    • core/model: 基础数据的定义,包括节点(Node),标记(Mark),约束(Schema)等。

    • core/state: 状态管理,主要负责状态的更新,插件的调度。

    • core/transform: 事务的实现,类似java 的DB事务。保证操作的原子性,保证数据的一致性。可以扩展最小的操作单元。

    • core/runtime: 组合model,state,transform 进一步实现编辑器的核心功能,添加并收集扩展.

Moduforge使用了哪些技术框架?

  • im: Moduforge编辑器使用im-rs进行基础数据定义,保证数据的不可变。

  • zen: Moduforge编辑器使用zen进行规则引擎管理,解除业务硬编码耦合。

Moduforge 框架设计思路

  • 可扩展性: Moduforge设计为高度可扩展,允许开发者根据需求自定义编辑器的功能和行为。这包括插件系统,使得添加新功能变得简单,任何功能都可以扩展.例如:历史记录,撤销,重做。

  • 模块化: 整个框架被分解成多个独立的模块,每个模块负责编辑器的一个特定方面,如模型、状态管理、命令执行等。这种设计使得开发者可以根据项目需求选择性地引入所需模块。

  • 命令模式: 使用命令模式来处理编辑操作。每个编辑操作都被封装成一个命令对象,这样可以方便地撤销或重做操作,同时也有助于实现复杂的编辑逻辑。

  • 状态管理: 编辑器的状态被集中管理,所有对文档的修改都会触发状态的变化。这种设计有助于保持数据的一致性和可预测性。

关于Moduforge

Moduforge,是基于当前计价软件延伸出来的,因此它与 计价 的业务无关,它只是 个大型的 的编辑器。

License

计价软件内部团队使用请勿泄露。

Dependencies

~9–17MB
~228K SLoC