asai-lua-format
v0.1.13
Published
asai for you
Readme
asai-lua-format — Lua 源码格式化(luamin)
包信息
| 建议 npm 名 | 入口文件 | $fn / 注入键 | 类型 |
|------------|---------|-------------|------|
| @estun/asai-lua-format | AsaiLuaFormat.js | AsaiLuaFormat → { Beautify, … } | Feature |
概述
asai-lua-format 封装 luamin 格式化引擎,提供 Beautify() 等方法,供 Monaco Lua 编辑器「格式化文档」使用。独立打包 JS(~4900 行),无 npm 运行时依赖。
集成方式
// monorepo — 延迟:lib/featurePlugs.ts
// import AsaiLuaFormat from './plugs/asai-lua-format/AsaiLuaFormat.js';
// npm
// import AsaiLuaFormat from '@estun/asai-lua-format';
await ensureFeaturePlug($fn, 'AsaiLuaFormat');
$fn.AsaiLuaFormat.Beautify(code, { RenameVariables: true });独立性约束
- 禁止 cross-import 其它
plugs/*(含asai-lua-parse)。 - 格式化与 AST 解析职责分离,业务按需分别
ensureFeaturePlug。
主要 API / 导出
| 方法 | 说明 |
|------|------|
| Beautify(source, options?) | 格式化 Lua 源码 |
options: RenameVariables, RenameGlobals, SolveMath(boolean)
性能说明
- 延迟加载;模块体积大,仅在
registerDeferredPlugs或ensureFeaturePlug后进入内存。 Beautify为 CPU 密集同步操作,大文件会阻塞主线程;编辑器层应 try/catch + Monaco undo。- 不在首屏 bundle 中。
peerDependencies 建议
{
"peerDependencies": {}
}(纯 JS 产物,无 Vue peer;若仅作工具包发布可不声明 vue。)
使用示例
const pretty = $fn.AsaiLuaFormat.Beautify('local x=1+2;print(x)', {
RenameVariables: true,
RenameGlobals: false,
SolveMath: true,
});与 asai-lua-parse
| 插件 | 职责 | |------|------| | asai-lua-format | 改写并美化源码 | | asai-lua-parse | AST 只读分析 |
文件结构
asai-lua-format/
├── AsaiLuaFormat.js
└── README.md注意事项
- 格式化前确保 Monaco undo 栈可用。
RenameGlobals: true可能破坏跨文件全局引用,默认false。- 语法错误时可能抛异常,需捕获并提示用户。
主要调用方
cocontrol/.../useLuaEditor.ts → formatLuaCode()
测试
npx tsx --test .youmengyu/test/unit/webclient/plugs/asai-lua-format/*.test.mjs
npm test --prefix webclient/src/plugs/asai-lua-format
node .youmengyu/test/asaitest.mjs入口:package.json 的 main/exports 指向 AsaiLuaFormat.js。
