// retoor <retoor@molodetz.nl>
import "yaml" for Yaml
System.print("=== YAML Module Demo ===\n")
System.print("--- Basic Parsing ---")
var simple = Yaml.parse("name: Wren-CLI\nversion: 0.4.0")
System.print("Name: %(simple["name"])")
System.print("Version: %(simple["version"])")
System.print("\n--- Nested Structures ---")
var nested = "
database:
host: localhost
port: 5432
credentials:
user: admin
password: secret
"
var config = Yaml.parse(nested)
System.print("Host: %(config["database"]["host"])")
System.print("Port: %(config["database"]["port"])")
System.print("User: %(config["database"]["credentials"]["user"])")
System.print("\n--- Lists ---")
var listYaml = "
languages:
- Wren
- C
- Python
"
var langs = Yaml.parse(listYaml)
System.print("Languages:")
for (lang in langs["languages"]) {
System.print(" - %(lang)")
}
System.print("\n--- Complex Structure (Navigation) ---")
var navYaml = "
sections:
- title: Getting Started
pages:
- file: index
title: Overview
- file: installation
title: Installation
- title: API Reference
pages:
- file: yaml
title: yaml
"
var nav = Yaml.parse(navYaml)
for (section in nav["sections"]) {
System.print("Section: %(section["title"])")
for (page in section["pages"]) {
System.print(" - %(page["title"]) (%(page["file"]))")
}
}
System.print("\n--- Data Types ---")
var types = "
string: hello world
number: 42
float: 3.14159
bool_true: true
bool_false: false
null_value: null
quoted: \"with spaces\"
"
var data = Yaml.parse(types)
System.print("String: %(data["string"]) (%(data["string"].type))")
System.print("Number: %(data["number"]) (%(data["number"].type))")
System.print("Float: %(data["float"]) (%(data["float"].type))")
System.print("Bool true: %(data["bool_true"]) (%(data["bool_true"].type))")
System.print("Bool false: %(data["bool_false"]) (%(data["bool_false"].type))")
System.print("Null: %(data["null_value"])")
System.print("Quoted: %(data["quoted"])")
System.print("\n--- Stringify ---")
var obj = {
"name": "Example",
"count": 42,
"active": true,
"items": ["one", "two", "three"],
"nested": {
"key": "value"
}
}
System.print("Serialized:")
System.print(Yaml.stringify(obj))
System.print("\n--- Round-trip ---")
var original = "
title: Test
items:
- first
- second
"
var parsed = Yaml.parse(original)
var reserialized = Yaml.stringify(parsed)
var reparsed = Yaml.parse(reserialized)
System.print("Original title: %(parsed["title"])")
System.print("Reparsed title: %(reparsed["title"])")
System.print("Items match: %(parsed["items"][0] == reparsed["items"][0])")