منسّق YAML

تعمل في المتصفح التنسيق

حلّل YAML، وأبلغ عن أخطاء الصياغة مع أرقام الأسطر، وأعد إخراج مستند نظيف بالمسافة البادئة التي تختارها — مثالي لملفات Kubernetes وDocker Compose وGitHub Actions وOpenAPI.

الخصوصية: تعمل هذه الأداة بالكامل في متصفحك. لا تغادر بياناتك جهازك أبداً.
جارٍ تحميل الأداة…

ما هو YAML؟

YAML صيغة بيانات مريحة للقراءة تستخدم المسافات البادئة بدلاً من الأقواس، وتشيع في ملفات الإعداد (خطوط CI وKubernetes وOpenAPI). YAML 1.2 مجموعة شاملة لـ JSON: كل مستند JSON هو YAML صالح، لكن YAML يضيف التعليقات والمراسي والأنواع الضمنية، ومن هنا تأتي معظم المفاجآت.

كيفية استخدام منسّق YAML

  1. الصق YAML.
  2. اختر المسافة البادئة ونمط المجموعات وعلامات الاقتباس.
  3. أصلح أي خطأ يُبلَّغ عنه وانسخ المستند النظيف.
يحلّل المنسّق YAML إلى بيانات ثم يطبع هذه البيانات من جديد، فتضيع التعليقات والمراسي وقد تتغيّر طريقة كتابة القيم.
  1. 1نص YAMLمستند واحد أو أكثر تفصل بينها ---
  2. 2التحليلالمخطط الأساسي في YAML 1.2، الوضع الصارميجب ألا تتكرر المفاتيح؛ وتُطبَّق مفاتيح الدمج <<

    فرع: خطأ صياغة أو مفتاح مكرر أو مسافة بادئة خاطئة (مع رقم السطر والعمود)، أو قنبلة أسماء مستعارة: خطأ ولا مخرجاتفشل

  3. 3بيانات عاديةاختياري: ترتيب المفاتيحتختفي التعليقات؛ وتصبح المراسي والأسماء المستعارة ومفاتيح الدمج نسخاً عادية؛ وتُحذف الوسوم الصريحة
  4. 4إعادة الإخراجالمسافة البادئة ونمط المجموعات وعلامات الاقتباس التي اخترتها؛ تحتفظ القيم بنوعها لكن ليس دائماً بطريقة كتابتها1.0 → 1, 0x1F → 31YAML منسّق

بعد ذلك:يُعاد ضمّ المستندات بفواصل ---

يُحذف كذلك الوسم غير المعروف مثل !Ref، وتعرض الأداة تحذيراً بشأنه.

مزايا منسّق YAML

  • تحليل YAML 1.2 والإبلاغ عن أخطاء الصياغة مع رقم السطر والعمود ومقتطف
  • إعادة الإخراج بمسافة بادئة من مسافتين أو 4 مسافات وعلامات اقتباس متسقة
  • النمط الكتلي (block) أو الانسيابي (flow) للمجموعات، وترتيب اختياري للمفاتيح
  • دعم التدفقات متعددة المستندات (---)
  • اكتشاف المفاتيح المكررة وقنابل الأسماء المستعارة (alias bombs)
  • مثالي لملفات Kubernetes وDocker Compose وGitHub Actions وOpenAPI

مثال على منسّق YAML

توحيد المسافة البادئة

الإدخال:

services:
    web:
        image: nginx
        ports: [ "80:80" ]

النتيجة:

services:
  web:
    image: nginx
    ports:
      - 80:80

الأسئلة الشائعة حول منسّق YAML

هل يحتفظ بالتعليقات؟

لا. يُحلَّل المستند ويُعاد إخراجه، ولذلك تُزال التعليقات وتُحلّ المراسي (anchors). استخدمه لتوحيد المسافات البادئة وعلامات الاقتباس لا للملفات الغنية بالتعليقات.

ما الأخطاء التي يُبلَّغ عنها؟

أخطاء الصياغة مع رقم السطر والعمود، والمفاتيح المكررة، والمسافات البادئة الخاطئة، وعلامات الاقتباس غير المغلقة. ويعرض مقتطف الخطأ الأسطر المحيطة.

هل يمكنني تنسيق ملفات متعددة المستندات؟

نعم. تُنسَّق المستندات المفصولة بـ --- كلٌّ على حدة ثم يُعاد ضمّها بفواصل ---.

لماذا تغيّرت قيم "yes"/"no" أو "1.0" لديّ؟

يحلّل المنسّق المستند إلى بيانات ثم يكتبها من جديد وفق المخطط الأساسي (core schema) في YAML 1.2، فتحتفظ القيم بنوعها لكن ليس دائماً بطريقة كتابتها. تُكتب الأرقام بصيغتها البسيطة (1.0 تصبح 1، و0x1F تصبح 31)، وتُقرَّب الأعداد الصحيحة الأكبر من 2^53 − 1 فتتغيّر قيمتها، وتُحذف علامات الاقتباس التي لا يحتاجها YAML 1.2: فـ "yes" و"on" سلاسل نصية عادية في YAML 1.2، ولذلك تعود بلا علامات اقتباس. أما السلسلة التي يقرؤها YAML 1.2 رقماً أو قيمة منطقية أو null، مثل "1.0" أو "true"، فتبقى مقتبسة. ومحللات YAML 1.1 مثل PyYAML تقرأ yes وno وon وoff غير المقتبسة قيماً منطقية، وتقرأ 22:22 عدداً بالأساس 60، ففعّل «وضع علامات اقتباس لجميع السلاسل النصية» عندما يقرأ الملفَّ محللٌ من هذا النوع.

ملاحظات تقنية

التنسيق هو تحليل ثم إعادة إخراج عبر حزمة yaml: تعمل parseAllDocuments في الوضع الصارم مع تفعيل uniqueKeys وmerge، ثم يُطبَّع كل مستند إلى قيم آمنة في JSON ويُطبع من جديد بقيمة lineWidth تساوي 0. ونتيجة لذلك تُوسَّع المراسي والأسماء المستعارة ومفاتيح الدمج << إلى نسخ عادية، ويتحوّل !!timestamp و!!binary إلى سلاسل ISO 8601 وbase64، وتُحذف الوسوم الصريحة، وتُقرَّب الأعداد الصحيحة التي تتجاوز 2^53 − 1. وفي مخطط 1.2 الأساسي تبقى yes/no/on/off سلاسل نصية.

ولأن كل مستند يصبح كائن JavaScript بين التحليل والطباعة، تُحاط المفاتيح الشبيهة بالأعداد الصحيحة (0 و1 و42) بعلامات اقتباس وتُقدَّم إلى المقدمة بترتيب تصاعدي حتى مع تعطيل الفرز؛ أما «فرز المفاتيح» فيرتّب وفق وحدات ترميز UTF-16، فتسبق الأحرف الكبيرة الصغيرة. وتُزاح التسلسلات الكتلية تحت مفتاحها الأب، وتتحوّل السلاسل متعددة الأسطر إلى كتل حرفية |، ويطوي «نمط التدفق» المستند كله في سطر واحد، ويُعاد وصل المستندات المتعددة بـ --- (ويُطبع المستند الفارغ كـ null).

المراجع

  • YAML Ain't Markup Language (YAML™) version 1.2.2YAML.org · 2021نموذج بيانات YAML 1.2 وصياغته وعلاقته بـ JSON (كل مستند JSON هو YAML 1.2 صالح).
  • HTML Living StandardWHATWGلغة HTML، بما فيها مراجع المحارف المسماة (الكيانات) وقواعد التحليل التي تتبعها المتصفحات.