Elm:
Trabajando con TOML

Cómo hacerlo:

Elm no tiene un analizador TOML incorporado, pero puedes interop con JavaScript o usar un paquete de la comunidad. Así es como podrías analizar TOML usando un hipotético paquete elm-toml:

import Toml

configToml : String
configToml =
    """
    [server]
    port = 8080
    """

parseResult : Result Toml.Decode.Error Toml.Value
parseResult =
    Toml.decodeString configToml

Para decodificar valores específicos:

portDecoder : Toml.Decode.Decoder Int
portDecoder =
    Toml.Decode.field "server" (Toml.Decode.field "port" Toml.Decode.int)

port : Result String Int
port =
    Toml.decodeString portDecoder configToml

La salida de muestra para port podría ser Ok 8080 si la decodificación es exitosa.

Profundización

TOML fue creado por Tom Preston-Werner, cofundador de GitHub, como un lenguaje simple para archivos de configuración. Compite con YAML y JSON; la sintaxis de TOML busca lo mejor de ambos mundos con un enfoque en ser fácil de leer y escribir para los humanos.

En Elm, para manejar TOML, típicamente necesitas pasar por interop con JavaScript, lo que puede ser un poco complicado. Afortunadamente, la comunidad de Elm es ingeniosa, y existen varios paquetes de terceros. El hipotético paquete elm-toml probablemente usaría el Port de Elm para hablar con un analizador TOML de JavaScript o implementaría el análisis directamente en Elm.

El principal obstáculo en Elm es que todo es de tipo estático, por lo que necesitarás escribir decodificadores personalizados para manejar diferentes estructuras de datos dentro de TOML, lo que puede ser un poco verboso pero añade seguridad.

Ver También

Para especificaciones y más información sobre TOML, consulta TOML. Si estás buscando un enfoque práctico para la interop con Elm y JavaScript, comienza con la guía oficial: Puertos de Elm. Para paquetes de la comunidad o para contribuir, busca en Paquetes de Elm.