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
16Exporting 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.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 作为 TOML 语法写入流 io。如果关键字参数 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 — Type解析错误从 tryparse 和 tryparsefile 返回的类型,当解析失败时。它包含(除了其他字段)以下字段:
pos,错误发生时字符串中的位置table,到目前为止成功解析的结果type,错误类型,对于不同类型的错误不同