TOML
TOML.jl — это стандартная библиотека Julia для разбора и записи TOML v1.0 файлов.
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
The TOML.print function is used to print (or serialize) data into TOML format.
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 в синтаксисе 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 — TypeParserErrorТип, который возвращается из tryparse и tryparsefile при неудаче парсинга. Он содержит (среди прочего) следующие поля:
pos, позиция в строке, когда произошла ошибкаtable, результат, который до сих пор был успешно разобранtype, тип ошибки, различный для разных типов ошибок