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
16
Exporting 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.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
를 스트림 io
에 TOML 구문으로 작성합니다. 키워드 인수 sorted
가 true
로 설정되면, 키워드 인수 by
에 의해 주어진 함수에 따라 테이블을 정렬합니다. 키워드 인수 inline_tables
가 주어지면, "inline"으로 출력해야 하는 테이블의 집합이어야 합니다.
다음 데이터 유형이 지원됩니다: 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
, 서로 다른 유형의 오류에 대해 다른 오류 유형