An explainable EditorConfig core and style diagnostics toolkit for MoonBit projects.
Dependencies
D:\conda\environments\moonbit\moonbit-toolchain\bin\moon.exe version --allcd D:\conda\environments\moonbit\projects\MoonEditorConfig
moon check --deny-warn
moon test --deny-warn
moon run cmd/main -- check examples/valid.editorconfigD:\conda\environments\moonbit\moonbit-toolchain\bin\moon.exe test --deny-warnmoon run cmd/main -- check path/to/.editorconfigmoon run cmd/main -- resolve src/main.mbt
moon run cmd/main -- resolve src/main.mbt --jsonmoon run cmd/main -- explain src/main.mbtmoon run cmd/main -- query src/main.mbt indent_sizemoon run cmd/main -- match "src/**.mbt" "src/parser/main.mbt"moon run cmd/main -- format .editorconfig
moon run cmd/main -- format .editorconfig --write
moon run cmd/main -- diff .editorconfig
moon run cmd/main -- audit .editorconfig
moon run cmd/main -- conflicts .editorconfigpowershell -ExecutionPolicy Bypass -File scripts\serve.ps1scripts\serve.cmdMoonEditorConfig Studio: http://127.0.0.1:8765/web/index.html$env:MOONEDITORCONFIG_PORT = "8877"
powershell -ExecutionPolicy Bypass -File scripts\serve.ps1///|
let parsed = @MoonEditorConfig.parse_document(
"/repo/.editorconfig", "root = true\n[*.mbt]\nindent_size = 2\n",
)
///|
let diagnostics = @MoonEditorConfig.validate(parsed.config)///|
let files : Array[@MoonEditorConfig.VirtualFile] = [
{
path: "/repo/.editorconfig",
content: "root = true\n[*]\ncharset = utf-8\n",
},
{ path: "/repo/src/.editorconfig", content: "[*.mbt]\nindent_size = 2\n" },
]
///|
let result = @MoonEditorConfig.resolve_workspace(files, "/repo/src/main.mbt")parser.mbt 可恢复语法解析
model.mbt 公共数据模型与源码范围
glob.mbt Glob 编译与匹配
glob_analysis.mbt 复杂度、示例与重叠见证
path_utils.mbt 跨平台路径处理
resolve.mbt 单文件与层级配置解析
workspace.mbt 虚拟项目和批量解析
validation.mbt 属性模式和语义验证
quality.mbt 质量评分与维护建议
conflicts.mbt 重复赋值和重叠节分析
format.mbt 规范格式化
diff.mbt 行级 Diff 与统一 Diff
fixes.mbt 文本编辑与修复计划
json.mbt 机器可读输出
report.mbt 中文终端报告
studio_api.mbt 浏览器分析快照
cmd/main/ 原生 CLI
web/app/ MoonBit/JS Studio 入口
web/ 页面与样式moon check --target all --deny-warn
moon test --deny-warn
moon fmt --check
moon info
moon build --target native --release cmd/main
moon build --target js --release web/apppub(all) struct ConfigConflict {
kind : ConflictKind
key : String
first_pattern : String
second_pattern : String
first_value : String
second_value : String
witness_path : String?
first_line : Int
second_line : Int
message : String
} derive(Eq, Debug)pub(all) struct ConfigLayer {
path : String
directory : String
config : EditorConfig
} derive(Eq, Debug)pub(all) struct Diagnostic {
line : Int
severity : Severity
code : String
message : String
hint : String
span : SourceSpan
} derive(Eq, Debug)pub(all) struct Finding {
code : String
severity : Severity
category : FindingCategory
title : String
detail : String
suggestion : String
span : SourceSpan
} derive(Eq, Debug)pub(all) struct ParseResult {
config : EditorConfig
diagnostics : Array[Diagnostic]
} derive(Eq, Debug)pub(all) struct Property {
key : String
value : String
raw_key : String
raw_value : String
source : SourceLocation
span : SourceSpan
} derive(Eq, Debug)pub(all) struct PropertySchema {
name : String
kind : PropertyKind
description : String
standard : Bool
} derive(Eq, Debug)pub(all) struct QualityReport {
score : Int
grade : String
stats : QualityStats
findings : Array[Finding]
} derive(Eq, Debug)pub(all) struct Resolution {
target : String
properties : Array[ResolvedProperty]
sections : Array[SectionTrace]
diagnostics : Array[Diagnostic]
} derive(Eq, Debug)pub(all) struct ResolvedProperty {
key : String
value : String
source : SourceLocation
pattern : String
config_path : String
history : Array[PropertyStep]
} derive(Eq, Debug)pub(all) struct Section {
pattern : String
properties : Array[Property]
source : SourceLocation
span : SourceSpan
} derive(Eq, Debug)pub(all) struct WorkspaceResult {
target : String
discovered_configs : Array[String]
resolution : Resolution
diagnostics : Array[Diagnostic]
} derive(Eq, Debug)fn discover_virtual_configs(files : Array[VirtualFile], target : String) -> (Array[ConfigLayer], Array[Diagnostic])fn format_diff(source : String) -> Stringfn glob_complexity_warning(pattern : String, threshold? : Int) -> String?fn glob_overlap_witness(left : String, right : String) -> String?fn glob_specificity(pattern : String) -> Intfn group_targets_by_property(results : Array[WorkspaceResult], property_name : String) -> Map[String, Array[String]]fn normalize_path(path : String) -> Stringfn resolve_workspace_batch(files : Array[VirtualFile], targets : Array[String]) -> Array[WorkspaceResult]fn studio_snapshot(source : String, target : String) -> Stringfn unified_diff(before : String, after : String, old_name? : String, new_name? : String, context? : Int) -> StringAn explainable EditorConfig core and style diagnostics toolkit for MoonBit projects.
Dependencies