TOML
TOML.jlは、TOML v1.0ファイルを解析および書き込むためのJulia標準ライブラリです。
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…
ファイルを解析するには、TOML.parsefile
を使用します。ファイルに構文エラーがある場合、例外がスローされます:
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
^
[...]
他のバージョンのパース関数(TOML.tryparse
と TOML.tryparsefile
)は、パーサーエラーで例外をスローする代わりに、情報を含む TOML.ParserError
を返します:
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
TOML.print
関数は、データを 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]
キーは、いくつかの値に従ってソートできます。
julia> using TOML
julia> TOML.print(Dict(
"abc" => 1,
"ab" => 2,
"abcd" => 3,
); sorted=true, by=length)
ab = 2
abc = 1
abcd = 3
カスタム構造体の場合、構造体をサポートされている型に変換する関数を渡します。
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})
文字列またはストリーム x
を解析し、結果のテーブル(辞書)を返します。失敗した場合は ParserError
をスローします。
また、TOML.tryparse
も参照してください。
TOML.parsefile
— Functionparsefile(f::AbstractString)
parsefile(p::Parser, f::AbstractString)
ファイル f
を解析し、結果のテーブル(辞書)を返します。失敗した場合は ParserError
をスローします。
また、TOML.tryparsefile
も参照してください。
TOML.tryparse
— Functiontryparse(x::Union{AbstractString, IO})
tryparse(p::Parser, x::Union{AbstractString, IO})
文字列またはストリーム x
を解析し、結果のテーブル(辞書)を返します。失敗した場合は ParserError
を返します。
関連情報として TOML.parse
も参照してください。
TOML.tryparsefile
— Functiontryparsefile(f::AbstractString)
tryparsefile(p::Parser, f::AbstractString)
ファイル f
を解析し、結果のテーブル(辞書)を返します。失敗した場合は ParserError
を返します。
また、TOML.parsefile
も参照してください。
TOML.print
— Functionprint([to_toml::Function], io::IO [=stdout], data::AbstractDict; sorted=false, by=identity, inline_tables::IdSet{<:AbstractDict})
data
をストリームio
にTOML構文として書き込みます。キーワード引数sorted
がtrue
に設定されている場合、キーワード引数by
で指定された関数に従ってテーブルをソートします。キーワード引数inline_tables
が指定されている場合、それは「インライン」で印刷されるべきテーブルのセットである必要があります。
サポートされているデータ型は次のとおりです:AbstractDict
、AbstractVector
、AbstractString
、Integer
、AbstractFloat
、Bool
、Dates.DateTime
、Dates.Time
、Dates.Date
。整数と浮動小数点数はそれぞれFloat64
とInt64
に変換可能である必要があります。他のデータ型については、データ型を受け取り、サポートされている型の値を返すto_toml
関数を渡してください。
TOML.Parser
— TypeParser()
TOML Parser
のコンストラクタです。ほとんどの場合、Parser
を明示的に作成する必要はなく、代わりに直接 TOML.parsefile
または TOML.parse
を使用します。ただし、明示的なパーサーを使用すると、内部データ構造の一部を再利用するため、大量の小さなファイルを解析する場合にパフォーマンスが向上する可能性があります。
TOML.ParserError
— TypeParserError
tryparse
および tryparsefile
で解析に失敗したときに返される型です。以下のフィールドを含みます(他にもあります):
pos
、エラーが発生したときの文字列内の位置table
、これまでに正常に解析された結果type
、エラーの種類、異なるエラータイプごとに異なります