yaml
简介
YAML官网: https://yaml.org/
CPP库: yaml-cpp
- pkg封装了库的几个基本方法
- yaml-test-suite内的测试用例,yaml不能全部通过(https://matrix.yaml.info/)
- test中对test-suite中无法解析/解析不一致的地方都有注释
基本用法:
- 使用new_node新建实例
- 实例通过load或load_file加载yaml
- 使用dump查看加载的yaml内容
- 使用dump_file写到目标文件
- 使用get获取指定元素,并返回mixed
TODO
- set 方法 2. load_all 方法
组件接口
yaml.gs
函数原型 | 函数作用 |
---|---|
object new_node() | 新建节点实例,用于解析、操作yaml节点 |
object load(string input) | 新建节点实例,并加载string |
object load_file(string path) | 新建节点实例,并加载文件 |
yaml_impl.gs
yaml实例
函数原型 | 函数作用 |
---|---|
void load(string input) | 加载yaml格式的输入 |
void load_file(string file_path) | 加载yaml文件 |
string dump() | 用string表示获取加载后的yaml内容 |
void dump_file(string file_path) | 将内存中的yaml写到指定文件 |
int node_type() | 根节点的类型 |
mixed get(...) | 获取节点内容 |
样例
// 加载string
void load_test()
{
object node = yaml.new_node();
node.load("[1,2,3]");
printf("Loaded: \n%s\n\n", node.dump());
}
// 加载文件
void load_file_test()
{
object node = yaml.load_file("/sample/sample.yaml");
printf("File loaded: \n%s\n\n", node.dump());
}
// 获取节点内容
void get_item_test()
{
object node = yaml.load_file("/sample/sample.yaml");
mixed rlt = node.get();
mixed item = node.get("name");
printf("Load %s:\n%O\n\n", item, rlt);
}