把 .yaml/.yml 拖到任意网页或空白页即可解析成可折叠树;直接打开本地文件时按地址把字节读回来再解析。编辑器支持 Tab/Shift+Tab 缩进、回车自动续进、选区整行缩进,右侧原文改动实时刷新左侧树。支持多文档(---)、锚点/别名、块标量;可搜索定位、另存为 JSON / 规范化 YAML、Ctrl+S 保存。其它格式一律不拦。
* 用法
* 1. 浏览器直接打开本地 .yaml / .yml → 自动解析成分屏界面(左侧树形预览,右侧原文编辑)。
* 2. 编辑右侧原文,左侧实时刷新(解析失败会显示行/列和错误摘录,并保留原文)。
* 3. 快捷缩进:
* · Tab 光标处插入 2 空格;选中多行时整块加缩进
* · Shift+Tab 当前行/选区行整体减一级缩进(2 空格)
* · Enter 自动延续上一行缩进;行尾是 key: / - / | / > 时自动加 2 空格
* · 工具栏 ⇤ / ⇥ 对当前行或选区行减/加缩进
* 4. 保存:Ctrl+S 或「保存」按原格式导出;「另存为」可导出 .json 或规范化 .yml。
*
* 范围边界(和 data-reader / markdown-reader / word-reader 协作)
* · 脚本注入所有网页只为接住拖放。拖进来的扩展名不是 .yaml/.yml 时不接管 drop,
* 浏览器照常打开,其他脚本也能接手。
* · dragenter/dragover 对文件拖放一律 preventDefault(只保证 drop 能触发,不吞默认行为),
* 与 data-reader 1.4.0 同一策略,重复取消无副作用。
* · 自动铺满页面只发生在 file:// 且扩展名是 yaml/yml 时;http(s) 上的 yaml 接口页不自动接管。
* · 声明接管用 documentElement.dataset.fileReader = 'yaml',
* data-reader 的守护看到非 'data' 会停手,互不抢页面。
*
* 与浏览器自带查看器的冲突(Chrome / Edge)
* · .yaml/.yml 通常没有内置查看器:要么直接下载,要么空白页。
* · 对策与 data-reader 一致:<pre> 有内容先抓快照;为空就按 file:// 地址把字节读回来
* (UTF-8 失败再试 gb18030);用 MutationObserver 在界面被冲掉后挂回去。
*
* 解析能力
* · 内嵌 js-yaml 4.1.0(MIT)浏览器 bundle,完整 YAML 1.1/1.2 子集:
* 锚点 & / 别名 *、块标量 | >、flow 风格 {} []、多文档 ---、!!binary 等标签。
* · 多文档文件在树里按「文档 N」分节;另存为 JSON 时多文档导出为数组。
* · 解析错误带行/列定位 + 出错行摘录(js-yaml YAMLException.mark)。
* · 搜索:匹配的键/值高亮并自动展开,无关子树收起变暗。
* · YAML 文件普遍在百 KB 量级,不做虚拟列表;超过 64MB 拒绝载入。