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
16Exporting 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، نوع الخطأ، مختلف لأنواع مختلفة من الأخطاء