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
16
Exporting 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 = 3
Fü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
— TypeParserError
Der 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