toml

std.data.toml

val TYPE_STRING

pub val TYPE_STRING:  u8 = 0

val TYPE_INTEGER

pub val TYPE_INTEGER: u8 = 1

val TYPE_FLOAT

pub val TYPE_FLOAT:   u8 = 2

val TYPE_BOOL

pub val TYPE_BOOL:    u8 = 3

val TYPE_ARRAY

pub val TYPE_ARRAY:   u8 = 4

val TYPE_TABLE

pub val TYPE_TABLE:   u8 = 5

rec Value

pub rec Value;

带标签的 TOML 值

tag:类型判别式(TYPE_*

rec Array

pub rec Array;

TOML 值的有序列表

items:指向 Value 数组的指针(使用 ptr 以打破递归) len:元素数量 cap:已分配容量

rec Table

pub rec Table;

字符串键到 TOML 值的有序映射

keys:指向 str 数组的指针(与 values 平行) values:指向 Value 数组的指针 len:条目数量 cap:已分配容量

fun get

pub fun get(t: *Table, path: str) *Value;

在表中通过点号路径查找值

遍历每个点号分隔的片段以查找嵌套表。对于包含字面量点号的键,请使用 get_table() 然后通过 table_key() 迭代。

t:根表 path:点号分隔的键路径(例如 "project.name"ret:指向值的指针,如果未找到则为 nil

fun get_str

pub fun get_str(t: *Table, path: str) str;

通过点号路径查找字符串值

t:根表 path:点号分隔的键路径 ret:字符串值,如果未找到或类型错误则为 nil

fun get_int

pub fun get_int(t: *Table, path: str) Option[i64];

通过点号路径查找整数值

t:根表 path:点号分隔的键路径 ret:整数值,如果未找到或类型错误则为 None

fun get_float

pub fun get_float(t: *Table, path: str) Option[f64];

通过点号路径查找浮点值

t:根表 path:点号分隔的键路径 ret:浮点值,如果未找到或类型错误则为 None

fun get_bool

pub fun get_bool(t: *Table, path: str) Option[bool];

通过点号路径查找布尔值

t:根表 path:点号分隔的键路径 ret:布尔值,如果未找到或类型错误则为 None

fun get_table

pub fun get_table(t: *Table, path: str) *Table;

通过点号路径查找子表

t:根表 path:点号分隔的键路径 ret:指向子表的指针,如果未找到或类型错误则为 nil

fun get_array

pub fun get_array(t: *Table, path: str) *Array;

通过点号路径查找数组

t:根表 path:点号分隔的键路径 ret:指向数组的指针,如果未找到或类型错误则为 nil

fun array_get

pub fun array_get(arr: *Array, index: usize) *Value;

通过索引从数组中获取值

arr:要索引的数组 index:元素索引 ret:指向值的指针,如果越界则为 nil

fun table_len

pub fun table_len(t: *Table) usize;

获取表中的条目数量

t:要查询的表 ret:键值对数量

fun table_key

pub fun table_key(t: *Table, index: usize) str;

通过位置索引获取键

t:要查询的表 index:位置(从 0 开始) ret:键字符串,如果越界则为 nil

fun table_value

pub fun table_value(t: *Table, index: usize) *Value;

通过位置索引获取值

t:要查询的表 index:位置(从 0 开始) ret:指向值的指针,如果越界则为 nil

fun array_len

pub fun array_len(arr: *Array) usize;

获取数组中的元素数量

arr:要查询的数组 ret:元素数量

fun parse

pub fun parse(a: *Allocator, src: str) Result[Table, str];

将 TOML 文档解析为表树

支持 TOML 1.0:基本和字面量字符串(单行和多行)、整数(十进制、十六进制、八进制、二进制)、浮点数、布尔值、数组、表、内联表、表数组以及点号键。

a:所有内部分配的分配器 src:以空字符结尾的 TOML 源字符串 ret:根表,或错误消息