Update.
This commit is contained in:
Vendored
+105
@@ -0,0 +1,105 @@
|
||||
// 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])")
|
||||
Reference in New Issue
Block a user