Add archive helpers and harden task runtime
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
:sig
|
||||
DTree yaml_decode(String s)
|
||||
|
||||
:params
|
||||
s : YAML source string
|
||||
return value : decoded DTree
|
||||
|
||||
:see
|
||||
>markup
|
||||
yaml_encode
|
||||
json_decode
|
||||
xml_decode
|
||||
0_DTree
|
||||
|
||||
:content
|
||||
Parses a practical YAML subset into a `DTree`.
|
||||
|
||||
`yaml_decode()` is designed for concise UCE config files. It intentionally avoids full YAML schema behavior and does not support anchors, aliases, tags, directives, or complex inline collection syntax.
|
||||
|
||||
Try the live example in the [YAML demo](../demo/yaml.uce).
|
||||
|
||||
Example:
|
||||
|
||||
```uce
|
||||
String source = "app:\n"
|
||||
" name: UCE Starter\n"
|
||||
" debug: true\n"
|
||||
" port: 8080\n"
|
||||
" paths:\n"
|
||||
" - site\n"
|
||||
" - cache\n";
|
||||
|
||||
DTree cfg = yaml_decode(source);
|
||||
|
||||
cfg["app"]["name"].to_string(); // UCE Starter
|
||||
cfg["app"]["debug"].to_bool(); // true
|
||||
cfg["app"]["port"].to_s64(); // 8080
|
||||
cfg["app"]["paths"]["1"].to_string(); // cache
|
||||
```
|
||||
|
||||
Supported syntax:
|
||||
|
||||
- indentation-based maps
|
||||
- indentation-based lists
|
||||
- `key: value` map entries
|
||||
- list entries with `- value`
|
||||
- quoted strings with single or double quotes
|
||||
- booleans `true` and `false`
|
||||
- empty/null-ish values as empty strings
|
||||
- comments beginning with `#` outside quoted strings
|
||||
- literal block strings with `|`
|
||||
- folded block strings with `>`
|
||||
- optional `---` and `...` document markers
|
||||
|
||||
Numeric-looking values are stored as strings, matching `json_decode()`'s current behavior. Use `to_s64()`, `to_u64()`, or `to_f64()` when reading numeric config values.
|
||||
|
||||
Malformed input raises a request-visible `yaml_decode(): ...` runtime error.
|
||||
Reference in New Issue
Block a user