TOML
Анализ данных TOML
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
Экспорт данных в файл TOML
Функция 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"]
Справка
#
TOML.parse
— Function
parse(x::Union{AbstractString, IO})
parse(p::Parser, x::Union{AbstractString, IO})
Анализирует строку или поток x
и возвращает результирующую таблицу (словарь). При сбое выводит ошибку ParserError
.
См. также описание TOML.tryparse
.
#
TOML.parsefile
— Function
parsefile(f::AbstractString)
parsefile(p::Parser, f::AbstractString)
Анализирует файл f
и возвращает результирующую таблицу (словарь). При сбое выводит ошибку ParserError
.
См. также описание TOML.tryparsefile
.
#
TOML.tryparse
— Function
tryparse(x::Union{AbstractString, IO})
tryparse(p::Parser, x::Union{AbstractString, IO})
Анализирует строку или поток x
и возвращает результирующую таблицу (словарь). При сбое выводит ошибку ParserError
.
См. также описание TOML.parse
.
#
TOML.tryparsefile
— Function
tryparsefile(f::AbstractString)
tryparsefile(p::Parser, f::AbstractString)
Анализирует файл f
и возвращает результирующую таблицу (словарь). При сбое выводит ошибку ParserError
.
См. также описание TOML.parsefile
.
#
TOML.print
— Function
print([to_toml::Function], io::IO [=stdout], data::AbstractDict; sorted=false, by=identity)
Записывает данные (data
) в виде синтаксиса TOML в поток ввода-вывода (io
). Если именованный аргумент sorted
имеет значение true
, сортирует таблицы в соответствии с функцией, заданной именованным аргументом by
.
Поддерживаются следующие типы данных: AbstractDict
, AbstractVector
, AbstractString
, Integer
, AbstractFloat
, Bool
, Dates.DateTime
, Dates.Time
, Dates.Date
. Обратите внимание, что целые числа и числа с плавающей запятой должны поддерживать преобразование в Float64
и Int64
, соответственно. Для других типов данных передайте функцию to_toml
, которая принимает типы данных и возвращает значение поддерживаемого типа.
#
TOML.Parser
— Type
Parser()
Конструктор для анализатора (Parser
) TOML. Обратите внимание, что в большинстве случаев не требуется создавать Parser
явным образом. Вместо него следует напрямую использовать функцию TOML.parsefile
или TOML.parse
. Однако при использовании явного анализатора некоторые внутренние структуры данных будут применяться повторно, что может положительно сказаться на производительности при анализе большого количества небольших файлов.
#
TOML.ParserError
— Type
ParserError
Тип, возвращаемый из функций tryparse
и tryparsefile
при анализе файлов. Он содержит (помимо прочего) следующие поля:
-
pos
— позиция в строке, когда произошла ошибка -
table
— результат, который на данный момент был успешно проанализирован -
type
— тип ошибки, разный для различных типов ошибок