TOML
TOML.jl ist eine Julia-Standardbibliothek zum Parsen und Schreiben von TOML v1.0-Dateien.
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…Um eine Datei zu parsen, verwenden Sie TOML.parsefile. Wenn die Datei einen Syntaxfehler aufweist, wird eine Ausnahme ausgelöst:
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
^
[...]Es gibt andere Versionen der Parse-Funktionen (TOML.tryparse und TOML.tryparsefile), die anstelle von Ausnahmen bei Parserfehlern ein TOML.ParserError mit Informationen zurückgeben:
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
Die TOML.print-Funktion wird verwendet, um Daten im TOML-Format auszugeben (oder zu serialisieren).
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]Schlüssel können nach einem bestimmten Wert sortiert werden.
julia> using TOML
julia> TOML.print(Dict(
"abc" => 1,
"ab" => 2,
"abcd" => 3,
); sorted=true, by=length)
ab = 2
abc = 1
abcd = 3Für benutzerdefinierte Strukturen übergeben Sie eine Funktion, die die Struktur in einen unterstützten Typ konvertiert.
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})Analysiere den String oder Stream x und gib die resultierende Tabelle (Wörterbuch) zurück. Wirf einen ParserError im Falle eines Fehlers.
Siehe auch TOML.tryparse.
TOML.parsefile — Functionparsefile(f::AbstractString)
parsefile(p::Parser, f::AbstractString)Analysiere die Datei f und gib die resultierende Tabelle (Wörterbuch) zurück. Wirf einen ParserError im Falle eines Fehlers.
Siehe auch TOML.tryparsefile.
TOML.tryparse — Functiontryparse(x::Union{AbstractString, IO})
tryparse(p::Parser, x::Union{AbstractString, IO})Analysiere den String oder Stream x und gib die resultierende Tabelle (Wörterbuch) zurück. Gib einen ParserError im Falle eines Fehlers zurück.
Siehe auch TOML.parse.
TOML.tryparsefile — Functiontryparsefile(f::AbstractString)
tryparsefile(p::Parser, f::AbstractString)Analysiere die Datei f und gib die resultierende Tabelle (Wörterbuch) zurück. Gib einen ParserError im Falle eines Fehlers zurück.
Siehe auch TOML.parsefile.
TOML.print — Functionprint([to_toml::Function], io::IO [=stdout], data::AbstractDict; sorted=false, by=identity, inline_tables::IdSet{<:AbstractDict})Schreiben Sie data im TOML-Syntax in den Stream io. Wenn das Schlüsselwort-Argument sorted auf true gesetzt ist, sortieren Sie Tabellen gemäß der Funktion, die durch das Schlüsselwort-Argument by angegeben ist. Wenn das Schlüsselwort-Argument inline_tables angegeben ist, sollte es eine Menge von Tabellen sein, die "inline" gedruckt werden sollen.
Die folgenden Datentypen werden unterstützt: AbstractDict, AbstractVector, AbstractString, Integer, AbstractFloat, Bool, Dates.DateTime, Dates.Time, Dates.Date. Beachten Sie, dass die Ganzzahlen und Fließkommazahlen in Float64 und Int64 konvertierbar sein müssen. Für andere Datentypen übergeben Sie die Funktion to_toml, die die Datentypen annimmt und einen Wert eines unterstützten Typs zurückgibt.
TOML.Parser — TypeParser()Konstruktor für einen TOML Parser. Beachten Sie, dass man in den meisten Fällen keinen Parser explizit erstellen muss, sondern stattdessen direkt TOML.parsefile oder TOML.parse verwendet. Die Verwendung eines expliziten Parsers wird jedoch einige interne Datenstrukturen wiederverwenden, was für die Leistung vorteilhaft sein kann, wenn eine größere Anzahl kleiner Dateien geparst wird.
TOML.ParserError — TypeParserErrorDer Typ, der von tryparse und tryparsefile zurückgegeben wird, wenn das Parsen fehlschlägt. Er enthält (unter anderem) die folgenden Felder:
pos, die Position im String, an der der Fehler aufgetreten isttable, das Ergebnis, das bisher erfolgreich geparst wurdetype, ein Fehlertyp, der für verschiedene Arten von Fehlern unterschiedlich ist