ToolDeck

منسّق TOML

تنسيق والتحقق من صحة ملفات إعداد TOML

جرب مثالاً

إدخال TOML

TOML منسّق

يعمل محليًا · آمن للصق الأسرار
سيظهر TOML المنسّق هنا…
جرب أيضاً:TOML إلى JSON

آخر تحديث: أبريل 2026

ما هو تنسيق TOML؟

TOML (Tom's Obvious Minimal Language) هي صيغة ملفات إعداد أنشأها Tom Preston-Werner عام 2013. تُربط مباشرةً بجدول hash وتستخدم تحديد الأنواع الصريح لجميع القيم. يأخذ منسّق TOML كودًا خامًا أو غير متسق الأسلوب ويُعيد تسلسله بمسافات موحّدة ومسافات بادئة صحيحة وترتيب مفاتيح قياسي. والنتيجة ملف يلتزم باصطلاحات موحّدة في جميع أنحاء مشروعك، مما يُسهّل مراجعة تغييرات الإعداد في الفروق.

حدّدت مواصفة TOML v1.0.0، التي اكتملت في يناير 2021، قواعد النحو بدقة كافية تجعل أي محلّل متوافق يُنتج بنية بيانات مطابقة من المدخل ذاته. لا يُغيّر التنسيق المحتوى الدلالي لملف TOML، بل يُعدّل المسافات البيضاء وتجميع المفاتيح وأسلوب الاقتباس فحسب. هذا يعني أنك تستطيع تنسيق ملفات TOML بحرية دون القلق من تعطيل سلوك تطبيقك.

خلافًا لـ JSON، يدعم TOML التعليقات وأنواع التاريخ والوقت الأصيلة وأشكال سلاسل متعددة (أساسية وحرفية ومتعددة الأسطر). يحافظ المنسّق الجيد على التعليقات ويحترم الفرق بين الجداول المضمّنة وترويسات الجداول القياسية. كما يتعامل مع مصفوفات الجداول بشكل صحيح، مُبقيًا تجميع الأقسام سليمًا حتى تظل الملفات مقروءة للبشر والمحلّلات على حدٍّ سواء.

After · toml
Before · toml
title = "My App"
version = "1.0.0"
debug = false

[database]
host = "localhost"
port = 5432
name = "mydb"

[database.pool]
max_connections = 25
timeout = 30

[[servers]]
name = "web"
host = "web.example.com"

[[servers]]
name = "api"
host = "api.example.com"
title="My App"
version="1.0.0"
debug=false
[database]
host="localhost"
port=5432
name="mydb"
[database.pool]
max_connections=25
timeout=30
[[servers]]
name="web"
host="web.example.com"
[[servers]]
name="api"
host="api.example.com"

لماذا تستخدم منسّق TOML؟

تتراكم في ملفات الإعداد فوارق أسلوبية مع تحرير أعضاء الفريق لها بمرور الوقت: تختلط علامات الجدولة مع المسافات، وتُوضع بعض المفاتيح بين علامات اقتباس دون داعٍ، وتفقد أقسام الجداول تجميعها البصري. يُعالج منسّق TOML كل هذا في تمريرة واحدة.

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

حالات استخدام منسّق TOML

تطوير الواجهة الأمامية
نسّق ملفات wrangler.toml لمشاريع Cloudflare Workers أو ملفات إعداد deno.toml للواجهات الأمامية المبنية على Deno. يُفيد التنسيق النظيف عند مراجعة إعدادات النشر في طلبات السحب.
هندسة الواجهة الخلفية
وحّد أسلوب ملفات Cargo.toml عبر خدمات Rust المصغّرة المتعددة. يُسهّل التنسيق المتسق فحص إصدارات الحزم وعلامات الميزات عبر المستودعات.
DevOps والتكامل المستمر
نسّق ملفات الإعداد مثل .goreleaser.toml وnetlify.toml وإعدادات موجّه Starship قبل إيداعها. أضف فحص التنسيق إلى خطوط التكامل المستمر لفرض اتساق الأسلوب.
ضمان الجودة والاختبار
نسّق بيانات الاختبار الثابتة بسرعة لتكون مقروءة وقابلة للمقارنة في الفروق. حين يفشل اختبار بسبب اختلافات في الإعداد، تُوضح الملفات المنسّقة مقارنة القيم الفعلية بالمتوقعة بشكل جليّ.
هندسة البيانات
نسّق إعدادات Telegraf أو InfluxDB التي تُعرّف خطوط جمع البيانات. تنمو هذه الملفات في الغالب إلى مئات الأسطر، والتنسيق المتسق يُبقيها قابلة للصيانة.
تعلّم صيغة TOML
الصق أمثلة من التوثيق أو الدروس وشاهد كيف يُوحّدها المنسّق. هذه طريقة سريعة لتعلّم أسلوب الأقواس وقواعد الاقتباس وتجميعات الجداول القياسية.

مرجع صيغة TOML

تمتلك TOML مجموعة صغيرة من البنى. يسرد الجدول أدناه كل عنصر هيكلي مُعرَّف في مواصفة TOML v1.0.0. يُطبّق المنسّق تباعدًا وتجميعًا متسقًا على جميع هذه العناصر.

الصيغةالاسمملاحظات
key = "value"Basic key-value pairKeys are bare or quoted; values are typed
[table]Standard tableCreates a named section (hash table)
[a.b.c]Dotted tableShorthand for nested tables
[[array]]Array of tablesEach [[name]] block appends to an array
key = """...\n"""Multi-line basic stringAllows newlines, escapes processed
key = '''...\n'''Multi-line literal stringAllows newlines, no escape processing
# commentCommentExtends to end of line; not in JSON output
{inline = true}Inline tableSingle-line table, no newlines allowed

مقارنة TOML مع JSON وYAML

تحلّ TOML وJSON وYAML مشكلات متداخلة لكنها تتخذ خيارات مغايرة.

الميزةTOMLJSONYAML
التعليقات# تعليقات سطريةغير مدعومة# تعليقات سطرية
القيم ذات الأنواعسلسلة، عدد صحيح، عدد عشري، قيمة منطقية، تاريخ ووقتسلسلة، رقم، قيمة منطقية، nullمُستنتَجة (عرضة للأخطاء)
التداخلترويسات [table]أقواس معقوفةقائم على المسافة البادئة
صرامة المواصفةصارمة (نتيجة تحليل واحدة)صارمة (RFC 8259)مرنة (تحليلات صالحة متعددة)
دعم التاريخ والوقت4 أنواع أصيلةلا يوجد (استخدم السلاسل)ضمني (هش)
الفواصل الزائدةغير مسموح بهاغير مسموح بهاغير مطبّق (لا فواصل)

أمثلة برمجية

توضح الأمثلة أدناه كيفية تنسيق TOML برمجيًا بلغات وأدوات مختلفة. كل مثال يقرأ ملفًا ويحلّله ويكتب نسخة منسّقة.

JavaScript (Node.js)
import { parse, stringify } from '@iarna/toml'
import fs from 'fs'

const raw = fs.readFileSync('config.toml', 'utf-8')
const doc = parse(raw)
const formatted = stringify(doc)
// stringify() outputs canonical TOML with consistent spacing
fs.writeFileSync('config.toml', formatted)

// Quick one-liner with npx:
// npx taplo fmt config.toml
Python
import tomllib   # Python 3.11+ (read-only)
import tomli_w   # pip install tomli-w (write)

# Parse and re-serialize to format
with open("config.toml", "rb") as f:
    data = tomllib.load(f)

formatted = tomli_w.dumps(data)
# tomli_w produces sorted keys, consistent quoting, and
# proper whitespace around = signs
print(formatted)

# CLI alternative: taplo fmt config.toml
Go
package main

import (
    "fmt"
    "os"
    "github.com/BurntSushi/toml"
    "bytes"
)

func main() {
    var data map[string]interface{}
    _, err := toml.DecodeFile("config.toml", &data)
    if err != nil {
        fmt.Fprintln(os.Stderr, err) // parse error with line number
        os.Exit(1)
    }
    var buf bytes.Buffer
    enc := toml.NewEncoder(&buf)
    enc.Indent = "  "
    enc.Encode(data) // re-serialized with consistent formatting
    fmt.Print(buf.String())
}
CLI (taplo)
# Install taplo — the standard TOML toolkit
cargo install taplo-cli
# or: npm install -g @taplo/cli

# Format a single file in place
taplo fmt config.toml

# Format all .toml files in a project
taplo fmt

# Check formatting without modifying (CI-friendly)
taplo fmt --check

# Validate TOML syntax without formatting
taplo lint config.toml

الأسئلة الشائعة

ماذا يفعل منسّق TOML؟
يُحلّل منسّق TOML الملف إلى بنية بيانات، ثم يُعيد تسلسله بمسافات بيضاء وترتيب مفاتيح وأسلوب اقتباس متسقة. يبقى المحتوى الدلالي كما هو، ولا يتغير سوى العرض التقديمي: المسافات حول علامات المساواة، والأسطر الفارغة بين أقسام الجداول، والمسافات البادئة للقيم المتداخلة.
هل تنسيق TOML آمن لملفات الإعداد في بيئة الإنتاج؟
نعم. لا يُغيّر التنسيق سوى المسافات البيضاء والتفاصيل الشكلية. بنية البيانات المُحلَّلة قبل التنسيق وبعده متطابقة. إذا صادف المنسّق مدخلًا غير صالح، يُبلّغ عن خطأ بدلًا من إنتاج مخرج معطوب. يمكنك التحقق من ذلك بتحليل كلتا النسختين ومقارنة الكائنات الناتجة.
كيف يختلف TOML عن JSON؟
يدعم TOML التعليقات وأنواع التاريخ والوقت الأصيلة والسلاسل متعددة الأسطر وترويسات الجداول لتنظيم البيانات المتداخلة، وهي ميزات يفتقر إليها JSON كليًا. صُمِّمت الصيغة لملفات الإعداد التي يقرأها البشر ويحرّرونها، في حين صُمِّم JSON لتبادل البيانات بين البرامج. عدم دعم JSON للتعليقات يُصعّب توثيق قرارات الإعداد مباشرةً في الملف.
هل يمكنني تنسيق TOML من سطر الأوامر؟
نعم. Taplo هو أداة سطر أوامر TOML الأكثر استخدامًا. ثبّتها بـ cargo install taplo-cli أو npm install -g @taplo/cli، ثم شغّل taplo fmt لتنسيق جميع ملفات .toml في مشروعك. تدعم الأداة الإعداد عبر ملف taplo.toml أو .taplo.toml لقواعد مخصّصة.
هل يحتفظ التنسيق بالتعليقات في ملفات TOML؟
يُحلّل هذا المنسّق القائم على المتصفح المدخل إلى بنية بيانات ثم يُعيد تسلسله، مما يحذف التعليقات. إذا كنت بحاجة إلى الحفاظ على التعليقات، استخدم أداة تعتمد على شجرة الصيغة الملموسة (CST) مثل Taplo (CLI) أو مكتبة toml-edit (Rust)، إذ تعمل على شجرة الصيغة الملموسة بدلًا من البيانات المُحلَّلة.
ما الفرق بين تنسيق TOML والتحقق من صحته؟
يتحقق التحقق من الصحة من مطابقة الملف للمواصفة ويُبلّغ عن الأخطاء إن وُجدت. أما التنسيق فيذهب خطوة أبعد: يتحقق من المدخل أولًا ثم يُعيد كتابته بأسلوب موحّد. كل عملية تنسيق تتضمن التحقق من الصحة كخطوة أولى، لذا فأي ملف يُنسَّق بنجاح مضمون أنه صالح.
أي المشاريع تستخدم TOML صيغةً للإعداد؟
Cargo في Rust (Cargo.toml) ومنظومة تعبئة Python (pyproject.toml) والمواقع الثابتة في Hugo وDeno (deno.toml) وCloudflare Workers (wrangler.toml) وInfluxDB وTelegraf وموجّه Starship — كلها تستخدم TOML. اكتسبت الصيغة شعبيتها بعد اعتماد Rust إياها معيارًا لبيانات وصف الحزم عام 2015.