TOML

TOML.jl, bir Julia standart kütüphanesidir ve TOML v1.0 dosyalarını ayrıştırmak ve yazmak için kullanılır.

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…

Bir dosyayı ayrıştırmak için TOML.parsefile kullanın. Dosyada bir sözdizimi hatası varsa, bir istisna fırlatılır:

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
                 ^
[...]

Diğer parse fonksiyonlarının (TOML.tryparse ve TOML.tryparsefile) versiyonları, parser hatası durumunda istisna fırlatmak yerine TOML.ParserError ile bilgi döndürmektedir:

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 fonksiyonu verileri TOML formatında yazdırmak (veya serileştirmek) için kullanılır.

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]

Anahtarlar, bazı değerlere göre sıralanabilir.

julia> using TOML

julia> TOML.print(Dict(
       "abc"  => 1,
       "ab"   => 2,
       "abcd" => 3,
       ); sorted=true, by=length)
ab = 2
abc = 1
abcd = 3

Özel yapılar için, yapıyı desteklenen bir türe dönüştüren bir fonksiyon geçirin.

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})

Dizeyi x dize veya akışını ayrıştırın ve sonuçta oluşan tabloyu (sözlük) döndürün. Başarısızlık durumunda bir ParserError fırlatın.

Ayrıca bkz. TOML.tryparse.

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

Dosya f'yi ayrıştır ve sonuçta oluşan tabloyu (sözlük) döndür. Başarısızlık durumunda bir ParserError fırlat.

Ayrıca bkz. TOML.tryparsefile.

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

Dizeyi veya akışı x ayrıştırın ve sonuçta oluşan tabloyu (sözlük) döndürün. Başarısızlık durumunda bir ParserError döndürün.

Ayrıca bkz. TOML.parse.

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

Dosya f'yi ayrıştır ve sonuçta oluşan tabloyu (sözlük) döndür. Başarısızlık durumunda bir ParserError döndür.

Ayrıca bkz. TOML.parsefile.

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

data'yı io akışına TOML sözdizimi olarak yazın. Eğer sorted anahtar argümanı true olarak ayarlandıysa, tablolar by anahtar argümanı ile verilen fonksiyona göre sıralanmalıdır. Eğer inline_tables anahtar argümanı verilmişse, "inline" olarak yazdırılması gereken tabloların bir kümesi olmalıdır.

Aşağıdaki veri türleri desteklenmektedir: AbstractDict, AbstractVector, AbstractString, Integer, AbstractFloat, Bool, Dates.DateTime, Dates.Time, Dates.Date. Tam sayılar ve ondalık sayılar sırasıyla Float64 ve Int64'e dönüştürülebilir olmalıdır. Diğer veri türleri için, veri türlerini alıp desteklenen bir türde bir değer döndüren to_toml fonksiyonunu geçirin.

source
TOML.ParserType
Parser()

TOML Parser için yapıcı. Çoğu durumda, bir Parser'ı açıkça oluşturmak gerekmez, bunun yerine doğrudan TOML.parsefile veya TOML.parse kullanılır. Ancak, açık bir ayrıştırıcı kullanmak, daha büyük sayıda küçük dosya ayrıştırıldığında performans açısından faydalı olabilecek bazı dahili veri yapılarını yeniden kullanacaktır.

source
TOML.ParserErrorType
ParserError

tryparse ve tryparsefile işleme başarısız olduğunda döndürülen tür. Aşağıdakiler de dahil olmak üzere bazı alanları içerir:

  • pos, hatanın meydana geldiği sıradaki konum
  • table, şu ana kadar başarıyla ayrıştırılan sonuç
  • type, farklı hata türleri için farklı bir hata türü
source