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.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 بصيغة TOML إلى التدفق io. إذا تم تعيين الوسيطة الرئيسية sorted إلى true، قم بترتيب الجداول وفقًا للدالة المحددة بواسطة الوسيطة الرئيسية by. إذا تم إعطاء الوسيطة الرئيسية inline_tables، يجب أن تكون مجموعة من الجداول التي يجب طباعتها "داخل السطر".

تدعم أنواع البيانات التالية: AbstractDict، AbstractVector، AbstractString، Integer، AbstractFloat، Bool، Dates.DateTime، Dates.Time، Dates.Date. لاحظ أن الأعداد الصحيحة والأعداد العشرية تحتاج إلى أن تكون قابلة للتحويل إلى Float64 و Int64 على التوالي. بالنسبة لأنواع البيانات الأخرى، مرر الدالة to_toml التي تأخذ أنواع البيانات وتعيد قيمة من نوع مدعوم.

source
TOML.ParserType
Parser()

باني لـ Parser الخاص بـ TOML. لاحظ أنه في معظم الحالات لا تحتاج إلى إنشاء Parser بشكل صريح ولكن بدلاً من ذلك تستخدم مباشرة TOML.parsefile أو TOML.parse. ومع ذلك، فإن استخدام محلل صريح سيعيد استخدام بعض الهياكل البيانية الداخلية، مما يمكن أن يكون مفيدًا للأداء إذا تم تحليل عدد أكبر من الملفات الصغيرة.

source
TOML.ParserErrorType
ParserError

النوع الذي يتم إرجاعه من tryparse و tryparsefile عندما يفشل التحليل. يحتوي على (من بين أمور أخرى) الحقول التالية:

  • pos، الموضع في السلسلة عندما حدث الخطأ
  • table، النتيجة التي تم تحليلها بنجاح حتى الآن
  • type، نوع الخطأ، مختلف لأنواع مختلفة من الأخطاء
source