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
16
Exporting 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
, тип ошибки, различный для разных типов ошибок