العربية

أدوات المطور · محولات بناء الجملة

سبب وجود TOML: أهداف التصميم وراء Cargo.toml وpyproject.toml

· خلفية

toml تنسيقات البيانات سير عمل المطور

جدول TOML يحتوي على قيم مكتوبة تم تعيينها إلى كائن عادي بينما تبقى التعليقات في الخلف
الرسم التوضيحي المتجه الأصلي ToolAcre

تم إنشاء TOML في 2013 كرد فعل على تقشف JSON وغموض YAML. يشرح هذا المنشور أهداف التصميم المعلنة، والاختيارات التي قاموا بإنتاجها، وسبب توحيد Rust وPython عليها لتكوين المشروع.

ثلاثة تنسيقات تكوين في مستودع واحد — JSON للمحرر، YAML لـ CI، TOML للإنشاء، والسؤال عن سبب وجود التنسيق الثالث

يمكن للمستودع استخدام JSON، YAML و TOML لأسطح التكوين المختلفة. لا يمكن لـ ToolAcre أن يفسر اختيار كل مشروع، ولكن التحويل يجعل الاختلافات الهيكلية ملموسة: TOML يبدأ كجدول جذر، ويستخدم الرؤوس والمسارات المنقطة للتداخل، ويحمل قيمًا زمنية غير متوفرة في JSON.

قم بتحميل المثال بدلاً من الجدال من المظهر. تصبح الجداول المتداخلة كائنات، والجداول ذات الأقواس المزدوجة تصبح صفائف، وتختفي التعليقات عندما تدخل القيم JSON. تعتبر هذه الحدود المرصودة أكثر قابلية للتنفيذ من الادعاء العام بأن بناء جملة واحد أفضل بطبيعته.

أهداف التصميم - دلالات بسيطة وواضحة وسهلة القراءة وتنسيق يتم تعيينه بشكل لا لبس فيه إلى جدول التجزئة

يكشف المحلل اللغوي الذي تم شحنه عن دلالات واضحة للجدول: الرؤوس هي مسارات، والتخصيصات تنتمي إلى الجدول النشط، وقد حددت الرموز العددية أنواعًا TOML. لا تتم كتابة السلاسل النصية لمجرد أن محتوياتها تبدو مثل التواريخ؛ ينتج عن بناء الجملة الزمني الفعلي كائنات تاريخ يتم تطبيعها ToolAcre عمدًا.

لا يذكر المستودع مصدر منشئي التنسيق أو التواريخ أو الفلسفة المعلنة، لذلك تتجنب هذه المقالة تقديم التاريخ المتذكر كحقيقة. يقوم بالإبلاغ عن السلوك الذي تم اختباره في smol-toml وطبقة التسوية الخاصة بالمحول.

خصائص التصميم التي يمكن ملاحظتها في المحلل اللغوي الذي تم شحنه، دون مطالبات الأصل غير المصدر

TOML لا يحتوي على قيمة فارغة، ولا يمكن أن يكون جذر المستند الخاص به عبارة عن مصفوفة أو عددية. ولا يوفر نقاط ارتساء أو أسماء مستعارة بنمط YAML في هذا التعيين. التعليقات موجودة في TOML المؤلف ولكن لا يتم الاحتفاظ بها بواسطة محلل القيمة وبالتالي لا يمكن أن تنجو من التحويل من خلال JSON أو YAML.

تتبع القيم المجردة غير المقتبسة قواعد TOML بدلاً من تحديد مخطط YAML. يقبل المحلل اللغوي القيمة المكتوبة أو يبلغ عن TOML غير صالح مع معلومات الموضع. ToolAcre لا يضيف وضع سلسلة ضمني للواجبات المشوهة.

ما يستثنيه نموذج القيمة المدعوم أو يعالجه بشكل مختلف

يشتمل النموذج على سلاسل، وأعداد صحيحة موقعة، وعائمات، وقيم منطقية، وأربعة أنواع زمنية، ومصفوفات، وجداول. صفائف الجداول تعبر عن سجلات الكائنات المتكررة. الأعداد الصحيحة الكبيرة الموقعة التي تتجاوز 2^53 تصبح سلاسل عشرية عند التحويل، لذلك لا يقوم JavaScript بتقريبها بصمت.

تصبح القيم الزمنية هي النص الموجه نحو المصدر لوقت وتاريخ الإزاحة أو التاريخ والوقت المحلي أو التاريخ المحلي أو التوقيت المحلي. يحافظ التحذير على النوع في النثر، ولكن JSON يتلقى سلسلة فقط. لذلك فإن التحويل مرة أخرى يقتبسه ويفقد النوع TOML الأصلي.

التبني — البضائع من الأيام الأولى لرست، PEP 518 اختيار pyproject.toml، والمواصفات 1.0.0 في 2021

يُعد اعتماد Cargo وpyproject مطالبات تاريخية ومطالبات للنظام البيئي تتطلب مصادر غير موجودة في مستودع المحول. لقد تم حذفهم عمدا هنا. لا يعد المسار أو اسم الملف دليلاً على التسلسل الزمني أو إصدار المواصفات أو قرار المعايير.

السؤال التشغيلي هو ما إذا كانت الأداة المستهدفة تقرأ TOML وما هي الجداول التي تتوقعها. تحقق من الوثائق الحالية لهذه الأداة. يعرف محولو بناء الجملة تعيينات بناء الجملة والقيمة، وليس عقود تكوين مدير الحزم.

تم حذف تاريخ اعتماد النظام البيئي بدون مصادر المستودع

قد يكون من الصعب فحص التداخل العميق لأن سياق الجدول يستمر عبر الأسطر، بينما تقوم المصفوفات الكبيرة من الجداول بنشر قائمة منطقية واحدة عبر الرؤوس المتكررة. JSON يجعل التسلسل الهرمي الكامل واضحًا ولكنه يضيف الأقواس وعلامات الاقتباس. لا يزيل أي من التمثيلين التعقيد من التكوين الأساسي.

يتداخل المحلل اللغوي عند 100 وطول المصدر عند مليوني حرف. هذه هي حدود الرفض، وليست بيانات حول حجم التكوين المثالي أو حدود TOML العالمية.

ما لا يغطيه هذا — TOML اختيار المحلل اللغوي في كل لغة، وطبيعة القراءة فقط لبعض تطبيقات المكتبة القياسية

يعد اختيار المحلل اللغوي في كل لغة خارج النطاق، كما هو الحال مع إمكانيات الكتابة في المكتبة القياسية. ToolAcre يستخدم smol-toml ديناميكيًا ويغلف أخطائه. يمكن لتطبيق آخر تنسيق المخرجات الصالحة بشكل مختلف أو الكشف عن API آخر أثناء تمثيل نفس البيانات.

استخدم تركيبات الأدوات المشتركة للقيم الزمنية والأعداد الصحيحة الكبيرة والمصفوفات والمفاتيح المنقطة عندما تكون قابلية التشغيل البيني مهمة. الملف الذي تم قبوله هنا لا يتم قبوله تلقائيًا بواسطة كل مستهلك TOML.

الخلاصة: TOML لديه رأي حول كونه تنسيق تكوين - وكيف تتيح لك لوحة محولات Syntax رؤية أي ملف JSON أو YAML بهذا الشكل

TOML يتم تحديد رأيه بطرق يمكن ملاحظتها: جذر الجدول، والقيم المكتوبة الصريحة، والأنواع المؤقتة الأصلية ولا تحتوي على قيمة خالية. يكشف التحويل عن تلك الاختيارات وأوجه عدم توافقها مع الأهداف ذات الشكل JSON دون الحاجة إلى أسطورة الأصل.

استخدم اللوحة لفحص الشجرة وتحديد التحذيرات. ثم ارجع إلى مخطط الوجهة وقم بتأليف تخطيط الجدول الذي سيحتفظ به البشر. يقدم المحول دليلاً حول القيم، وليس حكمًا على تفضيل التنسيق.

ينطبق نفس النظام عندما يكون TOML عرضًا متوسطًا فقط. احتفظ بالمصدر، وقارن القيم المقيسة، ولاحظ كل تحويل مؤقت أو عدد صحيح واسع قبل الحكم على سهولة القراءة. لا يزال بإمكان تخطيط الجدول المضغوط إخفاء نوع تم تغييره، في حين أن مجموعة الجداول المطولة يمكن أن تكون دقيقة من الناحية اللغوية. يجب أن يتبع اختيار التنسيق عقد التكوين وسير عمل الصيانة، وليس الدقة المرئية لعينة واحدة تم إنشاؤها.