px普贤教程PuXian
普贤教程 › 包参考

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_parsetext
yaml_stringifyvalue
其余 13 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
yl_parse_blocklines, idx
yl_parse_maplines, idx, indent
yl_parse_seqlines, idx, indent
yl_spn
yl_needs_quotes
yl_esc_dqs
yl_key_strk
yl_scalar_strv
yl_render_keyk
yl_kv_linek, v, ind
yl_seq_mapm, ind
yl_item_linev, ind
yl_rendernode, 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)。
============================================================