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.tryparseTOML.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.parseFunction
parse(x::Union{AbstractString, IO})
parse(p::Parser, x::Union{AbstractString, IO})

문자열 또는 스트림 x를 파싱하고 결과 테이블(사전)을 반환합니다. 실패 시 ParserError를 발생시킵니다.

또한 TOML.tryparse를 참조하세요.

source
TOML.parsefileFunction
parsefile(f::AbstractString)
parsefile(p::Parser, f::AbstractString)

파일 f를 파싱하고 결과 테이블(사전)을 반환합니다. 실패 시 ParserError를 발생시킵니다.

또한 TOML.tryparsefile를 참조하세요.

source
TOML.tryparseFunction
tryparse(x::Union{AbstractString, IO})
tryparse(p::Parser, x::Union{AbstractString, IO})

문자열 또는 스트림 x를 파싱하고 결과 테이블(사전)을 반환합니다. 실패할 경우 ParserError를 반환합니다.

또한 TOML.parse를 참조하십시오.

source
TOML.tryparsefileFunction
tryparsefile(f::AbstractString)
tryparsefile(p::Parser, f::AbstractString)

파일 f를 파싱하고 결과 테이블(사전)을 반환합니다. 실패 시 ParserError를 반환합니다.

또한 TOML.parsefile를 참조하세요.

source
TOML.printFunction
print([to_toml::Function], io::IO [=stdout], data::AbstractDict; sorted=false, by=identity, inline_tables::IdSet{<:AbstractDict})

data를 스트림 io에 TOML 구문으로 작성합니다. 키워드 인수 sortedtrue로 설정되면, 키워드 인수 by에 의해 주어진 함수에 따라 테이블을 정렬합니다. 키워드 인수 inline_tables가 주어지면, "inline"으로 출력해야 하는 테이블의 집합이어야 합니다.

다음 데이터 유형이 지원됩니다: AbstractDict, AbstractVector, AbstractString, Integer, AbstractFloat, Bool, Dates.DateTime, Dates.Time, Dates.Date. 정수와 부동 소수점 수는 각각 Float64Int64로 변환 가능해야 합니다. 다른 데이터 유형의 경우, 데이터 유형을 받아 지원되는 유형의 값을 반환하는 to_toml 함수를 전달하십시오.

source
TOML.ParserType
Parser()

TOML Parser의 생성자입니다. 대부분의 경우 Parser를 명시적으로 생성할 필요는 없으며, 대신 TOML.parsefile 또는 TOML.parse를 직접 사용하면 됩니다. 그러나 명시적인 파서를 사용하면 내부 데이터 구조를 재사용하게 되어, 많은 수의 작은 파일을 파싱할 때 성능에 유리할 수 있습니다.

source
TOML.ParserErrorType
ParserError

tryparsetryparsefile에서 구문 분석이 실패할 때 반환되는 유형입니다. 다음과 같은 필드를 포함합니다(기타 포함):

  • pos, 오류가 발생한 문자열 내 위치
  • table, 지금까지 성공적으로 구문 분석된 결과
  • type, 서로 다른 유형의 오류에 대해 다른 오류 유형
source