43 / Redes

Configuración TOML

std/toml parsea strings de configuración TOML en un Map plano con claves en notación de punto. TOML es el formato de configuración que usa nyx.toml (el manifiesto del package manager) y cualquier servicio que guarde sus ajustes en un archivo .toml.

43-toml-config.nxFuente →
// Parsing TOML configuration strings
// Parseo de cadenas de configuración TOML

import "std/toml"

fn main() -> int {
    let config: String = "[server]\nhost = \"localhost\"\nport = 8080\ndebug = true\n\n[database]\npath = \"/var/data/app.db\"\nmax_connections = 50"

    let parsed: Map = toml_parse(config)

    // Get string values with defaults
    let host: String = toml_get(parsed, "server.host", "0.0.0.0")
    print("host: " + host)

    // Get integer values
    let port: int = toml_get_int(parsed, "server.port", 3000)
    print("port: " + int_to_string(port))

    // Get boolean values
    let debug: bool = toml_get_bool(parsed, "server.debug", false)
    if debug {
        print("debug mode enabled")
    }

    // Check if a key exists
    if toml_has(parsed, "database.path") {
        let db_path: String = toml_get(parsed, "database.path", "")
        print("db: " + db_path)
    }

    return 0
}
Salidastdout
host: localhost
port: 8080
debug mode enabled
db: /var/data/app.db

Cómo funciona

toml_parse lee un string TOML y devuelve un Map<String> donde las claves de sección usan notación de punto: [server] + host = "localhost" se convierte en "server.host" → "localhost". Todos los valores se almacenan internamente como strings.

Los accesores tipados — toml_get (string), toml_get_int, toml_get_bool — convierten desde la representación en string y aceptan un valor por defecto si falta la clave. toml_has verifica si una clave existe sin leer su valor.

Este es el mismo parser que usa nyx build para leer los manifiestos de proyecto nyx.toml, y el que usarías cuando un servidor tiene que cargar su tabla de rutas desde un archivo .toml al arrancar.