انتقل إلى المحتوى

تحويل YAML إلى TOML — Numio

يحوّل مستند YAML واحدًا إلى TOML. تصبح الـ mappings المتداخلة أقسام [table.sub]، وقوائم الـ mappings [[array of tables]]، وتُحذف المفاتيح ذات القيم null (~).

إعادة كتابة إعدادات YAML بصيغة TOML عندما ينتقل مشروع إلى pyproject.toml أو Cargo أو Hugo أو إعدادات Netlify بصيغة TOML.

YAML

TOML

متى تستخدمها

  • إعادة كتابة إعدادات YAML بصيغة TOML عندما ينتقل مشروع إلى pyproject.toml أو Cargo أو Hugo أو إعدادات Netlify بصيغة TOML.
  • التحقق من شكل بنية YAML متداخلة كجداول TOML قبل اختيار صيغة الإعدادات.

طريقة الاستخدام

  1. الصق مستند YAML واحدًا يكون مستواه الأعلى mapping في المحرر الأيسر، أو استخدم زر تحميل الملف لفتح ملف بترميز UTF-8.
  2. أصلح أي خطأ YAML مُبلَّغ عنه (المسافات البادئة، أو تعدد المستندات، أو قائمة في المستوى الأعلى).
  3. تحقق من التواريخ وقيم null والقوائم في TOML، ثم انسخه.

YAML

# docker-compose style
version: "3.9"
services:
  web:
    image: nginx:1.27
    ports:
      - "8080:80"
    environment:
      DEBUG: false
      WORKERS: 4
  db:
    image: postgres:16

TOML

version = "3.9"

[services.web]
image = "nginx:1.27"
ports = [ "8080:80" ]

  [services.web.environment]
  DEBUG = false
  WORKERS = 4

[services.db]
image = "postgres:16"

التفاصيل والقيود

يُقرأ YAML كـ YAML 1.2: تبقى yes السلسلة النصية "yes"، ويصبح 0o17 هو 15، وتصبح التواريخ غير المقتبسة مثل 2024-01-05 سلاسل نصية في TOML لا تواريخ TOML.

لا تُحفظ التعليقات والمراسي (anchors) كما هي: تُوسَّع الأسماء المستعارة (*name) ومفاتيح الدمج <<: *anchor إلى القيم التي تشير إليها.

يُقبل مستند واحد فقط؛ ويفشل الإدخال الذي يحتوي على فواصل --- بخطأ تعدد المستندات. تُرفض القائمة في المستوى الأعلى، أو القائمة التي تخلط mappings بقيم بسيطة، مع شرح للسبب.

يعمل في متصفحك (yaml + @iarna/toml). تُزاح الجداول الفرعية مثل [services.web.environment] بمسافتين؛ ويتجاهل TOML هذه الإزاحة.

FAQ

هل يمكنني تحويل docker-compose.yml إلى TOML؟

تتحول البنية كما في المثال، لكن Docker Compose لا يقرأ إلا YAML. استخدم هذا لفحص البيانات أو إعادة استخدامها، لا كملف Compose.

ماذا يحدث للقيم null؟

تُحذف المفاتيح التي قيمتها ~ أو null لأن TOML لا يملك نوع null.

هل تُدعم مراسي YAML ومفاتيح الدمج؟

نعم. تُوسَّع الأسماء المستعارة (*name)، وينسخ <<: *base مفاتيح base إلى الـ mapping، مع أولوية للمفاتيح المكتوبة بجانبه. يُظهر TOML القيم المدمجة.

المواصفات والمراجع