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, 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 — Type
Parser()
Конструктор для анализатора (Parser) TOML. Обратите внимание, что в большинстве случаев не требуется создавать Parser явным образом. Вместо этого следует напрямую использовать функцию TOML.parsefile или TOML.parse. Однако при использовании явного анализатора некоторые внутренние структуры данных будут применяться повторно, что может положительно сказаться на производительности при анализе большого количества небольших файлов.
#
TOML.ParserError — Type
ParserError
Тип, возвращаемый из функций tryparse и tryparsefile при сбое анализа. Он содержит (помимо прочего) следующие поля:
-
pos— позиция в строке, когда произошла ошибка -
table— результат, который на данный момент был успешно проанализирован -
type— тип ошибки, разный для различных типов ошибок