windjammer 0.48.0

A simple language inspired by Go, Ruby, and Elixir that transpiles to Rust - 80% of Rust's power with 20% of the complexity
Documentation
// Conformance Test: std::json (serde_json backend via windjammer_runtime)
//
// EXPECTED OUTPUT:
// [json_parse] name=Alice age=30 active=true
// [json_stringify] roundtrip ok
// [json_array] len=3
// [json_all] PASSED

use std::json

fn test_json_parse_and_get_fields() {
    let text = "{\"name\":\"Alice\",\"age\":30,\"active\":true}"
    match json::parse(text) {
        Ok(v) => {
            let mut name = ""
            let mut age = 0
            let mut active = false
            if json::is_object(v) {
                if let Some(name_val) = json::get(v, "name") {
                    if let Some(s) = json::as_str(name_val) {
                        name = s
                    }
                }
                if let Some(age_val) = json::get(v, "age") {
                    if let Some(n) = json::as_i64(age_val) {
                        age = n as int
                    }
                }
                if let Some(active_val) = json::get(v, "active") {
                    if let Some(b) = json::as_bool(active_val) {
                        active = b
                    }
                }
            }
            println("[json_parse] name=${name} age=${age} active=${active}")
        }
        Err(e) => {
            println("[json_parse] FAIL: ${e}")
        }
    }
}

fn test_json_stringify_roundtrip() {
    let text = "{\"x\":1,\"y\":2}"
    match json::parse(text) {
        Ok(v) => {
            match json::stringify(v) {
                Ok(out) => {
                    match json::parse(out) {
                        Ok(_) => println("[json_stringify] roundtrip ok"),
                        Err(e) => println("[json_stringify] FAIL reparsing: ${e}"),
                    }
                }
                Err(e) => println("[json_stringify] FAIL stringify: ${e}"),
            }
        }
        Err(e) => println("[json_stringify] FAIL parse: ${e}"),
    }
}

fn test_json_array_len() {
    let text = "[1,2,3]"
    match json::parse(text) {
        Ok(v) => {
            let n = json::len(v)
            println("[json_array] len=${n}")
        }
        Err(e) => println("[json_array] FAIL: ${e}"),
    }
}

fn main() {
    test_json_parse_and_get_fields()
    test_json_stringify_roundtrip()
    test_json_array_len()
    println("[json_all] PASSED")
}