طريقة الاستخدام
- الصق YAML في نص YAML.
- اقرأ الصلاحية. إذا ذكرت سطراً وعموداً، فأصلح YAML في ذلك الموضع.
- إذا احتوى YAML على عدة وثائق، فإن نص JSON مصفوفة واحدة فيها عنصر لكل وثيقة.
- انسخ نص JSON، أو نزّله بصيغة data.json.
كيف يُقرأ YAML
YAML 1.2 معرّف بمواصفته، وهي تحدد كيف تُقرأ المسافات البادئة والأسماء والقوائم والنصوص المقتبسة والكتل. تقرأ هذه الأداة النص بمكتبة yaml، وهي تتبع تلك المواصفة، ثم تكتب النتيجة بصيغة JSON.
- تصبح الخريطة كائن JSON بأسمائه بالترتيب الذي كُتب به، ويصبح التسلسل مصفوفة. الكلمات true وfalse وnull تصبح قيماً منطقية وnull، أما النص المقتبس فيبقى نصاً.
- يحتفظ العدد الصحيح بكل أرقامه. والاسم المكرر في الخريطة نفسها خطأ، لأن JSON كان سيحتفظ بقيمة واحدة منه فقط.
- قيمة مثل .inf أو .nan لا شكل لها في JSON، فتُرفض بدلاً من أن تُكتب null أو رقماً مغيّراً.
وثائق متعددة والأسماء المستعارة
قد يحتوي ملف YAML على عدة وثائق، تبدأ كل واحدة منها بسطر ---. تقرأ الأداة كلها: الوثيقة الواحدة تعطي قيمة JSON واحدة، والوثائق المتعددة تعطي مصفوفة JSON فيها عنصر لكل وثيقة بالترتيب الذي وردت به. والاسم المستعار (*name) يُستبدل بالقيمة التي يشير إليها. أما الملف الذي يكرر الاسم المستعار إلى حد يضخم الناتج فيُرفض.
مثال محلول: ملف فيه وثيقتان
المثال 2.7 من مواصفة YAML 1.2، Two Documents in a Stream، فيه قائمة بلاعبي الضربات القوية، ثم سطر ---، ثم قائمة بالفرق. بعد التحويل تصبح النتيجة مصفوفة JSON من مصفوفتين، واحدة لكل وثيقة.
المصفوفة الأولى تضم اللاعبين الثلاثة، والثانية تضم الفريقين، بالترتيب الذي كُتبا به.
| الوثيقة | عنصر JSON |
|---|---|
| 1 | ["Mark McGwire", "Sammy Sosa", "Ken Griffey"] |
| 2 | ["Chicago Cubs", "St Louis Cardinals"] |
الأسئلة الشائعة
لماذا يُعرض الخطأ سطراً وعموداً؟
الموضع هو المكان الذي لاحظ فيه المحلل المشكلة، ويُعدّ الترقيم من 1. وقد يقع الخطأ الفعلي أبكر قليلاً، مثلاً مسافة بادئة خاطئة في السطر الذي قبل السطر المذكور.
ماذا تعني ملاحظة الوثائق المتعددة؟
كل سطر يبدأ بـ --- يبدأ وثيقة جديدة، فيصبح JSON مصفوفة فيها عنصر لكل وثيقة بالترتيب. وإذا كنت تقصد وثيقة واحدة، فاحذف سطر --- الزائد.
لماذا يعطي .inf أو .nan خطأ؟
لا يعرف JSON اللانهاية ولا القيمة غير الرقمية، فلا يمكن كتابة هذه القيمة دون تغييرها. استبدلها برقم أو بنص، ثم حوّل YAML مرة أخرى.
هل تتغير الأرقام في التحويل؟
تحتفظ الأعداد الصحيحة بكل أرقامها، فيُكتب 12345678901234567890 كما هو تماماً. أما العدد العشري فيُكتب بأقرب رقم في JavaScript، فيصبح 1.50 هو 1.5 بالقيمة نفسها.
هل يحتفظ JSON بترتيب الأسماء؟
نعم. تظهر الأسماء بترتيب كتابتها في YAML. أما كائن JavaScript فيضع اسماً مثل 2024 في المقدمة، وهذا المحوّل لا يفعل ذلك.
هل يُرفع YAML الخاص بي إلى أي مكان؟
لا. يعمل التحويل في متصفحك، ولا يُرسل ما تلصقه إلى خادمنا.
المصادر
- YAML 1.2.2 (باللغة الإنجليزية): YAML Ain't Markup Language
- RFC 8259 (باللغة الإنجليزية): The JavaScript Object Notation (JSON) Data Interchange Format
- yaml (باللغة الإنجليزية): the JavaScript YAML library used by this tool
آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.