TOML
TOML.jl هو مكتبة قياسية في جوليا لتحليل وكتابة TOML v1.0 الملفات.
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
بصيغة 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
— TypeParser()
باني لـ Parser
الخاص بـ TOML. لاحظ أنه في معظم الحالات لا تحتاج إلى إنشاء Parser
بشكل صريح ولكن بدلاً من ذلك تستخدم مباشرة TOML.parsefile
أو TOML.parse
. ومع ذلك، فإن استخدام محلل صريح سيعيد استخدام بعض الهياكل البيانية الداخلية، مما يمكن أن يكون مفيدًا للأداء إذا تم تحليل عدد أكبر من الملفات الصغيرة.
TOML.ParserError
— TypeParserError
النوع الذي يتم إرجاعه من tryparse
و tryparsefile
عندما يفشل التحليل. يحتوي على (من بين أمور أخرى) الحقول التالية:
pos
، الموضع في السلسلة عندما حدث الخطأtable
، النتيجة التي تم تحليلها بنجاح حتى الآنtype
، نوع الخطأ، مختلف لأنواع مختلفة من الأخطاء