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.tryparseTOML.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.parseFunction
parse(x::Union{AbstractString, IO})
parse(p::Parser, x::Union{AbstractString, IO})

文字列またはストリーム x を解析し、結果のテーブル(辞書)を返します。失敗した場合は ParserError をスローします。

また、TOML.tryparse も参照してください。

source
TOML.parsefileFunction
parsefile(f::AbstractString)
parsefile(p::Parser, f::AbstractString)

ファイル f を解析し、結果のテーブル(辞書)を返します。失敗した場合は ParserError をスローします。

また、TOML.tryparsefile も参照してください。

source
TOML.tryparseFunction
tryparse(x::Union{AbstractString, IO})
tryparse(p::Parser, x::Union{AbstractString, IO})

文字列またはストリーム x を解析し、結果のテーブル(辞書)を返します。失敗した場合は ParserError を返します。

関連情報として TOML.parse も参照してください。

source
TOML.tryparsefileFunction
tryparsefile(f::AbstractString)
tryparsefile(p::Parser, f::AbstractString)

ファイル f を解析し、結果のテーブル(辞書)を返します。失敗した場合は ParserError を返します。

また、TOML.parsefile も参照してください。

source
TOML.printFunction
print([to_toml::Function], io::IO [=stdout], data::AbstractDict; sorted=false, by=identity, inline_tables::IdSet{<:AbstractDict})

dataをストリームioにTOML構文として書き込みます。キーワード引数sortedtrueに設定されている場合、キーワード引数byで指定された関数に従ってテーブルをソートします。キーワード引数inline_tablesが指定されている場合、それは「インライン」で印刷されるべきテーブルのセットである必要があります。

サポートされているデータ型は次のとおりです:AbstractDictAbstractVectorAbstractStringIntegerAbstractFloatBoolDates.DateTimeDates.TimeDates.Date。整数と浮動小数点数はそれぞれFloat64Int64に変換可能である必要があります。他のデータ型については、データ型を受け取り、サポートされている型の値を返すto_toml関数を渡してください。

source
TOML.ParserType
Parser()

TOML Parser のコンストラクタです。ほとんどの場合、Parser を明示的に作成する必要はなく、代わりに直接 TOML.parsefile または TOML.parse を使用します。ただし、明示的なパーサーを使用すると、内部データ構造の一部を再利用するため、大量の小さなファイルを解析する場合にパフォーマンスが向上する可能性があります。

source
TOML.ParserErrorType
ParserError

tryparse および tryparsefile で解析に失敗したときに返される型です。以下のフィールドを含みます(他にもあります):

  • pos、エラーが発生したときの文字列内の位置
  • table、これまでに正常に解析された結果
  • type、エラーの種類、異なるエラータイプごとに異なります
source