Exo es un lenguaje de configuración declarativo, pequeño y orientado a árboles de datos.
deps ["npm", "nodejs"]
workspace "https://github.com/scirats/scirats.git"
services [
{
name "api"
ports [8080, 8443]
env {
mode "production"
}
}
]
database.options {
pool-size 10
tls.enabled true
}
Las propiedades usan la forma nombre valor. Los strings requieren comillas. Los valores disponibles son strings, booleanos, enteros, flotantes, null, arrays y objetos.
Los arrays aceptan valores anidados, arrays de objetos y comas finales:
routes [
{
path "/api"
methods ["GET", "POST"]
}
]
Los objetos pueden expresarse como bloques, como objetos anidados o mediante rutas con puntos:
database {
options {}
}
database.options.pool-size 10
Los comentarios de línea usan # o //.
cfg, err := exo.ParseFile("exo.conf")
if err != nil {
return err
}
port, ok := cfg.Int("database.options.pool-size")
if ok {
fmt.Println(port)
}Lookup, Values, Object, StringValue, Bool, Int y Float permiten consultar valores sin panic.