TOML
TOML.jl is a Julia standard library for parsing and writing TOML v1.0 files.
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…Pour analyser un fichier, utilisez TOML.parsefile. Si le fichier contient une erreur de syntaxe, une exception est levée :
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
^
[...]Il existe d'autres versions des fonctions de parsing (TOML.tryparse et TOML.tryparsefile) qui, au lieu de lancer des exceptions en cas d'erreur de parsing, retournent un TOML.ParserError avec des informations :
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 fonction TOML.print est utilisée pour imprimer (ou sérialiser) des données au format 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]Les clés peuvent être triées en fonction d'une certaine valeur.
julia> using TOML
julia> TOML.print(Dict(
"abc" => 1,
"ab" => 2,
"abcd" => 3,
); sorted=true, by=length)
ab = 2
abc = 1
abcd = 3Pour les structures personnalisées, passez une fonction qui convertit la structure en un type pris en charge.
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})Analyse la chaîne ou le flux x, et retourne la table résultante (dictionnaire). Lève une ParserError en cas d'échec.
Voir aussi TOML.tryparse.
TOML.parsefile — Functionparsefile(f::AbstractString)
parsefile(p::Parser, f::AbstractString)Analyse le fichier f et retourne la table résultante (dictionnaire). Lève une ParserError en cas d'échec.
Voir aussi TOML.tryparsefile.
TOML.tryparse — Functiontryparse(x::Union{AbstractString, IO})
tryparse(p::Parser, x::Union{AbstractString, IO})Analyse la chaîne ou le flux x, et retourne la table résultante (dictionnaire). Retourne une ParserError en cas d'échec.
Voir aussi TOML.parse.
TOML.tryparsefile — Functiontryparsefile(f::AbstractString)
tryparsefile(p::Parser, f::AbstractString)Analyse le fichier f et retourne la table résultante (dictionnaire). Retourne une ParserError en cas d'échec.
Voir aussi TOML.parsefile.
TOML.print — Functionprint([to_toml::Function], io::IO [=stdout], data::AbstractDict; sorted=false, by=identity, inline_tables::IdSet{<:AbstractDict})Écrivez data en syntaxe TOML dans le flux io. Si l'argument clé sorted est défini sur true, triez les tables selon la fonction donnée par l'argument clé by. Si l'argument clé inline_tables est donné, il doit s'agir d'un ensemble de tables qui doivent être imprimées "inline".
Les types de données suivants sont pris en charge : AbstractDict, AbstractVector, AbstractString, Integer, AbstractFloat, Bool, Dates.DateTime, Dates.Time, Dates.Date. Notez que les entiers et les flottants doivent être convertibles en Float64 et Int64 respectivement. Pour d'autres types de données, passez la fonction to_toml qui prend les types de données et renvoie une valeur d'un type pris en charge.
TOML.Parser — TypeParser()Constructeur pour un Parser TOML. Notez que dans la plupart des cas, il n'est pas nécessaire de créer explicitement un Parser, mais on utilise plutôt directement TOML.parsefile ou TOML.parse. L'utilisation d'un parser explicite réutilisera cependant certaines structures de données internes, ce qui peut être bénéfique pour les performances si un plus grand nombre de petits fichiers sont analysés.
TOML.ParserError — TypeParserErrorType qui est retourné par tryparse et tryparsefile lorsque l'analyse échoue. Il contient (entre autres) les champs suivants :
pos, la position dans la chaîne lorsque l'erreur s'est produitetable, le résultat qui a jusqu'à présent été analysé avec succèstype, un type d'erreur, différent pour différents types d'erreurs