fix:CI problems
Moon Layout Core 是一个面向 MoonBit 生态的轻量图布局核心库,目标是为流程图、状态机、数据流图、IDE/可视化工具和 WebAssembly 场景提供可复用的基础布局能力。
本项目参考 Eclipse Layout Kernel(ELK)的图模型思想和 JSON 交换格式,但不完整复刻 ELK 的 Java 插件体系和全部算法。MVP 聚焦在 MoonBit 生态当前最需要、也最容易验收的核心子集:
Graph
Node
Edge
Point
LayoutOptions
layout(graph, options)
fixed
grid
tree
layered
graph_to_elk_json(graph)
项目定位:轻量图布局核心库,不是完整 ELK 移植。
先把模块名替换成你自己的 MoonBit 用户名:
# moon.mod name = "yourname/moon-layout-core"
然后同步修改 cmd/demo/moon.pkg 里的 import 路径。
cmd/demo/moon.pkg
运行检查:
moon check moon test moon run cmd/demo
let graph = new_graph("demo") let graph = add_node(graph, new_node("start", 80.0, 40.0)) let graph = add_node(graph, new_node("parse", 80.0, 40.0)) let graph = add_node(graph, new_node("layout", 80.0, 40.0)) let graph = add_edge(graph, new_edge("e1", "start", "parse")) let graph = add_edge(graph, new_edge("e2", "parse", "layout")) let report = layout(graph, layered_options()) println(report_summary(report))
保留节点已有坐标,只根据节点中心点生成简单边路线。
按节点顺序进行行优先网格布局,适合作为默认展示、调试和无结构图的兜底布局。
基于有向边计算层级并进行树形排列。MVP 适合有向树和小型 DAG。
基于最长路径的简化分层布局。MVP 不包含完整 ELK Layered 的交叉最小化、端口约束、标签布局、复合节点和复杂边路由。
当前支持导出一个小型 ELK 风格 JSON 对象:
{ "id": "demo", "children": [ { "id": "start", "width": 80, "height": 40, "x": 0, "y": 0 } ], "edges": [ { "id": "e1", "sources": ["start"], "targets": ["parse"] } ] }
下一步计划补充 JSON import、pretty print 和 golden tests。
当前版本是申报和验收导向的 MVP 初稿:
moon check
短期内不承诺:
Apache-2.0。
本项目没有复制 ELK 上游源码。若后续直接移植 ELK 源码或测试用例,需要重新审查 Eclipse Public License 2.0 及相关第三方许可证要求。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Moon Layout Core
Moon Layout Core 是一个面向 MoonBit 生态的轻量图布局核心库,目标是为流程图、状态机、数据流图、IDE/可视化工具和 WebAssembly 场景提供可复用的基础布局能力。
本项目参考 Eclipse Layout Kernel(ELK)的图模型思想和 JSON 交换格式,但不完整复刻 ELK 的 Java 插件体系和全部算法。MVP 聚焦在 MoonBit 生态当前最需要、也最容易验收的核心子集:
Graph、Node、Edge、Point、LayoutOptionslayout(graph, options)fixed、grid、tree、简化layeredDAGgraph_to_elk_json(graph)Quick Start
先把模块名替换成你自己的 MoonBit 用户名:
然后同步修改
cmd/demo/moon.pkg里的 import 路径。运行检查:
Example
MVP Algorithms
Fixed
保留节点已有坐标,只根据节点中心点生成简单边路线。
Grid / Box
按节点顺序进行行优先网格布局,适合作为默认展示、调试和无结构图的兜底布局。
Tree
基于有向边计算层级并进行树形排列。MVP 适合有向树和小型 DAG。
Layered DAG
基于最长路径的简化分层布局。MVP 不包含完整 ELK Layered 的交叉最小化、端口约束、标签布局、复合节点和复杂边路由。
ELK JSON Subset
当前支持导出一个小型 ELK 风格 JSON 对象:
下一步计划补充 JSON import、pretty print 和 golden tests。
Project Status
当前版本是申报和验收导向的 MVP 初稿:
moon check后按具体编译器版本修正语法细节Non-goals
短期内不承诺:
License
Apache-2.0。
本项目没有复制 ELK 上游源码。若后续直接移植 ELK 源码或测试用例,需要重新审查 Eclipse Public License 2.0 及相关第三方许可证要求。