普贤教程 › 包参考
yaml 包
YAML 子集解析器 + 序列化(配置场景)
| 项 | 值 |
|---|---|
| 包名 | yaml |
| 版本 | 0.2.0 |
| 可用版本 | 0.1.0 / 0.2.0 |
| 入口 | yaml.px |
| 分类 | 数据格式与编解码 |
| 文件数 / 行数 | 1 / 363 |
安装与引入
bash
pxpkg init # 首次 pxpkg add yaml@0.2.0 pxpkg install
px
import yaml所属分类教程:数据格式与编解码
公开接口
| 函数 | 参数 |
|---|---|
yaml_parse | text |
yaml_stringify | value |
其余 13 个 def(内部与辅助,可直接调用但不属稳定接口)
| 函数 | 参数 |
|---|---|
yl_parse_block | lines, idx |
yl_parse_map | lines, idx, indent |
yl_parse_seq | lines, idx, indent |
yl_sp | n |
yl_needs_quote | s |
yl_esc_dq | s |
yl_key_str | k |
yl_scalar_str | v |
yl_render_key | k |
yl_kv_line | k, v, ind |
yl_seq_map | m, ind |
yl_item_line | v, ind |
yl_render | node, ind |
包内说明(源码头注释)
text
============================================================ 普贤标准库:std.yaml —— YAML 子集解析器 + 序列化(配置场景) ------------------------------------------------------------ 纯函数库(无 IO、无状态),编译/解释双模式一致。 面向"配置文件"的 YAML 子集,不追求完整 YAML 1.2: yaml_parse(text) -> {"ok":true,"value":node} | {"ok":false,"error":"line N: ..."} node = dict / array / string / number / true / false / null yaml_stringify(value) -> 文本(尾随换行) 分层:行/块标量层(缩进、注释剥离、块标量 `|` 折叠)在 `stdlib/yaml_lines.px`; 词法/标量层(类型推断、引号解包、流式集合 `[]`/`{}`)在 `stdlib/yaml_lex.px`; 本文件是块式递归下降解析 + 序列化。 支持:整行/行尾注释(引号内 # 不剥离);嵌套 map(空格缩进,tab 报错); 键值/空值/`key:`;块序列 `- item` 与 `- key: val`(后续键按 `- ` 对齐列); 裸键/引号键/引号值;类型推断(null/~、true/false 系、整数/小数、 双引号转义含 \uXXXX、单引号 '' 转义、其余裸字符串保留); 单行流式集合 [] / {} / [a, b] / {a: 1, b: 2}(含嵌套与引号)。 不支持(显式报错):锚点&/别名*、多行块|>、多文档---、标签!!、 制表符缩进、内联嵌套序列 `- - a`。 ⚠️ 与 Go `gopkg.in/yaml.v3` 的关系:本模块的 `yaml_stringify` 输出是 **本生态自洽**格式(缩进 2、引号策略宽松),与 Go `yaml.Marshal` **逐字节不同**。 需要与 Go 写盘产物逐字节一致时,用 `stdlib/yamlx.px` 的 `yaml_stringify_go` (qg-issue 87 缺陷 22)。 ============================================================