TOML
TOML.jl es una biblioteca estándar de Julia para analizar y escribir TOML v1.0 archivos.
Parsing TOML data
julia> using TOML
julia> data = """
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
""";
julia> TOML.parse(data)
Dict{String, Any} with 1 entry:
"database" => Dict{String, Any}("server"=>"192.168.1.1", "ports"=>[8001, 8001…Para analizar un archivo, utiliza TOML.parsefile. Si el archivo tiene un error de sintaxis, se lanza una excepción:
julia> using TOML
julia> TOML.parse("""
value = 0.0.0
""")
ERROR: TOML Parser error:
none:1:16 error: failed to parse value
value = 0.0.0
^
[...]Hay otras versiones de las funciones de análisis (TOML.tryparse y TOML.tryparsefile) que en lugar de lanzar excepciones en caso de error de análisis devuelven un TOML.ParserError con información:
julia> using TOML
julia> err = TOML.tryparse("""
value = 0.0.0
""");
julia> err.type
ErrGenericValueError::ErrorType = 14
julia> err.line
1
julia> err.column
16Exporting data to TOML file
La función TOML.print se utiliza para imprimir (o serializar) datos en formato TOML.
julia> using TOML
julia> data = Dict(
"names" => ["Julia", "Julio"],
"age" => [10, 20],
);
julia> TOML.print(data)
names = ["Julia", "Julio"]
age = [10, 20]
julia> fname = tempname();
julia> open(fname, "w") do io
TOML.print(io, data)
end
julia> TOML.parsefile(fname)
Dict{String, Any} with 2 entries:
"names" => ["Julia", "Julio"]
"age" => [10, 20]Las claves se pueden ordenar según algún valor.
julia> using TOML
julia> TOML.print(Dict(
"abc" => 1,
"ab" => 2,
"abcd" => 3,
); sorted=true, by=length)
ab = 2
abc = 1
abcd = 3Para estructuras personalizadas, pasa una función que convierta la estructura a un tipo compatible.
julia> using TOML
julia> struct MyStruct
a::Int
b::String
end
julia> TOML.print(Dict("foo" => MyStruct(5, "bar"))) do x
x isa MyStruct && return [x.a, x.b]
error("unhandled type $(typeof(x))")
end
foo = [5, "bar"]References
TOML.parse — Functionparse(x::Union{AbstractString, IO})
parse(p::Parser, x::Union{AbstractString, IO})Analiza la cadena o flujo x, y devuelve la tabla resultante (diccionario). Lanza un ParserError en caso de fallo.
Ver también TOML.tryparse.
TOML.parsefile — Functionparsefile(f::AbstractString)
parsefile(p::Parser, f::AbstractString)Analiza el archivo f y devuelve la tabla resultante (diccionario). Lanza un ParserError en caso de fallo.
Véase también TOML.tryparsefile.
TOML.tryparse — Functiontryparse(x::Union{AbstractString, IO})
tryparse(p::Parser, x::Union{AbstractString, IO})Analiza la cadena o flujo x, y devuelve la tabla resultante (diccionario). Devuelve un ParserError en caso de fallo.
Ver también TOML.parse.
TOML.tryparsefile — Functiontryparsefile(f::AbstractString)
tryparsefile(p::Parser, f::AbstractString)Analiza el archivo f y devuelve la tabla resultante (diccionario). Devuelve un ParserError en caso de fallo.
Ver también TOML.parsefile.
TOML.print — Functionprint([to_toml::Function], io::IO [=stdout], data::AbstractDict; sorted=false, by=identity, inline_tables::IdSet{<:AbstractDict})Escribe data en sintaxis TOML en el flujo io. Si el argumento clave sorted se establece en true, ordena las tablas de acuerdo con la función dada por el argumento clave by. Si se proporciona el argumento clave inline_tables, debe ser un conjunto de tablas que se deben imprimir "en línea".
Los siguientes tipos de datos son compatibles: AbstractDict, AbstractVector, AbstractString, Integer, AbstractFloat, Bool, Dates.DateTime, Dates.Time, Dates.Date. Ten en cuenta que los enteros y flotantes deben ser convertibles a Float64 e Int64 respectivamente. Para otros tipos de datos, pasa la función to_toml que toma los tipos de datos y devuelve un valor de un tipo compatible.
TOML.Parser — TypeParser()Constructor para un Parser de TOML. Tenga en cuenta que en la mayoría de los casos no es necesario crear explícitamente un Parser, sino que se utiliza directamente TOML.parsefile o TOML.parse. Sin embargo, usar un parser explícito reutilizará algunas estructuras de datos internas, lo que puede ser beneficioso para el rendimiento si se analizan un mayor número de archivos pequeños.
TOML.ParserError — TypeParserErrorTipo que se devuelve de tryparse y tryparsefile cuando el análisis falla. Contiene (entre otros) los siguientes campos:
pos, la posición en la cadena cuando ocurrió el errortable, el resultado que hasta ahora se ha analizado con éxitotype, un tipo de error, diferente para diferentes tipos de errores