Codificacion YAML
Codificacion YAML
Sección titulada «Codificacion YAML»Parsear documentos YAML a tablas Lua y serializar valores Lua a strings YAML.
local yaml = require("yaml")Codificacion
Sección titulada «Codificacion»Codificar Valor
Sección titulada «Codificar Valor»Codifica una tabla Lua a formato YAML.
-- Clave-valor simplelocal config = { name = "myapp", port = 8080, debug = true}local out = yaml.encode(config)-- name: myapp-- port: 8080-- debug: true
-- Arrays se convierten en listas YAMLlocal items = {"apple", "banana", "cherry"}yaml.encode(items)-- - apple-- - banana-- - cherry
-- Estructuras anidadaslocal server = { http = { address = ":8080", timeout = "30s" }, database = { host = "localhost", port = 5432 }}yaml.encode(server)| Parámetro | Tipo | Descripción |
|---|---|---|
data | table | Tabla Lua a codificar |
options | table? | Opciones de codificacion opcionales |
Opciones
Sección titulada «Opciones»| Campo | Tipo | Descripción |
|---|---|---|
field_order | string[] | Orden de campos personalizado - campos aparecen en este orden |
sort_unordered | boolean | Ordenar campos no en field_order alfabeticamente |
-- Controlar orden de campos en salidalocal entry = { zebra = 1, alpha = 2, name = "test", kind = "demo"}
-- Campos aparecen en orden especificado, restantes ordenados alfabeticamentelocal result = yaml.encode(entry, { field_order = {"name", "kind"}, sort_unordered = true})-- name: test-- kind: demo-- alpha: 2-- zebra: 1
-- Solo ordenar todos los campos alfabeticamenteyaml.encode(entry, {sort_unordered = true})-- alpha: 2-- kind: demo-- name: test-- zebra: 1Devuelve: string, error
Decodificacion
Sección titulada «Decodificacion»Decodificar String
Sección titulada «Decodificar String»Parsea un string YAML a una tabla Lua.
-- Parsear configuraciónlocal config, err = yaml.decode([[server: host: localhost port: 8080features: - auth - logging - metrics]])if err then return nil, errend
print(config.server.host) -- "localhost"print(config.server.port) -- 8080print(config.features[1]) -- "auth"
-- Parsear desde contenido de archivolocal content = fs.read("config.yaml")local settings, err = yaml.decode(content)if err then return nil, errors.wrap(err, "invalid config file")end
-- Manejar tipos mixtoslocal data = yaml.decode([[name: testcount: 42ratio: 3.14enabled: truetags: - lua - wippy]])print(type(data.count)) -- "number"print(type(data.enabled)) -- "boolean"print(type(data.tags)) -- "table"| Parámetro | Tipo | Descripción |
|---|---|---|
data | string | String YAML a parsear |
Devuelve: any, error - Devuelve table, array, string, number o boolean dependiendo del contenido YAML
Errores
Sección titulada «Errores»| Condición | Tipo | Reintentable |
|---|---|---|
| Entrada no es tabla (encode) | errors.INVALID | no |
| Entrada no es string (decode) | errors.INVALID | no |
| String vacio (decode) | errors.INVALID | no |
| Sintaxis YAML invalida | errors.INTERNAL | no |
Consulte Manejo de Errores para trabajar con errores.