@block-ml/core
BlockML 的解析、校验、序列化、布局与可见性计算。纯 TypeScript,无运行时依赖。
BlockML 是 diagram-as-code 语言:作者只写语义,默认布局与走线由平台负责;
编辑器拖动后的坐标回写到同一个 .blockml 文件。
安装
npm i @block-ml/core
用法
import { parse, serialize, hasErrors } from "@block-ml/core";
const { document, diagnostics } = parse(source);
if (hasErrors(diagnostics)) {
throw new Error(
diagnostics
.filter((d) => d.severity === "error")
.map((d) => `${d.line}:${d.column} ${d.message}`)
.join("\n"),
);
}
const text = serialize(document); // 规范化:缩进、属性顺序、数字格式
主要导出:
| 能力 | API |
|---|---|
| 解析 / 词法 | parse、tokenize |
| 回写 | serialize |
| 布局 | defaultLayout(分层默认 + 固定坐标覆盖)、layoutDocument、applyLayout、LAYOUT_ALGORITHMS |
| 几何 / 走线 | planCurveSides、planPorts / planSidePorts(共享侧端口)、edgeGeometry、orthogonalRoute、placeLabelOnPath、routeCrosses、boxOf |
| 可见性 | resolveVisibility、visibleNodes、visibleEdges、visibleGroups |
| 类型 | BlockDocument、NodeDecl、EdgeDecl、GroupDecl、Diagnostic 等 |
两种走线共用同一套端口、法线出线、标签贴合与节点避让规则。
相关包
@block-ml/viewer:交互画布,拖拽后回写同一份源码@block-ml/cli:blockml validate / render / fmt / layout / inspect
语言规范与示例:Roiocam/blockml
License
MIT