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.parseFunction
parse(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.

source
TOML.parsefileFunction
parsefile(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.

source
TOML.tryparseFunction
tryparse(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.

source
TOML.tryparsefileFunction
tryparsefile(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.

source
TOML.printFunction
print([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.

source
TOML.ParserType
Parser()

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.

source
TOML.ParserErrorType
ParserError

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 ist
  • table, das Ergebnis, das bisher erfolgreich geparst wurde
  • type, ein Fehlertyp, der für verschiedene Arten von Fehlern unterschiedlich ist
source